Prévia do material em texto
6/17/19 1 z Manutenção e Reengenharia Pressman e Maxim Cap 36 z Ciclo de Vida de Software 6/17/19 2 z Sinônimo de Manutenção ■ Modificação; ■ Acréscimos; ■ Refinamentos; ■ Remoção de defeitos; ■ Adições no sistema; ■ Remendos e correções; ■ Suporte; ■ Evoluções; ■ Ajustes; § Extensão; § Expansão; § Revisão; § Atualização; § Re-programação; § Re-desenvolvimento; § Melhorias; § Alterações. z Categorias de Manutenção Corretiva Evolutiva Preventiva 6/17/19 3 z Categorias de Manutenção 1) Identificar e Corrigir Erros ð Manutenção Corretiva z Categorias de Manutenção 2) Atender Pedidos do Usuário para Modificar Funções Existentes, Incluir Novas Funções e Efetuar Melhoramentos Gerais ð Manutenção Evolutiva 6/17/19 4 z Categorias de Manutenção 3) Melhorar a manutenibilidade ou confiabilidade futuras e fornecer uma base melhor para futuros melhoramentos ð Manutenção Preventiva z A Fase de Manutenção de Software § Fase mais problemática do Ciclo de Vida de Software § Pode despender mais de 70% de todo esforço de uma Organização § Esses sistemas devem continuar rodando e as alterações são inevitáveis 6/17/19 5 z A Fase de Manutenção de Software § Por que é exigida tanta Manutenção e por que é despendido tanto Esforço nessa atividade? § Idade Média dos sistemas são de 10 a 15 anos § Quando foram implementados, o tamanho do programa e espaço de armazenamento eram o principal interesse § Migração Para Novas Plataformas § Sistemas mal estruturados z Custo de Manutenção § Custos não Monetários § Adiamento de oportunidades de desenvolvimento § Redução da qualidade global do software § Insatisfação do cliente § Insatisfação do pessoal de manutenção 6/17/19 6 z Custo de Manutenção § O Custo Operacional de manutenção pode ser dividido em: § tentar entender o que o software faz § interpretar as estruturas de dados, as características de interface e limites de desempenho § analisar, avaliar, projetar, codificar e testar as modificações z Problemas de Manutenção § A maioria dos problemas com a manutenção do software é causada por deficiências na maneira como o software foi planejado e desenvolvido 6/17/19 7 z Problemas de Manutenção PROBLEMAS CLÁSSICOS § É difícil ou impossível traçar a evolução do software através das várias versões. § As alterações não são adequadamente documentadas § É difícil ou impossível traçar o processo através do qual o software foi criado. § É muito difícil entender programas "de outras pessoas". § "As outras pessoas" freqüentemente não estão presentes para explicar. z Problemas de Manutenção PROBLEMAS CLÁSSICOS (cont.) § A documentação não existe, é incompreensível ou está desatualizada. § A maioria dos processos de construção de softwares não foi projetado para suportar alterações. § A manutenção não é vista como um trabalho “glamouroso”. 6/17/19 8 z Manutenibilidade § A Manutenibilidade pode ser definida qualitativamente como a facilidade com que o software pode ser entendido, corrigido, adaptado e ou melhorado § A manutenibilidade é afetada por muitos fatores: § cuidado inadequado com o projeto, codificação e teste § disponibilidade de pessoal qualificado de software z Manutenibilidade § A manutenibilidade é afetada por muitos fatores: (cont) § disponibilidade de um computador próprio para a manutenção § disponibilidade da pessoa ou grupo que desenvolveu o software § o planejamento para manutenibilidade (fator mais importante que afeta a manutenibilidade) 6/17/19 9 z Tarefas de Manutenção 1) Descrever procedimentos de avaliação e de comunicação 2) Estabelecer uma organização para a manutenção (“de fato" ou formal 3) Definir seqüências padronizadas de eventos (para os pedidos de manutenção) 4) Estabelecer procedimentos para registrar a história das atividades de manutenção 5) Definir critérios de revisão e avaliação z Atividades Típicas do Mantenedor ■ Estudar especificações e projetos do sistema; ■ Interagir com os usuários; ■ Examinar programas e sua documentação; ■ Descobrir erros e deficiências nos programas fontes; ■ Projetar uma alteração em programa; ■ Modificar um programa; ■ Revalidar um programa; ■ Atualizar a documentação do programa. 6/17/19 10 z Funções Básicas na Alteração de Software a) Entender o software e a mudança a ser feita (50%); b) Modificar o software para incorporar a mudança (25%); c) Revalidar o software (25%). z Custos do Software ■ Desenvolvimento ................ 30 - 40 % ■ Manutenção ........................ 70 - 60 % 6/17/19 11 z Alternativas para Reduzir a Manutenção de Software ■ Não fazer nada. Apenas continuar como está; ■ Adicionar mais pessoal para o desenvolvimento e manutenção; ■ Planejar a manutenção de software focalizando novas tecnologias para construir sistemas mais fáceis de se manter e gradativamente substituir os atuais; ■ Adotar um plano agressivo para reescrever sistemas atuais o quanto possível; ■ Adotar ferramentas automatizadas para melhorar a manutenção e tecnologia dos sistemas atuais. Manutenção de Software z Reengenharia Pressman e Maxim Cap 36 6/17/19 12 z Engenharia Reversa ENGENHARIA REVERSA § processo de análise de um software, partindo-se inicialmente da implementação para um nível mais alto de abstração z Reengenharia REENGENHARIA § implica no exame e na alteração do software para reconstruí-lo em uma nova forma. 6/17/19 13 z Engenharia Reversa e Reengenharia z Premissas da Reengenharia § Sistemas existentes são uma vantagem valiosa da qual a corporação depende e portanto deveriam ser apropriadamente gerenciados; § A manutenção de software poderá ser mais efetiva e eficientemente realizada com ajuda de ferramentas poderosas; § É uma manutenção automatizada; 6/17/19 14 z Premissas da Reengenharia § Envolve a melhoria dos processos de manutenção de software e melhoria dos sistemas atuais pela aplicação de novas tecnologias e ferramentas para a manutenção de software; § Sugere um estratégia de manutenção a longo prazo ao invés de simplesmente procurar por uma imediata mudança na manutenção de Software; § Oferece uma maneira de organizar o software e mantê-lo organizado. z Conceito “Reengenharia é o processo de examinar software existente e/ou modificá-lo com ajuda de ferramentas automatizadas para: ■ Melhorar sua futura manutenção; ■ Atualizar sua tecnologia; ■ Estender sua expectativa de vida; ■ Aumentar a produtividade da manutenção. 6/17/19 15 z Outros Conceitos ■ “É o estudo e alteração de um determinado sistema para reconstruí-lo numa nova forma e subseqüente implementação dessa nova forma”; ■ “Modificação em código e estrutura de dados existentes usando os princípios de engenharia de software atuais para aumentar a capacidade de manutenção e capacidade de adaptação do sistema”. ■ “Combinação de técnicas e ferramentas que facilitam a análise, melhoria, redesenho e reutilização de sistemas existentes para suportar as necessidades de informação”; z Outros Conceitos ■ “Meio para melhorar sistemas existentes sem causar impactos na sua funcionalidade atual, plataforma ou arquitetura técnica”; ■ “Conjunto de técnicas e ferramentas orientadas à avaliação, reposicionamento e transformação de sistemas existentes, com o objetivo de estender-lhes a vida útil e ao mesmo tempo, proporcionar-lhes uma melhor qualidade técnica e funcionalidade” (Furlan); 6/17/19 16 zObjetivos da Reengenharia ■ Criar um inventário dos sistemas existentes; ■ Fornecer assistência automatizada para a manutenção; ■ Reduzir custos e erros de manutenção; ■ Tornar o sistema mais fácil de compreender, modificar e testar. zObjetivos da Reengenharia ■ Facilitar a conversão e migração do sistema; ■ Reforçar a aderência a padrões; ■ Melhorar a resposta às solicitações de manutenção; ■ Melhorar o ânimo do pessoal de manutenção; ■ Proteger e estender a vida do sistema; ■ Utilizar CASE para suportar sistemas atuais; ■ Reutilizar componentesde sistemas existentes. 6/17/19 17 z Razões para Reengenharia ■ Freqüentes falhas de produção; ■ Problemas de desempenho; ■ Tecnologia obsoleta; ■ Problemas de integração de sistemas; ■ Qualidade técnica ruim; ■ Dificuldades para testar e caro para manter; ■ Problemas crescentes no sistema. z Razões para se refazer o sistema (Engenharia) ■ Não confiável; ■ Algoritmos ruins ou incorretos; ■ Não atende as necessidades dos usuários. 6/17/19 18 z Sistemas Candidatos à Reengenharia ■ São de importância crítica da empresa; ■ São alvo de manutenção freqüente e requerem um grande percentual de recursos de manutenção; ■ São compreensíveis e podem seguramente ser modificados por poucos membros da equipe de software; ■ Contém erros que ninguém pode encontrar; ■ Requerem uma melhoria considerável. z Exercício 2 ■ Que sistemas poderiam ser alvo de reengenharia? Justifique. ■ Quais as principais razões para Reengenharia ou Engenharia? Manutenção de Software 6/17/19 19 z Áreas de Atuação da Reengenharia ■Análise; ■Reestruturação; ■Engenharia Reversa; ■Migração; ■Reutilização. z Análise É o processo de examinar os sistemas atuais a fim de compreender os componentes do sistema e como seus programas funcionam. O propósito principal é identificar programas prioritários para Reengenharia e medir sua qualidade. 6/17/19 20 z Reestruturação É o processo de alterar a forma do software (Ex: definição e nomes de dados e código do programa) sem alterar sua funcionalidade. O propósito principal é tornar o programa mais fácil de ser compreendido. z Engenharia Reversa É o processo de analisar o software para reconstruir uma descrição de seus componentes e seus relacionamentos. Uma descrição de alto nível do programa é obtida a partir do programa físico. O propósito é redocumentar o sistema e descobrir informações do projeto com o auxílio na melhoria da compreensão do programa. 6/17/19 21 z Migração É o processo de converter um software de uma linguagem para outra, mover de um ambiente operacional para outro ou atualizar sua tecnologia. O propósito principal é amenizar o impacto de adoção de novos ambientes e tecnologias. z Reutilização É o processo de sistematicamente reaproveitar os diversos elementos criados durante o desenvolvimento de software (código, projeto, especificações, documentação). O propósito principal é acelerar o desenvolvimento de novos sistemas e melhorar sua qualidade.