De acordo com alguns estudos, existem oito fatores críticos que devem ser atendidos, para se alcançar a eficiência na manutenção do software. São eles:

Preservação

O primeiro fator descreve que a manutenção de software deve preservar, caso não melhore as funcionalidades do software, resultados e casos ao serem comparados entre versões não devem ter divergências, podendo ser medida com a utilização de casos de teste funcionais, realizados em versões anteriores que deverão ser válidas também pela próxima versão, assim como a verificação por fontes estáticas que também deverão coincidir entre versões, embora estes casos comparados devam ser semelhantes pode haver exceções que não torne isto possível para tanto deverá ter o consenso de seus envolvidos. Sendo assim a usuário nunca deve ter menos funcionalidades entre uma versão e outra, exceto nos casos em que esta funcionalidade é oficialmente retirada do software.

Preservação da qualidade

O segundo fator descreve que manutenção de software não deve limitar-se a preservar a qualidade do software como também deve aumentá-la gradativamente, com a eliminação dos pontos causadores de erro, ajustes no sistema para melhorar a utilização dos recursos disponíveis assim como a aplicação de melhorias na qualidade do código-fonte e documentação do software. A necessidade da preservação da qualidade pode ser observada a partir do aumento de erro, perda de desempenho, diminuição da produtividade, aumento da inconsistência entre documentação e código fonte, e uma redução na qualidade do código fonte.

Controle da Complexidade

O terceiro fator descreve que a manutenção de software deve manter o controle sobre a complexidade do software, tendo neste controle a avaliação nos níveis de complexidade macro e micro. Onde o nível de complexidade macro está relacionado à arquitetura do software e pode ser avaliada sobre o nível de dependência entre componentes, assim como a dependência entre subsistemas.

O nível de complexidade micro está relacionado a questões de estrutura interna dos componentes. A manutenção pode levar a um aumento do número de componentes e subsistemas, mas não deve levar a um aumento em suas interações, devendo permanecer ao mesmo nível, ou ser reduzido com esforços da reengenharia.

Eliminação da volatilidade crescente

O quarto fator descreve que a manutenção de software não deve conduzir ao aumento de volatilidade do software. Onde o termo volátil se aplica a mudanças que é considerada uma verdadeira revolução no software, por causar profundas mudanças estruturais, que implicam em custos e riscos. Sendo assim, a manutenção deve garantir que o nível de modificações deste
porte diminua ou permaneça a um nível constante, com um processo controlado da evolução do software que não apresente riscos extremamente elevados.

Controle

O quinto fator descreve que os custos na manutenção de software entre rotinas similares não deve aumentar, tendo o impacto de cada mudança à possibilidade de ser avaliada por pontos de funções, entre outros tipos de métricas, passa a ser importante tal monitoramento periodicamente para garantir que o desempenho das manutenções não diminua significativamente com o tempo. A taxa de produtividade geralmente anda de mãos dadas com a qualidade decrescente e complexidade crescente. Desta forma, a detecção da perda de desempenho é o resultado de outros problemas.

Manutenção regular entre versões

O sexto fator descreve que na manutenção de software o comprimento de prazos na entrega de versões deve ser mantido. Normalmente, a atualizações de versões em intervalos fazem parte do acordo de nível de serviço com os usuários, seja o que for definido, esse acordo deve ser mantido, pois atrasos entre estas atualizações é certamente um sinal de degradação
do serviço. Portanto, manter as atualizações de versões do software no prazo é um dos principais objetivos de qualquer projeto de manutenção.

Sustentação da satisfação do usuário

O sétimo fator descreve que na manutenção de software, a satisfação do usuário deve permanecer pelo menos no mesmo nível, caso não aumente. A diminuição da satisfação do usuário é um sinal de degradação ocasionado pela manutenção. Embora não seja fácil obter uma avaliação correta do grau de satisfação do usuário estando mais relacionada a uma área social do que técnica, se faz necessário fazer esta avaliação. A bem sucedida operação de manutenção será satisfazer os usuários finais, além de contribuir para o bem estar da organização.

Lucro

O oitavo fator descreve que a manutenção de software deve ser rentável ou ao menos manter o seu custo, devido aos altos custos para o apoio e manutenção de um software. A adoção de uma filosofia em que correções de erros, atualizações e suporte possam ser cobertas pelas taxas de manutenção padrão, o que não ocorreria com as manutenções de adaptações e melhorias, é uma alternativa. Porém, este fator evolui a um nível contratual na qual não será abordado neste artigo. Todavia, se faz necessário salientar que os usuários ou clientes devem ser educados ao fato de que a menor alteração em um software existe custos, sendo eles diretos e indiretos.

Categorized in: