Software Architecture Recovery based on Dynamic Analysis Aline Vasconcelos Cláudia Werner
Agenda Contexto e Motivações Trabalhos Relacionados Processo Proposto Estudo de Caso Conclusões
Contexto Engenharia Reversa: processo de análise dos componentes do sistema e dos seus relacionamentos, a fim de descrever este sistema em um nível de abstração mais alto do que o código fonte original (GANNOD, 1999). Arquitetura: a estrutura de componentes de um programa/sistema, seus relacionamentos, princípios e diretrizes que governam seu projeto e evolução ao longo do tempo (GARLAN e PERRY, 1995).
Contexto Projeto Odyssey Odyssey => Ambiente de Reutilização Desenvolvimento p/ Reuso Desenvolvimento c/ Reuso (Engenharia de Domínio) (Engenharia de Aplicação) Artefatos
Motivações Gerar artefatos para a definição de uma Arquitetura Específica de Domínio (DSSA). Contribuir com a Compreensão de Programas: Sistemas legados, em geral, não possuem documentação atualizada. Apoiar a Manutenção de Software.
Trabalhos Relacionados Trabalhos Relacionados: Harris et al. (1995) Recognizers; Penteado et al. (1996) Método Fusion; Kazman et al. (1997) Dali workbench; Sartipi and Kontogiannis (2003) Graph Matching; Necessidade de Contribuições: Apoio à tomada de decisão e automação do processo. Técnicas para a recuperação da arquitetura de sistemas que não possuem o código fonte disponível ou apresentam múltiplas linguagens. Representação mais formal da arquitetura (e.g. modelo arquitetural).
Processo Proposto para a Recuperação de Arquitetura
Atividades do Processo Engenharia Reversa Estática: Extração de modelo estático: Diagrama de Classes. Apóia eng. reversa dinâmica e análise estática. Modelagem de Casos de Uso: Especificação de casos de uso e cenários. Estabelece o foco da recuperação para o ciclo corrente. Guia a execução do sistema na Engenharia Reversa Dinâmica.
Processo Proposto para a Recuperação de Arquitetura
Atividades do Processo Engenharia Reversa Dinâmica: Extração de modelo comportamental: Diagramas de Seqüência. Apóia análise dinâmica. Passos: Execução do Sistema para os cenários de casos de uso. Monitoramento da execução e coleta de rastros (traces). Análise dos rastros coletados => Detecção de Padrões de Interação. Extração de diagramas de seqüência.
Processo Proposto para a Recuperação de Arquitetura
Atividades do Processo Definição dos Elementos Arquiteturais Critérios: Análise Dinâmica: Agrupamento de classes que participam de padrões de interação que ocorrem em vários casos de uso. Agrupamento de classes que participam da realização de um pequeno número de casos de uso. Análise Estática: Agrupamento de classes com nomes similares.
Estudo de Caso: Casos de Uso Recuperação da Arquitetura do Odyssey => Reengenharia. Casos de Uso chave:
Estudo de Caso: Eng. Reversa Dinâmica Diagramas de Seqüência. Extract Application Tracer Tool (Aspects)/ Sequence Diagram Extractor
Estudo de Caso: Definição dos Elementos Arquiteturais 2 Padrões de Interação => maioria dos cenários. Padrões de Interação => Semantic Core. Classes relacionadas a casos de uso de Modelagem de Classes => Class Modeling. Classes relacionadas a casos de uso de Modelagem de Casos de Uso => Use-Case Modeling....
Estudo de Caso: Elementos Arquiteturais
Conclusões Contribuições: Processo para Recuperação de Arquitetura: Critérios bem definidos e maior suporte ferramental. Integrado a um Ambiente de Desenvolvimento de Software. Representação baseada em um modelo: Modelo 4+1. Limitações: Dificuldade na Análise Dinâmica: Volume de eventos e mensagens no trace.