1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta...

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: Rosana Teresinha Vaccare Braga Universidade de São Paulo Instituto de Ciências Matemáticas e Computação - ICMC

Transcript of 1 Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta...

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

78

Contato

Endereço Eletrônico [email protected] (Carlos) [email protected] (Rosana)

Página web http://captor.googlecode.com