Leitura: Cap26 - 27 - 28: Sommerville; cap20: Pressman Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 1/47 Manutenção de software É modificar um programa depois que ele foi colocado em uso. A manutenção normalmente não envolve grandes mudanças na arquitetura do sistema As mudanças são implementadas modificando os componentes existentes e adicionando novos componentes ao sistema Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 2/47 Tipos de Manutenção de Software Manutenção Corretiva - Identificar e corrigir erros. Manutenção Adaptativa - Adaptar o software ao ambiente. Manutenção Perfectiva - Atender pedidos do usuário para modificar funções existentes ou incluir novas funções. Manutenção Preventiva - Melhorar a manutenibilidade ou confiabilidade futuras. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 3/47 Mudança de Software Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 4/47 Estratégias de mudança de software Manutenção de software • Mudanças são feitas em resposta a requisitos modificados, mas a estrutura fundamental do SW permanece estável. Transformação de arquitetura • A arquitetura do sistema é modificada geralmente de uma centralizada p/ uma distribuída Reengenharia de software • Auxiliadora Freire Nenhuma funcionalidade é adicionada ao sistema, mas ele é re-estruturado e re-organizado p/ facilitar mudanças futuras Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 5/47 Dinâmica de evolução de programas – Leis de Lehman A dinâmica de evolução de programas é o estudo da mudança do sistema As leis de Lehman são aplicadas a todos os sistemas enquanto eles evoluem. As leis são derivadas das observações aplicadas a sistemas de larga escala desenvolvidos por grandes organizações Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 6/47 5 Leis de Lehman Mudança contínua – um programa num ambiente real necessariamente muda ou torna-se progressivamente menos útil nesse ambiente. Aumento da complexidade – com a evolução do programa sua estrutura tende a ficar mais complexa. Evolução de programas de larga escala – a evolução de um programa é um processo auto-regulador. Estabilidade organizacional – mudanças de staff/recursos tem poucos efeitos na evolução do sistema. Conservação da familiaridade - a mudança incremental é constante. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 7/47 Distribuição do esforço de manutenção Reparação de Falhas (17%) Adaptação de SW (18%) Auxiliadora Freire Adição ou modificação de funcionalidade (65%) Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 8/47 Modelo espiral p/ manutenção implementação especificação Release 1 Release 2 operação Auxiliadora Freire validação Release 3 Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 9/47 Custos de manutenção Sistema1 Sistema2 0 50 100 150 200 250 300 350 400 450 500 Custos de desenvolvimento Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho $ Custos de manutenção Slide 10/47 Manutenção - Fatores de custos Estabilidade da equipe - Custos de manutenção são menores se a mesma equipe está envolvido com o sistema. Responsabilidade contratual – Se os engenheiros de SW não tem nenhuma responsabilidade contratual p/ a manutenção, não há incentivo em documentar o SW p/ garantir mudança futura. Habilidades da equipe - A equipe de manutenção é inexperiente e tem conhecimento limitado do domínio. Idade e estrutura do programa - Enquanto o programa envelhece, sua estrutura se degrada tornando-o mais difícil de compreender e mudar. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 11/47 O processo de manutenção Pedidos de alterações Auxiliadora Freire Análise de impacto Planejamento Implementação de release de mudança Reparo de defeitos Adaptação da plataforma Incremento de sistema Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Release do sistema Slide 12/47 Pedidos de mudança São feitos pelos utilizadores, clientes ou gerentes. Na prática, alguns pedidos devem ser implementados urgentemente: • • • Auxiliadora Freire Reparar falhas Mudanças no ambiente Mudanças urgentes do negócio Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 13/47 Implementação de mudança Mudanças propostas Auxiliadora Freire Análise de requisitos Validação de requisitos Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Desenvolvimento do Software Slide 14/47 Reparação de emergência Pedido de alteração Auxiliadora Freire Análise o códigofonte Modifique o código-fonte Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Libere o sistema modificado Slide 15/47 Previsão de mudança A previsão de mudança preocupa-se em avaliar as partes do sistema que podem causar problemas e ter custos de manutenção altos • A aceitação da mudança depende da facilidade de manutenção dos componentes afetados pela mudança. • Implementar mudanças degrada o sistema e reduz sua a facilidade de manuteção. • Custos de manutenção dependem do número de mudanças e os custos de implementação das mudanças dependem da facilidade de manuteção dos componentes do sistema. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 16/47 Previsão de mudança Que partes do sistema serão mais dispendiosas para se manter? Previsão de facilidade de manutenção Previsão de mudança de sistema Previsão de custo de manutenção • Quais serão os custos manutenção durante o tempo de vida útil desse sistema? • Quais os custos de manutenção desse sistema no próximo ano? Que partes serão afetadas pelos pedidos de mudança? Quantos pedidos de mudança podem ser esperados? Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 17/47 Evolução da arquitetura Há uma necessidade de converter muitos sistemas legados de uma arquitetura centralizada p/ uma cliente-servidor Razões • • • Auxiliadora Freire Custos de HW. Expectativas quanto à interface com o usuário Acesso distribuído aos sistemas Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 18/47 Evolução da arquitetura Fatores de distribuição • A importância do negócio • A idade do sistema (quanto mais velho mais difícil) • Estrutura do sistema (quanto mais modularizado, mais fácil) • Política de suprimento de HW (substituição dos mainframes por servidores) Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 19/47 Sistemas Legados Antigos sistemas que ainda são essenciais para a empresa. Todos os sistemas de software úteis inevitavelmente são modificados quando as empresas passam por mudanças. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 20/47 Risco de substituir um Sistemas Legados Sistemas de legado, raramente, têm uma especificação completa. Os processos corporativos e o modo como os sistemas legados operam estão sempre entrelaçados. O sistema pode embutir regras corporativas que não estão documentadas formalmente em outro lugar. Desenvolvimento de software novo é arriscado e pode não ter êxito. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 21/47 Mudanças em um Sistemas Legados Partes diferentes implementadas por diferentes equipes. Linguagem de programação obsoleto. A documentação de sistema está desatualizada. A estrutura de sistema corrompida por muitos anos de manutenção (utilização de técnicas para economizar espaço ou aumentar a velocidade). Estruturas de arquivo usadas podem ser incompatíveis. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 22/47 Sistemas Legados de Aplicação Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 23/47 Sistemas Centrados em Bancos de Dados Programa 1 Programa 2 Programa 3 Sistema de Gerenciamento de banco de dados Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Programa 4 descreve Modelos de dados lógicos e físicos Slide 24/47 Avaliação dos Sistemas Legados • Descartar completamente o sistema. • escolhida quando o sistema não estiver prestando uma contribuição efetiva aos processos. • Continuar a manter o sistema. • sistema é necessário e sem grande número de modificações. • Transformar o sistema de alguma maneira para melhorar sua facilidade de manutenção. • qualidade do sistema foi degradada por modificações regulares. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 25/47 Avaliação dos Sistemas Legados 6 9 7 Valor de negócios 10 5 2 1 8 3 4 Qualidade de sistema Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 26/47 Estrutura de Sistemas Legados Interface com o usuário Interface com o usuário serviços serviços Banco de dados Banco de dados Modelo ideal Sistema legados reais Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 27/47 Distribuição de Sistemas Legados Aplicação em operação em clientes PC Sistema legado Serviço de aplicação BD IU middleware Sistema legado Terminais a caractere Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 28/47 Modelo de Distribuição em Camadas Apresentação Organização de tela p/ usuário final Validação de dados Verificar entrada/saída de dados Controle de interação Auxiliadora Freire Gerencia seqüência de operação/telas Serviços da aplicação Fornece cálculos básicos Base de dados Fornece gerenciamento e Armazenamento de dados Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 29/47 Opções de distribuição O modelo de distribuição mais simples é a distribuição da interface do utilizador onde somente a interface é implementada no servidor A opção mais complexa é onde o servidor provê gestão dos dados e os serviços são implementados no cliente Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 30/47 Spectrum de opções de distribuição Servidor: 1- Controle de interação 2- Serviços Validação de dados Banco de dados Serviços Banco de dados 3- Banco de dados Cliente: 1- Apresentação 2- Apresentação Controle de interação Validação de dados 3- Apresentação Controle de interação Validação de dados Serviços Custo e esforço crescente Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 31/47 Distribuição da interface com o usuário A distribuição da interface com o usuário tira vantagem da capacidade de processamento local dos PCs p/ implementar interfaces gráficas Onde há uma separação clara entre a interface e a aplicação então o sistema legado pode ser modificado para distribuir a interface Caso contrário um middleware p/ gerenciamento de tela pode traduzir interfaces textuais p/ gráficas Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 32/47 Distribuição da interface do utilizador Cliente desktop PC com interface GUI Sistema legado Serviço de aplicação BD IU Auxiliadora Freire Middleware de gerenciamento de tela Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 33/47 Manutenção de Código Alienígena Programas com muitos fluxos de controle. Módulos muito grandes. Poucos linhas de comentários significativos. Não existe nenhum outro elemento da configuração de software, além do código. Nenhum membro do pessoal atual de manutenção trabalhou no desenvolvimento do programa. Nenhuma metodologia de desenvolvimento foi aplicada. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 34/47 Manutenção de Código Alienígena Solução Engenharia Reversa e Reengenharia Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 35/47 Engenharia Reversa e Reengenharia ENGENHARIA REVERSA • processo de análise de um software, partindo-se inicialmente da implementação para um nível mais alto de abstração REENGENHARIA • implica no exame e na alteração do software para reconstruí-lo em uma nova forma. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 36/47 Engenharia Reversa e Reengenharia requisito projeto Eng. progressiva Eng. progressiva Eng. reversa Eng. reversa Reengenharia Auxiliadora Freire implementação Reengenharia Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 37/47 Reengenharia Re-estruturar ou re-escrever parte ou todo um sistema legado, sem alterar a sua funcionalidade. Aplicável quando alguns subsistemas de um sistema mais amplo requerem uma manutenção freqüente. A re-engenharia envolve a adição de esforço de modo a tornar esses sistemas mais fáceis de manter. Os sistemas poderão ser re-estruturados e re-documentados. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 38/47 Vantagens da Reengenharia Risco reduzido: Re-desenvolvimento de software essencial constitui um risco elevado, devido ao papel crítico do software na organização Custo reduzido: Algumas estimativas sugerem que o custo de re-engenharia é significativamente inferior ao custo de redesenvolvimento do sistema, provavelmente 4 vezes inferior Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 39/47 Distinção entre Reengenharia e o Novo Desenvolvimento de Software Novo sistema Especificação do sistema Projeto e implementação Novo sistema Reengenharia de software Sistema de Soft existente Auxiliadora Freire Compreensão e transformação Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Sistema Alterado (reengenheirado) Slide 40/47 Processo de Reengenharia Document. de programa Programa original Programa modularizado Dados originais Engenharia reversa Modularização de programa Tradução de Código-fonte Melhoria de estrutura do prog Auxiliadora Freire Programa estruturado Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Reengenharia de dados Dados reengenheirados Slide 41/47 Fatores de Custo de Reengenharia A qualidade do software que deve passar pelo processo de reengenharia Ferramentas disponíveis ao processo de reengenharia A extensão de conversão de dados requerida A disponibilidade de pessoal habilitado. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 42/47 Engenharia Reversa Analisar o software com o objetivo de recuperar o seu projeto e a sua especificação a partir de seu código-fonte. Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 43/47 O processo da Engenharia Reversa Diagrama de estrutura de programa Análise automatizada Repositório de Informações do Sistema Sistema a ser reengenheirado Geração de documentos Anotação manual Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Diagrama de estrutura de dados Matrizes de rastreamento Slide 44/47 Problemas com a Reestruturação Perda de comentários / Perda de documentação. A reestruturação não ajuda na presença de uma modularização pobre, onde componentes relacionados estão dispersos pelo código A compreensão de programas orientados a dados poderá não ser melhorada através da reestruturação Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 45/47 Modularização de programa É o processo de reorganizar um programa, de modo que as partes relacionadas sejam coletadas e consideradas um único módulo. Tipos de módulos: • • • • Auxiliadora Freire Abstrações de dados; Módulos de hardware; Módulos funcionais; Módulo de apoio ao processo. Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 46/47 Reengenharia de Dados Envolve a análise e a reorganização das estruturas de dados (e, por vezes, dos valores dos dados) num programa. Razões para usar a reengenharia de dados: • • • Auxiliadora Freire Limpeza de dados; Extensão de dados; Migração de dados. Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Slide 47/47