Manutenção desoftware SCE 186- Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestrede2002
CiclodeVidadeSoftware 2
ManutençãodeSoftware n Alterações efetuadas no software depois de sua liberação. n As alterações ocorrem por diversas razões. n As razões para as alterações determinam a categoria de manutenção. 3
CategoriasdeManutenção 1) Identificar e Corrigir Erros Manutenção Corretiva 4
CategoriasdeManutenção 2) Adaptar o Software ao Ambiente Manutenção Adaptativa 5
CategoriasdeManutenção 3) Atender Pedidos do Usuário para Modificar Funções Existentes, Incluir Novas Funções e Efetuar Melhoramentos Gerais Manutenção Perfectiva 6
CategoriasdeManutenção 4) Melhorar a manutenibilidade ou confiabilidade futuras e fornecer uma base melhor para futuros melhoramentos Manutenção Preventiva 7
AFasedeManutençãode Software n Fase mais problemática do Ciclo de Vida de Software n Pode despender mais de 70% de todo esforço de uma Organização n Esses sistemas devem continuar rodando e as alterações são inevitáveis 8
AFasedeManutençãode Software n Por que é exigida tanta Manutenção e por que é despendido tanto Esforço nessa atividade? u Idade Média de 10 a 15 anos u Quando foram implementados, o tamanho do programa e espaço de armazenamento eram o principal interesse u Migração para novas plataformas u Sistemas mal estruturados 9
AFasedeManutençãode Software n Por que é exigida tanta Manutenção e por que é despendido tanto Esforço nessa atividade? (cont) u Melhoramentos para atender novas necessidades u Nenhuma preocupação com a arquitetura global u Codificação, lógica e documentação ruins 10
ManutençãoEstruturadax Não-Estruturada 11
CustodeManutenção n Custo da manutenção como uma porcentagem do orçamento do software Lientz e Swanson ( 1980) Arfa et alii (1988-1989) Manutenção 48,8 % 44,63% Desenvolvimento 43,3 % 46,59 % Outros 7,9 % 8,78 % 12
CustodeManutenção n Outros Custos não Monetários u Adiamento de oportunidades de desenvolvimento u Redução da qualidade global do software u Insatisfação do cliente u Insatisfação do pessoal de manutenção 13
CustodeManutenção n Custo Final da Manutenção u Diminuição dramática na produtividade n (Boehm ) u Custo do desenvolvimento $250.00 por linha de código u Custo da manutenção $1000.00 por linha de código 14
CustodeManutenção n O Custo de manutenção pode ser dividido em: u tentar entender o que o software faz u interpretar as estruturas de dados, as características de interface e limites de desempenho u analisar, avaliar, projetar, codificar e testar as modificações (Atividades Produtivas) 15
Custo de Manutenção MODELO DE ESFORÇO DE MANUTENÇÃO [Belady72] no qual, M p ke F M = Esforço total F p = Esforço produtivo F k = Constante empírica F c = Medida de complexidade atribuída à falta de bom projeto e documentação F d = Medida do grau de familiaridade com o software c d Crescimento exponencial. 16
Problemas da Manutenção n A maioria dos problemas com a manutenção do software é causada por deficiências na maneira como o software foi planejado e desenvolvido 17
Problemas da Manutenção PROBLEMAS CLÁSSICOS PROBLEMAS CLÁSSICOS n É 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 n É difícil ou impossível rastrear o processo através do qual o software foi criado. 18
Problemas da Manutenção PROBLEMAS CLÁSSICOS (cont.) PROBLEMAS CLÁSSICOS (cont.) n É muito difícil entender programas "de outras pessoas". A dificuldade aumenta conforme o número de elementos na configuração de software diminui. n "As outras pessoas" freqüentemente não estão presentes para explicar. 19
Problemas da Manutenção PROBLEMAS CLÁSSICOS (cont.) PROBLEMAS CLÁSSICOS (cont.) n A documentação não existe, é incompreensível ou está desatualizada. n A maioria dos softwares não foram projetados para apoiar alterações. n A manutenção não é vista como um trabalho glamoroso. 20
Manutenibilidade n A Manutenibilidade pode ser definida qualitativamente como a facilidade com que o software pode ser entendido, corrigido, adaptado e ou melhorado 21
Manutenibilidade n A manutenibilidade é afetada por muitos fatores: u cuidado inadequado com o projeto, codificação e teste u configuração de software ruim u disponibilidade de pessoal qualificado de software 22
Manutenibilidade n A manutenibilidade é afetada por muitos fatores: (cont) u facilidade de manusear o sistema u uso de linguagens de programação padronizadas u uso de sistemas operacionais padronizados u estruturas padronizadas de documentação 23
Manutenibilidade n A manutenibilidade é afetada por muitos fatores: (cont) u disponibilidade de um computador próprio para a manutenção u disponibilidade da pessoa ou grupo que desenvolveu o software u o planejamento para manutenibilidade o planejamento para manutenibilidade (fator mais importante que afeta a manutenibilidade) 24
Medidas Quantitativas de Manutenibilidade n Difícil de quantificar n Pode-se determinar a manutenibilidade indiretamente considerando-se atributos das atividades de manutenção que podem ser medidos 25
Medidas Quantitativas de Manutenibilidade Métricas de Manutenibilidade (Gilb) u tempo de reconhecimento do problema u tempo de demora administrativa u tempo de coleta de ferramentas de manutenção u tempo de análise do problema u tempo de especificação da alteração u tempo de correção ou modificação u tempo de teste local e global u tempo de revisão da manutenção 26
Medidas Quantitativas de Manutenibilidade n A manutenibilidade pode ser medida indiretamente considerando medidas da estrutura do projeto e medidas da complexidade do software 27
Revisões de Manutenibilidade n A manutenibilidade deve ser considerada em cada nível do processo de revisão da engenharia de software. 28
Revisões de Manutenibilidade ETAPA DE REVISÃO DE REQUISITOS observar: n áreas de melhoramentos futuros n aspectos de portabilidade do software n interfaces que poderiam impactar a manutenção 29
Revisões de Manutenibilidade ETAPA DE REVISÃO DE PROJETO avaliar: u projeto arquitetural u projeto procedimental u projeto de interfaces e u projeto de dados quanto à facilidade de manutenção e à qualidade global. 30
Revisões de Manutenibilidade ETAPA DE REVISÃO DE CÓDIGO dar ênfase: u ao estilo u à documentação interna 31
Revisões de Manutenibilidade ETAPA DE REVISÃO DE TESTE n Cada passo do teste pode fornecer indícios sobre partes do software que poderiam exigir manutenção preventiva 32
Fatores de Qualidade de Software (Norma ISO 9126) n Os fatores de qualidade de software focalizam três aspectos importantes do software produto 33
Tarefas de Manutenção 1) Estabelecer uma organização para a manutenção ( de fato" ou formal) 34
Tarefas de Manutenção 2) Descrever procedimentos de avaliação e de comunicação 3) Definir seqüências padronizadas de eventos (para os pedidos de manutenção) 35
Seqüência de Eventos 36
Tarefas de Manutenção 4) Estabelecer procedimentos para registrar a história das atividades de manutenção 37
Exemplo de Dados que podem ser Armazenados (Swanson) identificação do programa número de comandos fonte linguagem de programação usada data da instalação do programa número de execuções do programa desde a instalação número de falhas de processamento associadas ao item anterior nível e identificação da alteração no programa número de comandos fonte adicionados por alteração no programa número de pessoas-horas despendidos na manutenção identificação do pedido de manutenção tipo de manutenção datas de início e fim da manutenção 38
Tarefas de Manutenção 5) Definir critérios de revisão e avaliação 39
MEDIDAS de DESEMPENHO e MANUTENÇÃO (Swanson) n número médio de falhas de processamento por execução do programa n pessoas-horas despendido em cada categoria de manutenção n número médio de pessoas-horas despendido por comando fonte adicionado ou retirado devido a manutenção n tempo médio de processamento para um pedido de manutenção n porcentagem de pedidos de manutenção por tipo 40
Tarefas de Manutenção 5) Definir critérios de revisão e avaliação MEDIDAS de DESEMPENHO e MANUTENÇÃO (Swanson) número médio de falhas de processamento por execução do programa pessoas-horas despendido em cada categoria de manutenção número médio de pessoas-horas despendido por comando fonte adicionado ou deletado devido a manutenção tempo médio de processamento para um pedido de manutenção porcentagem de pedidos de manutenção por tipo 40 Arcabouço Quantitativo Técnicas de Desenvolvimento, Linguagens, Esforço de Manutenção, Alocação de Recursos 41
Manutenção de Código Alienígena n Os programas alienígenas são assim chamados porque: u Programas com fluxo de controle equivalente a uma tigela de espaguete u Módulos muito grandes u Poucos linhas de comentários significativos 42
Manutenção de Código Alienígena n Os programas alienígenas são assim chamados porque: (cont.) u Não existe nenhum outro elemento da configuração de software, além do código u Nenhum membro do pessoal atual de manutenção trabalhou no desenvolvimento do programa 43
Manutenção de Código Alienígena n Os programas alienígenas são assim chamados porque: (cont.) u Nenhuma metodologia de desenvolvimento foi aplicada: F Projeto de dados e projeto arquitetural ruins F Documentação e registro histórico das alterações incompletos 44
Manutenção de Código Alienígena O QUE PODE SER FEITO COM CÓDIGO "ALIENÍGENA"? Engenharia Reversa e Reengenharia 45
Engenharia Reversa ENGENHARIA REVERSA ENGENHARIA REVERSA n processo de análise de um software, partindo-se inicialmente da implementação para um nível mais alto de abstração 46
Reengenharia REENGENHARIA n implica no exame e na alteração do software para reconstruí-lo em uma nova forma. 47
Engenharia Reversa e Reengenharia 48
Elementos da Engenharia Reversa 1) NÍVEL DE ABSTRAÇÃO n conforme o nível de abstração aumenta, mais compreensíveis se tornam as informações. 49
Elementos da Engenharia Reversa 2) COMPLETITUDE DO PROCESSO 2) COMPLETITUDE DO PROCESSO n refere-se ao nível de detalhes que é fornecido em cada nível de abstração. 50
Elementos da Engenharia Reversa 3) INTERATIVIDADE n refere-se ao grau de participação do ser humano no processo de engenharia reversa. n conforme o nível de abstração aumenta, a interatividade deve aumentar ou a completitude será prejudicada 51
Elementos da Engenharia Reversa 3) DIRECIONALIDADE n se a direcionalidade tem sentido único, toda informação extraída a partir do código fonte é usada durante as atividades de manutenção n se a direcionalidade tem sentido duplo, a informação é usada para "alimentar" uma ferramenta de reengenharia. 52