No princípio é tudo azul. Requisitos, modelos, protótipos... Aí que vem a primeira entrega, os testes, e então (depois de muitas horas de idas e vindas, iterativamente e incrementalmente) o software entra em produção. A partir deste ponto existem alguns aspectos que devem ser considerados para uma perfeita saúde de seu software, caso contrário, ele envelhece e morre.
Causas do Software Aging
Estagnação
Ocorre quando de alguma forma a equipe do projeto não consegue implementar melhorias solicitadas no software. Necessidades sempre são adiadas, desenvolvedores recebem sempre um grande volume de modificações a serem realizadas e o custo de resposta a essas solicitações sempre cresce de forma não linear, com o tempo, em relação ao tamanho das modificações.
Consequências:
- Erosão estrutural - comprometimento da arquitetura, causado pelo grande volume de modificações em conflito com o projeto original;
- Degradação de qualidades operacionais - usabilidade, confiabilidade, performance e facilidade de suporte.
Fadiga
Ocorre quando a equipe do projeto opera sob pressão ou falta de capacidade técnica para realização de certa modificação em um sistema, o que ocasiona alterações em sua estrutura original e queda no desempenho.
Consequências:
- Comprometimento da arquitetura do software - devido a falta de capacidade técnica ou tempo da equipe o que geralmente ocorre é a adoção de estruturas que efetuem a modificação mais rapidamente, independente se seguem o padrão arquitetural ou não;
- Código ruim - devido à pressão por resultados, o desenvolvedor acaba por não seguir certos padrões de codificação/revisão/testes;
- Resposta ao usuário cada vez maior - em decorrência dos itens anteriores, ocorre uma degração da performance do sistema e uso cada vez maior de recursos de hardware.
Prevenção
É inevitável o envelhecimento de um software, o que podemos fazer é adiar este processo para que a vida útil de um software se torne o mais prolongada possível. Desta forma, temos como prevenção para a estagnação, a utilização de Métodos Ágeis. E para a fadiga, o uso de refatoração.
Tem sido registrado um número cada vez maior de casos de sucesso usando métodos ágeis (XP, DSDM, SCRUM, etc), baseados em desenvolvimento iterativo e incremental, envolvem o cliente no processo sendo otimizados para lidar com mudançase prevenir a estagnação.
Já a refatoração é um processo pelo qual não são alterados comportamentos externos do software sem que sejam melhoradas proporcionalmente a estrutura interna do mesmo.
0 comentários:
Postar um comentário