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
Download

a18-manutencao