Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação e Estatística Um Processo Ágil de Reengenharia baseado em Framework II Workshop de Engenharia de Software UNESP – FGP - UNIP Maria Istela Cagnin Orientador: Prof. José Carlos Maldonado Maio/2005 Roteiro Introdução Contexto Linguagens de Padrões Frameworks Métodos Ágeis Contribuições Motivação e Objetivos Definição de um Processo Ágil de Reengenharia baseado em Linguagem de Padrões e Framework Definição de um Processo de Evolução de Frameworks de Aplicação Definição de uma Abordagem de Reúso de Teste Automatização de uma Ferramenta de apoio ao Controle de Versões Definição de um Pacote de Experimentação Limitações e Trabalhos Futuros Introdução Evolução constante do software Constantes atividades de manutenção consome 70% do esforço no ciclo de vida (Pressman, 2004) Degradação do código fonte Documentação desatualizada Sistemas Legados código fonte: única documentação Migração de dados Década 90 Surgimento dos termos (Chikofsky, Engenharia Reversa e Reengenharia 1990): Incremental Introdução Algumas vantagens da reengenharia: preserva a solução existente do negócio em uma nova arquitetura técnica (Sneed, 1995). em geral, promove custo efetivo e menos riscos do que desenvolver um novo sistema (Warren, 2002). Motivação Uso de padrões de software e framework na reengenharia Uso de VV&T na reengenharia Necessidade de apoio computacional na reengenharia Preocupação de entregar o software sem atraso e com custo não superior ao estimado na reengenharia Importância da engenharia de software experimental na reengenharia Objetivos Definir um processo ágil de reengenharia baseado em framework no domínio de sistemas de informação Definir um processo de evolução de frameworks de aplicação Definir uma abordagem de reúso de teste que agrega recursos de teste funcional aos padrões de linguagens de padrões Fornecer suporte automatizado para apoiar a iteratividade do processo ágil de reengenharia baseado em framework Definir um pacote de experimentação Linguagem de Padrões GRN Contém 15 padrões de análise Pertence a um domínio específico Gestão de Recursos de Negócio concentrado na locação, comercialização e manutenção de recursos. utiliza alguns padrões de análise existentes é flexível Adição de atributos específicos da aplicação notação UML (Unified Modeling Language) Identificar o Recurso (1) Grupo 2: Transações feitas com o recurso Quantificar o Recurso (2) Armazenar o Recurso (3) Locar o Recurso (4) Reservar o Recurso (5) Comercializar o Recurso (6) Cotar o Recurso (7) Conferir a Entrega do Recurso (8) Itemizar a Transação do Recurso (11) Pagar pela Transação do Recurso (12) Identificar o Executor da Transação (13) Grupo 1: Identificação, quantificação e armazenamento do recurso Manter o Recurso (9) Cotar a Manutenção (10) Grupo 3: Detalhes da Transação Identificar as Tarefas da Manutenção (14) Identificar as Peças da Manutenção (15) Framework GREN construção: baseada na linguagem de padrões GRN armazenamento: banco de dados MySQL linguagem de programação: Smalltalk (VisualWorks 4.i.5) arquitetura: três camadas negócio, persistência e interface alternativas de instanciação manual (cookbook) ferramenta de instanciação (GREN-Wizard) Fonte: Braga, 2003 Métodos Ágeis Década 90: reunião para estabelecer melhores práticas de desenvolvimento de software “Aliança Ágil” - Manifesto Ágil (Fevereiro/2001) 4 valores e 12 princípios Valores: Pessoas e interações são mais importantes do que processos e ferramentas; Software funcionando é mais importante do que documentação compreensiva; Participação dos clientes é mais importante do que negociação; Resposta a mudanças é mais importante do que seguir um plano. Métodos Ágeis Elaboram pouca documentação; Facilitam a incorporação de mudanças nos requisitos; Exigem que a equipe de desenvolvimento seja pequena; Preocupam-se com soluções simples; Fornecem versões do software em intervalos freqüentes (a cada hora, a cada dia, ou, mais usualmente, a cada mês ou a cada bimestre); Proporcionam constante interação e cooperação dos usuários; Exigem que desenvolvedores e representantes dos usuários sejam bem informados, competentes e autorizados para tomar decisões; Realizam testes no software constantemente. Método eXtreme Programming As idéias de XP não são novas e a maioria delas são tão velhas como programar (Beck, 2000). Utilizado por técnicas foram provadas durante décadas equipes de desenvolvimento de software de tamanho pequeno e médio Novidade! reconhecimento de que as pessoas são responsáveis para o sucesso dos projetos aumentar os níveis de competência individual e de colaboração Método eXtreme Programming Conjunto de 4 valores e 12 práticas Valores: 1) comunicação, 2) simplicidade, 3) feedback e 4) coragem. Práticas: 1) jogo do planejamento 2) versões pequenas 3) metáfora 4) projeto simples 5) testes constantes 6) refatoração constante 7) programação em pares 8) propriedade coletiva do código 9) integração contínua 10 semana de 40 horas 11) cliente presente 12) padrões de codificação Contribuições Definição de um Processo Ágil de Reengenharia baseado em Linguagem de Padrões e Framework Definição de um Processo de Evolução de Frameworks de Aplicação Definição de uma Abordagem de Reúso de Teste Automatização de uma Ferramenta de apoio ao Controle de Versões Definição de um Pacote de Experimentação no contexto de reengenharia Processo Ágil de Reengenharia baseado em Linguagem de Padrões e Framework Objetivo: Migrar sistemas legados procedimentais para o paradigma OO Principais características: é incremental, iterativo e baseado em framework; considera diversas práticas ágeis (versões pequenas, cliente presente, testes constantes, jogo do planejamento, programação em pares, propriedade coletiva do código e integração contínua, metáfora e semana de 40 horas); é dirigido ao cliente e dirigido ao risco; utiliza “reengenharia guiada por teste”; executa o sistema alvo concomitantemente com o legado; não se limita a reproduzir a funcionalidade do sistema legado. o formato da documentação: elementos fundamentais do arcabouço do RUP (Rational Unified Process). Processo Ágil de Reengenharia baseado em Linguagem de Padrões e Framework CONCEPÇÃO Familiarizar-se com o domínio do framework Confrontar as características não funcionais do framework x sistema legado Observar o domínio do sistema legado em relação ao do framework Elaborar o planejamento do projeto de reengenharia TRANSIÇÃO Elaborar o Manual do Usuário do Sistema Treinar os usuários finais ELABORAÇÃO Converter a base de dados do sistema legado Desenvolver o diagrama de casos de uso e elaborar os casos de teste Testar o sistema alvo no paradigma orientado a objetos Documentar as regras do negócio do sistema CONSTRUÇÃO Legend: Marco de referência no final de cada fase Atividade não obrigatória Desenvolver o sistema alvo no paradigma orientado a objetos Atividade iterativa e incremental Adaptar o sistema alvo Atividade anterior provém de outra fase Executar os casos de teste no sistema alvo Desenvolver o diagrama de classes do sistema Documentar as modificações realizadas no diagrama de classes Processo Ágil de Reengenharia baseado em Linguagem de Padrões e Framework Dois estudos de caso de reengenharia prospectivos permitiram: refinar a documentação do PARFAIT observar a necessidade de evoluir framework GREN motivar a criação de um PRocesso de Evolução de Framework (PREF) Um estudo de caso observacional permitiu: coleta de dados: 84% do tempo gasto com VV&T observar a necessidade de associar recursos de teste aos padrões da linguagem de padrões motivar a criação uma Abordagem Reúso de Teste (ARTe) observar que a ferramenta GREN-Wizard não apoiava a iteratividade do PARFAIT. Contribuições Definição de um Processo Ágil de Reengenharia baseado em Linguagem de Padrões e Framework Definição de um Processo de Evolução de Frameworks de Aplicação Definição de uma Abordagem de Reúso de Teste Automatização de uma Ferramenta de apoio ao Controle de Versões Definição de um Pacote de Experimentação no contexto de reengenharia Processo de Evolução Frameworks de Aplicação 7) Validar o framework 6) Atualizar ferramentas associadas ao framework 8) Tratar do gerenciamento de controle de configuração 5) Atualizar a documentação do framewok Início Legenda: Atividade de controle de variabilidade Atividades quando o requisito não é essencial ao framework Atividades quando o requisito é essencial ao framework 4) Projetar, modificar e testar o framework para satisfazer o requisito 1) Controlar a variabilidade do framework. 2) Projetar, modificar e testar o sistema para satisfazer o requisito 3) Atualizar o histórico de requisitos de Processo de Evolução Frameworks de Aplicação ID. 01 02 03 Requisito Tipo Livros podem ter diversos autores. Func. Livro pertence a uma determinada área (Exatas, Biológicas, Humanas) Func. Aparelho eletrônico possui proprietário Func. Solução de projeto implementada na aplicação Implementar os autores de um livro como atributo multivalorado da classe Livro. Implementar a área que um livro pertence como tipo enumerado. Implementar o proprietário de um aparelho eletrônico na classe Aparelho como uma referência da classe Proprietário por meio de um Aplicação Tipo de manut. de Situação Versão Biblioteca (REENG) Perfectiva Atendido 1.1 Biblioteca (REENG) Perfectiva Atendido 1.1 Oficina Eletrônica (REENG) Perfectiva Sendo atendido - Oficina Eletrônica (REENG) Perfectiva Pendente - - perfectiva Pendente - tipo enumerado. 04 06 Emissão de etiquetas de mala direta Func. autenticar os do sistema, Func. É necessário usuários Implementar as etiquetas de mala direta a partir da criação da classe Etiqueta, contendo dois tamanhos de etiquetas pré-estabelecidos. Um sub-sistema de segurança foi implementado em linguagem orientada a aspectos. registrar os acessos efetuados e bloquear o acesso a determinadas operações do usuário, conforme o seu papel. Histórico de Requisitos Contribuições Definição de um Processo Ágil de Reengenharia baseado em Linguagem de Padrões e Framework Definição de um Processo de Evolução de Frameworks de Aplicação Definição de uma Abordagem de Reúso de Teste Automatização de uma Ferramenta de apoio ao Controle de Versões Definição de um Pacote de Experimentação no contexto de reengenharia Abordagem de Reúso de Teste - ARTe ETAPA 1 Definir tipos de requisitos (PASSO 1) Selecionar critérios de teste (PASSO 2) Elaborar requisitos de teste gerais (PASSO 3) Para cada padrão da linguagem de padrões faça Para cada classe do padrão faça Elaborar requisitos de teste específicos (PASSO 4) fimPara fimPara Documentar cada requisito de teste criado (PASSO 5) Derivar e documentar casos de teste (PASSO 6) Mapear requisitos de teste de gerais (PASSO 7) Disponibilizar os recursos de teste (PASSO 8) RT RT CT RT CT CT RT CT Linguagem de Padrões de Análise com Requisitos de Teste (RT) e Casos de Teste (CT) agregados Linguagem de Padrões de Análise Passos da estratégia para definir recursos de teste ETAPA 2 XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX Requisitos do Sistema (Desenv.) Para cada requisito funcional do sistema (sendo desenvolvido ou submetido à reengenharia) faça Identificar os padrões da linguagem de padrões que modelam tal requisito funcional Para cada padrão identificado faça Estabelecer correspondência das classes do padrão identificado com o requisito funcional Reutilizar casos de teste mapeados que possuem correspondência direta com os dados do requisito funcional Reutilizar casos de teste do negócio do padrão que posuem correspondência direta com o tratamento do negócio envolvido no requisito funcional do sistema fimPara Reutilizar requisitos de teste de integridade e de consistência, que podem ser adaptados para o requisito funcional Derivar e documentar os casos de teste baseados nos requisitos de teste reusados Reutilizar classes de equivalência de consistência e de integridade que podem ser adaptadas para o requisito funcional Derivar e documentar os casos de teste baseados nas classes de equivalência reusadas Criar casos de teste adicionais baseados nos critérios de teste funcionais (Particionamento de Equivalência e Análise do Valor Limite) fimPara Verificar o uso correto dos padrões da linguagem de padrões CT CT CT CT CT CT CT CT CT CT CT CT CT CT CT CT Sistema Legado (Reeng.) Passos das diretrizes para reúso dos recursos de teste Massa dos Casos de Teste (CT) do Sistema Abordagem de Reúso de Teste - ARTe Passos da ARTe instanciados para a GRN Elaborar requisitos de teste de consistência (PASSO 3.1) Elaborar requisitos de teste de integridade (PASSO 3.2) Definir tipos de requisitos (PASSO 1) Selecionar critérios de teste (PASSO 2) Elaborar requisitos de teste gerais (PASSO 3) Para cada padrão da linguagem de padrões faça Para cada classe do padrão faça Elaborar requisitos de teste específicos (PASSO 4) fimPara fimPara Documentar cada requisito de teste criado (PASSO 5) Derivar e documentar casos de teste (PASSO 6) Mapear requisitos de teste de gerais (PASSO 7) Disponibilizar os recursos de teste (PASSO 8) Elaborar requisitos de teste do Negócio (PASSO 4) Abordagem de Reúso de Teste Para cada requisito funcional do sistema Identificar os padrões que modelam o requisito funcional Para cada padrão identificado Estabelecer correspondência das classes do padrão com o requisito funcional do sistema Reutilizar casos de teste do padrão fimPara Reutilizar requisitos de teste que podem ser adaptados Derivar e documentar casos de teste baseado nos requisitos reusados; Reutilizar classes de equivalência que podem ser adaptadas; Derivar e documentar casos de teste baseados nas classes de equivalência reusadas; Criar casos de teste adicionais, se necessário. FimPara Verificar o uso correto dos padrões Abordagem de Reúso de Teste Um estudo de caso observacional - Uso das diretrizes de reúso Informações Sem Reúso VV&T Com Reúso VV&T Tempo reengenharia Tempo VV&T Total casos de teste 675:29 h 84% 571:40 h 354 47% 42% 50% 320:40 h 75% 240:30 h 695 Contribuições Definição de um Processo Ágil de Reengenharia baseado em Linguagem de Padrões e Framework Definição de um Processo de Evolução de Frameworks de Aplicação Definição de uma Abordagem de Reúso de Teste Automatização de uma Ferramenta de apoio ao Controle de Versões Definição de um Pacote de Experimentação no contexto de reengenharia Ferramenta de Apoio ao Controle de Versões código fonte inserido manualmente Framework Aplicação v1 xxxxxxxxx ... Aplicação v2 Tabela ClassMethodVersionControl seq appIdCode className methodName methodType protocolName methodBody action appVersion version --------------------------------------------------------------------------------------------------------------------------------------... 122 38 EmprestimoForm windowLabel c interface specs windowLabel u 1 2 ^'Empréstimo de Livro' ... ... Meta-base de dados da Ferramenta GRENWizardVersionControl Ferramenta de Apoio ao Controle de Versões Resulting Method Continua a instanciação Contribuições Definição de um Processo Ágil de Reengenharia baseado em Linguagem de Padrões e Framework Definição de um Processo de Evolução de Frameworks de Aplicação Definição de uma Abordagem de Reúso de Teste Automatização de uma Ferramenta de apoio ao Controle de Versões Definição de um Pacote de Experimentação no contexto de reengenharia Pacote de Experimentação Contém o planejamento parcial do experimento para avaliar a aplicabilidade do PARFAIT (meio acadêmico e industrial): completa: fases de definição, planejamento e operação não possui: fases análise e interpretação incompleta: fases de apresentação e enpacotamento Contém instrumentação necessária para apoiar os interessados na condução do experimento. URL: http://labes.icmc.usp.br/~istela/experimentos/index.htm Limitações Uso dos produtos da tese apenas com o GREN e GRN Processos PARFAIT e PREF são genéricos? Abordagem ARTe é flexível? Escalabilidade do PARFAIT aplicado apenas em sistemas de pequeno porte Ferramenta GREN-WizardVersionControl PARFAIT, PREF, ARTe, Pacote Experimentação específica ao framework GREN impossibilita as práticas ágeis “propriedade coletiva do código” e “integração contínua” Não há validação experimentação completa do pacote de Trabalhos Futuros Para eliminar as limitações do trabalho: Conduzir estudos de caso de reengenharia com o PARFAIT com outros frameworks Conduzir estudos de caso com sistemas de médio e grande porte para observar a escalabilidade do PARFAIT Refinar a abordagem ARTe utilizando-a em outras linguagens de padrões Refinar o processo PREF utilizando-o em outros frameworks Conduzir estudos de caso para completar a definição do pacote de experimentação Replicar o pacote de experimentação para validá-lo e evoluí-lo Evoluir a ferramenta GREN-WizardVersionControl Trabalhos Futuros Para evoluir o trabalho realizado: Definir estratégias de teste para testar frameworks baseados em linguagens de padrões (GREN) Documentar os recursos de teste criados com a aplicação da abordagem ARTe em um formato específico (XML) Desenvolver uma ferramenta para gerenciar os hot spots das versões dos frameworks, apoiando o processo PREF. Desenvolver uma ferramenta para apoiar a aplicação do PARFAIT. Formalizar a equivalência funcional do sistema legado com o sistema alvo. Conduzir estudos de caso de reengenharia para avaliar o desempenho de cada prática ágil do PARFAIT. Conduzir estudos de caso para observar a aplicabilidade do PARFAIT no desenvolvimento de software e na engenharia reversa. Publicações ARTIGOS COMPLETOS EM EVENTOS CAGNIN, Maria Istela; MALDONADO, José Carlos; MASIERO, Paulo Cesar; BRAGA, Rosana Terezinha Vaccare; PENTEADO, Rosangela Dellosso. An Evolution Process for Application Frameworks. In: I WORKSHOP DE MANUTENÇÃO DE SOFTWARE MODERNA EM CONJUNTO COM XVIII SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE, 2004, Brasília-DF. Primeiro Workshop de Manutenção de SoftWare Moderna. Brasília-DF: 2004. p. 1-8. CAGNIN, Maria Istela; PENTEADO, Rosangela Dellosso; GERMANO, Fernao Stella; MALDONADO, José Carlos. Evolução do PARFAIT: Um Processo de Reengenharia de Software Baseado em Framework. In: SIMPÓSIO DE DESENVOLVIMENTO E MANUTENÇÃO DE SOFTWARE DA MARINHA, 2004, Rio de Janeiro. IV Simpósio de Desenvolvimento e Manutenção de Software da Marinha. 2004. p. 1-12. CAGNIN, Maria Istela; PAIVA, Débora Maria Barroso; MALDONADO, José Carlos; PENTEADO, Rosangela Dellosso; FORTES, Renata Pontin de Mattos; GERMANO, Fernão Stella. From DesignRationale to Reengineering Rationale: Lessons Learned in a Maintenance Pilot Case Study. In: JORNADAS IBEROAMERICANAS DE INGENIERÍA DEL SOFTWARE E INGENIERÍA DEL CONOCIMIENTO, 2004, Madrid, Espanha. 4ª Jornadas Iberoamericanas de Ingeniería del Software e Ingeniería del Conocimiento. Madrid-Espanha: 2004. v. I, p. 231-243. CAGNIN, Maria Istela; MALDONADO, José Carlos; PENTEADO, Rosangela Dellosso; BRAGA, Rosana Terezinha Vaccare; GERMANO, Fernão Stella. GREN-WizardVersionControl: Uma Ferramenta de Apoio ao Controle de Versão das Aplicações Criadas pelo Framework GREN. In: SESSÃO DE FERRAMENTAS EM CONJUNTO COM XVIII SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE, 2004, Brasília-DF. XI Sessão de Ferramentas - SBES 2004. 2004. p. 73-78. CAGNIN, Maria Istela; MALDONADO, José Carlos; CHAN, Alessandra; PENTEADO, Rosangela Dellosso; GERMANO, Fernão Stella. Reuso na Atividade de Teste para Reduzir Custo e Esforço de VV\&T no Desenvolvimento e na Reengenharia de Software. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE, 2004, Brasília-DF. XVIII Simpósio Brasileiro de Engenharia de Software. Brasília-DF: 2004. p. 71-85. Publicações ARTIGOS COMPLETOS EM EVENTOS (CONT.) CAGNIN, Maria Istela; MALDONADO, José Carlos; BRAGA, Rosana Terezinha Vaccare; GERMANO, Fernão Stella; PENTEADO, Rosangela Dellosso. Uma Ferramenta de Apoio ao Controle de Versão das Aplicações Criadas por um Framework. In: CONFERÊNCIA LATINOAMERICANA DE INFORMÁTICA, 2004, Arequipa-Peru. XXX Conferência Latino-Americana de Informática. Arequipa-Peru: 2004. p. 414-425. CAGNIN, Maria Istela; MALDONADO, José Carlos; GERMANO, Fernão Stella; MASIERO, Paulo Cesar; CHAN, Alessandra; PENTEADO, Rosangela Dellosso. An Agile Reverse Engineering Process based on a Framework. In: WORKSHOP EM ENGENHARIA DE REQUISITOS, 2003, Piracicaba. 6th International Workshop on Requirements Engineering. 2003. v. 1, p. 240-254. CAGNIN, Maria Istela; MALDONADO, José Carlos; GERMANO, Fernão Stella; PENTEADO, Rosangela Dellosso. Investigation and Definition of a Computer-Aided Framework-based Agile Reengineering Process. In: WORKSHOP DE TESES EM ENGENHARIA DE SOFTWARE, 2003, Manaus, AM. VIII Workshop de Teses em Engenharia de Software e II Workshop de Teses e Dissertações em Banco de Dados. Manaus, AM: EDUA - Editora da Universidade Federal do Amazonas, 2003. p. 9-16. CAGNIN, Maria Istela; MALDONADO, José Carlos; GERMANO, Fernão Stella; PENTEADO, Rosangela Dellosso. PARFAIT: Towards a Framework-based Agile Reengineering Process. In: AGILE DEVELOPMENT CONFERENCE, 2003, Salt Lake City, UTHA. IEEE. 2003. p. 22-31. CAGNIN, Maria Istela; MALDONADO, José Carlos; GERMANO, Fernão Stella; CHAN, Alessandra; PENTEADO, Rosangela Dellosso. Um Estudo de Caso de Reengenharia Utilizando o Processo PARFAIT.In: SIMPÓSIO DE DESENVOLVIMENTO E MANUTENÇÃO DE SOFTWARE DA MARINHA, 2003, Niterói, RJ. III Simpósio de Desenvolvimento e Manutenção de Software da Marinha. 2003. p. 1-10. Publicações ARTIGOS SUBMETIDOS EM EVENTOS CAGNIN, Maria Istela; BRAGA, Rosana Terezinha Vaccare; GERMANO, Fernão Stella; CHAN, Alessandra; MALDONADO, José Carlos. Extending Patterns with Testing Implementation. In: SugarLoafPlop'2005, V Conferência Latino-Americana em Linguagens de Padrões para Programação, Campos do Jordão-SP, Agosto, 2005. CAGNIN, Maria Istela; PENTEADO, Rosângela; MASIERO, Paulo César; BRAGA, Rosana Terezinha Vaccare; MALDONADO, José Carlos. Process for Variability Control and Application Frameworks Evolution. In: IWPSE'2005, International Workshop on Principles of Software Evolution em conjunto com FSE/ESEC'2005. Lisboa, Portugal, Setembro, 2005. ARTIGO A SER SUBMETIDO EM PERIÓDICO CAGNIN, Maria Istela; PENTEADO, Rosângela; GERMANO, Fernão Stella; MALDONADO, José Carlos. Agile Reengineering with Reuse. In: JOURNAL OF SOFTWARE MAINTENANCE AND EVOLUTION: RESEARCH AND PRACTICE. Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação e Estatística Um Processo Ágil de Reengenharia baseado em Framework II Workshop de Engenharia de Software UNESP – FGP - UNIP Maria Istela Cagnin ([email protected]) Orientador: Prof. José Carlos Maldonado Maio/2005