troy costa kohwalter troy@ic.uff
Post on 25-Nov-2021
33 Views
Preview:
TRANSCRIPT
Troy Costa Kohwalter
troy@ic.uff.br
Cenário atual
Troy Kohwalter Manutenção de Software 2
90% do custo total [Erlikh 2000]
60% do esforço total [Pressman 1997]
70 bilhões de dólares anuais nos EUA [Edelstein 1993]
250 bilhões de linhas de código em manutenção [Sommerville 2000]
Cenário Mundial• Somente 21% do esforço de
manutenção é gasto em correções de erros (Bennett and Rajlich 2000)
• Manutenção é necessária mesmo em sistema com qualidade
– Adaptação para novas regulamentações legais
– Novos requisitos
– Torná-lo mais simples de compreender e manter
Troy Kohwalter Manutenção de Software 3
Leis de Lehman
• Mudança contínua: – software deve ser continuamente adaptado, senão torna-se
menos satisfatório
• Complexidade crescente: – se não forem tomadas medidas para reduzir complexidade, ela
irá aumentar progressivamente
• Crescimento contínuo: – software deve ter funcionalidades ampliadas para manter a
satisfação dos seus usuários
• Declínio da qualidade: – software se deprecia se eles não receberem as mudanças
necessárias
Troy Kohwalter Manutenção de Software 4
O que é a manutenção?
Troy Kohwalter Manutenção de Software 5
O processo de modificar um sistema de
software ou componente, depois da
entrega, para corrigir falhas, melhorar
desempenho ou outros atributos, ou
adaptar a mudanças no ambiente.
IEEE Std 620.12 1990
Refatoração vs otimização• Refatoração:
– Mudança realizada nas estruturas internas do programa
– Facilitar seu entendimento e baratear suas alterações
– Não modifica seu comportamento
• Otimização:
– Não altera comportamento
– Altera estruturas internas• Melhorar desempenho
– Porém...
• Torna o código mais difícil de manter
Troy Kohwalter Manutenção de Software 6
https://www.desenvolvimentoagil.com.br/xp/praticas/refatoracao
Quando inicia a manutenção?
Troy Kohwalter Manutenção de Software 7
Desenvolvimento ManutençãoRelease
Quando inicia a manutenção?
Troy Kohwalter Manutenção de Software 8
Desenvolvimento ManutençãoRelease
Desenv.
Manut.
Release
Desenv. Release
Manut.
Desenv.
Quais são os tipos de
manutenção?
Manutenção de Software 9Troy Kohwalter
Manutenção
Correção Evolução
Emergencial Corretiva Adaptativa PerfectivaPreventiva
Quais são os tipos de manutenção?
• Manutenção emergencial
– Não programada
– Mantém temporariamente o sistema funcionando
– Necessita uma manutenção corretiva posterior
• Manutenção corretiva
– Reativa
– Corrige problemas reportados
– Faz o software voltar a atender aos requisitos
Troy Kohwalter Manutenção de Software 10
Quais são os tipos de manutenção?
• Manutenção preventiva– Pró-ativa
– Corrige problemas latentes
• Manutenção adaptativa– Mantém o software usável após mudanças no
ambiente
– Geralmente cliente solicita modificações devido aalterações (e.x.: domínio, plataformas)
• Manutenção perfectiva– Provê melhorias para o usuário
– Melhora atributos de qualidade do software
Troy Kohwalter Manutenção de Software 11
Processo de manutenção
Manutenção de Software 12Troy Kohwalter
Solicitação de
Modificação
Análise
Implementação
Revisão
Planejamento
Migração
(reengenharia)
Descontinuidade
REENGENHARIA
Troy Kohwalter Manutenção de Software 13
Reengenharia• Reconstruir o sistema
• Objetivo de melhorar
– Desempenho
– Manutenabilidade
– Segurança
– Estruturas e entendimento
– Documentação
– Etc.
• Sistemas legados
Troy Kohwalter Manutenção de Software 14
https://www.ordorite.com/outdated-technology-damaging-your-furniture-business/
Software Legado
• Valioso ($)
• Linguagem de programação antiga – E.x.: COBOL, PHP
• Tecnologia obsoleta
• Mudou muito– Mostra sinais de adaptações
• Não pode ser descartado nem atualizado – Custoso
Troy Kohwalter Manutenção de Software 15
Benefícios da Reengenharia
• Reduzir a complexidade de sistemas legados... • Exemplos:
– Portar para nova plataforma
– Melhorar performance
– Extrair modelos
– Explorar novas tecnologias
– Reduzir dependência humana
Troy Kohwalter Manutenção de Software 16
Benefícios da Reengenharia
• Reduzir riscos:
– Risco de desenvolver o sistema novamente é alto
– Podem ocorrer erros de especificação ou problemas no desenvolvimento
Troy Kohwalter Manutenção de Software 17
Benefícios da Reengenharia
• Reduzir custos:
– Custo de reengenharia pode ser muito menor que o custo de desenvolvimento
– Ferramentas podem automatizar uma parte
Troy Kohwalter Manutenção de Software 18
Custo-benefício da Reengenharia
• Determinado quantitativamente...
• Manter estado atual: – Custo de suporte + manutenção ($$$)
• Aplicar reengenharia: – Custo da reengenharia + suporte + manutenção ($)
• Compensa quando? – Quando o sistema tem vida longa e pouca manutenibilidade
Troy Kohwalter Manutenção de Software 19
Quando aplicar Reengenharia?
• Documentação obsoleta – Ou não existe...
• Desenvolvedores deixaram empresa – Ninguém mais sabe como foi feito
• Conhecimento limitado do sistema
• Muito tempo gasto para realizar pequenas mudanças
• Correção de defeitos frequente
• Problemas de manutenção– Constantes...
Troy Kohwalter Manutenção de Software 20
Engenharia x Reengenharia
Troy Kohwalter Manutenção de Software 21
Especificação do sistema
Sistema de software existente
Projeto e Implementação
Compreensão e transformação
Novo sistema
Sistema de reengenharia
Processo de Reengenharia
1. Análise de Inventário– Toda organização tem um inventário de aplicações
– Priorizar sistemas candidatos
– Alocar recursos
2. Reestruturação de Documentação– Documentação fraca e escassa é a marca de sistemas
legados
– Opções: • Não fazer nada
• Documentar apenas mudanças
• Documentar o mínimo necessário
Troy Kohwalter Manutenção de Software 22
Processo de Reengenharia
3. Engenharia Reversa
– Processo de extrair informação a partir do código existente
– Informação extraída pode ser provida para o Engenheiro de software e/ou ferramentas
– Entender:
• Dados interno x global
• Processamento: abstrações procedurais (com ferramentas)
• Interface com o usuário: estrutura e comportamento da UI
Troy Kohwalter Manutenção de Software 23
Processo de Reengenharia
4. Reestruturação de Código e Dados– Modifica código ou dados – Não altera arquitetura – Código: mesma funcionalidades, mais qualidade – Dados: projeto de dados mais efetivo
5. Engenharia Avante– Recupera o projeto de software – Melhora a qualidade do sistema – Adiciona novas funcionalidades – Modifica arquitetura – Resultado: nova configuração do sistema
Troy Kohwalter Manutenção de Software 24
Principais Referências Bibliográficas
• Bennett, K. H. and V. T. Rajlich (2000). Software maintenance and evolution: a roadmap. International Conference on Software Engineering, The Future of Software Engineering, Limerick, Ireland, ACM Press.
• Edelstein, D. (1993). "Report on the IEEE 1219-1993- Standard for Software Maintenance." ACM SIGSOFT Software Engineering Notes 18(4): 94-95.
• Erlikh, L. (2000). "Leveraging Legacy System Dollars for E-Business." ITProfessional 2(3): 17-23.
• IEEE Std 14764-2006, “Software Engineering – Software Life Cycle Processes –Maintenance”.
• MCT (2006). Qualidade e Produtividade no Setor de Software Brasileiro. Brasília, DF, Ministério de Ciência e Tecnologia, Secretaria de Política de Informática.
• Pressman, R. S. (1997). Software Engineering: A Practitioner's Approach, McGraw-Hill.
• Sommerville, I. (2000). Software Engineering, Addison-Wesley.
Troy Kohwalter Manutenção de Software 25
Agradecimentos
• Baseado em material gentilmente cedido por Prof. Leonardo Murta (UFF)
Troy Kohwalter Manutenção de Software 26
Troy Costa Kohwalter
troy@ic.uff.br
top related