Um Processo de Reestruturação de Código Baseado em Aspectos

  • Ricardo Argenton Ramos UFSCar
  • Rosângela Penteado UFSCar
  • Paulo César Masiero USP

Resumo


A maioria dos sistemas Orientado a Objetos (OO) tem em seu código fonte requisitos não funcionais entrelaçados com os requisitos funcionais. Assim, há dificuldade na manutenção e na expansão desses sistemas. o processo, proposto neste artigo, denominado Aspecting auxilia a elicitação dos requisitos não funcionais do código fonte, chamados de interesses, para sua posterior implementação utilizando uma linguagem que suporte aspectos, como por exemplo AspectJ. Diagramas de casos de uso e de classes de projeto apóiam a etapa de entendimento da funcionalidade do sistema OO. Diretrizes auxiliam na descoberta dos interesses existentes, por meio da Lista de Indícios, e a inserção de aspectos nos diagramas de classes UML, de projeto. Outras diretrizes conduzem à etapa de implementação. Três estudos de caso foram utilizados para a criação do processo Aspecting

Referências

Camargo, V.V.; Ramos, R.A.; Penteado, R.A.D.; Masiero, P.C. Projeto Baseado em Aspectos do Padrão Camada de Persistência. In: Simpósio Brasileiro de Engenharia de Software - SBES - 2003, pág. 114-129, Manaus - AM, Brasil, 2003.

Camargo, V.V. Um Perfil UML para Projeto de Sistemas Orientados a Aspectos. In: Relatório Técnico - Universidade de São Paulo - ICMC/USP, São Carlos - SP, Brasil, Abril de 2004.

Chavez, C.F.G.; Lucena, C.J.P. Design Support for Aspect-Oriented Software Development. In: Doctoral Symposium and Pôster Section of OOSPLA 2001. Tampa Bay, Florida, USA, Outubro, 2001.

Chung, L.; Nixon, B.; Yu, E.; Mylopoulos, J. Non-functional requirements in software engineering. In: Boston: Kluwer Academic, pág. 439, 1999.

Cysneiros, L.M.; Leite, J.C.S.P. Definindo Requisitos Não Funcionais. In: Simpósio Brasileiro de Engenharia de Software - SBES'1997, Fortaleza - CE, Brasil, pág. 49-54, Outubro 1997.

Czarnecki, K.; Eisenecker, U. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000.

Elrad, T.; Filman R. Bader A. Aspect-Oriented Programming. In: Communications of ACM, pág. 29-32, 2001.

Gamma, E.; Helm, R.; Johnson, R.E.; Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.

GNU - Grupo de desenvolvedores para a Linguagem Java - Códigos fonte disponíveis em: http://www.cacas.org/java/gnu/regexp.html. - Último acesso em 05/2003.

Hanenberg, S.; Unland, R. AspectJ Idioms for Aspect-Oriented Software Construction. In: 2nd AOSD Workshop on Aspects, Components, and Patterns for Infrastructure Software (ACP4IS), Boston, MA, Março 17, 2003.

Hannemann, J.; Kiczales, G. Overcoming the Prevalent Decomposition in Legacy Code. In: Workshop on Advanced Separation of Concerns, International Conference on Software Engineering. Toronto, Canadá, Maio 2001.

Hilsdale, E.; Hugunin, J. Advice Weaving in AspectJ. Submetido à 3rd International Conference on Aspect-Oriented Software Development - AOSD. abril 2004.

Kiczales, G.; Lamping, J.; Mendhekar, A. RG: A Case-Study for Aspect-Oriented Programming. In: SPL97. Xerox Palo Alto Research Center, Technical Report, 1997.

Kiczales, G.; Hilsdale, E.; Hugunin, J.; Kersten, M.; Palm, J. Griswold, W.G. Getting Started with AspectJ. In: Anais do ACM, pág. 59-65, Outubro 2001.

Kulesza, U.; Silva, D. M. Reengenharia do Projeto do Servidor Web JAWS Utilizando Programação Orientada a Aspectos. In: XIV Simpósio Brasileiro de Engenharia de Software - SBES, 2000, Sessões técnicas, João Pessoa - PB, Brasil.

Laddad, R. AspectJ in Action: Practical Aspect-Oriented Programming. Manning Publications Company, Connecticut - USA, 2003. 512 p.

Noda, N.; Kishi, T. Implementing Design Patterns Using Advanced Separation of Concerns. In: OOPSLA 2001, Workshop on Advanced Separation of Concerns in Object-Oriented Systems, Tampa Bay, Florida, Outubro 2001.

Omondo - Ferramenta para Modelagem - Plug-in disponível em http://www.omondo.com. - Último acesso em 04/2004.

Pawlak, R., Duchien, L., Florin G., Legong-Aubry, F., Seinturier, L, Martelli, L. A UML Notation for Aspect-Oriented Software Design. In: Workshop of Aspect Oriented Modeling with UML of Proceedings of Aspect Oriented Software Development Conference (AOSD) 2002, Enschede, Abril, 2002.

Portal Java - Downloads de código fonte de sistemas implementados em Java. Disponível em: http://www.portaljava.com.br. - Último acesso em 04/2004.

Ramos, R., A. Aspecting: Abordagem para Migração de Sistemas OO para Sistemas AO. Dissertação de Mestrado. In: Dissertação de Mestrado - Programa de Pós Graduação em Ciência da Computação, Universidade Federal de São Carlos, São Carlos - SP, 2004.

Ross, D., T. Structure Analysis (SA): A language for communicating Ideas. In: IEEE Transaction Software Engineering, 1977.

Souza, G.; Silva, I.; Castro, J. Adapting the FRN Framework to Aspect-Oriented Requirements Engineering. In: Simpósio Brasileiro de Engenharia de Software (SBES), pág. 177-192, Manaus, Brasil, outubro 2003.

Yoder, J. W.; Johnson, R. E.; Wilson, Q. D. Connecting Business Objects to Relational Databases. In: Conference on the Pattern Languages of Programs 5 (PLOP). Monticello-IL, EUA, 1998.

Weiss, D., Lai, C. T. R. Software Product-Line Engineering: a family-based software development process. Ed. Addison Wesley, 1999. 426 p.
Publicado
18/10/2004
RAMOS, Ricardo Argenton; PENTEADO, Rosângela; MASIERO, Paulo César. Um Processo de Reestruturação de Código Baseado em Aspectos. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 18. , 2004, Brasília/DF. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2004 . p. 225-240. DOI: https://doi.org/10.5753/sbes.2004.23844.