geração de famílias de produtos de software com arquitetura baseada em componentes paula m....

45
Geração de Famílias de Produtos de Geração de Famílias de Produtos de Software com Arquitetura Baseada em Software com Arquitetura Baseada em Componentes Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São Paulo Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Instituto de Ciências Matemáticas e de Computação Fundação de Amparo à Pesquisa do Estado de São Paulo Laboratório de Engenharia de Software

Upload: internet

Post on 17-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

Geração de Famílias de Produtos de Geração de Famílias de Produtos de Software com Arquitetura Baseada em Software com Arquitetura Baseada em

ComponentesComponentes

Paula M. Donegan

Orientador: Paulo Cesar Masiero

Universidade de São PauloUniversidade de São PauloInstituto de Ciências Matemáticas e de ComputaçãoInstituto de Ciências Matemáticas e de Computação

Fundação de Amparo à Pesquisa do Estado de São Paulo Laboratório de Engenharia de Software

Page 2: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

2

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

RoteiroRoteiro

• Contextualização

• Motivação e Objetivos

• Desenvolvimento de Linhas de Produtos de Software

• Decisões de Projeto da LPS-BET

• Uso do Gerador Captor para a Engenharia de Aplicações da LPS-BET

• Conclusão

Page 3: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

3

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Reúso de SoftwareReúso de Software

• Reúso de software (Biggerstaff e Perlis, 1989; Freeman, 1987; Krueger, 1992)

• Componentes(Szyperski, 2002; Griss, 2001)

• Desenvolvimento de Software Baseado em Componentes(D’Souza e Wills, 1998; Atkinson et al., 2001; Cheesman e Daniels, 2001)

• Geradores de aplicação (Cleaveland, 1988; Czarnecki e Eisenecker, 1999; Weiss e Lai, 1999)

Page 4: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

4

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Arquitetura de Software, Componentes e Arquitetura de Software, Componentes e AspectosAspectos

• Programação Orientada a Aspectos(Kiczales et al., 1997; Binkley et al., 2006; Kiczales et al., 2001)

• Arquitetura de Software e ADLs(Shaw et al., 1995; Garlan et al., 2000; Medvidovic e Taylor, 2000; Pérez et al., 2003; Batista et al., 2006)

• Desenvolvimento de Software baseado em Componentes e em Aspectos(Suvée et al., 2006; Eler, 2006; Aldrich, 2004)

Page 5: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

5

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Linhas de Produtos de SoftwareLinhas de Produtos de Software

• Linhas de Produtos de Software (LPS)• Engenharia de Domínio • Engenharia de Aplicação

(Bayer et al., 1999; Clements e Northrop, 2001; Gomaa, 2004; Weiss e Lai, 1999)

• Técnicas de projeto para facilitar reúso• Componentes (Atkinson et al., 2001; Gomaa, 2004; Pohl et al., 2005)

• Geradores de código (Weiss e Lai, 1999)

• Representar variabilidades• Características (features) (Kang et al., 1990)

• Aspectos (Apel e Batory, 2006; Heo e Choi, 2006; Lee et al, 2006; Mezini e Ostermann, 2004)

Page 6: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

6

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

MotivaçãoMotivação

• Problemas a serem investigados: (Osterweil, 2007; Taylor e van der Hoek, 2007)

• Aspectos • Arquiteturas• Métodos ágeis• Componentes

• LPS

• Vertentes de LPS• Foco maior na Engenharia de Domínio• Foco maior na Engenharia de Aplicações

• LPS de forma completa e detalhada

Page 7: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

7

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

ObjetivosObjetivos

• Convergir as duas vertentes

• Definir um processo de desenvolvimento de LPS• Projeto baseado em componentes• Uso de geradores para obter os produtos

• Em uma LPS com arquitetura baseada em componentes:• Investigar questões relacionadas ao projeto• Pesquisar uso de aspectos• Investigar a geração de produtos

Page 8: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

Desenvolvimento de Linhas de Desenvolvimento de Linhas de Produtos de SoftwareProdutos de Software

Page 9: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

9

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Desenvolvimento de Desenvolvimento de Linhas de Produtos de SoftwareLinhas de Produtos de Software

• Princípios adotados para desenvolvimento da LPS

• Adaptações propostas ao processo ESPLEP

• Processo de desenvolvimento da LPS-BET• Engenharia de domínio• Engenharia de aplicação

Page 10: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

10

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Princípios Adotados para o Princípios Adotados para o Desenvolvimento da LPSDesenvolvimento da LPS

• Método PLUS

• Engenharia avante

• Evolução pró-ativa da LPS

• Incrementos guiados por aplicações-referência

• Núcleo operacional

• Arquitetura baseada em componentes caixa-preta

• Uso de aspectos

Page 11: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

11

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Adaptações Propostas ao Processo Adaptações Propostas ao Processo ESPLEPESPLEP

• Desenvolver diversas versões da LPS • Incrementos• Percorrer rapidamente as fases do Processo Unificado

• Subatividade adicional• Análise e projeto parcial de características de incrementos

posteriores (fase de elaboração)

• Engenharia de aplicação: método FAST (Weiss e Lai, 1999)

• Transição: linguagem de modelagem de aplicações

Page 12: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

12

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Incrementos de LPSsIncrementos de LPSs

Incrementos horizontais e verticais

Page 13: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

13

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

LPS-BETLPS-BET

• Validação das propostas

• Bilhetes Eletrônicos de Transporte (BET)

• Dados de passageiros, cartões, linhas, viagens, etc.

• Validador em ônibus se comunica com sistema central para debitar passagem

• Pode haver sistema de integração

• Análise de 3 sistemas BET:• São Carlos (São Paulo)• Fortaleza (Ceará) • Campo Grande (Mato Grosso do Sul)

Page 14: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

14

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Ciclo de Desenvolvimento do NúcleoCiclo de Desenvolvimento do Núcleo

Page 15: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

15

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Diagrama de Características Diagrama de Características do Núcleo da LPS-BETdo Núcleo da LPS-BET

Page 16: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

16

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Características da LPS-BETCaracterísticas da LPS-BET

Característica Fortaleza Campo Grande São Carlos

Acesso Adicional X X

Autenticação Passageiro X

Forma de Integração

- Terminal

- Integração

* Tempo

* Linha de Integração

* Número de Viagens de Integração

X X

X

X

X

X

X

Pagamento de Cartão X

Restrição de Cartões

- Número de Cartões

- Combinação de Cartões X

X

Empresas Usuárias X X

Limite de Passagens X

Page 17: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

17

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Arquitetura da LPS-BETArquitetura da LPS-BET

Page 18: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

18

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Page 19: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

19

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Ciclo de Desenvolvimento da Aplicação-Ciclo de Desenvolvimento da Aplicação-Referência de FortalezaReferência de Fortaleza

• Casos de Uso:• Gerenciar terminal

• Verificar pagamento do cartão

• Gerenciar empresa usuária

Page 20: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

20

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Ciclo de Desenvolvimento da Aplicação-Ciclo de Desenvolvimento da Aplicação-Referência de Campo GrandeReferência de Campo Grande

• Casos de Uso:• Consultar viagens• Imprimir extrato• Verificar integração• Gerenciar linha de integração• Verificar quantidade de viagens de integração• Gerenciar terminal• Adquirir cartão• Gerenciar empresa usuária

Page 21: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

21

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Ciclo de Desenvolvimento da Aplicação-Ciclo de Desenvolvimento da Aplicação-Referência de São CarlosReferência de São Carlos

• Casos de Uso:• Consultar viagens• Imprimir extrato• Autenticar usuário• Verificar integração• Gerenciar linha de integração• Adquirir cartão• Gerenciar limite de passagens• Verificar limite de passagens

Page 22: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

22

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Informações sobre a Informações sobre a Construção da LPS-BETConstrução da LPS-BET

Média por componente Núcleo Variabilidades LPS

Classes por componente 2,63 1,62 2,07

Atributos por componente 7,07 4,85 5,84

Métodos por componente 26,70 17,59 21,62

LOC por componente 179,85 134,85 154,77

Page 23: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

Decisões de Projeto Decisões de Projeto da LPS-BET da LPS-BET

Page 24: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

24

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Parte do diagrama de features

Parte do modelo de classes

Projeto de Características: Projeto de Características: Formas de IntegraçãoFormas de Integração

Nova classe requerida

Nova classe requerida

Page 25: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

25

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Projeto de Características: Projeto de Características: Formas de IntegraçãoFormas de Integração

Novas subclasses requeridas

Classe Parametrizada

Componente Caixa-Branca Componente Caixa-Preta

Page 26: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

26

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

ComponentesComponentesCaixa-Branca x Caixa-PretaCaixa-Branca x Caixa-Preta

Tipo de Componente Vantagens Desvantagens

Caixa-branca - Facilidade de implementação

- Facilidade de composição

- Duplicação de código

- Dificuldade de manutenção

Caixa-preta - Maior separação de interesses

- Facilidade de manutenção

- Maior interação entre componentes

- Pior desempenho

Page 27: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

27

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Opções de Projeto de VariabilidadesOpções de Projeto de Variabilidades

Opção Característica Vantagens Desvantagens

Classe parametrizada

- Alterações em nível de atributos e operações

- Componente caixa-branca

- Menor quantidade de classes

- Melhor desempenho

- Não há separação de interesses

Subclasses variantes

- Alterações em nível de classes

- Componente caixa-branca

- Separação de interesses

(por classes)

- Dificuldade de manutenção

Classes independentes

- Alterações em nível de componentes independentes

- Componente caixa-preta

- Facilidade de manutenção- Separação de interesses

(por componentes)

- Possível explosão de classes e de componentes

- Pior desempenho

Page 28: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

28

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Decisões de Projeto da LPS-BETDecisões de Projeto da LPS-BET

Solução integrando características Tempo e Número de Viagens na arquitetura da LPS-BET

Page 29: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

29

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Uso de AspectosUso de Aspectos

• Requisitos Não-Funcionais

Page 30: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

30

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Uso de AspectosUso de Aspectos

• Representação de Variabilidades

Page 31: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

31

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Uso de AspectosUso de Aspectos

Page 32: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

Uso do Gerador Captor para a Uso do Gerador Captor para a Engenharia de Aplicações Engenharia de Aplicações

da LPS-BET da LPS-BET

Page 33: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

33

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Configuração para o Domínio BETConfiguração para o Domínio BET

Formulário Elementos Variantes Possíveis Valores

Variabilidades Nome da Aplicação <nome da aplicação>

Acesso a Informações Acesso Adicional inexistente, existente

Formas de Integração Terminal inexistente, existente

Integração inexistente, tempo número de viagens e linha integração (combinação das variáveis)

Solução de Integração com componentes, com aspectos*Aquisição de Cartão Pagamento de Cartão inexistente, existente

Restrição de Cartões inexistente, número de cartões, combinação de cartões

Carga de Cartão Limite de Passagens inexistente, existente

Responsáveis por Cartões Empresas Usuárias inexistente, existente

* Geração de versão usando componentes ou usando aspectos para as variabilidades de Integração

Page 34: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

34

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Gabarito para a LPS-BETGabarito para a LPS-BET1. <?xml version="1.0" encoding="UTF-8"?>2. <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">3. <xsl:output method="xml" doctype-system="http://www.springframework.org/dtd/spring-beans.dtd"/>4. <xsl:template match="/">5. <beans>6. <!--Beans relacionados ao sistema web-->7. <!--Beans de Componentes de Negócio do Núcleo-->8. ...9. <bean id="LinhaMgr" class="lps.bet.basico.linhaMgr.LinhaMgr">10. <property name="linhaDAO" ref="LinhaDAO"/>11. <property name="corridaDAO" ref="CorridaDAO"/>12. <property name="validadorDAO" ref="ValidadorDAO"/>13. <property name="onibusDAO" ref="OnibusDAO"/>14. </bean>15. ...16. <!-- Beans relacionados ao Hibernate-->17. <!-- Partes variáveis do gabarito-->18. ...19. <xsl:if 20. test="formsData/forms/form/form[@variant=’Formas de Integracao’]/data/combo[@name=’terminal’]=’existente’">21. <bean id="TerminalMgr" class="lps.bet.variabilidades.terminalMgr.TerminalMgr">22. <property name="terminalDAO" ref="TerminalDAO"/>23. </bean>24. <!--Configuração dos Beans GerenciaTerminal e TerminalDAO-->25. </xsl:if >26. ...27. </beans>28. </xsl:template >29. </xsl:stylesheet >

Page 35: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

35

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Engenharia de Aplicações da LPS-BETEngenharia de Aplicações da LPS-BET

Page 36: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

36

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

1. <?xml version="1.0" encoding="ISO-8859-1"?>2. <formsData >3. …4. <forms >5. <form id="1.1" variant="Variabilidades">6. …7. <form id="2.1" variant="Acesso a Informacoes">8. <data>9. <combo name="acessoAdicional">existente</combo >10. </data>11. </form>12. <form id="3.1" variant="Formas de Integracao">13. <data>14. <combo name="terminal">existente</combo >15. <combo name="integracao">tempo, numero de viagens, linha integrada</combo >16. <combo name="solucaoIntegracao">com componentes</combo >17. </data>18. </form>19. <form id="4.1" variant="Aquisicao de Cartao">20. <data>21. <combo name="pgtoCartao">inexistente</combo >22. <combo name="restricaoCartoes">numero de cartoes</combo >23. </data>24. </form>25. <form id="5.1" variant="Carga de Cartao">26. <data>27. <combo name="limitePassagens">inexistente</combo >28. </data>29. </form>30. <form id="6.1" variant="Responsaveis por Cartoes">31. <data>32. <combo name="empresasUsuarias">existente</combo >33. </data>34. </form>35. </form>36. </forms >37. </formsData >

Engenharia de Aplicações da LPS-BETEngenharia de Aplicações da LPS-BET

Page 37: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

37

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Page 38: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

38

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

ContribuiçõesContribuições

• Proposta da adaptação do processo ESPLEP:• Ter um processo mais ágil• Projetar e desenvolver características com re-trabalho mínimo• Facilitar a engenharia de aplicações com algumas propriedades

• Estudo detalhado de alternativas para projeto de componentes caixa-preta:• Base nos diagramas de características e de classes

• Investigou-se como usar aspectos com componentes:• Requisitos não-funcionais que são transversais • Variabilidades funcionais e não-funcionais

• Produção de uma LPS não trivial• Disponível em: code.google.com/p/bet

Page 39: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

39

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Trabalhos FuturosTrabalhos Futuros

• Completar o desenvolvimento da variabilidade que falta

• Usar a LPS-BET para ensino na graduação e pós-graduação

• Desenvolver uma versão da linha com todas as variabilidades implementadas por aspectos• Analisar mais a representação de variabilidades usando aspectos• Coletar métricas e executar experimentos para comparar as duas

soluções

• Pesquisar sobre testes em LPS• Analisar como fazer os testes de regressão ao adicionar uma

nova variabilidade• Investigar o uso de “build-in testing” para componentes de uma

LPS

Page 40: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

Perguntas?Perguntas?

Contato:[email protected] / [email protected]

BET:http://code.google.com/p/bet/

Page 41: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

41

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Referências (I)Referências (I)• ALDRICH, J. Open Modules: A Proposal for Modular Reasoning in Aspect-Oriented Programming. In:

FOAL 2004 Proceedings - Foundations of Aspect-Oriented Languages, Workshop at AOSD, Lancaster, UK, 2004, p. 7–18.

• APEL, S.; BATORY, D. When to Use Features and Aspects? A Case Study. In: Proceedings of the 5th International Conference on Generative Programming and Component Engineering, ACM Press New York, NY, USA, 2006, p. 59–68.

• ATKINSON, C.; BAYER, J.; BUNSE, C.; LAITENBERGER, O.; LAQUA, R.; KAMSTIES, E.; MUTHIG, D.; PAECH, B.; WÜST, J.; ZETTEL, J. Component-based Product Line Engineering with UML. Component Series, Addison-Wesley, 464 p., 2001.

• BATISTA, T. V.; CHAVEZ, C.; GARCIA, A.; SANT’ANNA, C.; KULESZA, U.; LUCENA, C. Aspectual Connectors: Supporting the Seamless Integration of Aspects and ADLs. Simpósio Brasileiro de Engenharia de Software - SBES 2006, p. 17–32, Florianópolis, Brasil, 2006b.

• BAYER, J.; FLEGE, O.; KNAUBER, P.; LAQUA, R.; MUTHIG, D.; SCHMID, K.; WIDEN, T.; DEBAUD, J. PuLSE: a Methodology to Develop Software Product Lines. In: Proceedings of the 1999 ACM SIGSOFT Symposium on Software Reusability, ACM Press, Los Angeles, USA, 1999, p. 122–131.

• BIGGERSTAFF, T.; PERLIS, A. Software Reusability: Vol. 1, Concepts and Models. ACM Press New York, NY, USA, 425 p., 1989.

• BINKLEY, D.; CECCATO, M.; HARMAN, M.; RICCA, F.; TONELLA, P. Tool-Supported Refactoring of Existing Object-Oriented Code into Aspects. IEEE Transactions on Software Engineering, v. 32, n. 9, p. 698–717, 2006.

• CHEESMAN, J.; DANIELS, J. UML Components: A Simple Process for Specifying Component-Based Software. Addison-Wesley Boston, 208 p., 2001.

• CLEAVELAND, J. C. Building Application Generators. Software, IEEE, v. 5, n. 4, p. 25–33, 1988.

Page 42: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

42

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Referências (II)Referências (II)• CLEMENTS, P.; NORTHROP, L. Software Product Lines: Practices and Patterns. Addison-Wesley

Boston, 576 p., 2001.

• CZARNECKI, K.; EISENECKER, U. Components and Generative Programming. ACMSIGSOFT, v. 24, n. 6, p. 2–19, 1999.

• D’SOUZA, D.; WILLS, A. Objects, Components, and Frameworks with UML: the Catalysis approach. Addison-Wesley Longman Publishing Co., Inc., 785 p., Boston, USA, 1998.

• ELER, M. M. Um Método para o Desenvolvimento de Software baseado em Componentes e Aspectos. Dissertação de Mestrado, Instituto de Ciências Matemáticas e de Computação -ICMC, Universidade de São Paulo (USP), 2006.

• FREEMAN, P. Reusable Software Engineering: Concepts and Research Directions. IEEE Tutorial Software Reusability, p. 10–25, 1987.

• GARLAN, D.; MONROE, R.; WILE, D. Acme: Architectural Description of Component-Based Systems. Foundations of Component-Based Systems, p. 47–68, 2000.

• GOMAA, H. Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures. Addison-Wesley Boston, 736 p., 2004.

• GRISS, M. CBSE Success Factors: Integrating Architecture, Process, and Organization. Component-Based Software Engineering: Putting the Pieces Together, p. 143–160, 2001a.

• HEO, S.; CHOI, E. Representation of Variability in Software Product Line Using Aspect-Oriented Programming. In: Proceedings of the Fourth International Conference on Software Engineering Research, Management and Applications - SERA 2006, IEEE Computer Society, Washington, USA, 2006, p. 66–73.

• KANG, K.; et al. Feature-Oriented Domain Analysis (FODA) Feasibility Study. Techical Report CMU/SEI-90-TR-021, Carnegie Mellon University, Software Engineering Institute, 161 p., 1990.

Page 43: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

43

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Referências (III)Referências (III)• KICZALES, G.; LAMPING, J.; MENDHEKAR, A.; MAEDA, C.; LOPES, C. V.; LOINGTIER, J.-M.; IRWIN,

J. Aspect-Oriented Programming. In: Proceedings of the European Conference on Object-Oriented Programming (ECOOP), Lecture Notes in Computer Science 1241, Springer-Verlag, Finland, 1997.

• KICZALES, G.; HILSDALE, E.; HUGUNIN, J.; KERSTEN, M.; PALM, J.; GRISWOLD, W. An Overview of AspectJ. In: Proceedings of the 15th European Conference on Object-Oriented Programming, Lecture Notes in Computer Science, Springer-Verlag, London, UK, 2001, p. 327–353.

• KRUEGER, C. Software Reuse. ACM Computing Surveys (CSUR), v. 24, n. 2, p. 131–183, New York, USA, 1992.

• LEE, K.; KANG, K.; KIM, M.; PARK, S. Combining Feature-Oriented Analysis and Aspect-Oriented Programming for Product Line Asset Development. In: Proceedings of 10th International Software Product Line Conference - SPLC 2006, Baltimore, USA, 2006, p. 103–112.

• MEDVIDOVIC, N.; TAYLOR, R. A Classification and Comparison Framework for Software Architecture Description Languages. IEEE Transactions on Software Engineering, v. 26, n. 1, p. 70–93, 2000.

• MEZINI, M.; OSTERMANN, K. Variability Management with Feature-Oriented Programming and Aspects. In: Proceedings of the 12th ACM SIGSOFT International Symposium on Foundations of Software Engineering, ACM Press New York, California, USA, 2004, p. 127–136.

• OSTERWEIL, L. J. A Future For Software Engineering? In: Proceedings of the 2nd Conference on the Future of Software Engineering - FoSE’ 07, IEEE Computer Society, Washington, USA, 2007, p. 1–11.

• PÉREZ, J.; RAMOS, I.; JAÉN, J.; LETELIER, P.; NAVARRO, E. PRISMA: Towards Quality, Aspect Oriented and Dynamic Software Architectures. In: Proceedings of the 3rd IEEE International Conference on Quality Software - QSIC 2003, IEEE Computer Society, Dallas, USA, 2003, p. 59–66.

• POHL, K.; BÖCKLE, G.; LINDEN, F. Software Product Line Engineering: Foundations, Principles, and Techniques. Springer, 468 p., 2005.

Page 44: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

44

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Referências (IV)Referências (IV)• SHAW, M.; DELINE, R.; KLEIN, D.; ROSS, T.; YOUNG, D.; ZELESNIK, G. Abstractions for Software

Architecture and Tools to Support Them. IEEE Transactions on Software Engineering, v. 21, n. 4, p. 314–335, 1995.

• SUVÉE, D.; FRAINE, B. D.; VANDERPERREN, W. A Symmetric and Unified Approach Towards Combining Aspect-Oriented and Component-Based Software Development. In: Component-Based Software Engineering, Springer Berlin / Heidelberg, Lecture Notes in Computer Science, 2006, p. 114–122.

• SZYPERSKI, C. Component Software: Beyond Object-Oriented Programming. 2a ed. Addison-Wesley, Harlow, England, 624 p., 2002.

• TAYLOR, R.; HOEK, A. Software Design and Architecture: The Once and Future Focus of Software Engineering. In: Proceedings of the International Conference on Software Engineering - ICSE, IEEE Computer Society Washington, DC, USA, 2007, p. 226–243.

• WEISS, D.; LAI, C. Software Product-line Engineering: a Family-based Software Development Process. Addison-Wesley Longman Publishing Co., Inc., 448 p., Boston, USA, 1999.

Page 45: Geração de Famílias de Produtos de Software com Arquitetura Baseada em Componentes Paula M. Donegan Orientador: Paulo Cesar Masiero Universidade de São

45

Geração de Famílias de Produtos de Software com Arquitetura baseada em Componentes

Engenharia de Domínio Engenharia de Domínio no Processo ESPLEPno Processo ESPLEP

Fonte: Gomaa, 2004