• Nenhum resultado encontrado

Maring´a2017 UmaAbordagemMem´eticaparaOtimizarProjetodeLinhadeProdutodeSoftware UNIVERSIDADEESTADUALDEMARING´ACENTRODETECNOLOGIADEPARTAMENTODEINFORM´ATICAPROGRAMADEP´OS-GRADUAC¸˜AOEMCIˆENCIADACOMPUTAC¸˜AOJO˜AOCHOMANETO

N/A
N/A
Protected

Academic year: 2021

Share "Maring´a2017 UmaAbordagemMem´eticaparaOtimizarProjetodeLinhadeProdutodeSoftware UNIVERSIDADEESTADUALDEMARING´ACENTRODETECNOLOGIADEPARTAMENTODEINFORM´ATICAPROGRAMADEP´OS-GRADUAC¸˜AOEMCIˆENCIADACOMPUTAC¸˜AOJO˜AOCHOMANETO"

Copied!
175
0
0

Texto

(1)

CENTRO DE TECNOLOGIA DEPARTAMENTO DE INFORM ´ ATICA

PROGRAMA DE P ´ OS-GRADUAC ¸ ˜ AO EM CIˆ ENCIA DA COMPUTAC ¸ ˜ AO

JO ˜ AO CHOMA NETO

Uma Abordagem Mem´ etica para Otimizar Projeto de Linha de Produto de Software

Maring´ a

2017

(2)

Uma Abordagem Mem´ etica para Otimizar Projeto de Linha de Produto de Software

Disserta¸c˜ ao apresentada ao Programa de P´ os-Gradua¸c˜ ao em Ciˆ encia da Computa¸c˜ ao do Departamento de Inform´ atica, Centro de Tecnologia da Universidade Estadual de Maring´ a, como requisito parcial para obten¸c˜ ao do t´ıtulo de Mestre em Ciˆ encia da Computa¸c˜ ao.

Orientadora: Prof a . Dr a . Thelma Elita Colanzi Lopes

Coorientador: Prof. Dr. Igor F´ abio Steinmacher

Maring´ a

2017

(3)
(4)
(5)

Ivone e Roberto, por toda dedica¸c˜ ao,

paciˆ encia e motiva¸c˜ ao.

(6)

Agrade¸co primeiramente a Deus pela oportunidade de estudar em uma institui¸c˜ ao de excelˆ encia e pela for¸ca em todos os momentos. Em segundo, agrade¸co a meus pais, Roberto e Ivone, por todo apoio, paciˆ encia e motiva¸c˜ ao ofertados nos momentos dif´ıceis e felizes desta fase. Al´ em de minha irm˜ a, cunhado e sobrinhos que me animaram nos momentos de dificuldade. Tamb´ em agrade¸co a minha noiva por estar sempre ao meu lado.

Agrade¸co a todos os professores que direta ou indiretamente me auxiliaram neste jornada. Um agradecimento especial vai para minha orientadora Thelma por toda dedica¸c˜ ao e paciˆ encia na realiza¸c˜ ao deste trabalho e, pela oportunidade oferecida de trabalhar em uma ´ area que me trouxe um fasc´ınio pelo mundo da pesquisa cient´ıfica.

Por fim, agrade¸co a Coordena¸c˜ ao de Aperfei¸coamento de Pessoal de N´ıvel Superior

(CAPES) pelo apoio financeiro concedido a este trabalho.

(7)

Produto de Software

RESUMO

Este trabalho ´ e voltado ` a aplica¸c˜ ao de algoritmos mem´ eticos em projeto de arquitetura de Linha de Produto de Software (LPS). A Arquitetura de Linha de Produto (PLA) ´ e um dos artefatos mais importantes da LPS, pois cont´ em todas as informa¸c˜ oes necess´ arias para gera¸c˜ ao dos produtos da LPS. Construir um projeto de PLA ´ e uma atividade dif´ıcil e altamente dependente do arquiteto de software. Dentre os problemas solucionados pela Search Based Software Engineering (SBSE), est´ a o problema de otimiza¸c˜ ao de projetos de PLA, que busca encontrar melhores projetos de forma autom´ atica utilizando algoritmos de busca multiobjetivo. Neste contexto, a abordagem MOA4PLA foi desenvolvida com objetivo de otimizar princ´ıpios b´ asicos de projeto, modulariza¸c˜ ao de caracter´ısticas e extensibilidade de LPS de projeto de PLA por meio de algoritmos de busca multiobjetivo.

Para automatizar a abordagem MOA4PLA foi desenvolvida a ferramenta OPLA-Tool, onde est˜ ao implementados os algoritmos de busca multiobjetivo baseados em algoritmos gen´ eticos (AG). Nesta ferramenta existe um m´ odulo chamado OPLA-Patterns respons´ avel pela aplica¸c˜ ao de padr˜ oes de projeto durante o processo de otimiza¸c˜ ao. Segundo o mapeamento sistem´ atico realizado, os algoritmos mem´ eticos (AM), que consistem da utiliza¸c˜ ao de AGs com busca local, tˆ em alcan¸cado melhores resultados em problemas de otimiza¸c˜ ao, se comparados ao AG. No entanto, n˜ ao houve relatos da utiliza¸c˜ ao de algoritmos mem´ eticos para otimiza¸c˜ ao de projeto de PLA. Dessa forma, este trabalho aborda a aplica¸c˜ ao de AMs para otimiza¸c˜ ao de projetos de PLAs, adaptando o operador de busca, Design Pattern Mutation Operator, proposto no OPLA-Patterns, como operador de busca local. Foram implementadas quatro vers˜ oes distintas de AM, cada uma com um crit´ erio de sele¸c˜ ao. Estudos experimentais foram realizados para comparar as solu¸c˜ oes obtidas tanto pelo AG como pelas vers˜ oes do AM. As compara¸c˜ oes envolveram an´ alises quantitativa e qualitativa das solu¸c˜ oes encontradas. De maneira geral, os estudos quantitativos indicaram que o AM encontrou melhores solu¸c˜ oes, em termos de fitness, quando comparado ao AG. J´ a o estudo qualitativo apontou que as solu¸c˜ oes obtidas com o AM, no contexto da MOA4PLA, s˜ ao boas do ponto de vista de arquitetos de software. O AM ainda necessita ser aprimorado com melhorias identificadas durante as etapas deste trabalho.

Palavras-chave: Arquitetura de Linha de Produto de Software. Busca multiobjetivo.

Algoritmo Gen´ etico. Algoritmo Mem´ etico.

(8)

ABSTRACT

This work is focused on the application of memetic algorithms in the Software Product Line (SPL) architecture design. Product Line Architecture (PLA) is one of the most important SPL artifacts since it contains all information needed to generate SPL products. Building a PLA design is a difficult and highly architect-dependent activity. PLA design could be modeled as an optimization problem to be solved by Search Based Software Engineering (SBSE). SBSE aims at automatically obtaining near-optimal solutions using multi-objective search algorithms. In this context, MOA4PLA approach was developed in order to optimize PLA design in terms of basic design principles, feature modularization and SPL extensibility, with the use of multi-objective search algorithms.

OPLA-Tool automates MOA4PLA by using multi-objective search algorithms based on genetic algorithms (GA). In this tool there is a module called OPLA-Patterns responsible for applying design patterns during the optimization process. According to the systematic mapping performed, the memetic algorithms (MA), which consist of the use of GAs with local search, have achieved better results in optimization problems when compared with GA. However, there were no report on the use of memetic algorithms for PLA design optimization. Thus, this work deals with the application of MAs to optimize PLA design, adapting the search operator named Design Pattern Mutation Operator proposed in OPLA-Patterns as a local search operator. Four distinct versions of MA were implemented, each one with a different selection criterion. Experimental studies were carried out to compare the solutions obtained by both GA and four versions of MA through quantitative and qualitative analysis. In general, the quantitative studies indicated that the MA found better solutions in terms of fitness when compared with GA.

The qualitative study pointed out that the solutions obtained with MA, in the context of MOA4PLA, are good from the software architects point of view. The MA still needs to be refined with improvements identified during the steps of this work.

Keywords: Genetic Algorithm. Memetic Algorithm. Multiobjective Search. Product

Line Architecture.

(9)

2.1 Representa¸c˜ ao da Fronteira de Pareto (Colanzi, 2014). . . . . 24

2.2 Processo da MOA4PLA (Colanzi, 2014). . . . 28

2.3 Modelo de representa¸c˜ ao do metamodelo (Colanzi, 2014). . . . 29

2.4 Representa¸c˜ ao da Arquitetura da OPLA-Tool (Colanzi, 2014). . . 32

2.5 Funcionamento de satisfa¸c˜ ao de PS / PS-PLA (Guizzo, 2014). . . 36

4.1 Representa¸c˜ ao da arquitetura da nova vers˜ ao da OPLA-Tool. . . . 47

4.2 Classes da OPLA-Tool e do jMetal. . . . 53

5.1 Atividades realizadas no presente trabalho. . . . 55

6.1 Projetos Experimentais Exp 01 - Etapa 01. . . . 65

6.2 Conjunto amostral. . . . 66

6.3 Projeto Experimental Exp 01 - Etapa 02. . . . 67

6.4 Exp 01 - Etapa 02 - Gera¸c˜ oes 1 - 35 . . . . 72

6.5 Exp 01 - Etapa 02 - Gera¸c˜ oes 36 - 70 . . . . 73

6.6 Exp 01 - Etapa 02 - Gera¸c˜ oes 71 - 100 . . . . 73

6.7 Exp 01 - Etapa 02 - Reta de regress˜ ao. . . . 74

6.8 Escopo prop´ıcio ` a aplica¸c˜ ao do padr˜ ao Bridge. . . . 76

6.9 Escopo prop´ıcio ` a aplica¸c˜ ao do padr˜ ao Strategy. . . . 76

6.10 Padr˜ ao Strategy aplicado na solu¸c˜ ao da MOM obtida pelo NoChoice. 77 6.11 Padr˜ ao Strategy aplicado na solu¸c˜ ao da BANK obtida pelo Bestof2. 78 6.12 PF true AGM. . . . 79

6.13 PF true BANK. . . . 80

6.14 Aplica¸c˜ ao do padr˜ ao Mediator na solu¸c˜ ao BET do Exp 02 - Etapa 01. . . . 89

6.15 Aplica¸c˜ ao do padr˜ ao Strategy na solu¸c˜ ao MOM do Exp 02 - Etapa 01. . . . 89

6.16 Exp 03 - ´ Area de atua¸c˜ ao dos participantes. . . . 94

6.17 Exp 03 - Similitude Corpus 1. . . . 99

6.18 Exp 03 - Nuvem de Palavras Corpus 1. . . 100

6.19 Exp 03 - Similitude Corpus 2. . . 105

6.20 Exp 03 - Nuvem de Palavras Corpus 2. . . 106

6.21 Exp 03 - Similitude Corpus 3. . . 108

6.22 Exp 03 - Nuvem de Palavras Corpus 3. . . 109

(10)

3.1 Resultados do Mapeamento Sistem´ atico. . . . 39

3.2 Resumo da Etapa 04 do Mapeamento Sistem´ atico. . . . 41

5.1 S´ıntese do m´ etodo de avalia¸c˜ ao. . . . 58

5.2 Informa¸c˜ oes das PLAs . . . . 62

6.1 Exp 01 - Etapa 01 - Teste de Normalidade. . . . 68

6.2 Exp 01 - Etapa 01 - Tempo de otimiza¸c˜ ao de uma solu¸c˜ ao em milisegundos. . . . 69

6.3 Exp 01 - Etapa 01 - N´ umero de solu¸c˜ oes n˜ ao dominadas por algoritmo. . . . 69

6.4 Exp 01 - Etapa 01 - M´ edia dos valores de HV. . . . 70

6.5 Fitness das Solu¸c˜ oes Original e Ideal. . . . 70

6.6 Exp 01 - Etapa 01 - Menores EDs por experimento. . . . 71

6.7 Exp 01 - Etapa 01 - M´ edia dos valores de GD. . . . 71

6.8 Exp 01 - Etapa 01 - M´ edias dos valores de IGD. . . . 71

6.9 Exp 01 - Etapa 03 - PLAs selecionadas - Parte 1 . . . . 75

6.10 Exp 01 - Etapa 03 - N´ umero de Solu¸c˜ oes. . . . 75

6.11 Exp 02 - Etapa 01 - Teste de Normalidade. . . . 84

6.12 Exp 02 - Etapa 01 - Resultados do ER. . . . 84

6.13 Exp 02 - Etapa 01 - Resultados do HV. . . . 84

6.14 Exp 02 - Etapa 01 - Resultados do IGD. . . . 85

6.15 Exp 02 - Etapa 01 - Fitness Original e Fitness Ideal. . . . 85

6.16 Exp 02 - Etapa 01 - Solu¸c˜ oes com menor ED. . . . 85

6.17 Exp 02 - Etapa 02 - Teste de Normalidade. . . . 86

6.18 Exp 02 - Etapa 02 - Resultados do ER. . . . 87

6.19 Exp 02 - Etapa 02 - Resultados do HV. . . . 87

6.20 Exp 02 - Etapa 02 - Resultados do IGD. . . . 87

6.21 Exp 02 - Etapa 02 - Fitness Original e Fitness Ideal. . . . 87

6.22 Exp 02 - Etapa 02 - Solu¸c˜ oes com menor ED. . . . 88

6.23 Exp 02 - Etapa 03 - Taxa de aplica¸c˜ ao de padr˜ oes de projeto no Conjunto de Amostras do Exp 02 - Etapa 01 e 02. . . . 90

6.24 Exp 03 - Distribui¸c˜ ao dos avaliadores. . . . 92

6.25 Exp 03 - Dendograma Corpus 1. . . . 95

6.26 Exp 03 - Dendograma Corpus 2. . . 101

(11)

6.28 Exp 03 - Contabiliza¸c˜ ao de acertos da quest˜ ao 3 - Corpus 2. . . . 112

6.29 Exp 03 - Contabiliza¸c˜ ao de acertos da quest˜ ao 4 - Corpus 2. . . . 113

(12)

ACO: Ant Colony Optimization

AE: Algoritmo Evolucion´ ario (Evolutionary Algorithms ) AG: Algoritmos Gen´ eticos (Genetic Algorithm )

AGM: Arcade Game Maker

AM: Algoritmos Mem´ eticos (Memetic Algorithm) BANK: Banking System

BET: Bilhetes Eletrˆ onicos para Transporte Urbano ED: Euclidean Distance to the Ideal Solution ER: Error Ratio

GD: Generational Distance

IGD: Inverse Generational Distance HV: Hypervolume

LPS: Linha de Produto de Software

MOA4PLA: Multi-Objective Approach for Product-Line Architecture Design MOM: Mobile Media

MS: Mapeamento Sistem´ atico

OPLA-Tool: Optimization for PLA Tool

PLA: Arquitetura de Linha de Produto (Product Line Architecture) PS: Pattern Application Scope

PSO: Particle Swarm Optimization

PS-PLA: Pattern Application Scope in Product Line Architecture

SBSE: Search Based Software Engineering

(13)

1 Introdu¸ c˜ ao 14

2 Revis˜ ao de literatura 18

2.1 Linha de Produto de Software . . . . 18

2.1.1 Arquitetura de Linha de Produto . . . . 21

2.2 Search Based Software Engineering . . . . 22

2.2.1 Otimiza¸c˜ ao Multiobjetivo . . . . 23

2.2.2 Algoritmos Gen´ eticos . . . . 24

2.2.3 Algoritmos Mem´ eticos . . . . 26

2.3 MOA4PLA . . . . 27

2.3.1 Modelo de Avalia¸c˜ ao . . . . 30

2.3.2 OPLA-Tool . . . . 32

2.3.3 Operadores de Busca da MOA4PLA . . . . 33

3 Trabalhos Relacionados 38 3.1 Resultados do Mapeamento Sistem´ atico . . . . 39

3.2 Considera¸c˜ oes Finais . . . . 44

4 Abordagem Mem´ etica 45 4.1 Algoritmo Proposto . . . . 46

4.1.1 Algoritmo Mem´ etico sem Crit´ erio de Escolha (NoChoice) . . . . 48

4.1.2 Algoritmo Mem´ etico First Improvement (Bestof2) . . . . 48

4.1.3 Algoritmo Mem´ etico Best Improvement (Bestof12) . . . . 49

4.1.4 Algoritmo Mem´ etico First Best Improvement (UntilBest) . . . . 51

4.2 Aspectos de Implementa¸c˜ ao . . . . 53

4.3 Considera¸c˜ oes Finais . . . . 54

5 M´ etodos e Materiais 55 5.1 M´ etodo de pesquisa . . . . 55

5.1.1 M´ etodo de avalia¸c˜ ao . . . . 56

5.1.2 T´ ecnicas de an´ alise quantitativa . . . . 57

5.2 Materiais . . . . 61

5.2.1 Linguagem e Ferramenta R . . . . 61

5.2.2 Iramuteq . . . . 61

5.2.3 PLAs utilizadas . . . . 62

(14)

5.4 Considera¸c˜ oes Finais . . . . 63

6 Resultados e Discuss˜ oes 64 6.1 Estudo Explorat´ orio - Exp 01 . . . . 64

6.1.1 Projeto do Estudo . . . . 64

6.1.2 Resultados . . . . 67

6.2 Estudo Experimental - Exp 02 . . . . 81

6.2.1 Projeto do Estudo . . . . 81

6.2.2 Resultados . . . . 83

6.3 Estudo Qualitativo - Exp 03 . . . . 91

6.3.1 Projeto do Estudo . . . . 91

6.3.2 Resultados . . . . 94

6.4 Considera¸c˜ oes Finais . . . 114

7 Conclus˜ ao 115 7.1 Dificuldades Encontradas . . . 116

7.2 Trabalhos Futuros . . . 117

REFERˆ ENCIAS 119 A Protocolo de Mapeamento Sistem´ atico 125 A.1 Planejamento . . . 125

A.2 Execu¸c˜ ao . . . 127

B Documentos utilizados no Exp 03 130 B.1 Documentos . . . 130

C Corpus constru´ıdos no Exp 03 163 C.1 Corpus 1 . . . 163

C.2 Corpus 2 . . . 168

C.3 Corpus 3 . . . 172

(15)

1

Introdu¸ c˜ ao

A Arquitetura de Linha de Produto de Software (do inglˆ es Product Line Architecture (PLA)) cont´ em o projeto comum a todos os produtos de uma Linha de Produto de Software (LPS) (Linden e Rommes, 2007), incluindo todas as varia¸c˜ oes arquiteturais poss´ıveis nos produtos da LPS. Uma caracter´ıstica da LPS ´ e uma capacidade do sistema que ´ e importante e vis´ıvel para um usu´ ario (Kang et al., 1990). A PLA ´ e um dos artefatos mais importantes para o sucesso do LPS e um estudo anal´ıtico de seu projeto deve ser considerado durante o desenvolvimento da LPS (OliveiraJr et al., 2013a).

O projeto de PLA possibilita prever a qualidade de uma LPS mesmo antes de constru´ı-la. Portanto, ´ e poss´ıvel realizar uma avalia¸c˜ ao estrutural usando m´ etricas. Al´ em das m´ etricas, a avalia¸c˜ ao de uma PLA pode levar em considera¸c˜ ao fatores econˆ omicos, complexidade e restri¸c˜ oes sobre o produto, permitindo a modelagem do projeto de PLA como um problema de otimiza¸c˜ ao multiobjetivo (Colanzi et al., 2014).

A Search-Based Software Engineering (SBSE) tenta resolver problemas da engenharia de software por meio da utiliza¸c˜ ao de algoritmos de otimiza¸c˜ ao multiobjetivo (Harman e Mansouri, 2010). Um problema multiobjetivo procura atender a mais de um objetivo envolvendo a otimiza¸c˜ ao simultˆ anea de duas ou mais fun¸c˜ oes objetivo (Coello et al., 2007).

Concentrando-se em propriedades arquiteturais, os arquitetos precisam desenvolver

projetos de PLA considerando medidas arquiteturais diferentes e conflitantes, por exem-

plo, com alta modulariza¸c˜ ao e baixa difus˜ ao de caracter´ısticas. Isso faz com que a

elabora¸c˜ ao de um projeto de uma PLA seja uma tarefa dif´ıcil para as pessoas. Este

cen´ ario permite modelar o projeto de PLA como um problema de otimiza¸c˜ ao multiobjetivo

(Colanzi et al., 2014). Para lidar com esse problema, foi proposta uma abordagem

(16)

denominada Multi-Objective Approach for Product-Line Architecture Design (MOA4PLA) (Colanzi et al., 2014) para otimizar o projeto de PLA em rela¸c˜ ao aos princ´ıpios b´ asicos de projeto, modulariza¸c˜ ao de caracter´ısticas e extensibilidade de LPS, usando algoritmos multiobjetivos baseados em algoritmos gen´ eticos (AG). A ferramenta que automatiza a abordagem MOA4PLA ´ e denominada OPLA-Tool.

Os algoritmos mem´ eticos (AM) foram usados como uma op¸c˜ ao de algoritmo de otimiza¸c˜ ao para resolver outros problemas de engenharia de software. AMs s˜ ao compostos por um AG com busca local (Fraser et al., 2015). O conceito de busca ´ e entendido como um tipo de otimiza¸c˜ ao, portanto, no texto atual, o termo de busca global denota a otimiza¸c˜ ao realizada em uma ´ area de busca cobrindo todo o espa¸co de solu¸c˜ oes, enquanto a busca local diz respeito ` a otimiza¸c˜ ao de um espa¸co limitado de solu¸c˜ oes.

Estudos existentes aplicam AM no contexto da modelagem de classe (Smith e Simons, 2013) e teste de software (Chawla et al., 2015; Fraser et al., 2015; Harman e McMinn, 2010;

Jeya Mala et al., 2013). O AM conseguiu melhores solu¸c˜ oes que as obtidas usando AG em todos os trabalhos citados. No entanto, at´ e o fim deste estudo, n˜ ao foram identificados trabalhos relacionados ao uso de AM para otimiza¸c˜ ao de projeto de PLA.

A hip´ otese deste trabalho ´ e que: a aplica¸c˜ ao de algoritmos mem´ eticos no processo de otimiza¸c˜ ao da MOA4PLA ´ e capaz de obter projetos de PLA melhores do que os projetos obtidos na vers˜ ao original da MOA4PLA.

Neste contexto, o objetivo geral deste trabalho foi investigar a aplica¸c˜ ao de algoritmos mem´ eticos no processo de busca e otimiza¸c˜ ao da MOA4PLA. Como consequˆ encia ao objetivo principal, tem-se os seguintes objetivos espec´ıficos:

• adaptar o operador Design Pattern Mutation Operator desenvolvido no trabalho de Guizzo (2014) como operador de busca local;

• comparar quantitativamente os resultados encontrados na abordagem mem´ etica com os resultados da abordagem gen´ etica;

• analisar qualitativamente as solu¸c˜ oes mem´ eticas, por interm´ edio de arquitetos de software.

Para o desenvolvimento deste trabalho foi utilizado um m´ etodo de pesquisa que incor-

porou a defini¸c˜ ao do tema de pesquisa, o desenvolvimento do mapeamento sistem´ atico,

a defini¸c˜ ao da proposta da pesquisa, o desenvolvimento da proposta, a defini¸c˜ ao dos

experimentos que avaliaram os algoritmos desenvolvidos, a execu¸c˜ ao dos experimentos e,

por fim, a avalia¸c˜ ao dos resultados alcan¸cados.

(17)

Durante o desenvolvimento da abordagem mem´ etica, foram propostas quatro vers˜ oes do algoritmo mem´ etico: NoChoice, Bestof2, Bestof12 e UntilBest (Cap´ıtulo 4), sendo que, cada vers˜ ao contemplou um crit´ erio de sele¸c˜ ao de solu¸c˜ oes, ou seja, um crit´ erio de parada.

A abordagem mem´ etica foi implementada utilizando o algoritmo NSGA-II como busca global e o operador Design Pattern Mutation Operator, desenvolvido por Guizzo et al.

(2014), como busca local.

Para come¸car a construir um corpo de conhecimento, foi desenvolvido um estudo explorat´ orio com objetivo de caracterizar a aplica¸c˜ ao de AM na otimiza¸c˜ ao de projeto de PLA baseado em busca. Investigou-se duas quest˜ oes de pesquisa: QP1: O algoritmo mem´ etico encontra solu¸ c˜ oes de melhor qualidade do que as solu¸ c˜ oes obtidas pelo algoritmo gen´ etico no contexto de otimiza¸ c˜ ao de projeto de PLA usando a MOA4PLA? e QP2: Qual abordagem de busca local ´ e mais eficaz no referido contexto?. Os resultados mostraram:

(i) qual abordagem de sele¸c˜ ao de busca local encontrou melhores resultados e (ii) pontos a serem melhorados na implementa¸c˜ ao.

Para obter provas para responder a ambas as quest˜ oes de pesquisa, o estudo explo- rat´ orio foi dividido em trˆ es etapas. Na primeira, realizaram-se experimentos envolvendo as abordagens gen´ etica e mem´ etica usando projetos de PLA, nos quais a abordagem mem´ etica obteve um melhor desempenho. Os resultados foram comparados quantitativa- mente em termos de indicadores de qualidade multiobjetivos. Na segunda etapa, o estudo explorat´ orio observou o comportamento da busca local durante a evolu¸c˜ ao das gera¸c˜ oes do AM, indicando sua aplica¸c˜ ao efetiva em cerca de 30% dos indiv´ıduos durante as evolu¸c˜ oes.

Finalmente, na terceira etapa do estudo explorat´ orio, foi realizada uma an´ alise qualitativa para avaliar a aplica¸c˜ ao de padr˜ oes de projeto nas solu¸c˜ oes encontradas e, como resultado, foram identificadas aplica¸c˜ oes corrompidas.

Para responder ` a QP2 do estudo explorat´ orio, foi contabilizado o n´ umero de vezes que cada algoritmo (NoChoice, Bestof2, Bestof12 e UntilBest) encontrou melhores resultados nos indicadores de qualidade. Os resultados apontaram que o algoritmo Bestof2 obteve melhor desempenho e, tamb´ em, gastou menos recursos computacionais.

Motivado pelos resultados alcan¸cados no estudo explorat´ orio (Choma et al., 2017), foi realizado um estudo experimental. Neste estudo investigou-se duas quest˜ oes de pesquisa:

QP1: O algoritmo mem´ etico encontra solu¸ c˜ oes de melhor qualidade do que as solu¸ c˜ oes

obtidas pelo algoritmo gen´ etico no contexto de otimiza¸ c˜ ao de projeto de PLA usando a

MOA4PLA? (mesma quest˜ ao do estudo explorat´ orio) e QP3: Qual o par de fun¸ c˜ oes

objetivo ´ e mais apropriado para avaliar as mudan¸ cas realizadas pela busca local nas

solu¸ c˜ oes de projeto de PLA?.

(18)

O estudo experimental foi dividido em trˆ es etapas: na primeira etapa foi utilizada uma fun¸c˜ ao objetivo para medir princ´ıpios b´ asicos de projeto e outra para medir a modulariza¸c˜ ao de caracter´ısticas (Colanzi et al., 2014), as mesmas fun¸c˜ oes objetivo foram usadas em trabalhos relacionados (Guizzo et al., 2014). Uma vez que as fun¸c˜ oes s˜ ao compostas pela agrega¸c˜ ao de m´ etricas, elas podem n˜ ao ser t˜ ao sens´ıveis ` as mudan¸cas realizadas por padr˜ oes no projeto de PLA. Tendo em conta que os padr˜ oes de projeto aplicados pela busca local melhoram a coes˜ ao e o acoplamento, realizou-se uma segunda etapa usando uma fun¸c˜ ao objetivo respons´ avel por medir a coes˜ ao de uma PLA e outra fun¸c˜ ao para medir o n´ umero de elementos arquiteturais que possuem dependˆ encias de outras classes. A segunda etapa visa fornecer evidˆ encias para responder a quest˜ ao de pesquisa QP3. Por fim, na terceira etapa realizou-se uma an´ alise qualitativa das solu¸c˜ oes encontradas nas duas primeiras etapas. Identificou-se que o segundo par de fun¸c˜ oes ´ e mais sens´ıvel ` as mudan¸cas causadas pela abordagem mem´ etica.

Para atender ao ´ ultimo objetivo deste trabalho foi desenvolvido um estudo qualitativo que envolveu arquitetos de software. O objetivo deste estudo foi avaliar as solu¸c˜ oes encontradas pela abordagem mem´ etica para responder a seguinte quest˜ ao de pesquisa:

QP4: As solu¸ c˜ oes encontradas pela OPLA-Tool com o AM s˜ ao consideradas boas, do ponto de vista de arquitetos de software?. Os resultados indicaram que as solu¸c˜ oes encontradas pela abordagem mem´ etica s˜ ao boas do ponto de vista dos arquitetos de software.

O texto est´ a organizado como segue: No Cap´ıtulo 2 s˜ ao definidos os principais

conceitos para uma melhor compreens˜ ao do trabalho. J´ a o Cap´ıtulo 3 apresenta resultados

encontrados no desenvolvimento do MS para investigar trabalhos relacionados. O Cap´ıtulo

4 exp˜ oe os algoritmos desenvolvidos. O Cap´ıtulo 5 apresenta o m´ etodo de pesquisa,

ferramentas e m´ etodo de avalia¸c˜ ao utilizados. No Cap´ıtulo 6 explica todos os resultados

encontrados nos estudos emp´ıricos desenvolvidos. E, por fim, o Cap´ıtulo 7 encerra com

as conclus˜ oes e contribui¸c˜ oes alcan¸cadas, bem como, os trabalhos futuros identificados.

(19)

2

Revis˜ ao de literatura

Neste Cap´ıtulo s˜ ao apresentados os conceitos necess´ arios para compreens˜ ao da proposta do trabalho de disserta¸c˜ ao.

2.1 Linha de Produto de Software

A maneira de se produzir artefatos e produtos foi alterada com o tempo, onde produtos artesanais com caracter´ısticas ajustadas a clientes individuais foram sendo alterados para caracter´ısticas gen´ ericas voltadas a um grupo de clientes com as mesmas necessidades.

Neste contexto, o reuso ´ e uma base comum da tecnologia proporcionando a ideia de produ¸c˜ ao em massa, onde um produto de interesse comum pode ser repassado para v´ arios clientes ao mesmo tempo.

A abordagem de produ¸c˜ ao em massa ´ e trabalhada em in´ umeras ´ areas de constru¸c˜ ao ou gera¸c˜ ao de produtos e, n˜ ao estando de fora, a ´ area de desenvolvimento de software iniciou sua utiliza¸c˜ ao. Combinando uma plataforma comum para um dom´ınio de clientes, surgiu a abordagem de desenvolvimento conhecida como Linha de Produto de Softwares ou Fam´ılia de Produto de Software (Pohl et al., 2005).

Como qualquer mudan¸ca na forma de trabalho, as novas pr´ aticas de desenvolvimento

em massa da engenharia de software, ocorreram em fun¸c˜ ao de aspectos econˆ omicos. No

entanto, a forma de reutiliza¸c˜ ao deve ser planejada com antecedˆ encia, pois a cria¸c˜ ao dos

artefatos da LPS interfere no seu ciclo de vida. ´ E necess´ ario um investimento na cria¸c˜ ao

e adapta¸c˜ ao dos artefatos da LPS para que os mesmos possam ser reutilizados. Quando

uma LPS ´ e criada e cresce, quanto maior o n´ umero de produtos, menores ser˜ ao os custos

(20)

de cria¸c˜ ao, ou seja, quanto maior a LPS vai se tornando, menor ´ e o custo para gera¸c˜ ao de novos produtos. Essa redu¸c˜ ao de custo ´ e mais clara se comparada ao desenvolvimento individual de software, onde o atraso com retrabalho na constru¸c˜ ao de sistemas do mesmo dom´ınio, aumenta o custo de desenvolvimento (Pohl et al., 2005).

O sucesso ou n˜ ao de um produto pode se dar pelo tempo gasto para gera¸c˜ ao de um sistema final ao usu´ ario. Dessa forma, o tempo est´ a diretamente relacionado ao custo do produto oferecido ao cliente. A engenharia de LPS pode consumir um tempo consider´ avel no in´ıcio da constru¸c˜ ao de uma plataforma de dom´ınio espec´ıfico (n´ ucleo de artefatos), no entanto, esse tempo ´ e compensado com a gera¸c˜ ao de um conjunto de produtos. Al´ em disso, permite que o tempo de vida do software seja maior em fun¸c˜ ao da constante atualiza¸c˜ ao dos artefatos na LPS (Pohl et al., 2005).

A garantia de um bom funcionamento dos produtos gerados pela LPS ´ e dada pela valida¸c˜ ao constante do n´ ucleo de artefato. Quando um novo artefato ´ e inserido ou modificado no n´ ucleo, o conjunto de artefatos ´ e novamente validado, garantindo com isso a estabilidade dos novos produtos da LPS. O constante trabalho de valida¸c˜ ao permite a detec¸c˜ ao de erros e corre¸c˜ oes em n´ıvel global (Garzon-Rodriguez et al., 2015).

Se um projeto de software ´ e desenvolvido e organizado tendo como objetivo o reuso de seus artefatos, o custo de manuten¸c˜ ao e extens˜ ao desse projeto ser´ a reduzido (Coplien, 1999). A separa¸c˜ ao clara de partes comuns das partes vari´ aveis do sistema, garante que o tempo de desenvolvimento e as taxas de erro sejam reduzidas (Pohl et al., 2005).

O termo caracter´ıstica, tamb´ em denotado por feature, ´ e de grande importˆ ancia para a LPS uma vez que, representa uma aptid˜ ao ou funcionalidade do sistema que ´ e clara e vis´ıvel ao usu´ ario (Kang et al., 1990). Variabilidade ´ e o termo que denota o modelo de caracter´ısticas, entendida como t´ ecnica de decis˜ ao tardia. Este modelo relaciona as caracter´ısticas da LPS e permite distinguir cada um de seus produtos (Pohl et al., 2005).

As variabilidades permitem o reuso dos projetos e crescimento da LPS (Schmid e Verlage, 2002).

Os tipos de variabilidades que normalmente ocorrem em LPS s˜ ao: (Linden et al., 2007):

Variabilidade Comum: ´ e uma caracter´ıstica que pode ser comum a todos os produtos da LPS, pode ser implementada como parte do n´ ucleo de artefatos.

Variabilidade Opcional: ´ e uma caracter´ıstica que pode ser comum a alguns, mas n˜ ao

a todos os produtos da LPS, deve estar explicitada como variabilidade e modelada

de uma forma que esteja dispon´ıvel apenas para produtos identificados.

(21)

Variabilidade Espec´ıfica: ´ e uma caracter´ıstica que pode ser somente de um ´ unico produto, mas que, no entanto, a plataforma deve conter.

Uma variabilidade ´ e formada pelos seguintes elementos (Linden et al., 2007):

Ponto de Varia¸ c˜ ao: ´ e o ponto onde existem diferen¸cas no produto final, ou seja, ´ e o ponto onde a decis˜ ao ´ e tomada tardiamente, gerando assim produtos distintos.

Variante: s˜ ao as possibilidades existentes que satisfazem um ponto de varia¸c˜ ao, definem as diferen¸cas entre os produtos da LPS, ou seja, s˜ ao as op¸c˜ oes das caracter´ısticas.

Restri¸ c˜ oes entre variantes: descrevem o relacionamento de duas ou mais variantes para resolver um ponto de varia¸c˜ ao. Existem dois tipos de relacionamentos: a variante requerente, essa quando ´ e selecionada exige a sele¸c˜ ao de outra variante e, a variante excludente, ou seja, a sele¸c˜ ao dela pro´ıbe a sele¸c˜ ao de outras variantes.

As variantes podem ser dos seguintes tipos (Linden et al., 2007):

• Variante Opcional: variante que pode ou n˜ ao fazer parte do produto.

• Variante Obrigat´ oria: variante que est´ a em todos os produtos da LPS.

• Variante Alternativa: ´ e uma variante espec´ıfica a uma variabilidade ou ponto de varia¸c˜ ao e pode possuir propriedades de cardinalidade.

Um grande n´ umero de variabilidades pode trazer grandes problemas caso n˜ ao haja controle e organiza¸c˜ ao. O gerenciamento de variabilidades ´ e uma tarefa cr´ıtica da LPS, pois nelas est˜ ao contidos todos os pontos de varia¸c˜ ao dos produtos da LPS, determinando seu sucesso ou n˜ ao (Linden et al., 2007).

O desenvolvimento de uma LPS ´ e formado por duas atividades principais: a engenharia

de dom´ınio e a engenharia de aplica¸c˜ ao (SEI, 2016). Na engenharia de dom´ınio s˜ ao

desenvolvidos o projeto da LPS e o n´ ucleo de artefatos (Schmid e Verlage, 2002), inclusive,

o projeto da arquitetura da LPS (Product Line Archtecture - PLA). ´ E vantajoso interpor

a PLA entre o modelo de caracter´ısticas e os produtos gerados pela linha, pois a PLA

apresenta as preocupa¸c˜ oes de implementa¸c˜ ao dos produtos de acordo ao modelo de

caracter´ısticas (Harman et al., 2014). Como a PLA ´ e um dos artefatos mais importantes

da LPS (OliveiraJr et al., 2013b), na pr´ oxima se¸c˜ ao ser˜ ao discutidos os principais conceitos

que norteiam a PLA.

(22)

2.1.1 Arquitetura de Linha de Produto

A arquitetura de um software monol´ıtico bem como a de uma LPS ´ e caracterizada por reunir as decis˜ oes de projeto, a organiza¸c˜ ao dos componentes, as caracter´ısticas de implementa¸c˜ ao, al´ em de permitir a extensibilidade do projeto (Schmid e Verlage, 2002).

Os projetos de PLAs abordam mais propriedades do que as arquiteturas de projetos de software monol´ıticos, ou seja, os projetos de PLAs se tornaram uma evolu¸c˜ ao das arquiteturas desses tipos de softwares. A PLA disp˜ oe de todas as poss´ıveis solu¸c˜ oes de projeto dos produtos que a LPS pode gerar o que permite um elevado grau de reusabilidade dos componentes (Schmid e Verlage, 2002).

Uma PLA representa uma arquitetura que abstrai todas as caracter´ısticas da LPS, isto ´ e, nela est˜ ao todas as poss´ıveis varia¸c˜ oes arquiteturais dos projetos de cada um dos produtos da LPS. Na PLA est˜ ao presentes todas as variabilidades da LPS, todos os pontos de varia¸c˜ oes e as modelagens das variantes. (Schmid e Verlage, 2002).

Pode-se entender que a PLA ´ e um dos artefatos mais importantes para o sucesso de uma LPS, e o estudo anal´ıtico sobre o seu projeto deve ser considerado durante o desenvolvimento de LPSs (OliveiraJr et al., 2013b). A importˆ ancia da an´ alise da PLA est´ a no fato de que ´ e poss´ıvel predizer a sua qualidade antes mesmo da gera¸c˜ ao dos produtos da linha, bem como, poss´ıveis riscos ao projeto (Colanzi, 2014).

Os crit´ erios de qualidade podem ser: os observ´ aveis na execu¸c˜ ao do software como desempenho e, os crit´ erios n˜ ao observ´ aveis durante a execu¸c˜ ao do software como reusabi- lidade. No crit´ erio de qualidade deve-se estar presente e, de forma clara, as caracter´ısticas de variabilidade e flexibilidade que garantem a gera¸c˜ ao dos produtos da LPS (Etxeberria e Sagardui, 2005).

OliveiraJr et al. (2007) divide a avalia¸c˜ ao de LPS em trˆ es grupos: (i) Avalia¸c˜ ao de

atributos de qualidade, (ii) avalia¸c˜ ao estrutural e (iii) defini¸c˜ ao e avalia¸c˜ ao de escopo

de LPS. Segundo Colanzi (2014) a avalia¸c˜ ao estrutural de uma PLA ´ e realizada por

meio de m´ etricas que avaliam os componentes arquiteturais, bem como, os crit´ erios de

qualidade. Essa an´ alise arquitetural pode envolver muito mais do que somente m´ etricas,

ela pode considerar a complexidade dos produtos, as restri¸c˜ oes impostas ` a eles e fatores

econˆ omicos da LPS. Dessa forma, entende-se que o problema de avalia¸c˜ ao de PLA

n˜ ao ´ e um problema simples, ele deve considerar m´ ultiplos objetivos al´ em encontrar o

melhor equil´ıbrio entre eles. Tais considera¸c˜ oes motivaram a aplica¸c˜ ao de algoritmos

multiobjetivo para otimiza¸c˜ ao de projetos de PLAs com base no uso de m´ etricas para

avaliar componentes e crit´ erios de qualidade de LPSs.

(23)

2.2 Search Based Software Engineering

Nesta Se¸c˜ ao ´ e apresentado o campo de estudo denominado Engenharia de Software Baseada em Busca (Search Based Software Engineering - SBSE), al´ em de apresentar as meta-heur´ısticas a serem utilizadas no presente trabalho.

Segundo Harman e Mansouri (2010) o termo SBSE denota uma otimiza¸c˜ ao baseada em busca para resolver problemas da Engenharia de Software. Essa abordagem permite encontrar automaticamente solu¸c˜ oes pr´ oximas do ideal. Pode-se listar algumas ´ areas onde se pode aplicar a SBSE, a saber: teste de software, projeto de software, modelagem, engenharia de requisitos, re-engenharia e projeto estrutural.

Um aspecto que se deve levar em considera¸c˜ ao ao se trabalhar com SBSE ´ e a modelagem dos problemas. Um problema deve ser modelado de forma a ser um problema de busca, ou seja, com um espa¸co de solu¸c˜ oes (espa¸co de busca) e uma fun¸c˜ ao objetivo.

E no espa¸co de busca que est˜ ´ ao todas as solu¸c˜ oes poss´ıveis. A fun¸c˜ ao objetivo avalia a qualidade das solu¸c˜ oes encontradas (Colanzi, 2014). Existem outros princ´ıpios para a utiliza¸c˜ ao de SBSE de forma completa e eficaz, no entanto Harman et al. (2012) afirmam que h´ a dois princ´ıpios essenciais e que, a partir deles, ´ e poss´ıvel iniciar os trabalhos de otimiza¸c˜ ao. O primeiro princ´ıpio ´ e a escolha da representa¸c˜ ao do problema, a sua forma deve permitir que um algoritmo de busca trabalhe efetivamente na otimiza¸c˜ ao de solu¸c˜ oes. O segundo princ´ıpio, ´ e uma clara defini¸c˜ ao da fun¸c˜ ao objetivo para que as solu¸c˜ oes encontradas satisfa¸cam corretamente a otimiza¸c˜ ao.

Quando um problema ´ e afetado por diferentes fatores, mais de uma fun¸c˜ ao objetivo

´ e utilizada. Ao considerar mais de uma fun¸c˜ ao objetivo ´ e necess´ ario encontrar o melhor trade-off, isto ´ e, encontrar uma solu¸c˜ ao que atenda todas as fun¸c˜ oes objetivos da melhor forma poss´ıvel (Harman et al., 2012).

Devido ` a natureza estoc´ astica dos algoritmos utilizados na SBSE, ´ e preciso se basear em dados de testes estat´ısticos para inferir conclus˜ oes. Por interm´ edio de experimentos e testes de hip´ oteses pode-se responder as quest˜ oes cient´ıficas desenvolvidas em SBSE (Harman et al., 2012).

Alguns algoritmos podem ser utilizados em SBSE, como: Simulated Annealing, Al- goritmos Gen´ eticos e Hill Climbing, Particle Swarm Optimization (PSO) e Ant Colony Optimization (ACO). V´ arios deles possuem vers˜ oes para tratar problemas multiobjetivos.

Esses algoritmos s˜ ao estudados pois alguns problemas da engenharia de software almejam

encontrar solu¸c˜ oes de forma autom´ atica satisfazendo mais de uma fun¸c˜ ao objetivo (Har-

man e Mansouri, 2010). A pr´ oxima se¸c˜ ao define os principais conceitos de otimiza¸c˜ ao

multiobjetivo.

(24)

2.2.1 Otimiza¸ c˜ ao Multiobjetivo

O problema de otimiza¸c˜ ao multiobjetivo pode ser entendido como um problema com duas ou mais fun¸c˜ oes objetivo, isto ´ e, ocorre uma otimiza¸c˜ ao simultˆ anea de interesses dependentes ou independentes, cooperativos ou concorrentes (Coello et al., 2007). A existˆ encia de mais de uma fun¸c˜ ao objetivo faz com que o problema n˜ ao tenha uma ´ unica solu¸c˜ ao ´ otima, mas sim, um conjunto de solu¸c˜ oes favor´ aveis ` a resposta do problema (Coello et al., 2007).

Os problemas multiobjetivos da Engenharia de Software, normalmente, s˜ ao afetados por fatores concorrentes ou conflitantes: duas caracter´ısticas podem ser inversamente proporcionais, dessa forma, ao otimizar uma a outra ´ e diretamente prejudicada. O que a otimiza¸c˜ ao multiobjetivo procura ´ e encontrar um balanceamento de interesses, um melhor trade-off, que satisfa¸ca de forma consider´ avel mais de um objetivo otimizando a solu¸c˜ ao de forma global (Harman et al., 2012).

Trabalhos recentes abordando otimiza¸c˜ ao multiobjetivo tˆ em utilizado a Fronteira de Pareto (Pareto et al., 1927) para obten¸c˜ ao das solu¸c˜ oes. A Fronteira de Pareto possibilita encontrar um conjunto de solu¸c˜ oes de melhor trade-off mesclando mais de uma fun¸c˜ ao objetivo. Na Fronteira de Pareto existem os conceitos de solu¸c˜ oes dominadas e solu¸c˜ oes n˜ ao dominadas. As solu¸c˜ oes dominadas s˜ ao as solu¸c˜ oes que s˜ ao superadas, em termos de fitness, por melhores solu¸c˜ oes. As solu¸c˜ oes n˜ ao-dominadas s˜ ao as que est˜ ao na fronteira e n˜ ao s˜ ao dominadas por nenhuma outra solu¸c˜ ao, apresentando os melhores valores de fitness para cada objetivo, representando as melhores solu¸c˜ oes encontradas at´ e o momento (Coello et al., 2007).

Para esclarecer a ideia exposta acima, a Figura 2.1 apresenta um problema multiob- jetivo. Pretende-se escolher um meio de transporte considerando a minimiza¸c˜ ao de dois objetivos: o tempo e o custo. As solu¸c˜ oes dominadas s˜ ao as solu¸c˜ oes (b e e), e as solu¸c˜ oes n˜ ao dominadas formam o conjunto de poss´ıveis solu¸c˜ oes (a, c, d, f e g ). As solu¸c˜ oes dominadas, est˜ ao nessa condi¸c˜ ao, pois existem outras solu¸c˜ oes que obtiveram valores de otimiza¸c˜ ao melhores considerando os objetivos.

Ao aplicar algoritmos de otimiza¸c˜ ao multiobjetivo ´ e poss´ıvel encontrar um conjunto

de solu¸c˜ oes considerando os objetivos independentemente. Considerando essa abordagem,

nas pr´ oximas subse¸c˜ oes ser˜ ao discutidos os algoritmos de busca que podem ser utilizados

com m´ ultiplos objetivos e que s˜ ao empregados no presente trabalho de disserta¸c˜ ao: o

Algoritmo Gen´ etico e o Algoritmo Mem´ etico.

(25)

Figura 2.1: Representa¸c˜ ao da Fronteira de Pareto (Colanzi, 2014).

2.2.2 Algoritmos Gen´ eticos

Algoritmos Gen´ eticos (AG) (Goldberg et al., 1989) fazem parte de uma categoria de algoritmos evolutivos que se caracterizam por utilizar mecanismos de evolu¸c˜ ao semelhantes

`

a evolu¸c˜ ao biol´ ogica natural das esp´ ecies, inspirada no conceito de sele¸c˜ ao natural de Darwin. A evolu¸c˜ ao por si s´ o ´ e um processo de otimiza¸c˜ ao, uma vez que, sempre o melhor indiv´ıduo sobreviver´ a durante a evolu¸c˜ ao restando somente os mais aptos. Diferente de outros algoritmos de otimiza¸c˜ ao, os algoritmos evolutivos n˜ ao utilizam de conhecimento pr´ evio para solucionar o problema, mas sim, acumulam conhecimento durante as evolu¸c˜ oes (Goldberg et al., 1989).

Inicialmente os AGs foram propostos por John Holland em 1975 simulando siste- mas gen´ eticos computacionalmente. Esses algoritmos realizam uma otimiza¸c˜ ao global utilizando a ideia de sele¸c˜ ao natural explorando o hist´ orico da evolu¸c˜ ao para analisar pontos favor´ aveis ` a uma gera¸c˜ ao de melhor desempenho (Goldberg et al., 1989). Um algoritmo gen´ etico trabalha de forma iterativa explorando o conhecimento conquistado a cada itera¸c˜ ao e, devido a sua estrutura gen´ etica, pode possuir v´ arias vers˜ oes se adaptando

`

as necessidades do problema proposto.

O funcionamento do AG pode ser explicado de forma simplificada: inicialmente ´ e

gerada de forma aleat´ oria uma popula¸c˜ ao inicial e durante o processo de evolu¸c˜ ao cada

indiv´ıduo ´ e avaliado por uma fun¸c˜ ao de fitness. A fun¸c˜ ao de fitness, tamb´ em denominada

fun¸c˜ ao objetivo, recebe um valor que ´ e sua aptid˜ ao, representando o qu˜ ao bom esse

indiv´ıduo ´ e no ambiente em que est´ a. Os indiv´ıduos mais aptos s˜ ao mantidos e os

outros s˜ ao descartados. Os indiv´ıduos selecionados podem sofrer altera¸c˜ oes em suas

caracter´ısticas atrav´ es de operadores de muta¸c˜ ao ou cruzamento, formando assim, a

(26)

pr´ oxima popula¸c˜ ao. Todas as etapas do processo: sele¸c˜ ao, poss´ıvel muta¸c˜ ao e cruzamento e, por fim, a cria¸c˜ ao da nova gera¸c˜ ao, s˜ ao repetidas por um n´ umero finito de vezes ou at´ e encontrar uma solu¸c˜ ao ´ otima (Rezende, 2003).

Em suma o processo de AG pode ser visto como:

Passo 01: Gera¸c˜ ao da popula¸c˜ ao inicial at´ e um n´ umero de indiv´ıduos x. A gera¸c˜ ao ´ e dada com a utiliza¸c˜ ao dos operadores de muta¸c˜ ao escolhidos aleatoriamente. Uma c´ opia da PLA original faz parte dessa primeira popula¸c˜ ao.

Passo 02: As fun¸c˜ oes de fitness selecionadas pelo arquiteto realizam a avalia¸c˜ ao dos indiv´ıduos da popula¸c˜ ao.

Passo 03: Os melhores indiv´ıduos s˜ ao selecionados.

Passo 04: O operador de cruzamento ´ e aplicado.

Passo 05: Os operadores de muta¸c˜ ao s˜ ao aplicados.

Passo 06: Os melhores indiv´ıduos, restantes at´ e este momento, substituem os piores formando pr´ oxima gera¸c˜ ao.

O processo do Passo 02 ao 06 se repete at´ e que o n´ umero de gera¸c˜ oes seja alcan¸cado.

O AG pode sofrer diferentes adapta¸c˜ oes e manter as caracter´ısticas b´ asicas da abor- dagem gen´ etica. NSGA-II (Non-dominated Sorting Genetic Algorithm) ´ e uma adapta¸c˜ ao de AG para tratar problemas multiobjetivos.

O algoritmo NSGA-II foi desenvolvido por Deb et al. (2002). Este algoritmo ordena sua popula¸c˜ ao em v´ arias fronteiras n˜ ao-dominadas. Inicialmente todos os indiv´ıduos est˜ ao na fronteira e, a cada gera¸c˜ ao os indiv´ıduos pais e filhos s˜ ao ordenados. Uma nova fronteira

´ e formada com os indiv´ıduos n˜ ao-dominados e, isso acontece a cada gera¸c˜ ao at´ e que todos os indiv´ıduos estejam classificados em uma fronteira, dessa forma, v˜ ao existir v´ arias fronteiras. ´ E na ´ ultima fronteira a ser formada que restar˜ ao os indiv´ıduos n˜ ao-dominados, estes, sendo os de melhor trade-off. Outra medida de ordena¸c˜ ao ´ e realizada, a medida de distˆ ancia da multid˜ ao, com o objetivo de preservar a diversidade de solu¸c˜ oes. Essa segunda medida calcula a distˆ ancia de uma solu¸c˜ ao em rela¸c˜ ao aos seus vizinhos de mesma fronteira. A distˆ ancia da multid˜ ao privilegia os indiv´ıduos mais afastados no espa¸co de busca. O operador de sele¸c˜ ao do NSGA-II utiliza a t´ ecnica torneio, onde usa as medidas de fronteira e distˆ ancia da multid˜ ao como crit´ erios.

Como relatado na Se¸c˜ ao 2.2, a representa¸c˜ ao ´ e de grande importˆ ancia quando se

utilizam algoritmos de busca para solucionar problemas. Assim, quando se utiliza AG ´ e

(27)

importante representar o problema de acordo com as peculiaridades do m´ etodo de busca, codificando cada um dos indiv´ıduos, fun¸c˜ oes de fitness e os operadores utilizados. E ´ comum em problemas de otimiza¸c˜ ao denominar um indiv´ıduo pelo termo solu¸c˜ ao.

A pr´ oxima subse¸c˜ ao descreve os Algoritmos Mem´ eticos que s˜ ao o foco de estudo deste trabalho.

2.2.3 Algoritmos Mem´ eticos

O algoritmo mem´ etico (AM) ´ e uma extens˜ ao do AG onde ´ e inserida uma busca local durante ou depois do processo de busca global (Fraser et al., 2015). AMs tamb´ em podem ser encontrados com outras denota¸c˜ oes: algoritmos evolucion´ arios (AE) h´ıbridos, busca local gen´ etica, AE Baldwinian ou AE Lamarkian (Molina et al., 2010). Um dos primeiros AM desenvolvidos foi em 1988 utilizando AG e Simulated Annealing, considerado um modelo tradicional de AM (Moscato e Cotta, 2003).

O AM ´ e um algoritmo h´ıbrido que utiliza uma busca global do AG juntamente com uma busca local. Esta estrutura permite aos indiv´ıduos da popula¸c˜ ao global uma possibilidade de otimiza¸c˜ ao local, mas esse recurso pode ser usado ou n˜ ao. Utilizar ou n˜ ao a otimiza¸c˜ ao local vai depender de restri¸c˜ oes que mensuram a viabilidade da sua aplica¸c˜ ao. A otimiza¸c˜ ao local pode ser utilizada depois de um n´ umero x de itera¸c˜ oes, ou a cada itera¸c˜ ao, tamb´ em pode ser aplicada logo ap´ os a reprodu¸c˜ ao, ainda, pode-se definir um n´ umero finito de vezes para sua utiliza¸c˜ ao (Fraser et al., 2015).

O AG por vezes pode perder caracter´ısticas locais relevantes que a busca global desconsidera ou que devido aos saltos que acontecem durante suas itera¸c˜ oes, algumas solu¸c˜ oes pr´ oximas n˜ ao s˜ ao alcan¸cadas. O AG pode demorar a alcan¸car uma solu¸c˜ ao boa devido a sua vis˜ ao global, j´ a com a utiliza¸c˜ ao de uma busca local integrada, esse problema

´ e solucionado, uma vez que ela explora a vizinhan¸ca de forma imediata. Este contexto de otimiza¸c˜ ao permite encontrar boas solu¸c˜ oes em um n´ umero de itera¸c˜ oes menor. No entanto, o fato de integrar duas otimiza¸c˜ oes acarreta um maior tempo de processamento, mas esse fato ´ e compensado com o crescimento do conjunto de solu¸c˜ oes avaliadas (Fraser et al., 2015).

O AM permite contornar os problemas encontrados tanto em algoritmos de busca local quanto nos de busca global. Os operadores da busca global favorecem a busca local ` a n˜ ao ficar presa em ´ otimos locais e a otimiza¸c˜ ao local beneficia a global ao alcan¸car vizinhos de forma imediata. Segundo estudos realizados por Harman e McMinn (2010), os AMs alcan¸caram um melhor desempenho do que a otimiza¸c˜ ao global e local separadamente.

No trabalho de Liaskos e Roper (2008), tamb´ em se confirmam os resultados ben´ eficos

(28)

do uso de AM que apresentam melhora na cobertura de solu¸c˜ oes para casos de teste . O trabalho de Ishibuchi et al. (2003) utiliza o hibridismo do AM em uma otimiza¸c˜ ao multiobjetivo e relata o efeito positivo trazido pelo AM melhorando a convergˆ encia das solu¸c˜ oes utilizando a fronteira de Pareto.

Os v´ arios tipos de algoritmos de busca local tem formas particulares de execu¸c˜ ao, no entanto, geralmente a busca local faz uma varredura nos vizinhos da solu¸c˜ ao candidata avaliando-os por meio de fun¸c˜ oes objetivo. Este tipo de busca pode ficar facilmente presa em ´ otimos locais e uma solu¸c˜ ao para esse problema ´ e reiniciar a busca com novos valores.

J´ a os algoritmos de busca global se comparados aos de busca local s˜ ao mais eficientes mas menos eficazes, devido a busca por ´ otimos globais (Fraser et al., 2015).

Existem diferentes abordagens para selecionar uma solu¸c˜ ao na busca local: First Improvement, Best Improvement e First-Best Improvement. First Improvement (Russell e Norvig, 2003) consiste em aplicar o operador de busca local uma vez e esta solu¸c˜ ao vai para a pr´ oxima gera¸c˜ ao, independentemente de ter uma qualidade melhor ou pior do que a solu¸c˜ ao atual. Best Improvement (Ochoa et al., 2010) vai para a vizinhan¸ca da solu¸c˜ ao atual e seleciona o melhor vizinho. First-Best Improvement ´ e a uni˜ ao das duas abordagens de pesquisa anteriores, na qual, ´ e realizada uma busca na vizinhan¸ca que se encerra quando a primeira melhor solu¸c˜ ao ´ e encontrada.

No Cap´ıtulo 3 s˜ ao apresentados mais trabalhos que envolvem o AM e na pr´ oxima se¸c˜ ao apresenta-se a abordagem MOA4PLA, a qual utiliza algoritmos multiobjetivos para otimiza¸c˜ ao de projetos de PLA.

2.3 MOA4PLA

A MOA4PLA (Multi-Objective Approach for Product-Line Architecture Design ) ´ e uma abordagem desenvolvida por Colanzi (2014) que utiliza algoritmos de otimiza¸c˜ ao mul- tiobjetivos com o intuito de avaliar e aprimorar o projeto de PLA no que se refere a princ´ıpios b´ asicos de projeto, modulariza¸c˜ ao de caracter´ısticas e extensibilidade de LPS. A aplica¸c˜ ao dessa abordagem resulta um conjunto de solu¸c˜ oes com melhores trade-off entre os objetivos otimizados. Assim, ´ e permitido ao arquiteto de software escolher qual solu¸c˜ ao

´ e a melhor para empregar em um determinado dom´ınio de LPS. A abordagem MOA4PLA viabiliza a manipula¸c˜ ao de PLAs por meio de um metamodelo de representa¸c˜ ao e utiliza fun¸c˜ oes objetivo para uma avalia¸c˜ ao quantitativa de projetos de PLA.

A abordagem MOA4PLA permite utilizar diferentes algoritmos de busca multiobjeti-

vos na otimiza¸c˜ ao de projetos de PLA, independentemente do algoritmo utilizado, uma vez

que, um problema pode ser resolvido de forma eficiente conduzido por diversos algoritmos

(29)

de busca. O objetivo ´ e realizar uma an´ alise estrutural do projeto de PLA por meio de m´ etricas e de forma automatizada, tal an´ alise se justifica pela dificuldade encontrada ao otimizar o projeto em v´ arios aspectos simultaneamente, necessitando de um equil´ıbrio de interesses (Colanzi, 2014).

O processo da MOA4PLA pode ser visto na Figura 2.2. Este processo ´ e dividido em quatro atividades principais: (i) constru¸c˜ ao da representa¸c˜ ao da PLA, (ii) defini¸c˜ ao do modelo de avalia¸c˜ ao, (iii) otimiza¸c˜ ao multiobjetivo e (iv) transforma¸c˜ ao e sele¸c˜ ao.

Segundo Colanzi (2014) as atividades apresentadas funcionam da seguinte forma:

Figura 2.2: Processo da MOA4PLA (Colanzi, 2014).

(i) Constru¸ c˜ ao da Representa¸ c˜ ao da PLA: O projeto de PLA ´ e modelado em um diagrama de classes contendo elementos b´ asicos: classes, atributos, m´ etodos, inter- faces, componentes, opera¸c˜ oes e seus relacionamentos. Este diagrama deve conter a descri¸c˜ ao das variabilidades da LPS apresentando os pontos de varia¸c˜ ao e variantes e, por fim, apresentar os estere´ otipos para identifica¸c˜ ao de caracter´ısticas associadas aos elementos arquiteturais. Como sa´ıda desta atividade, o diagrama de classes ´ e convertido em um metamodelo interpretado pela ferramenta. O metamodelo est´ a apresentado na Figura 2.3.

De maneira geral, um arquivo no formato XMI cont´ em o projeto da PLA PLA original que ´ e dado como entrada para a abordagem MOA4PLA. Durante o proces- samento o XMI ´ e interpretado para gerar a representa¸c˜ ao da PLA no metamodelo.

Cada elemento do XMI ´ e identificado e instanciado como um objeto do metamodelo de acordo com seu tipo. Dessa forma, a representa¸c˜ ao da PLA conter´ a v´ arios objetos para representar os elementos arquiteturais, seus relacionamentos, variabilidades e recursos associados a cada elemento arquitetural.

A classe PLA representa o projeto de PLA, esta classe ´ e composta por objetos

do tipo Element e todos os elementos arquiteturais identificados no XMI herdam

(30)

Figura 2.3: Modelo de representa¸c˜ ao do metamodelo (Colanzi, 2014).

da classe Element. Ao passo que o c´ odigo XMI ´ e interpretado, cada elemento

´

e instanciado de acordo ` a seu tipo (Class, Component, Inteface, Variability, ...).

Depois de instanciados todos os elementos, vai existir uma estrutura de objetos representando o projeto de PLA e, ´ e essa estrutura que ´ e utilizada pelos algoritmos de busca.

(ii) Defini¸ c˜ ao do Modelo de Avalia¸ c˜ ao: A sa´ıda dessa atividade ´ e um modelo de avalia¸c˜ ao formado pelos objetivos escolhidos pelo arquiteto. Um objetivo representa uma fun¸c˜ ao de fitness. Essa fun¸c˜ ao ´ e composta por m´ etricas: convencionais (coes˜ ao, acoplamento, tamanho e elegˆ ancia do projeto), de extensibilidade de LPS e, por fim, m´ etricas dirigidas a caracter´ısticas. As fun¸c˜ ao de fitness modeladas at´ e o momento s˜ ao descritas na Subse¸c˜ ao 2.3.1.

(iii) Otimiza¸ c˜ ao Multiobjetivo: Esta atividade trabalha com trˆ es entradas: as duas primeiras s˜ ao as sa´ıdas das atividades (i) e (ii) e, a terceira s˜ ao as restri¸c˜ oes que dever˜ ao ser utilizadas no processo de otimiza¸c˜ ao. Nesta atividade s˜ ao utilizados os algoritmos de busca multiobjetivos. Os operadores de busca utilizados pelos algoritmos s˜ ao apresentados na Subse¸c˜ ao 2.3.3. A sa´ıda gerada ´ e um conjunto de solu¸c˜ oes alternativas para a PLA original. As solu¸c˜ oes s˜ ao as PLAs que se enquadraram ` as restri¸c˜ oes estabelecidas e obtiveram melhores resultados nas fun¸c˜ oes de fitness, ou seja, os melhores trade-off entre os objetivos.

(iv) Transforma¸ c˜ ao e Sele¸ c˜ ao: Como entrada para essa atividade tem-se a sa´ıda da

atividade anterior: o conjunto de solu¸c˜ oes encontradas. As solu¸c˜ oes s˜ ao convertidas

para um modelo leg´ıvel para o arquiteto de software, ou seja, para um diagrama

(31)

de classes com todas as caracter´ısticas necess´ arias para representa¸c˜ ao gr´ afica. O arquiteto realiza a escolha de uma solu¸c˜ ao oferecida, a que julgar mais adequada ao problema.

2.3.1 Modelo de Avalia¸ c˜ ao

O modelo de avalia¸c˜ ao original da MOA4PLA inclu´ıa 4 fun¸c˜ oes objetivos: CM, FM, Ext e Eleg, todas a serem minimizadas (Colanzi, 2014). Devido a necessidade de um modelo de avalia¸c˜ ao mais preciso, no trabalho de Santos et al. (2015) foram desenvolvidas seis novas fun¸c˜ oes (ACOMP, ACLASS, TAM, COE, DC e EC) e no trabalho de Delgado et al. (2017) foram desenvolvidas outras sete fun¸c˜ oes (LCC, CS, SD, CV, RCC, SV e TV).

Cada uma das fun¸c˜ oes objetivo s˜ ao formadas por m´ etricas de avalia¸c˜ ao j´ a conso- lidadas. As m´ etricas convencionais utilizadas mensuram princ´ıpios b´ asicos de projeto como coes˜ ao e acoplamento, existem m´ etricas espec´ıficas a LPS como m´ etricas dirigidas a caracter´ısticas e de extensibilidade de PLA (Colanzi, 2014).

Na sequˆ encia s˜ ao apresentadas as fun¸c˜ oes objetivo que comp˜ oe o modelo de avalia¸c˜ ao da MOA4PLA:

CM(pla): seu objetivo ´ e alcan¸car solu¸c˜ oes com alta coes˜ ao, baixo acoplamento e alta reusabilidade. A fun¸c˜ ao ´ e constitu´ıda pela soma de v´ arias m´ etricas convencionais (Colanzi, 2014).

FM(pla): seu objetivo ´ e alcan¸car um projeto com alta modulariza¸c˜ ao de caracter´ısticas,

´

e formada pela soma de m´ etricas dirigidas a caracter´ısticas (Colanzi, 2014).

Ext(pla): seu objetivo ´ e medir a extensibilidade de uma PLA (Colanzi, 2014).

Eleg(pla): seu objetivo ´ e mensurar a elegˆ ancia do projeto de PLA, formada pela soma das m´ etricas de elegˆ ancia (Colanzi, 2014).

ACOMP(pla): seu objetivo ´ e medir o acoplamento entre componentes de uma PLA (Santos et al., 2015).

ACLASS(pla ): seu objetivo ´ e medir o n´ umero de elementos arquiteturais que tem dependˆ encia de outras classes do projeto mais o n´ umero de elementos dos quais cada classe depende (Santos et al., 2015).

TAM(pla): seu objetivo ´ e medir o tamanho das opera¸c˜ oes de uma classe (Santos et al.,

2015).

(32)

COE(pla ): seu objetivo ´ e medir a coes˜ ao do projeto de PLA em termos de relacio- namento interno entre classes de componentes mais o n´ umero de caracter´ısticas associadas a cada componente (Santos et al., 2015).

DC(pla ): seu objetivo ´ e medir a difus˜ ao de caracter´ısticas, isso acontece somando-se o n´ umero de elementos arquiteturais associados a cada caracter´ıstica (Santos et al., 2015).

EC(pla): seu objetivo ´ e medir a intera¸c˜ ao entre caracter´ısticas, mensurando as de- pendˆ encias existentes entre as caracter´ısticas (Santos et al., 2015).

LCC(pla): seu objetivo ´ e medir a falta de coes˜ ao baseada em recursos, somando o n´ umero de caracter´ısticas avaliadas por cada componente do PLA (Delgado et al., 2017).

CS(pla): seu objetivo ´ e medir o tamanho do componente em termos de opera¸c˜ oes (m´ etodos) que s˜ ao exigidas por outros servi¸cos ou componentes (Delgado et al., 2017).

SD(pla): seu objetivo ´ e medir a similaridade de um projeto de PLA (Delgado et al., 2017).

CV(pla): seu objetivo ´ e medir quanto forte ´ e a combina¸c˜ ao de variabilidade considerando as dependˆ encias entre os pontos de variabilidade do projeto de PLA (Delgado et al., 2017).

RCC(pla): seu objetivo ´ e medir o acoplamento dos componentes do projeto de PLA, somando o n´ umero de rela¸c˜ oes entre as interfaces (Delgado et al., 2017).

SV(pla): seu objetivo ´ e medir a variabilidade estrutural do projeto de PLA (Delgado et al., 2017).

TV(pla): seu objetivo ´ e medir a variabilidade total do projeto de PLA (Delgado et al., 2017).

A pr´ oxima subse¸c˜ ao apresenta a ferramenta que implementa a abordagem da MOA4PLA,

automatizando todas as suas atividades.

(33)

2.3.2 OPLA-Tool

A ferramenta OPLA-Tool (Optimization for PLA Tool ), automatiza a abordagem MOA4PLA (Colanzi, 2014). A Figura 2.4 representa a arquitetura da OPLA-Tool. A ferramenta, atu- almente, est´ a dividida em seis m´ odulos: OPLA-GUI, OPLA-Encoding, OPLA-Decoding (F´ ederle et al., 2015), OPLA-Core (Colanzi et al., 2014), OPLA-Patterns (Guizzo et al., 2014) e OPLA-ArchStyles (Mariani et al., 2015).

Figura 2.4: Representa¸c˜ ao da Arquitetura da OPLA-Tool (Colanzi, 2014).

Em seguida apresenta-se a descri¸c˜ ao de cada um dos m´ odulos (Colanzi, 2014) : OPLA-GUI: m´ odulo de interface gr´ afica para intera¸c˜ ao direta ao usu´ ario, neste m´ odulo

s˜ ao informados a PLA que ser´ a otimizada, qual algoritmo multiobjetivo ser´ a uti- lizado, bem como, as fun¸c˜ oes de fitness e operadores de busca (Se¸c˜ ao 2.3.3) dispon´ıveis , tudo a crit´ erio do arquiteto. Esse m´ odulo se comunica com trˆ es m´ odulos (OPLA-Encoding, OPLA-Core e OPLA-Decoding), utilizando servi¸cos disponibilizados em cada um.

OPLA-Encoding: Este m´ odulo reconhece PLAs modeladas na ferramenta Papyrus 1 . O m´ odulo converte o projeto de PLA em um metamodelo que pode ser utilizado pelo OPLA-Core.

OPLA-Core: ´ e o principal m´ odulo da ferramenta, ele tem como entrada o metamodelo gerado pelo m´ odulo OPLA-Encoding e na sequˆ encia executa o processo evolutivo e de busca por meio de algoritmos de busca multiobjetivos. As fun¸c˜ oes de fitness e operadores utilizados j´ a foram escolhidos no m´ odulo OPLA-GUI. Como sa´ıda da otimiza¸c˜ ao retorna um conjunto de solu¸c˜ oes, ainda representado segundo o metamodelo.

OPLA-Decoding: Este m´ odulo recebe como entrada a sa´ıda do m´ odulo OPLA-Core.

Ele decodifica as solu¸c˜ oes e ` as converte em uma representa¸c˜ ao gr´ afica leg´ıvel ao

1

Mais informa¸c˜ oes sobre a ferramenta Papyrus - https://eclipse.org/papyrus/

(34)

arquiteto, modeladas em diagramas de classes no formato do Papyrus. Essas solu¸c˜ oes, ainda, podem ser utilizadas como entrada para um novo processo de busca na OPLA-Tool.

OPLA-Patterns: Este m´ odulo disp˜ oe de um operador de aplica¸c˜ ao de padr˜ oes de projeto denominado Design Pattern Mutation Operator. Este operador ´ e respons´ avel por analisar se uma determinada regi˜ ao da solu¸c˜ ao apresenta um escopo prop´ıcio para aplica¸c˜ ao de um padr˜ ao de projeto e, em caso positivo, realiza a aplica¸c˜ ao.

OPLA-ArchStyles: m´ odulo com operadores de muta¸c˜ ao para preservar os estilos arqui- teturais aplicados ao projeto de PLA.

Os dois m´ odulos OPLA-Patterns e OPLA-ArchStyles s˜ ao acoplados ao OPLA-Core podendo trabalhar em conjunto com seus operadores ou substitu´ı-los, de acordo as configura¸c˜ oes definidas pelo arquiteto.

Os algoritmos de busca multiobjetivos implementados at´ e o momento na OPLA-Tool s˜ ao dois: NSGA-II (Se¸c˜ ao 2.2.2) e PAES Knowles e Corne (2000). J´ a, os operadores de busca implementados s˜ ao apresentados a seguir.

2.3.3 Operadores de Busca da MOA4PLA

Esta se¸c˜ ao apresenta os operadores de busca definidos pela abordagem MOA4PLA. Os operadores fundamentais (Colanzi, 2014) est˜ ao implementados no m´ odulos OPLA-Core e o operador para aplica¸c˜ ao de padr˜ oes de projeto (Guizzo, 2014) est´ a implementado no m´ odulo OPLA-Patterns.

Operadores Fundamentais

Colanzi (2014) propˆ os seis operadores fundamentais para a MOA4PLA os quais s˜ ao abordados a seguir:

Move Method: Move um m´ etodo escolhido aleatoriamente de uma classe para outra, tais classes tamb´ em s˜ ao escolhidas aleatoriamente. Uma associa¸c˜ ao bidirecional ´ e adicio- nada entre as classes selecionadas, caso n˜ ao exista. O operador deve respeitar as seguintes restri¸c˜ oes para a classe de origem: n˜ ao deve fazer parte de uma hierarquia de heran¸ca, n˜ ao pode fazer parte de uma variante ou ponto de varia¸c˜ ao, deve ter mais de um m´ etodo e, n˜ ao pode ser a classe de destino.

Move Atribute: Move um atributo escolhido aleatoriamente de uma classe para outra,

essas classes tamb´ em s˜ ao escolhidas aleatoriamente. Caso n˜ ao exista, uma associa¸c˜ ao

(35)

bidirecional ´ e adicionada. O operador deve respeitar as seguintes restri¸c˜ oes para a classe de origem: n˜ ao deve fazer parte de uma hierarquia de heran¸ca, deve ter mais de um atributo, n˜ ao pode fazer parte de uma variante ou ponto de varia¸c˜ ao e, n˜ ao pode ser a classe de destino.

Add Class: Uma nova classe ´ e adicionada. O operador escolhe aleatoriamente uma classe e move um atributo ou m´ etodo para uma nova classe. Se as classes estiverem no mesmo componente ent˜ ao ´ e adicionada uma associa¸c˜ ao bidirecional, caso a classe adicionada fa¸ca parte de outro componente ent˜ ao ´ e adicionada uma classe de interface no componente de origem. O operador deve respeitar as restri¸c˜ oes de que a classe de origem n˜ ao deve fazer parte de uma hierarquia de heran¸ca, deve ter mais de um atributo e m´ etodo e, n˜ ao pode fazer parte de um ponto de varia¸c˜ ao ou variante e, os componentes das interfaces devem ser da mesma camada arquitetural.

Move Operation: Move uma opera¸c˜ ao selecionada aleatoriamente entre duas interfaces tamb´ em aleat´ orias. Se os componentes forem diferentes ent˜ ao uma interface destino

´ e adicionada no componente original. Algumas restri¸c˜ oes devem ser consideradas: o operador s´ o move uma opera¸c˜ ao entre componentes da mesma camada arquitetural, a interface de destino n˜ ao pode ser a mesma da origem e, as interfaces devem ter mais de uma opera¸c˜ ao.

Add Manager Package: Um novo pacote ´ e criado, com isso, uma nova interface ´ e criada para esse pacote. A nova interface recebe uma opera¸c˜ ao aleat´ oria de uma interface de outro pacote tamb´ em aleat´ orio. Os componentes devem pertencer a mesma camada arquitetural.

Feature-Driven-Operator: O operador dirigido a caracter´ısticas tem como objetivo modularizar uma caracter´ıstica entrela¸cada em outras em um mesmo componente. Um componente ´ e selecionado aleatoriamente e caso ele tiver interfaces relacionadas a mais de uma caracter´ıstica ent˜ ao, ´ e selecionada uma dessas caracter´ısticas para ser modularizada em um novo componente. Ao modularizar uma caracter´ıstica, um novo componente

´ e criado e, todos os elementos arquiteturais associados a ela s˜ ao movidos ao novo componente.

Operador de Aplica¸ c˜ ao de Padr˜ oes de Projeto

Esta subse¸c˜ ao faz referˆ encia ao operador desenvolvido no trabalho de Guizzo (2014) para

aplica¸c˜ ao de padr˜ oes de projeto ao projeto de PLA. O autor propˆ os um operador de

muta¸c˜ ao para permitir a aplica¸c˜ ao autom´ atica de padr˜ oes de projeto em SBSE, chamado

Design Pattern Mutation Operator. O autor identificou que se um projeto de PLA

(36)

possuir caracter´ısticas entrela¸cadas, os operadores fundamentais s˜ ao mais eficientes, j´ a se as caracter´ısticas estiverem modularizadas, ent˜ ao a utiliza¸c˜ ao do operador de aplica¸c˜ ao de padr˜ oes de projeto tem melhores resultados.

O Design Pattern Mutation Operator aplica padr˜ oes de projeto em uma PLA mas, para que este operador seja utilizado, o projeto de PLA deve ser favor´ avel a sua aplica¸c˜ ao.

O escopo avaliado deve satisfazer as particularidades necess´ arias para que o padr˜ ao de projeto seja aplicado e o padr˜ ao n˜ ao deve inserir anomalias na arquitetura. Nesse operador a aplica¸c˜ ao de um padr˜ ao de projeto ´ e totalmente automatizada e sem interferˆ encias do arquiteto, a n˜ ao ser, na escolha dos objetivos a serem otimizados. Como sa´ıda o operador retorna uma solu¸c˜ ao adicionando, nela, os estere´ otipos espec´ıficos do padr˜ ao de projeto.

O operador seleciona aleatoriamento um conjunto de classes e interfaces e analisa o escopo da PLA. Tal aspecto unido ` a sele¸c˜ ao aleat´ oria dos padr˜ oes de projeto, mantˆ em a aleatoriedade do processo evolutivo. Caso o escopo permita o emprego de um padr˜ ao de projeto ent˜ ao o processo de aplica¸c˜ ao ´ e realizado. Em seguida ´ e realizada uma an´ alise para verificar se n˜ ao h´ a outro padr˜ ao de projeto empregado, caso exista, o atual padr˜ ao

´ e corrigido, caso contr´ ario uma nova instˆ ancia ´ e criada.

Existem dois escopos para a aplica¸c˜ ao de um padr˜ ao de projeto. Caso o escopo satisfa¸ca os requisitos m´ınimos para aplica¸c˜ ao de um padr˜ ao de projeto ent˜ ao ela cont´ em um Escopo de Aplica¸c˜ ao do Padr˜ ao (Pattern Application Scope - (PS)), este escopo

´ e composto somente de elementos arquiteturais convencionais, ou seja, sem elementos espec´ıficos de projeto de LPS. Em um segundo caso, pode existir um Escopo de Aplica¸c˜ ao do Padr˜ ao em Arquitetura de Linha de Produto de Software (Pattern Application Scope in Product Line Architecture - (PS-PLA)), al´ em de satisfazer os requisitos do PS, ele necessita conter elementos arquiteturais espec´ıficos de PLA como variabilidades e pontos de varia¸c˜ ao. Dessa forma se um escopo ´ e um PS-PLA ent˜ ao ele obrigatoriamente ´ e um PS.

Um padr˜ ao de projeto pode ser aplicado em um projeto de PLA mesmo que o escopo n˜ ao seja PS-PLA, neste formato, sua aplica¸c˜ ao produz efeitos positivos sobre m´ etricas convencionais mas n˜ ao sobre m´ etricas espec´ıficas de LPS. Para que a aplica¸c˜ ao de um padr˜ ao de projeto surta efeito sobre as m´ etricas espec´ıficas de LPS, o projeto de PLA deve conter um escopo PS-PLA. A explana¸c˜ ao dada at´ e o momento fica mais clara na Figura 2.5, dessa forma, caso um elemento arquitetural satisfa¸ca os requisitos de escopo o padr˜ ao de projeto pode ser aplicado.

Na Figura 2.5 um Elemento Arquitetural pode conter um escopo PS, caso ele satisfa¸ca

os requisitos do PS, o padr˜ ao de projeto pode ser aplicado e, tal aplica¸c˜ ao impactada

em M´ etricas de Software. Em um segundo caso, o Elemento Arquitetural pode conter

(37)

um escopo PS-PLA, herdando um escopo PS, caso o Elemento satisfa¸ca as restri¸c˜ oes do PS-PLA ent˜ ao o padr˜ ao de projeto pode ser aplicado impactando em M´ etricas de Software.

Figura 2.5: Funcionamento de satisfa¸c˜ ao de PS / PS-PLA (Guizzo, 2014).

Os padr˜ oes de projeto do cat´ alogo GoF se dividem em trˆ es prop´ ositos: criacional, estrutural e comportamental. Para serem utilizados na abordagem MOA4PLA os padr˜ oes de projeto deveriam permitir sua aplica¸c˜ ao de forma autom´ atica e sem interferˆ encia do arquiteto de software, por esse motivo, Guizzo (2014), em seu trabalho, selecionou trˆ es padr˜ oes de projeto, da tabela GoF, os quais podem ser aplicados de forma automatizada e sem supervis˜ ao de um arquiteto de software: Strategy, Bridge e Mediator. Esses padr˜ oes de projeto ser˜ ao apresentados na sequˆ encia.

Padr˜ ao de Projeto Strategy : Este padr˜ ao permite que o algoritmo varie indepen- dentemente de seus usu´ arios, para isso, ele encapsula fam´ılias de algoritmos fazendo-os intercambi´ aveis (GAMMA et al., 2000). O projeto de PLA deve satisfazer os escopos PS

Strategy

e PS-PLA

Strategy

, assim, um elemento arquitetural deve ter uma rela¸c˜ ao de uso ou dependˆ encia de pelo menos duas classes e/ou interfaces que comp˜ oem uma fam´ılia de algoritmos, o elemento deve ser um ponto de varia¸c˜ ao e as classes relacionadas, as variantes. Esse padr˜ ao de projeto beneficia tanto m´ etricas convencionais quanto espec´ıficas de LPS, especialmente a m´ etrica de extensibilidade e beneficia a m´ etrica de difus˜ ao de caracter´ısticas, no entanto, n˜ ao influencia m´ etricas relacionadas a intera¸c˜ ao de caracter´ısticas de LPS e coes˜ ao baseada em caracter´ısticas.

Padr˜ ao de Projeto Bridge: Este padr˜ ao cria uma abstra¸c˜ ao de sua implementa¸c˜ ao,

permitindo que ambos possam variar independentemente um do outro (GAMMA et al.,

2000). O projeto de PLA deve satisfazer os escopos PS

Bridge

e PS-PLA

Bridge

,

assim, um elemento arquitetural deve ter uma rela¸c˜ ao de uso ou dependˆ encia de pelo

menos duas classes e/ou interfaces que comp˜ oem uma fam´ılia de algoritmos e devem

Referências

Documentos relacionados

Lista revis˜ ao limites e derivadas de Fun¸ c˜ oes de uma Vari´ avel. Ad´

I Defini¸c˜ao: um n ´umero real ´e dado por um inteiro com sinal mais ou menos, mais uma virgula, mais um n ´umero finito ou infinito de casas decimais depois.. Reconhecer Q dentro

Para solucionarmos este problema trabalharemos brevemente com os c´ odigos lineares cl´ assicos e em seguida mostraremos como as ideias do c´ odigo linear cl´ assico pode ser usado

Por fim, apresenta- mos v´ arios elementos da geometria hiperb´ olica e fazemos detalhadamente a constru¸c˜ ao dos c´ odigos quˆ anticos coloridos em superf´ıcies compactas com

Nessa se¸c˜ ao iremos associar as ´ algebras de quat´ ernios aos espa¸cos quadr´ aticos, para tal utilizaremos uma forma quadr´ atica regular que existe para todas as ´ algebras

Uma introdu¸c˜ ao ao problema de detec¸c˜ ao de curvas ser´ a apresentada nesta se¸c˜ ao, seguida de uma breve explica¸c˜ ao sobre a Transformada de Hough que servir´ a como

Um conjunto X dotado de uma rela¸c˜ ao de ordem parcial ´e dito ser um conjunto bem-ordenado se todo subconjunto A n˜ ao vazio de X tem um elemento m´ınimo em A.. Mostre que

Mostre que todo conjunto bem-ordenado segundo uma rela¸c˜ ao parcial de ordem ´e tamb´em totalmente ordenado.. segundo a mesma