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
Técnicas de Evolução
Reengenharia de Software
Reestruturar ou reescrever parte ou todo um sistema legado sem alterar sua funcionalidade para facilitar a manutenção.
Vantagens: Risco reduzido e custo reduzido em comparação com um novo desenvolvimento.
Atividades: Tradução de código, engenharia reversa, melhoria de estrutura, modularização e reengenharia de dados
Refatoração
Melhorar a estrutura, reduzir a complexidade e facilitar o entendimento, sem adicionar nova funcionalidade
"Maus Cheiros" (Code Smells): Indicadores de que a refatoração é necessária
Código duplicado.
Métodos longos.
Declarações
switch (case).
Aglutinação de dados.
Generalidade especulativa.
Processos de Evolução e Mudança
Processo de Evolução de Software
Liberação do sistema.
Implementação da mudança.
Planejamento de release (versão).
Análise de impacto.
Implementação da Mudança
A primeira fase pode envolver a compreensão do programa.
É preciso entender a estrutura do programa, sua funcionalidade e como a mudança pode afetá-lo.
Correções de Emergência
Causas: Defeitos graves, mudanças inesperadas no ambiente (ex: SO), resposta rápida a mudanças de negócios.
Necessárias para mudanças urgentes que não podem passar por todas as fases do processo
Métodos Ágeis e Evolução
A transição do desenvolvimento para a evolução é imperceptível.
A evolução é uma continuação do desenvolvimento com versões frequentes.
Problemas de Transferência: Ocorrem quando a equipe de desenvolvimento e a de evolução usam abordagens diferentes (ágil vs. baseada em planos).
Manutenção de Software
Tipos de Manutenção
Correção de defeitos: Mudar o sistema para corrigir deficiências.
Adaptação de ambiente: Mudar o sistema para operar em um ambiente diferente (SO, computador, etc.).
Adição ou modificação de funcionalidade: Modificar o sistema para satisfazer novos requisitos
Custos da Manutenção
Geralmente são maiores que os custos de desenvolvimento.
Aumentam com o tempo, pois a manutenção corrompe a estrutura do software.
Fatores de custo: estabilidade da equipe, qualificações do pessoal, idade e estrutura do programa.
Previsão da Manutenção
Avalia quais partes do sistema podem ter altos custos de manutenção.
Pode ser feita avaliando a complexidade dos componentes.
Métricas de processo (ex: número de solicitações de mudança) podem indicar um declínio na manutenibilidade
Gerenciamento de Sistemas Legados
Estratégias de Gerenciamento
Descartar o sistema.
Continuar mantendo o sistema.
Transformar o sistema por meio de reengenharia.
Substituir o sistema por um novo.
Avaliação do Sistema Legado
Valor de Negócio: Considera usuários, clientes e gerentes. Avalia o uso, processos de negócio suportados e confiabilidade.
Qualidade do Sistema: Avalia os processos de negócio , o ambiente (hardware e software de apoio) e a aplicação de software.
Dinâmica da Evolução (Leis de Lehman)
Mudança Contínua:
Um programa em uso deve mudar ou se tornará menos útil.
Aumento da Complexidade:
A estrutura de um programa em evolução tende a se tornar mais complexa, exigindo esforço para simplificá-la.
Crescimento Contínuo:
A funcionalidade deve aumentar continuamente para manter a satisfação do usuário.
Declínio de Qualidade:
A qualidade cairá a menos que os sistemas sejam modificados para refletir as mudanças no ambiente.
O estudo dos processos de mudança de sistema