Compreendendo as motivações, desafios e Práticas de Rejuvenescimento de Software
Teoria fundamentada, Rejuvenescimento de software, Engenharia de Software, Evolução de Software
A evolução contínua das linguagens de programação trouxe benefícios e novos desafios para os desenvolvedores de software. Nos últimos anos, assistimos a um lançamento rápido de novas versões de linguagens de programação mainstream como Java. Enquanto estes avanços prometem melhor segurança, melhor desempenho e maior produtividade dos desenvolvedores, o lançamento constante de novas versões de idiomas tem colocado um desafio especial para os praticantes: como manter seus sistemas atualizados com novos lançamentos de linguagem. Esta tese visa compreender as dores, motivações e práticas que os desenvolvedores seguem durante os esforços de rejuvenescimento—um tipo particular de manutenção de software cujo objetivo é evitar a obsolescência devido à evolução das linguagens de programação. Para este fim, estamos construindo e validando uma teoria usando um estudo de métodos mistos. No primeiro estudo, entrevistamos 23 desenvolvedores de software para identificar desafios recorrentes e práticas usadas nos esforços de rejuvenescimento. No segundo estudo, minamos os repositórios de software de projetos de código aberto escritos em C++ e JavaScript para identificar a adopção de novas funcionalidades de linguagem e se os desenvolvedores de software realizam ou não grandes esforços de rejuvenescimento. O primeiro estudo destaca os benefícios da adoção e rejuvenescimento de novos recursos, revelando métodos e desafios para desenvolvedores. O segundo estudo enfatiza tendências e padrões de adoção de código aberto para recursos modernos. No terceiro e último estudo, o nosso objetivo é compartilhar a nossa teoria sobre rejuvenescimento de software com os profissionais através do método Focus Group com padrões industriais.