1 geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta...
TRANSCRIPT
![Page 1: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/1.jpg)
1
Geração de aplicações para linhas de produtos orientadas a aspectos com
apoio da ferramenta Captor-AO
Carlos Alberto de Freitas Pereira Júnior
Orientadora: Rosana Teresinha Vaccare Braga
Universidade de São PauloInstituto de Ciências Matemáticas e Computação - ICMC
![Page 2: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/2.jpg)
2
Roteiro
Introdução Revisão Bibliográfica Gerador Captor Desenvolvimento de LPS apoiado por
geradores e aspectos Gerador Estendido Captor-AO Conclusão
![Page 3: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/3.jpg)
3
Introdução
![Page 4: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/4.jpg)
4
Introdução O crescimento da demanda e da
complexidade dos sistemas de software nas últimas décadas contribuiu para o surgimento de vários problemas inerentes ao desenvolvimento de software (Pressman, 2002).
A utilização de técnicas de reúso de software permite o desenvolvimento de aplicações mais confiáveis, flexíveis, de fácil manutenção e com custo e prazos de entrega viáveis.
![Page 5: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/5.jpg)
5
Introdução
O grupo de engenharia de software do ICMC tem desenvolvido diversos trabalhos relacionados à área de reúso de software.
Dentre essas técnicas pode-se citar orientação a objetos, componentes, frameworks, linguagens de padrões, geradores de aplicação, linhas de produtos e aspectos.
![Page 6: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/6.jpg)
6
Introdução
Com o advento da separação avançada de interesses (Kiczales et al., 1997) surgiu a idéia de modularizar características (features) transversais.
Features transversais são as features comuns que ficam espalhadas pelas divisões ou módulos de diferentes domínios.
Notou-se que determinadas features transversais de uma linha de produtos têm potencial de reúso em diferentes domínios.
![Page 7: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/7.jpg)
7
Introdução
Nesse trabalho é proposto um processo para o desenvolvimento de LPS e geração automatizada de produtos levando em consideração os interesses transversais existentes em cada domínio de aplicação.
Esse processo tem a finalidade de aumentar o reúso de características por meio da POA, permitindo que as LPS's sejam projetadas de forma mais coesa, facilitando assim, sua manutenção e evolução
![Page 8: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/8.jpg)
8
Introdução
Também é apresentado um gerador de aplicações que possibilita a geração de produtos sobre combinações entre features de diferentes domínios.
![Page 9: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/9.jpg)
9
Revisão Bibliográfica
![Page 10: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/10.jpg)
10
Revisão Bibliográfica
A seguir são detalhados os conceitos que formam parte do embasamento necessário para a proposta apresentada: Linhas de Produto de Software; Geradores de Aplicações; Programação Orientada a Aspectos. LPS versus POA
![Page 11: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/11.jpg)
11
Linhas de Produto de Software Uma linha de produtos é um conjunto de produtos
que compartilham conjuntos de requisitos em comum, mas ao mesmo tempo exibem variabilidade significativa nos requisitos (Griss, 2000).
Vários artefatos são disponibilizados para implementação das possíveis funcionalidades de um produto da linha. Um determinado produto é composto utilizando-se artefatos com diversos tipos de funcionalidades.
![Page 12: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/12.jpg)
12
Linhas de Produto de Software Segundo Griss (2001) as principais
vantagens relacionadas ao uso de linhas de produto são: Redução no custo de desenvolvimento de um
produto; Redução da mão de obra de desenvolvimento
de software (dos projetos de uma família); Redução no tempo de entrega; Aumento na qualidade dos sistemas
desenvolvidos.
![Page 13: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/13.jpg)
13
Uma LMA é uma linguagem de alto nível de abstração utilizada para representar aplicações (Weiss e Lai, 1999).
O ambiente da engenharia de aplicação deve permitir a análise de especificações LMA e gerar código a partir dessas especificações.
Linhas de Produto de Software
![Page 14: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/14.jpg)
14
Geradores de Aplicações são sistemas de software que transformam especificações em uma aplicação (Cleaveland, 1988).
As especificações descrevem o problema ou a tarefa que deve ser realizada pelo gerador. Geradores por composição e por compilação.
Geradores de Aplicações
![Page 15: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/15.jpg)
15
Geradores de Aplicações
Segundo Masiero e Meira (1993), pode-se classificar diferentes arquiteturas de geradores de aplicações de acordo com a capacidade de adaptação de um gerador para múltiplos domínios e/ou múltiplas aplicações.
Neste trabalho são abordados geradores capazes de gerar múltiplas aplicações em múltiplos domínios.
![Page 16: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/16.jpg)
16
Programação Orientada a Aspectos
Interesses (concerns) podem ser pensados como requisitos funcionais ou não funcionais que são úteis ou precisam estar presentes nos sistemas (Dijkstra, 1976).
Interesses transversais (crosscutting concerns) são interesses cujo código espalha-se pelas divisões ou módulos do programa.
![Page 17: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/17.jpg)
17
Programação Orientada a Aspectos
Na Programação Orientada a Aspectos (POA), interesses transversais podem ser modularizados por meio de uma nova unidade de encapsulamento, denominada aspecto (Kiczales et al., 1997).
![Page 18: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/18.jpg)
18
Programação Orientada a Aspectos
Classes: encapsulam requisitos modulares.
Aspectos: encapsulam requisitos transversais.
![Page 19: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/19.jpg)
19
Linhas de Produtos e Aspectos Durante a condução desta pesquisa foi
realizada uma uma revisão da literatura sobre trabalhos que relacionam linhas de produtos e aspectos.
Essas pesquisas foram agrupadas em quatro categorias principais: Abordagens ad-hoc; Abordagens sistemáticas; Abordagens baseadas no desenvolvimento
incremental; Ferramentas.
![Page 20: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/20.jpg)
20
Gerador de AplicaçõesConfigurável Captor
![Page 21: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/21.jpg)
21
Gerador Captor O Captor é um gerador de aplicações
configurável (MDMA) desenvolvido no trabalho de mestrado de Shimabukuro (2006).
Utiliza a abordagem de geração por composição.
![Page 22: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/22.jpg)
22
Gerador Captor O Captor pode ser configurado para
diversos domínios diferentes, por meio de um processo que inclui: Criar uma linguagem de modelagem de
aplicações (LMA) para o domínio; Criar os artefatos reutilizáveis desse domínio; Criar gabaritos em XML para cada um dos
artefatos reutilizáveis; Criar um arquivo de mapeamento da LMA
para os gabaritos.
![Page 23: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/23.jpg)
23
Gerador Captor
![Page 24: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/24.jpg)
24
Gerador Captor A interação do Captor com o engenheiro
de aplicações é realizada por meio de um conjunto de formulários organizados hierarquicamente em forma de árvore.
O engenheiro de aplicações utiliza os campos desses formulários para preencher as variabilidades do produto que está sendo gerado.
![Page 25: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/25.jpg)
25
Gerador Captor
![Page 26: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/26.jpg)
26
Arquitetura Captor
![Page 27: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/27.jpg)
27
Desenvolvimento de LPS apoiado por geradores e aspectos
![Page 28: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/28.jpg)
28
Desenvolvimento de LPS apoiado por geradores e aspectos
Este trabalho aborda a separação de interesses de LPS utilizando a Programação Orientada a Aspectos (POA).
O processo apresentado tem a finalidade de aumentar o reúso em linhas de produtos por meio da POA.
![Page 29: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/29.jpg)
29
Desenvolvimento de LPS apoiado por geradores e aspectos
Propõe-se que as features transversais implementadas em um determinado domínio sejam reusadas em diversas linhas de produtos.
![Page 30: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/30.jpg)
30
Desenvolvimento de LPS apoiado por geradores e aspectos
São utilizados como base os processos de engenharia de domínio e de engenharia de aplicações apresentados no trabalho de Shimabukuro (2006).
Esses processos foram estendidos para apoiar os conceitos da nova abordagem proposta.
![Page 31: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/31.jpg)
31
Conceitos Domínios-base, também denominados
domínios específicos, representam a parte central do produto gerado e agrupam as features (obrigatórias ou não) que definem o negócio propriamente dito.
Exemplo: Sistemas Hospitalares ou de Contabilidade.
![Page 32: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/32.jpg)
32
Conceitos Domínios-transversais agrupam features que
encapsulam comportamentos genéricos (funcionais ou não-funcionais) de um interesse transversal referentes a vários domínios-base.
As features de um domínio transversal devem ser mais genéricas e possuir um alto grau de reúso em diferentes domínios-base.
Propõe-se que a combinação entre as features transversais e os domínios-base seja feita por meio de aspectos.
Exemplo: Persistência e Segurança.
![Page 33: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/33.jpg)
33
Domínio-base ADomínio-base A Domínio-base BDomínio-base B
Produto A1
Domínios-Base e Transversais
Produto A2
Produto B1
Domínio Transversal TDomínio Transversal T
Produto T1
Produto T2
![Page 34: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/34.jpg)
34
Conceitos Ponto de junção abstrato (PJA)
São os elementos responsáveis pelo acoplamento entre as features transversais de um domínio transversal com os produtos de um domínio-base.
Ponto de junção pré-definido (PJP) É um valor fixo para um PJA que pode ser
definido pelo engenheiro de domínio de acordo com o domínio-base que é afetado pelo PJA.
![Page 35: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/35.jpg)
35
Conceitos
Produto A1
Ponto de JunçãoGenérico
Produto T1
Instanciação do produto A1
Produto A1
Produto T1
Ponto de JunçãoConcreto
Combinação deT1 e A1
Ponto de JunçãoGenérico
Produto T1
Instanciação do produto T1
PJA de T1
![Page 36: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/36.jpg)
36
Conceitos Variabilidades funcionais
São variabilidades inerentes às regras de negócios do domínio e ditam as características que variam de um produto para outro da LPS.
Variabilidades de junção São as variabilidades existentes nos domínios
transversais que permitirão a combinação desse domínio com um ou mais domínios-base.
![Page 37: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/37.jpg)
37
Conjuntos de Extensão De acordo com o princípio da
inconsciência (Filman e Friedman, 2000), a dependência entre um aspecto e o código-base deveria garantir que a aplicação desconheça a existência do código transversal.
No contexto deste trabalho, considera-se que o código-base pode ter consciência dos aspectos que atuam sobre ele
![Page 38: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/38.jpg)
38
Conjuntos de Extensão Existem situações em que se torna
necessário realizar pequenos ajustes em um domínio-base para suportar a combinação com determinados domínios transversais.
O conceito de conjunto de extensão (CE) representa um grupo de adaptações na implementação de um domínio-base de acordo com os domínios transversais aplicados no momento da instanciação.
![Page 39: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/39.jpg)
39
Desenvolvimento de LPS para Domínios-Base e Domínios Transversais
A seguir são apresentados processos de engenharia de domínio e engenharia de aplicações adaptados para a modelagem de LPS para domínios-base e domínios transversais.
Esses processos têm o foco voltado para a instanciação automatizada de produtos utilizando geradores de aplicações e especificações LMA.
![Page 40: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/40.jpg)
40
Engenharia de Domínio
Foi utilizado como referência o processo proposto no trabalho de Shimabukuro (2006).
![Page 41: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/41.jpg)
41
Engenharia de Domínio-Base
Deve-se indicar quais domínios transversais podem ser combinados (domínios compatíveis).
Pode ser necessário definir conjuntos de extensão e pontos de junção pré-definidos.
![Page 42: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/42.jpg)
42
Engenharia de Domínio-Base
![Page 43: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/43.jpg)
43
Engenharia de Domínio Transversal
Definição das variabilidades de junção na LMA do domínio.
Deve-se indicar os domínios-base compatíveis.
Pode ser necessário inserir CE’s e PJP’s no domínios-base compatíveis.
![Page 44: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/44.jpg)
44
Engenharia de Domínio Transversal
![Page 45: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/45.jpg)
45
Engenharia de Aplicação
Processo de engenharia de aplicação (Shimabukuro, 2006).
![Page 46: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/46.jpg)
46
Engenharia de Aplicação
Novos produtos são definidos por meio da instanciação das LMA’s de seus respectivos domínios (Weiss e Lai, 1999).
Um produto específico pode ser composto a partir da combinação de mais de um domínio. Sendo um deles um domínio-base (domínio de aplicação) e os demais, domínios transversais.
![Page 47: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/47.jpg)
47
Engenharia de Aplicação
![Page 48: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/48.jpg)
48
Gerador de AplicaçõesEstendido Captor-AO
![Page 49: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/49.jpg)
49
Gerador Captor-AO
O gerador de aplicações Captor-AO é uma extensão do gerador Captor que permite a composição de aplicações baseadas em vários domínios.
Torna possível a geração de aplicações formadas por features de um domínio-base e features de diferentes domínios transversais, desde que a união dessas features não produza conflitos no produto resultante.
![Page 50: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/50.jpg)
50
Gerador Captor-AO
![Page 51: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/51.jpg)
51
Gerador Captor
Captor especializado
Domínio ABase
Aplicação A1
Domínio BTransversal
Domínio CTransversal
Captor não especializado
Eng. Domínio Eng. Aplicação
Aplicação A1
Composição
Aplicação B1
Aplicação C1
Aplicação B1
Aplicação C1
- Não há distinção entre domínios-base e transversais- Pontos de entrecorte não ficam explícitos- Variabilidades de junção misturadas com funcionais, devem ser localizadas e preenchidas manualmente.
![Page 52: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/52.jpg)
52
Extensão Captor-AO
Captor-AO especializado
Domínio ABase
Aplicação ABC
Domínio BTransversal
Domínio CTransversal
Eng. Domínio Eng. Aplicação
![Page 53: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/53.jpg)
53
Arquitetura Captor-AO
![Page 54: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/54.jpg)
54
Gerador Captor-AO
Ponto de vista do engenheiro de domínio-base: Indicar quais domínios podem ser
combinados com o domínio-base; Definir conjuntos de extensão que devem ser
acrescentados caso a composição seja concretizada.
Especificar PJP’s para os PJA’s dos domínios transversais compatíveis
![Page 55: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/55.jpg)
55
Gerador Captor-AO
Ponto de vista do engenheiro de domínio-base: Indicar quais domínios podem ser
combinados com o domínio-base; Definir conjuntos de extensão que devem ser
acrescentados caso a composição seja concretizada.
Especificar PJP’s para os PJA’s dos domínios transversais compatíveis
![Page 56: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/56.jpg)
56
Gerador Captor-AO
![Page 57: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/57.jpg)
57
Gerador Captor-AO
Ponto de vista do engenheiro de domínio-base: Indicar quais domínios podem ser
combinados com o domínio-base; Definir conjuntos de extensão que
devem ser acrescentados caso a composição seja concretizada.
Especificar PJP’s para os PJA’s dos domínios transversais compatíveis
![Page 58: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/58.jpg)
58
Gerador Captor-AO
Conjuntos de Extensão: Anotação especial em que um conjunto de comandos é
processado somente se um determinado domínio transversal fizer parte da combinação.
![Page 59: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/59.jpg)
59
Gerador Captor-AO
Ponto de vista do engenheiro de domínio-base: Indicar quais domínios podem ser
combinados com o domínio-base; Definir conjuntos de extensão que devem ser
acrescentados caso a composição seja concretizada.
Especificar PJP’s para os PJA’s dos domínios transversais compatíveis
![Page 60: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/60.jpg)
60
<DomainInfo> <crosscuttingDomain>false</crosscuttingDomain> <CompatibleDomains> <Domain>
<domainName>Persistencia</domainName> <PreDefinedPointcuts> <AbstractPointcut> <refName>AbrirConexao</refName> <concreteValue>
execution (public void main(..)) </concreteValue> </AbstractPointcut> <AbstractPointcut> <refName>FecharConexao</refName> <concreteValue>
execution (public void main(..)) </concreteValue>
</AbstractPointcut> </PreDefinedPointcuts> </Domain> </CompatibleDomains></DomainInfo>
Especificação Transversal
Pontos de Junção Pré-Definidos
Pontos de Junção Pré-Definidos
Domínio CompatívelDomínio Compatível
![Page 61: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/61.jpg)
61
Gerador Captor-AO
Ponto de vista do engenheiro de um domínio transversal: Indicar quais domínios-base podem ser
combinados com o domínio transversal; Especificar PJP’s e CE’s nos domínios-base
compatíveis. Especificação dos PJA’s do domínio.
![Page 62: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/62.jpg)
62
Gerador Captor-AO
Ponto de vista do engenheiro de um domínio transversal: Indicar quais domínios-base podem ser
combinados com o domínio transversal; Especificar PJP’s e CE’s nos domínios-base
compatíveis. Especificação dos PJA’s do domínio.
![Page 63: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/63.jpg)
63
Modelagem de Pontos de Junção Abstratos
Elemento de formulário utilizado para representar um PJA na LMA do domínio transversal.
![Page 64: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/64.jpg)
64
Modelagem de Pontos de Junção Abstratos
Gabaritos do domínio transversal podem acessar o valor fornecido para o PJA por meio do comando abstractpointcut.
![Page 65: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/65.jpg)
65
Gerador Captor-AO
Ponto de vista do engenheiro de aplicações: Permitir que uma aplicação específica seja
composta a partir da instanciação de um ou mais domínios escolhidos pelo engenheiro de aplicações.
Instanciar as LMA’s dos domínios selecionados utilizando a estrutura de formulários adaptada.
![Page 66: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/66.jpg)
66
Gerador Captor-AO
![Page 67: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/67.jpg)
67
Gerador Captor-AO
![Page 68: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/68.jpg)
68
Gerador Captor-AO
Geração de Produtos Validação das instâncias fornecidas; Geração dos artefatos e concretização dos aspectos
abstratos.
![Page 69: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/69.jpg)
69
Gerador Captor-AO
A versão atual do Captor-AO (versão 2.0.6), excluindo artefatos externos e casos de teste, possui 338 classes e um total de 38.033 linhas de código.
Tanto o código do gerador Captor-AO quanto os binários executáveis podem ser obtidos na página web do projeto: http://captor.googlecode.com.
O projeto da ferramenta é compatível com o gerenciador de projetos Maven (http://maven.apache.org/)
![Page 70: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/70.jpg)
70
Conclusão
![Page 71: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/71.jpg)
71
Conclusões
A utilização de domínios transversais proporciona o reúso de interesses transversais em diversas LPS, evitando a implementação redundante de features.
A modularização das variabilidades de junção facilita a combinação entre aspectos de um domínio transversal e o código-base.
![Page 72: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/72.jpg)
72
Contribuições
A principal contribuição deste trabalho é a proposta de um processo de desenvolvimento de linhas de produtos apoiadas por geradores e aspectos.
Adicionalmente, foi implementada uma extensão do gerador Captor para apoiar a abordagem proposta.
Essa extensão, chamada Captor-AO, permite a criação de linhas de produtos para domínios-base e domínios transversais, utilizando os novos conceitos propostos.
![Page 73: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/73.jpg)
73
Trabalhos Futuros
Permitir a utilização de dois ou mais domínios-base compatíveis no processo de combinação de domínios.
Melhorias no processo de teste de compatibilidade entre domínios.
Criar mecanismos de validação dos pontos de entrecorte em que os domínios transversais afetam os domínios-base.
Testar o desempenho do Captor-AO utilizando linhas de produtos reais.
Criação de um plugin do Captor-AO para o ambiente de desenvolvimento Eclipse.
![Page 74: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/74.jpg)
74
Referências
ANASTASOPOULOS, M.; MUTHIG, D. An evaluation of aspect-oriented programming as a product line implementation technology. In: ICSR ’04: Proceedings of the 8th International Conference Software Reuse, Springer, 2004, p. 141–156.
APEL, S.; LEICH, T.; ROSENMULLER, M.; SAAKE, G. Combining feature-oriented and aspectoriented programming to support software evolution. In: RAM-SE ’05: Proceedings of 2nd ECOOP Workshop on Reflection, AOP and Meta-Data for Software Evolution, 2005a, p. 3–16.
APEL, S.; LEICH, T.; ROSENMULLER, M.; SAAKE, G. FeatureC++: On the symbiosis of Feature-Oriented and Aspect-Oriented programming. In: GPCE ’05: Proceedings of the 4th International Conference on Generative Programming and Component Engineering, Springer, 2005b, p. 125–140.
APEL, S.; LEICH, T.; SAAKE, G. Aspect refinement and bounding quantification in incremental designs. In: APSEC ’05: Proceedings of the 12th Asia-Pacific Software Engineering Conference (APSEC’05), IEEE Computer Society, 2005c, p. 796–804.
CIRILO, E.; KULESZA, U.; LUCENA, C. Genarch: a model-based product derivation tool. In: Proceedings of Simpósio Brasileiro de Componentes, Arquitetura e Reutilização de Software (SBCARS’2007), 2007, p. 31–46.
![Page 75: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/75.jpg)
75
Referências
CLEAVELAND, J. C. Building application generators. IEEE Software, v. 9, n. 4, p. 25–33, 1988.
DIJKSTRA, E. A discipline of programming. Prentice-Hall, 1976.
FILMAN, R. E.; FRIEDMAN, D. P. Aspect-oriented programming is quantification and obliviousness. In: OOPSLA ’00: Position paper for the Advanced Separation of Concerns Workshop at the Conference on Object-Oriented Programming Systems, Languages, and Applications, ACM, 2000.
GRISS, M. L. Implementing product-line features with component reuse. In: 6th International Conference on Software Reuse (ICSR), 2000, p. 137–152.
HEO, S.; CHOI, E. M. Representation of variability in software product line using aspect-oriented programming. In: SERA ’06: Proceedings of the 4th International Conference on Software Engineering Research, Management and Applications, IEEE Computer Society, 2006, p. 66–73.
KICZALES, G.; LAMPING, J.; MENHDHEKAR, A.; MAEDA, C.; LOPES, C.; LOINGTIER, J. M.; IRWIN, J. Aspect-oriented programming. In: ECOOP ’97: Proceedings of European Conference on Object-Oriented Programming, Springer-Verlag, 1997, p. 220–242.
![Page 76: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/76.jpg)
76
Referências
LEE, K.; KANG, K. C.; KIM, M.; PARK, S. Combining feature-oriented analysis and aspectoriented programming for product line asset development. In: SPLC ’06: Proceedings of the 10th International on Software Product Line Conference, IEEE Computer Society, 2006, p. 103–112.
LESAINT, D.; PAPAMARGARITIS, G. Aspects and constraints for implementing configurable product-line architectures. In: WICSA ’04: Proceedings of the Fourth Working IEEE/IFIP Conference on Software Architecture, IEEE Computer Society, 2004, p. 135–144.
MASIERO, P. C.; MEIRA, C. A. A. Development and instantiation of a generic application generator. Journal of Systems and Software, v. 23, n. 1, p. 27–37, 1993.
MEZINI, M.; OSTERMANN, K. Conquering aspects with caesar. In: AOSD ’03: Proceedings of the 2nd international conference on Aspect-oriented software development, ACM Press, 2003, p. 90–99.
MEZINI, M.; OSTERMANN, K. Variability management with feature-oriented programming and aspects. SIGSOFT Softw. Eng. Notes, v. 29, n. 6, p. 127–136, 2004.
![Page 77: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/77.jpg)
77
Referências
PRESSMAN, R. S. Engenharia de software. 5nd. ed. McGraw-Hill, 2002.
SHIMABUKURO, E. K. Um gerador de aplicações configurável. Dissertação de Mestrado, ICMC/USP, São Carlos, SP, 2006.
WEISS, D. M.; LAI, C. T. R. Software product-line engineering: a family-based software development process. Addison-Wesley, 1999.
![Page 78: 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora:](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc117497959413d8c861c/html5/thumbnails/78.jpg)
78
Contato
Endereço Eletrônico [email protected] (Carlos) [email protected] (Rosana)
Página web http://captor.googlecode.com