11 março 2009

Causas do Software Aging

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.