Please enable JavaScript.
Coggle requires JavaScript to display documents.
Evolução e Manutenção de Software - Coggle Diagram
Evolução e Manutenção de Software
Manutenção
Tipos de Manutenção
Adaptativa (novo ambiente)
Evolutiva (novas funcionalidades)
Corretiva (corrigir erros)
Manutenção contínua degrada a estrutura
Processo de Evolução
Começa com solicitação de mudança
Exige análise de impacto
Envolve reimplementação e testes
Mudanças urgentes pulam etapas
Ágil: evolução contínua com testes automatizados
Modelo espiral
Evolução é contínua, com releases sucessivos
Sistemas Legados
Difíceis de manter: tecnologia antiga, sem documentação
Avaliação por
Qualidade técnica
Valor de negócio
Estratégias
Manter
Reengenharia
Substituir
Descartar
Dificuldades comuns
Falta de documentação
Sistema foi mantido por pessoas diferentes
Conhecimento perdido com o tempo
Código complexo e inconsistente
Estilo de programação não uniforme
Otimizações antigas tornam o código difícil de entender
Dados problemáticos
Inconsistência de dados
Duplicação de registros
Bancos de dados heterogêneos
Baixa manutenibilidade
Estrutura degradada
Mudanças pequenas exigem esforço desproporcional
Sistema em uso construído com tecnologias antigas, incluindo software, hardware e processos de negócio.
Reengenharia & Refatoração
Reengenharia
Restrutura sem mudar função
Inclui
Modularização
Limpeza de dados
Tradução de linguagem
Menos risco que refazer tudo
Refatoração
Melhora a estrutura sem mudar funcionalidades
Reduz complexidade
Previne degradação
Corrige
bad smells
Código duplicado
Métodos longos
Declarações switch espalhadas
Aglutinação de dados
Goto
Previsão & Métricas
Previsão de partes que podem dar problema
Métricas
Solicitações pendentes
Tempo médio para mudar
Complexidade de código
Leis de Lehman (Dinâmica da Evolução)
Mudança Contínua
Um programa usado em ambiente real deve mudar, ou se tornará menos útil.
Aumento da Complexidade
A estrutura se torna mais complexa à medida que o sistema evolui; são necessários recursos extras para manter ou simplificar.
Evolução de Programas de Grande Porte
A evolução é autorregulada; atributos como tamanho e número de erros tendem a se estabilizar entre releases.
Estabilidade Organizacional
A taxa de desenvolvimento se mantém aproximadamente constante, mesmo com variações nos recursos.
Conservação da Familiaridade
As mudanças em cada release devem ser incrementais e constantes, para manter a compreensão do sistema.
Crescimento Contínuo
A funcionalidade do sistema precisa aumentar continuamente para manter a satisfação do usuário.
Declínio de Qualidade
A qualidade do sistema tende a cair, a menos que ele seja modificado conforme o ambiente muda.
Sistema de Feedback
A evolução envolve múltiplos ciclos de feedback; é preciso tratá-los como sistemas de feedback contínuo para melhoria real.