Uma abordagem de otimização multiobjetivo para projeto arquitetural de linha de produto de software
Resumo
Resumo: A indústria de software tem adotado a abordagem de Linha de Produto de Software (LPS) com o objetivo de aumentar o reúso de software e diminuir o tempo de produção e os custos de desenvolvimento dos produtos. Nessa abordagem, o principal artefato e a arquitetura de LPS (PLA - Product Line Architecture). No entanto, obter uma PLA modular, extensível e reusável e uma tarefa não trivial. O arquiteto pode se apoiar em métricas arquiteturais para definir e melhorar o projeto da PLA. Contudo, essa tarefa pode envolver vários fatores, muitas vezes conflitantes entre si, e encontrar o melhor trade-off entre as métricas utilizadas para avaliar o projeto transforma o projeto de PLA em uma tarefa que demanda grande esforço humano. Nesse contexto, o projeto de PLA pode ser formulado como um problema de otimização com varios fatores. Porém, elaborar um projeto que atenda a todos os fatores envolvidos pode ser mais difícil do que reconhecer um bom projeto. Problemas da Engenharia de Software similares a esse tem sido eficientemente resolvidos com algoritmos de busca em um campo de pesquisa conhecido como Engenharia de Software Baseada em Busca (SBSE - Search Based Software Engineering). Entretanto, as abordagens existentes utilizadas para otimizar arquiteturas de software nãao são apropriadas para projeto de PLAs, pois não consideram características específicas de LPS. Desse modo, este trabalho propõe uma abordagem de otimização multiobjetivo automatizada para avaliar e melhorar um projeto de PLA no que tange a modularização de características, estabilidade do projeto e extensibilidade de LPS. A abordagem proposta inclui: (a) um processo sistemático para conduzir a otimização de projeto de PLA por meio de algoritmos de busca; (b) um metamodelo que permite que esses algoritmos manipulem projetos de PLA; (c) novos operadores de busca para evoluir projetos de PLA em termos de modularização de características; e (d) um tratamento multiobjetivo para o problema de projeto de PLA. Esse tratamento multiobjetivo engloba métricas que indicam a modularização de características e a extensibilidade de LPS, além de métricas convencionais para medir princípios básicos de projeto como coesão e acoplamento. Ao final do processo de otimização, um conjunto de possíveis soluções de projeto de PLA que representam os melhores trade-off entre os objetivos otimizados e retornado. O arquiteto deve selecionar uma solução de acordo com as suas prioridades. A ferramenta OPLA-Tool foi desenvolvida para instanciar a abordagem usando algoritmos evolutivos multiobjetivos, os quais tem sido usados com sucesso na área de SBSE. Utilizando a OPLA-Tool, quatro estudos empíricos foram realizados com nove PLAs para avaliar: os operadores de busca propostos; o uso das métricas de LPS; e os algoritmos escolhidos. Em comparação às PLAs originais, os resultados mostraram que a abordagem proposta consegue gerar projetos mais estáveis, mais elegantes e com melhor modularização de características. Abstract: The Software Product Line (SPL) approach has been adopted by the software industry since it increases the software reuse and decreases both the time to market and the development costs. The Product-Line Architecture (PLA) is the main artefact of a SPL. However, obtaining a modular, extensible and reusable PLA is a non-trivial task. SPL architects may rely on architectural metrics to define and improve a PLA design. But, this task is often related to different and possible conflicting factors. Finding the best trade-off between the metrics values used to evaluate the design turns PLA design in a people-intensive task. Hence, the PLA design can be formulated as an optimization problem with many factors. Although developing a PLA design that encompasses the involved factors may be more difficult than recognizing a good design. Similar Software Engineering problems have been efficiently solved by search-based algorithms in the field known as Search Based Software Engineering (SBSE). However, existing approaches used to optimize software architectures are not suitable to PLA design since they do not encompass specific characteristics of SPL. In this sense, this thesis introduces a multi-objective optimization approach to automate the evaluation and improvement of PLA design in terms of feature modularization, design stability and SPL extensibility. This approach (a) encompasses a process to conduct the PLA design optimization through search-based algorithms; (b) includes a metamodel to allow the PLA manipulation by search-based algorithms; (c) addresses the feature modularization by novel search operators; and (d) introduces a multi-objective treatment to the PLA design problem. The multi-objective treatment includes feature-driven and SPL extensibility metrics in addition to conventional metrics to measure basic design principles like coupling and cohesion. After the optimization process, a set of potential solutions that represent the best trade-off between the objectives to be optimized is returned. So, the architect should choose the best solution according to his or her priorities. OPLA-Tool was developed to allow the approach instantiation by using multi-objective evolutionary algorithms, which have been successfully used in the SBSE area. Four empirical studies were performed with nine PLA designs to evaluate: the proposed search operators, SPL metrics, and the chosen search-based algorithms. The results have shown the proposed approach can generate PLA designs more stable, more elegant and with better feature modularization than the original ones.
Collections
- Teses & Dissertações [10425]