Detecção de Variabilidades e Comunalidades em uma Família de Produtos de Software
Linha de Produto de Software. Abordagem Extrativa. Detecção de Variabilidades
Linha de Produto de Software (LPS) é uma nova forma de desenvolvimento de software, na qual existe uma coleção de sistemas que compartilham um conjunto de artefatos, mas possuem componentes customizados para clientes específicos. Muitas são as vantagens de se utilizar uma LPS, como a melhor gestão das aplicações, entretanto muitos também são os desafios para a sua adoção. Embora a engenharia de LPS ofereça menores custos à fábrica de software, a sua implantação ainda é um processo oneroso. Existem hoje três abordagens distintas para a implantação da linha de produto em um processo de desenvolvimento, definidas para as diferentes necessidades do mercado. Uma delas denomina-se abordagem extrativa, na qual a LPS será construída a partir de produtos de software individuais pré-existentes. Empresas que já possuem diversas variantes de um produto, por exemplo, possuem dificuldade em adotar LPS devido, dentre outros motivos, aos próprios custos decorrentes da migração de produtos individuais para uma plataforma única de desenvolvimento. Para realizar essa transição, são necessárias algumas atividades como identificar o que é comum e o que é variante dentre os produtos de software, reunir todo o código em um único local e prover um ambiente para desenvolvimento integrado. A fim de tornar o processo de adoção de LPS menos oneroso, este trabalho propõe um método para apoiar as empresas nessa transição específica, relativa à abordagem extrativa. Para alcançar esse objetivo, o método propõe a automação da detecção comunalidades e variabilidades existentes nos produtos que fazem parte do portfólio da empresa e da migração do código de produtos distintos para uma plataforma única de desenvolvimento dos sistemas. Além de facilitar o processo de identificação dos artefatos, a abordagem evita que alguma variabilidade ou comunalidade seja esquecida, o que seria mais provável em um processo manual, prevenindo assim futuros problemas nas aplicações.