Evolução segura de linhas de produtos de software: cenários de extração de features

Detalhes bibliográficos
Ano de defesa: 2017
Autor(a) principal: BENBASSAT, Fernando Chaves
Orientador(a): BORBA, Paulo Henrique Monteiro
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Pernambuco
Programa de Pós-Graduação: Programa de Pos Graduacao em Ciencia da Computacao
Departamento: Não Informado pela instituição
País: Brasil
Palavras-chave em Português:
Link de acesso: https://repositorio.ufpe.br/handle/123456789/25849
Resumo: Linhas de Produtos de Software (LPS) são conjuntos de produtos de software reutilizáveis que compartilham funcionalidades ou comportamento. Reusar um conjunto específico de produtos pode melhorar a produtividade e qualidade dos produtos oferecidos por uma empresa, no sentido de que novos produtos podem ser criados combinando de forma sistemática os artefatos existentes. Porém manter LPS não é tão simples, uma vez que uma única mudança em um artefato pode afetar vários produtos. Em muitas situações, é desejável proporcionar algum tipo de garantia para alterar uma LPS de forma segura, no sentido de que o comportamento dos produtos existentes é preservado após a alteração. Os desenvolvedores podem contar com noções de evolução segura propostas anteriormente e por meio de templates de transformação para assegurar a evolução segura. No entanto, os templates existentes focam apenas em situações em que LPS é expandida com o desenvolvimento de novas features, e não foram avaliadas no contexto da extração de features a partir do código existente. Por isso, para descobrir mais templates que se adequam à situações não previstas em estudos anteriores de evolução segura de Linhas de Produtos de Software (LPS), foi realizado um estudo utilizando um sistema industrial desenvolvido em Java, com aproximadamente 400 KLOC, com demanda para extração de features e transformação em LPS. Esse estudo revelou a necessidade de novos templates para lidar com cenários de extração de features, bem como melhorar a notação de templates existentes para tratar mapeamentos (Configuration Knowledge) mais expressivos entre expressões de features e artefatos de código. Como resultado deste estudo, nós propomos templates novos e que não podem ser derivados dos existentes, extraímos com sucesso LPS a partir do sistema existente usando os templates propostos, e também encontramos evidência de que os novos templates podem ajudar a prevenir defeitos durante a evolução de uma LPS.