Desenvolvendo Linhas de Produto de Software a partir de Sistemas de Software Existentes
Linhas de produto de software, Reengenharia de sistemas existentes para LPS, Abordagens proativas e reativas, Evolução de Software.
Uma Linha de produto de software (LPS) representa uma família de sistemas relacionados que compartilham similaridades e variabilidades visando atender às necessidades de um mercado ou missão específica. A adoção de LPS tem sido aplicada em diversas áreas na indústria de software devido aos benefícios alcançados, tais como, redução dos custos no desenvolvimento, aumento da qualidade e redução do tempo de comercialização. No entanto, cenários distintos podem ser encontrados para implementação de uma linha de produtos, caracterizando 3 abordagens para adoção de LPS: (1) abordagem proativa: não existe softwares em produção, e uma LPS é desenvolvida do zero; (2) abordagem reativa: já existe uma LPS em produção que vai sofrer incremento para atender novos requisitos; (3) abordagem extrativa: a LPS é desenvolvida a partir dos artefatos de um sistema ou conjunto de sistemas relacionados que já estão em produção. Nos cenários das abordagens extrativa e reativa, este trabalho propõe um método de desenvolvimento e evolução de LPSs a partir de sistemas existentes implementados na linguagem Java. O método foi extraído de um estudo empírico de desenvolvimento de uma LPS para o domínio de sistemas de controle de espaços físicos utilizados em diferentes centros da UFRN e definiu três atividades: Modelar features da LPS, Projetar e Implementar LPS através da refatoração de um sistema existente, e Realizar Testes para cada um dos produtos atuais existentes. Em seguida, o método foi validado por meio da sua aplicação durante as evoluções da LPS para atender novos requisitos demandados pelos clientes. Um conjunto de diretrizes para refatoração e modularização de features em sistemas implementados em Java são apresentadas como parte do método.