Engenharia de Linha de Produto de Software Descentralizada
Linha de Produto de Software, Programação Orientada a Deltas, Evolução de Software, Programação Orientado a Características
A Engenharia de Software de Linhas de Produto vem sendo amplamente pesquisada e aplicada para aumentar o reuso e diminuir custos na criação de uma família de programas com propósitos semelhantes. As técnicas de Feature Oriented Programming (FOP) e Delta Oriented Programing (DOP) são exemplos de estratégias que permitem aplicar incrementos de novas características sobre um núcleo comum de funcionalidades da linha de produto de software (LPS), com o objetivo de gerar produtos específicos. Embora, tais técnicas venham demonstrando trazer benefícios para a modularização de características variáveis em uma LPS, elas não lidam com cenários de desenvolvimento onde tanto o produto como o núcleo podem concomitantemente evoluir. Neste cenário, há necessidade de manutenção da consistência de evoluções independentes do núcleo e seus respectivos produtos, através da incorporação de novas funcionalidades desenvolvidas para um dado produto sobre o núcleo ou da importação de novas funcionalidades presentes no núcleo para um ou mais de seus produtos. Dentro deste contexto, é fundamental a resolução de conflitos relacionados a evolução de artefatos pertencentes ao núcleo e cada um de seus produtos, a qual não é contemplada pelos métodos e técnicas tradicionais já propostos para a engenharia de linhas de produto. Este trabalho propõe uma nova abordagem de engenharia de linha de produto que busca oferecer suporte para resolução de conflitos oriundos da evolução independente do núcleo da LPS e seus respectivos produtos. Nesta abordagem, a gerência da evolução do núcleo da LPS e de seus produtos é realizada através do cálculo de deltas de variações no tempo e no espaço, e da manutenção da consistência (reconciliation) automática de tais deltas com o objetivo de permitir a integração de evoluções de características do núcleo e de um dado produto.