Professional Documents
Culture Documents
Engenharia De Software
Prof.ª: Gilene
MANUTENÇÃO
DE SOFTWARE
1
ÍNDICE
INTRODUÇÃO 3
DESENVOLVIMENTO
DEFINIÇÃO DE SOFTWARE 4
CARACTERÍSTICAS DA MANUTENÇÃO 5
Manutenção Estruturada versus Não-Estruturada 5
Custo de Manutenção 6
Problemas 6
MANUTENIBILIDADE 7
Fatores Controladores 8
Medidas Quantitativas 8
Revisões 9
TAREFAS DA MANUTENÇÃO 9
Uma Organização para a Manutenção 10
Relatórios 10
Fluxo de Eventos 11
Conservação de Registros 12
Avaliação 13
EFEITOS COLATERAIS NA MANUTENÇÃO 14
Efeitos Colaterais na Codificação 14
Efeitos Colaterais nos Dados 15
Efeitos Colaterais na Documentação 15
MANUTENÇÃO DE CÓDIGO ALIENÍGENA 16
ENGENHARIA REVERSA E REENGENHARIA 17
Manutenção Preventiva 18
Elementos de Engenharia Reversa 18
Uma técnica de Reestruturação P/ Reengenharia 19
CONCLUSÃO 21
ANEXO 22
BIBLIOGRAFIA 23
2
INTRODUÇÃO
3
DESENVOLVIMENTO
DEFINIÇÃO DE SOFTWARE
Contudo, a manutenção é certamente mais do que concertar o erro que não foi
achado nas fases anteriores a implantação, a manutenção consiste em quatro atividades
que são levadas a efeito somente depois que o programa é liberado para uso. São elas:
• Manutenção Corretiva: pois seria impossível descobrir todos os erros de um
grande software na fase de testes, por isso é feito um diagnóstico e feito um
relatório ao desenvolvedor;
• Manutenção Adaptativa: pois as mudanças na própria plataforma onde o
sistema é aplicado sejam de hardware ou outros softwares dedicados, nos
levam a adaptação do ambiente do sistema;
• Manutenção Perfectiva: por estar rodando tão bem, as vezes o projetista tende
ao perfeccionismo fazendo no ambiente do software novas modificações,
claro que tudo a pedido também do usuário;
• Manutenção Preventiva: toda modificação feita para prevenir a manutenção
problemática no futuro e confiabilidade onde são aplicadas técnicas de
engenharia reversa e reengenharia.
Tarefas como a adaptação a novos ambientes ou novas capacidades bem com a
prevenção de manutenção também são aplicadas nas fases de desenvolvimento do
processo e por se repetirem diversas vezes acabaram tornando-se manutenções. Existem
porém varias outras manutenções, como a manutenção do próprio hardware que
analogamente não se compara com o software, pois a máquina com o passar dos anos
vai a precisar de reparos devido o seu desgaste.
4
CARACTERISTICAS DA MANUTENÇÃO:
O estudo da manutenção dos sistemas é uma literatura que quase não eram
abordada, comparada as atividades de desenvolvimento do projeto, dai a conclusão por
existirem poucos métodos técnicos ou abordagens.
Antes da descrição das características, existem três pontos de vista a serem
levados em conta:
• Atividades exigidas para que ocorra a manutenção e o impacto nos sistemas
sem a mesma;
• Custos associados à fase de manutenção do sistema;
• Os problemas encontrados quando a manutenção é feita.
5
Custo de Manutenção
Como a maior parte do esforço é gasto na fase de manutenção, não poderia ser
diferente que as organizações também gastassem quase que 80% do orçamento ao faze-
la, índice que só veio a aumentar durante as décadas. A preocupação dos projetistas é
que nem sempre o que e pedido pelo usuário e tão simples quanto parece ser dito. As
mudanças estão ficando mais longas para que possamos implementa-las nos custos
iniciais previstos.
Um custo intangível da manutenção de software é a oportunidade de
desenvolvimento que é postergada ou perdida porque os recursos disponíveis devem ser
canalizados para tarefas de manutenção. Outros custos intangíveis incluem:
(PRESSMAN95)
• Insatisfação do cliente quando solicitações aparentemente legítimas de reparo
ou modificação não podem ser encaminhadas oportunamente quanto ao
tempo;
• Redução da qualidade global do software como resultado de mudanças que
introduzem erros latentes no software mantido;
• Sublevações causadas durante os esforços de desenvolvimento quando o
pessoal precisa ser “empurrado” para trabalhar numa tarefa de manutenção.
O custo final da manutenção de software é uma drástica diminuição de
produtividade que é encontrada quando a manutenção da programas antigos é iniciada.
Reduções de produtividade de 40:1 ou um desenvolvimento que custe 25 dólares por
linha de código passe a custar 1000 dólares por linha de código.(PRESSMAN95)
Problemas
6
sempre sai caro” adequa-se muito bem a estes problemas também e por fim a falta de
controle e disciplina nas atividades desenvolvimento da engenharia de software.
Dentre os problemas clássicos que podem estar associados a manutenção de
software estão: (PRESSMAN95)
MANUTENIBILIDADE
7
A manutenibilidade diz respeito a facilidade com que um software pode ser
entendido, corrigido, adaptado e/ou aumentado. Logo verificamos que nada mais é do
que senão a orientação a ser seguida passo a passo pela engenharia de software para
elaboração bem definida de um projeto.
Fatores Controladores
Medidas Quantitativas
8
podem ser avaliados uma série de métricas da manutenibilidade que relacionam o tempo
e os esforços despendidos durante a manutenção. São eles:
• Tempo de reconhecimento do problema;
• Tempo de retardo administrativo;
• Tempo de coleta de ferramentas de manutenção;
• Tempo de análise do problema;
Revisões
9
TAREFAS DE MANUTENÇÃO
Antes que o pedido de manutenção seja feito, algumas tarefas precisam estar
estabelecidas como procedimento de avaliação, relatórios devem ser descritos e uma
seqüência de eventos padronizada deve ser definida para cada pedido de manutenção.
Além disso devem constar o registro das atividades de manutenção, critérios de
avaliação e revisão.
Relatórios
10
erro, inclusive entradas, listagens e materiais de apoio. Para pedidos de manutenção
Adaptativa ou Perfectiva basta que sejam descritos as mudanças com especificação
abreviada das funções. Todos os relatórios são encaminhados ao controlador de
manutenção e repassados ao supervisor de sistemas para análise. O formulário ou
relatório é para uso externo da organização, para uso interno é destinado um outro
relatório chamado de relatório de mudanças de software onde são destacados aspectos
como esforço exigido na modificação, natureza da modificação, prioridade do pedido e
dados posteriores ao fato sobre a modificação. Este relatório também é avaliado pelo
supervisor de sistemas. (PRESSMAN95)
Fluxo De Eventos
11
mas não elimina, a necessidade de ter controles e avaliações. Depois que a crise tiver
sido resolvida, essas atividades devem ser realizadas a fim de garantir que os reparos
atuais não prorrogarão problemas mais graves.
Os pedidos de manutenção adaptativa e perfectiva seguem um caminho diferente.
As adaptações são avaliadas e categorizadas (priorizadas) antes de serem colocadas
numa fila para sofrer manutenção. Os acréscimos passam pela mesma avaliação. No
entanto, nem todos os pedidos de acréscimo são levados a efeito e os acréscimos que
devem ser feitos também são colocados na fila de manutenção. A prioridade de cada
pedido é estabelecida e o trabalho exigido é programado como se fosse outro esforço de
Conservação De Registros
12
um programa de produção e não temos disposição para determinar quanto custa
realmente a manutenção. (PRESSMAN95)
Um dos problemas encontrados na conservação de registros sobre manutenção
consiste em entender quais dados valem a pena ser guardados. Swanson [SWA76]
apresenta uma lista abrangente:
• Identificação do programa.
• Número de instruções-fonte.
• Número de instruções de código de máquina.
• Linguagem de programação usada.
• Data de instalação do programa.
• Número de execuções do programa desde a instalação.
Avaliação
13
Uma avaliação das atividades de manutenção do software freqüentemente é
complicada pela falta de dados concretos. Se uma conservação de registros for iniciada,
uma série de medidas do desempenho de manutenção pode ser desenvolvida.
Apresentamos uma lista abreviada de medidas em potencial propostas por Swanson
[SWA76]:
• Número médio de falhas de processamento por execução do programa.
• Total de pessoas/hora empregadas em cada categoria de manutenção.
• Número médio de mudanças de programa feitas por programa, por linguagem
e por tipo de manutenção.
• Número médio de pessoas/hora empregadas por instruções-fonte adicionadas
ou suprimidas devido à manutenção.
• Média de pessoas/hora empregadas por linguagem.
• Tempo médio de renovação do MRF.
14
efeitos colaterais na codificação, efeitos colaterais nos dados e efeitos colaterais na
documentação.
15
efeitos colaterais nos dados ocorrem como resultado de modificações feitas na estrutura
de informações do software. (PRESSMAN95)
As seguintes mudanças [FRE90] nos dados freqüentemente resultam em efeitos
colaterais:
• Redefinição de constantes locais e globais.
• Redefinição de formatos de registros ou arquivos.
• Aumento ou diminuição no tamanho de um array ou de uma estrutura de
dados de nível mais alto.
• Modificação em dados globais.
• Reinicialização de sinais de controle ou indicadores.
• Rearranjo de argumentos para E/S ou subprogramas.
Os efeitos colaterais nos dados podem ser limitados mediante uma documentação
de projeto cuidadosa que descreva a estrutura de dados e forneça uma referência cruzada
que associe elementos de dados, registros, arquivos e outras estruturas aos módulos de
software.
16
Para um usuário, o software é tão bom quanto a documentação (tanto escrita
como interativa) que descreve o seu uso. Se as modificações no software executável não
se refletirem na documentação do usuário, os efeitos colaterais estarão garantidos.
Os efeitos colaterais na documentação podem ser reduzidos substancialmente se
toda a configuração for revista antes do relançamento do software. Alguns pedidos de
manutenção talvez não exijam nenhuma mudança no projeto de software ou no código-
fonte, mas podem indicar uma falta de clareza na documentação do usuário.
(PRESSMAN95)
17
Cada uma dessas diretrizes ajudará na manutenção de programas antigos.
Manutenção Preventiva
18
• Podemos lutar de modificação em modificação, combatendo o projeto
implícito e o código- fonte para implementar as mudanças necessárias.
• Podemos tentar entender o funcionamento interior mais amplo do programa
num esforço para fazer modificações mais efetivas.
• Podemos redesenhar, recodificar e testar aquelas partes do software que
requerem modificação, aplicando a abordagem de engenharia de software a
todos os segmentos revisados.
• Podemos redesenhar, recodificar e testar completamente o programa usando
ferramentas CASE (ferramentas e engenharia reversa e reengenharia) para
nos ajudar a entender o projeto.
Em vez de ficar esperando até que um pedido de manutenção seja recebido, a
organização de desenvolvimento ou manutenção escolhe um programa que permanecerá
em uso durante um número de anos previamente determinado; esteja sendo usado com
sucesso atualmente; e tenha a probabilidade de sofrer grandes modificações ou
ampliações no futuro próximo.
19
Se a direcionalidade do processo de engenharia reversa for unidirecional, todas
as informações extraídas do código-fonte serão oferecidas ao engenheiro de software,
que poderá usa´-las durante qualquer atividade de manutenção. Se a direcionalidade for
bidirecional, as informações serão fornecidas à ferramenta de reengenharia, que tentará
reestruturar ou regenerar o programa antigo.
V= Ã . ~B . C. ~D + Ã . ~B . C + Ã . B. C . ~D + Ã . B. C. D + A . ~B . C .
~D + A . ~B . C . ~D + A . B . C . D
onde na notação boolena, indica um AND lógico e + indica um OR lógico.
Aplicando as regras de simplificação lógica, obtemos a equação a seguir:
= ~A . C(~B + B) + A. C (~B + B)
20
= ~A. C. + A. C = C(~A + A)
=C
e similarmente
X = A. ~B . C . ~D + A . ~B . C . D
= A. ~B . C(~D + D)
= A . ~B . C
21
CONCLUSÃO
22
ANEXO
Pedido de Manutenção
Outro Erro
Tipo?
Anular Fazer
Ação
Informação Priorizar, e
requerida
informar colocar na fila
solicitante
Selecionar próxima
tarefa da fila de
prioridades
Planejar, organizar,
aplicar engenharia
de software
Sim
FLUXO DE EVENTOS DE Faltam
MANUTENÇÃO tarefas?
Aplicar recursos a
Não23
novo
desenvolvimento de
software
BIBLIOGRAFIA
24