5. Manutenção de Software 5
Passado – Presente
Os sistemas legados respondem pela maior parte do
processamento de dados mundial.
Entre 60% e 70% dos sistemas estão em COBOL, estima-se em
200 milhões de linhas1
.
1
SEACORD et al, 2003 e ULRICH, 2002
A participação do custo de manutenção no custo total de um
sistema tem crescido de 40%, nos anos 70, até 90%, atualmente2
.
Destes custos, cerca de 20% são consumidos com correções e
80% com melhorias diversas.
2
PIGOSKI, 1996
7. Manutenção de Software 7
Motivações
• Surgem novos requisitos.
• O ambiente do negócio muda.
• Erros devem ser reparados.
• Nova infra-estrutura deve ser incorporada.
• O desempenho do software pode ser melhorado.
11. Manutenção de Software 11
Corretiva
Visa corrigir defeitos de funcionalidade, incluindo
os acertos emergenciais
12. Manutenção de Software 12
Adaptativa
Visa adequar o software ao seu ambiente externo
(SO, infra-estrutura, periféricos, integrações)
13. Manutenção de Software 13
Perfectiva
Objetiva acrescentar novos recursos de
funcionalidades ao software, normalmente
solicitados pelo usuário
14. Manutenção de Software 14
Preventiva
Visa modificar o software para melhorar a
confiabilidade ou a manutenibilidade futura, ou
para oferecer uma base melhor para futuras
ampliações
15. Manutenção de Software 15
Quando Executar?
Pós-desenvolvimento
Desenvolvimento
Pré-desenvolvimento
Estudo Preliminar
ProjetoAnáliseConcepção
Construção Teste/Docum. Homologação Implantação
Planejamento
Manutenção
G
E
S
T
Ã
O
16. Manutenção de Software 16
Como Executar?
Receber, validar e
categorizar pedido
Executar a manutenção
Controlador de
Manutenção
Supervisor de
Sistemas
Pessoal de
Manutenção
17. Manutenção de Software 17
Receber, Validar e Categorizar
Gravidade
Ação
Tipo?
Tipo?
Avaliar,
categorizar e
colocar na fila
Avaliar e
categorizar
Informar
solicitante
Priorizar e
colocar na fila
Apagar incêndio
no alto da fila
Avaliar,
categorizar e
colocar na fila
Pedido
Manutenção
Outro Erro
AcréscimoAdaptação Muita Não muita
FazerCancelar
18. Manutenção de Software 18
Executar Manutenção
Faltam
tarefas?
Selecionar
próxima tarefa
da fila
Planejar, organizar e
aplicar engenharia de
software
Sim
Registrar e
encerrar
atividade
Não
21. Manutenção de Software 21
Fatores de Gerência
• Visão diferenciada entre equipe de
desenvolvimento e equipe de manutenção.
• Dificuldades de comunicação entre equipe
de manutenção e organização.
• Treinamento inadequado da equipe.
• Sobrecarga de tarefas.
• Estimativas equivocadas.
• Dificuldade em medir e avaliar
desempenho da equipe de manutenção.
• Contratação de temporários para auxiliar
execução da manutenção.
22. Manutenção de Software 22
Fatores de Infra-estrutura
• Estagnação do ambiente de trabalho.
• Falta de tecnologia operacional adequada.
• Falta de tecnologia gerencial adequada.
23. Manutenção de Software 23
Fatores Humanos
• Elevada rotatividade de profissionais.
• Falta de uma esquipe de manutenção.
• Preferência da equipe por trabalho de
desenvolvimento.
• Falhas de comunicação com usuários.
• Mudanças frequentes de prioridades por
parte do usuário.
• Métodos inadequados de teste.
24. Manutenção de Software 24
Fatores de Software
• Baixa qualidade da documentação do
software original.
• Má qualidade do fonte-original.
• Necessidade de integração com softwares
incompatíveis.
25. Alternativas de Mitigação
Manutenção de Software 25
• Processos
Implantar a filosofia de projeto para manutenção.
Enfatizar que todo código esteja cuidadosamente
documentado.
Planejar cronogramas que incluam documentação e
testes.
Promover os sucessos e evitar fracassos anteriores
com lições aprendidas.
Instituir e reforçar práticas de qualidade.
Melhorar a relação entre equipe técnica e clientes.
Melhorar seleção de fornecedores e monitorar
processos, planos de estratégias, e tomadas de
decisões.
26. Alternativas de Mitigação
Manutenção de Software 26
• Pessoas
Associar pessoas a papéis adequados.
Melhorar o prestígio das tarefas de manutenção.
Tornar mais efetivo o treinamento, especialmente em
relação ao uso de ferramentas, documentação e
padrões.
Melhorar o projeto de comunicação e incentivar às
pessoas a utilizarem-no.
27. Alternativas de Mitigação
Manutenção de Software 27
• Tecnologia
Investir em ferramentas mais efetivas, que abarcam
engenharia reversa, reengenharia, testes, gerência de
configuração e documentação.
Melhorar a qualidade das ferramentas desenvolvidas
internamente.
Melhorar as atividades e ferramentas que centralizem
comunicação entre projetos.
Encorajar equipe técnica a comunicar suas
necessidades de ferramentas.
29. Manutenção de Software 29
Conceito*
*
Pressman, 2002
É a meta principal que orienta os passos de um processo de
engenharia de um software
30. Manutenção de Software 30
Fatores Controladores
*
Pressman, 2002
Ambiente de
Desenvolvimento
Medidas
Quantitativas
Revisões
31. Manutenção de Software 31
Ambiente de Desenvolvimento
Disponibilidade de um pessoal de software qualificado.
Estrutura de sistema compreensível.
Facilidade de manuseio do sistema.
Uso de linguagem de programação padronizada.
Estrutura de documentação padronizada.
Disponibilidade de casos de teste.
Facilidades de depuração embutidas.
Disponibilidade de um ambiente (sw/hw) adequado para
realizar a manutenção.
Planejamento para a manutenibilidade.
32. Manutenção de Software 32
Medidas Quantitativas
Tempo de reconhecimento do problema.
Tempo de retardo administrativo.
Tempo de coleta de ferramenta de manutenção.
Tempo de análise do problema.
Tempo de especificação das mudanças.
Tempo de correção ativa.
Tempo de testes locais.
Tempo de testes globais.
Tempo de revisão de manutenção.
Tempo de recuperação total.
33. Manutenção de Software 33
Revisões
Revisão dos requisitos Anotar possíveis acréscimos.
Discutir as questões de portabilidade.
Considerar interfaces que impactam.
Revisão da arquitetura Projeto de dados, projeto arquitetural,
projeto procedimental e interfaces são
avaliadas quanto à facilidade de
modificação.
Revisão do Código Estilo.
Documentação.
Testes Conhecer partes do software que
necessitam de manutenção antes do
deploy.
34. Sugestões Bibliográficas
• Seacord, Robert C., Plakosh, Daniel, Lewis, Grace A., Modernizing Legacy Systems:
Software Technologies, Engineering Processes, and Business Practices, Addison-
Wesley, 2003.
• Pigoski, T. M., Practical Software Maintenance: Best Practices for Managing Your
Software Investiment, John Wiley & Sons, Inc., 1996.
• ISO/IEC 14764, Information technology - Software Maintenance,1999.
• Pressman, R. S., Engenharia de Software. 5. ed. São Paulo: Makron Books, 2002.
• Ulrich, William M., Legacy Systems: Transformation Strategies, 2002 Prentice-Hall
PTR, 2002.
• Lientz, B. P., Swanson, E. B., Software Maintenance Management, Reading, MA,
Addison-Wesley, 1980.
• IEEE Computer Society. Swebok – Guide to the Software Engineering Body of
Knowledge, 2004.
Manutenção de Software 34