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
Mudanças no software
São inevitáveis
Novos requisitos surgem com o uso
Erros precisam ser corrigidos
Ambiente de negócio e tecnologia mudam
Software precisa manter valor para a organização
Ciclo de vida
Desenvolvimento inicial
Primeira versão do sistema
Especificação, implementação e validação
Evolução
Sistema em uso operacional
Novos requisitos são implementados
Novas versões são liberadas
Em serviço
Mantém o sistema funcionando
Correções e adaptações ao ambiente
Sem grandes funcionalidades novas
Aposentadoria
Sistema ainda pode ser usado
Não recebe novas mudanças
Processo de evolução
Solicitação de mudança
Pedido de correção, adaptação ou nova função
Análise de impacto
Identifica partes afetadas
Estima custo e risco
Planejamento de release
Define o que entra na nova versão
Implementação
Entender o código
Atualizar requisitos
Modificar e testar
Liberação
Nova versão é entregue
Regressão ajuda a evitar efeitos colaterais
Manutenção de software
Conceito
Modificar software após sua liberação
Geralmente altera componentes existentes
Corretiva
Corrige defeitos
Remove falhas do sistema
Adaptativa
Ajusta o software a novo ambiente
Novo hardware, sistema operacional ou plataforma
Evolutiva
Adiciona ou modifica funcionalidades
Atende novos requisitos
Custos e previsão
Custos de manutenção
Podem superar os custos de desenvolvimento
Aumentam com a idade do sistema
Código degradado fica mais difícil de alterar
Fatores que aumentam custos
Documentação ruim
Equipe inexperiente
Tecnologias obsoletas
Dados inconsistentes
Previsão de manutenção
Estima partes mais problemáticas
Avalia custo futuro
Usa métricas de complexidade e processo
Sistemas legados
Conceito
Sistemas antigos ainda úteis
Usam tecnologias ultrapassadas
Podem depender de hardware e software antigos
Componentes
Hardware
Software de apoio
Software de aplicação
Dados
Processos e regras de negócio
Problemas
Documentação incompleta
Regras de negócio escondidas no código
Linguagens antigas
Manutenção cara
Gerência de sistemas legados
Estratégias
Descartar
Continuar mantendo
Fazer reengenharia
Substituir por novo sistema
Decisão depende de
Valor de negócio
Qualidade do sistema
Custo
Risco
Categorias
Baixo valor + baixa qualidade: descartar
Alto valor + baixa qualidade: reengenharia ou substituição
Alto valor + alta qualidade: manter
Reengenharia e refatoração
Reengenharia
Reestrutura sistema legado
Mantém funcionalidade
Melhora manutenibilidade
Menor risco que criar tudo de novo
Atividades
Engenharia reversa
Tradução de código
Modularização
Redocumentação
Limpeza de dados
Refatoração
Manutenção preventiva
Melhora estrutura interna
Não adiciona funcionalidade
Reduz complexidade
Maus cheiros
Código duplicado
Métodos longos
Switch excessivo
Dados agrupados repetidamente
Dinâmica da evolução
Leis de Lehman
Sistemas precisam mudar continuamente
Mudanças aumentam a complexidade
Funcionalidade tende a crescer
Qualidade cai se o sistema não for adaptado
Boas práticas
Registrar mudanças
Manter documentação
Usar testes de regressão
Controlar versões
Refatorar continuamente