Manutenção Leitura: Sommerville; Pressman Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 1
Manutenção de software É modificar um programa depois que ele foi colocado em uso. As mudanças são implementadas modificando os componentes existentes e adicionando novos componentes ao sistema A evolução do software é importante pois as organizações atuais são muito dependentes dos sistemas. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 2
Modelo espiral p/ manutenção especificação implementação R e l e a s e 1 operação R e l e a s e 2 R e l e a s e 3 validação Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 3
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. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 4
Estratégias de mudança de software Re-engenharia de software Nenhuma funcionalidade é adicionada ao sistema, mas ele é reestruturado e reorganizado p/ facilitar mudanças futuras Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 5
Dinâmica de evolução de programas 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. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 6
Dinâmica de evolução de programas Leis de Lehman Evolução de programas de larga escala a evolução de um programa é um processo auto-regulável. Limita o número de possíveis mudanças. 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º - 8º Edição / Ian Sommerville 2000-2007 Slide 7
Mudança de Software Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 8
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º - 8º Edição / Ian Sommerville 2000-2007 Slide 9
Distribuição do esforço de manutenção Reparação de Falhas (17%) Adaptação de SW (18%) Adição ou modificação de funcionalidade (65%) Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 10
Custos de manutenção Sistema1 Sistema2 0 5 0 1 0 0 1 5 0 2 0 0 2 5 0 3 0 0 3 5 0 4 0 0 4 5 0 5 0 0 $ Custos de desenvolvimento Custos de manutenção Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 11
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. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 12
Manutenção Fatores de custos 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º - 8º Edição / Ian Sommerville 2000-2007 Slide 13
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. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 14
Previsão de mudança 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 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º - 8º Edição / Ian Sommerville 2000-2007 Slide 15
Previsão de mudança Que partes do sistema serão mais dispendiosas para se manter? Previsão de mudança de sistema Previsão de facilidade de manutenção 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º - 8º Edição / Ian Sommerville 2000-2007 Slide 16
O processo de manutenção Pedidos de alterações Análise de impacto Planejamento de release Implementação de mudança Release do sistema Reparo de defeitos Adaptação da plataforma Incremento de sistema Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 17
Pedidos de mudança São feitos pelos utilizadores, clientes ou gerentes. Na prática, alguns pedidos devem ser implementados urgentemente: Reparar falhas Mudanças no ambiente Mudanças urgentes do negócio Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 18
Evolução da arquitetura Há uma necessidade de converter muitos sistemas legados de uma arquitetura centralizada p/ uma cliente-servidor Razões Custos de HW. Expectativas quanto à interface com o usuário Acesso distribuído aos sistemas Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 19
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º - 8º Edição / Ian Sommerville 2000-2007 Slide 20
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. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 21
Risco de substituir um Sistemas Legados 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º - 8º Edição / Ian Sommerville 2000-2007 Slide 22
Risco de substituir um Sistemas Legados Partes diferentes implementadas por diferentes equipes. Linguagem de programação obsoleto. A documentação de sistema está desatualizada. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 23
Risco de substituir um Sistemas Legados 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º - 8º Edição / Ian Sommerville 2000-2007 Slide 24
Valor de negócios Avaliação dos Sistemas Legados 9 10 6 7 8 1 2 3 4 5 Qualidade de sistema Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 25
Sistemas Legados de Aplicação Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 26
Sistemas Centrados em Bancos de Dados Programa 1 Programa 2 Programa 3 Programa 4 Sistema de Gerenciamento de banco de dados descreve Modelos de dados lógicos e físicos Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 27
Estrutura de Sistemas Legados Interface com o usuário Interface com o usuário serviços serviços Banco de dados Modelo ideal Banco de dados Sistema legados reais Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 28
Distribuição de Sistemas Legados Aplicação em operação em clientes PC Serviço de aplicação BD IU Sistema legado middleware Sistema legado Terminais a caractere Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 29
Modelo de Distribuição em Camadas Apresentação Validação de dados Controle de interação Serviços da aplicação Base de dados Organização de tela p/ usuário final Verificar entrada/saída de dados Gerencia sequência de operação/telas Fornece cálculos básicos Fornece gerenciamento e Armazenamento de dados Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 30
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º - 8º Edição / Ian Sommerville 2000-2007 Slide 31
Spectrum de opções de distribuição Servidor: 1- Controle de interação Validação de dados Serviços Banco de dados 2- 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º - 8º Edição / Ian Sommerville 2000-2007 Slide 32
Distribuição da interface do utilizador Cliente desktop PC com interface GUI Sistema legado Serviço de aplicação BD Middleware de gerenciamento de tela IU Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 33
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º - 8º Edição / Ian Sommerville 2000-2007 Slide 34
Manutenção de Código Alienígena Solução Engenharia Reversa e Re-engenharia Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 35
Engenharia Reversa e Re-engenharia ENGENHARIA REVERSA processo de análise de um software, partindo-se inicialmente da implementação para um nível mais alto de abstração RE-ENGENHARIA implica no exame e na alteração do software para reconstruí-lo em uma nova forma. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 36
Engenharia Reversa e Re-engenharia requisito projeto implementação Eng. progressiva Eng. reversa Eng. progressiva Eng. reversa Re-engenharia Re-engenharia Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 37
Re-engenharia 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 frequente. Os sistemas poderão ser re-estruturados e redocumentados. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 38
Vantagens da Re-engenharia Risco reduzido: Redesenvolvimento 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 reengenharia é significativamente inferior ao custo de redesenvolvimento do sistema, provavelmente 4 vezes inferior Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 39
Distinção entre Re-engenharia e o Novo Desenvolvimento de Software Novo sistema Especificação do sistema Projeto e implementação Novo sistema Sistema de Soft existente Reengenharia de software Compreensão e transformação Sistema Alterado (re-engenheirado) Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 40
Processo de Re-engenharia Programa original Document. de programa Programa modularizado Dados originais Tradução de Código-fonte Engenharia reversa Modularização de programa Re-engenharia de dados Melhoria de estrutura do prog Programa estruturado Dados Re-engenheirados Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 41
Re-engenharia 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: Limpeza de dados; Extensão de dados; Migração de dados. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 42
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º - 8º Edição / Ian Sommerville 2000-2007 Slide 43
O processo da Engenharia Reversa Análise automatizada Diagrama de estrutura de programa Sistema a ser Re-engenheirado Repositório de Informações do Sistema Geração de documentos Diagrama de estrutura de dados Anotação manual Matrizes de rastreamento Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 44
Problemas com a Re-estruturação Perda de comentários / Perda de documentação. A re-estruturaçã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 re-estruturação. Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 45