Manutenção de Software CIn-UFPE 1 Objetivos Descrever os diferentes tipos de manutenção Discutir questões relacionadas ao custo de manutenção Explicar os fatores que afetam a manutenibilidade de software Apresentar algumas atividades do processo de manutenção Explicar a relação entre os processos de engenharia reversa e reengenharia com a manutenção CIn-UFPE 2 Definição Processo de modificação de um ou mais programas depois que o software foi entregue ao cliente e está sendo usado. CIn-UFPE 3 Contexto Manutenção é inevitável Pode ser caracterizada como um iceberg Deficiências no método de desenvolvimento dificultam a manutenção CIn-UFPE 4 Tipos de Manutenção Corretiva Adaptativa Perfectiva Preventiva CIn-UFPE 5 Manutenção Corretiva Diagnóstico e correção daqueles erros não identificados durante o desenvolvimento e testes Este tipo de manutenção existe porque os testes de software dificilmente conseguem detectar todos os erros CIn-UFPE 6 Manutenção Adaptativa Alterações que se tornam necessárias por conta de mudanças no ambiente Necessárias porque a vida útil dos aplicativos é longa e não acompanha a rápida evolução da computação (principalmente o hardware) CIn-UFPE 7 Manutenção Perfectiva Alterações que visam melhorar o software de alguma forma Geralmente são o resultado de recomendações de novas capacidades bem como modificações em funções existentes, solicitadas pelos usuários Responsável pela maior parte do esforço gasto com manutenção CIn-UFPE 8 Tipos de Manutenção Corrective maintenance (17%) Adaptive maintenance (18%) CIn-UFPE Perfective maintenance (65%) 9 Manutenção Preventiva Modificações feitas com o objetivo de melhorar o software no que se refere à sua confiabilidade ou manutenibilidade, ou para oferecer uma base para futuras ampliações CIn-UFPE 10 Tipos de Manutenção: outra classificação Como a manutenção será feita? Não-estruturada Estruturada CIn-UFPE 11 Manutenção Não-estruturada O único elemento disponível sobre o software é o código fonte Freqüentemente a documentação interna do código fonte também é fraca A atividade de manutenção inicia-se com a avaliação do código fonte dos programas O impacto das mudanças é difícil de avaliar É impossível fazer testes completos CIn-UFPE 12 Manutenção Estruturada Existe uma configuração completa do software A atividade de manutenção inicia-se com uma análise da sua documentação O impacto das mudanças pode ser avaliado antes destas mudanças serem feitas Testes de regressão podem ser refeitos antes da nova versão ser liberada CIn-UFPE 13 Manutenção Estruturada Documentos importantes Documento de requisitos Documento da Arquitetura do sistema Para cada componente: especificação e projeto Programas Plano Guia CIn-UFPE fontes comentados de testes de manutenção: problemas conhecidos 14 Custo O custo de manutenção de software tem aumentado nas últimas décadas: Década de 70: . . . . . . . . . . . . . 35 a 40% do total Década de 80: . . . . . . . . . . . . . cerca de 60% do total Década de 90: . . . . . . . . . . . . . 70 a 80% do total Difícil de estimar Depende do domínio de aplicação CIn-UFPE 15 Custo Os custos de manutenção nem sempre são visíveis e nem se restringem ao dinheiro gasto Oportunidade de desenvolvimento adiada ou perdida porque os recursos são consumidos Insatisfação dos clientes porque solicitações não podem ser atendidas no tempo desejado Redução da qualidade global do software Insatisfação CIn-UFPE dos desenvolvedores 16 Problemas Clássicos Freqüentemente é impossível rastrear a evolução do software Muitas vezes é extremamente difícil entender o programa de outra pessoa. A documentação do software muitas vezes é muito ruim ou simplesmente não existe CIn-UFPE 17 Problemas Clássicos A maioria dos sistemas não são projetados para sofrer mudanças A manutenção não é vista como um trabalho atrativo Mudanças podem introduzir erros Mudanças podem degradar a estrutura do sistema CIn-UFPE 18 Manutenibilidade É a facilidade com que um software pode ser entendido, corrigido, adaptado, etc. Fatores que afetam negativamente a manutenibilidade: Negligência nas etapas de projeto, codificação, e testes Instabilidade de pessoal Indisponibilidade de pessoal qualificado Estrutura do sistema incompreensível Falta de padronização no uso de linguagens de programação e plataformas de desenvolvimento (ex: sistemas operacionais) CIn-UFPE 19 Manutenibilidade Fatores que afetam negativamente a manutenibilidade : Falta de padronização das estruturas de documentação Indisponibilidade de casos de teste Indisponibilidade de hardware adequado Má qualidade da documentação Falta de conhecimento do domínio de aplicação CIn-UFPE 20 Métricas de Manutenibilidade É difícil quantificar a manutenibilidade de software Exemplos de métricas: Tempo de reconhecimento do problema Tempo de análise do problema Tempo de especificação das mudanças Tempo de modificação Tempo de execução dos testes Tempo total da mudança CIn-UFPE 21 Relatórios Todos os pedidos de manutenção de software devem ser padronizados Deve existir um formulário padrão para solicitação de manutenção No caso de erros, os usuários devem fornecer uma descrição completa das circunstâncias No caso de manutenção adaptativa ou perfectiva deve-se fornecer uma especificação da mudança CIn-UFPE 22 Relatórios Deve existir também um documento interno à equipe de software que especifica: A magnitude A natureza das mudanças exigidas A prioridade do esforço de manutenção do pedido A função deste documento é servir de base para o planejamento das mudanças CIn-UFPE 23 Conservação de Registros A conservação de registros da manutenção quase sempre não é feita Freqüentemente é impossível avaliar a efetividade das técnicas de manutenção e a qualidade de um programa que está em produção Não existe muita disposição das empresas para determinar quanto realmente custa a manutenção CIn-UFPE 24 Conservação de Registros Informações que valem a pena ser registradas: Para cada programa: número de instruções número de execuções número de falhas de processamento Para cada manutenção: identificação, data e autor tipo de manutenção esforço total CIn-UFPE 25 Avaliação da Manutenção Difícil ou complicada pela falta de dados concretos. Se houver uma conservação de registros, é possível obter-se uma série de medidas: Número médio de falhas de processamento por execução Número médio de alterações feitas por tipo de manutenção, linguagem e programa. Total de pessoas-hora empregadas por tipo de manutenção Percentual de pedidos por tipo de manutenção CIn-UFPE 26 Engenharia Reversa e Reengenharia Engenharia reversa de software Processo que visa recuperar as informações de projeto a partir do código Reengenharia de um software Não somente recupera informações do projeto, mas também usa estas informações para alterar ou mesmo reconstruir o sistema existente, visando uma melhoria na sua qualidade CIn-UFPE 27 Engenharia Reversa e Reengenharia Na maioria das vezes, um software que passa por uma reengenharia: Re-implementa Adiciona Melhora CIn-UFPE as funções do sistema anterior novas funções ao sistema o seu desempenho global 28 Engenharia Reversa e Reengenharia Não é realístico tentar aplicar reengenharia a todos os sistemas antigos da empresa: O custo seria proibitivo Alguns dos programas são pouco usados Outros provavelmente não irão precisar de mudanças As ferramentas de apoio ainda são bastante limitadas Mais indicadas para aqueles programas que precisam de manutenção preventiva CIn-UFPE 29 Engenharia Reversa e Reengenharia Motivação O custo de manutenção pode chegar a 20 ou até 40 vezes o custo de desenvolvimento Pode facilitar bastante a manutenção A produtividade do desenvolvimento tende a ser acima da média O pessoal de manutenção fica mais satisfeito Ferramentas CIn-UFPE podem ser usadas 30 Engenharia Reversa e Reengenharia Indicações da necessidade de reengenharia Número Tempo de pedidos de correção requerido para análise do impacto da manutenção Tempo para implementação da mudança Número CIn-UFPE de pedidos pendentes 31 Pontos Principais A necessidade de manutenção não é uma possibilidade, mas uma certeza Manutenibilidade depende do processo de desenvolvimento As mesmas técnicas de desenvolvimento devem ser usadas para manutenção Manutenção pode ser corretiva, adaptativa, perfectiva ou preventiva Ainda, de acordo com a forma como é feita, pode ser estruturada ou não CIn-UFPE 32 Pontos Principais A avaliação do processo de manutenção depende da conservação de registros Engenharia reversa e reengenharia podem ser usadas para facilitar a manutenção CIn-UFPE 33