Software não é obra: é ativo em operação. A analogia com construção civil — que sustenta boa parte da forma como projetos de tecnologia são contratados no Brasil — leva à expectativa de que, entregue o sistema, o gasto termina. Na prática, o custo do primeiro ano de um sistema costuma ser apenas uma parte do que ele custará ao longo da vida útil. Empresas que não orçam essa continuidade acabam com sistemas travados em versões antigas, sem quem os entenda, até que uma emergência force um investimento maior do que a manutenção teria custado. Este artigo explica os tipos de manutenção e como orçá-los.
Por que software envelhece mesmo sem ninguém mexer
Um sistema que funciona hoje pode parar de funcionar sem que ninguém altere uma linha. As causas:
- O ambiente muda — sistema operacional, servidor, banco de dados e navegadores são atualizados
- Dependências ficam obsoletas — bibliotecas de terceiros param de receber correção de segurança
- Integrações mudam — o fornecedor de um serviço externo altera ou descontinua sua interface
- Legislação muda — regras fiscais, trabalhistas e de proteção de dados evoluem
- Vulnerabilidades são descobertas — falhas em componentes usados há anos vêm a público
- O negócio muda — o processo que o sistema modelava deixa de ser o processo real
A vulnerabilidade descoberta é o caso mais crítico: no momento em que se torna pública, sistemas que usam o componente afetado passam a ser alvo de varreduras automáticas em escala.
Os quatro tipos de manutenção
Corretiva
Consertar o que está quebrado. É a única que a maioria das empresas prevê, e costuma ser a menor parte do custo total.
Adaptativa
Ajustar o sistema a mudanças externas: nova versão de servidor, mudança em integração, alteração de legislação. Não adiciona funcionalidade — apenas mantém funcionando o que já funcionava.
Evolutiva
Adicionar o que o negócio passou a precisar. Costuma ser a maior fatia ao longo do tempo e é a que gera valor novo.
Preventiva
Melhorar a estrutura interna para reduzir custo futuro: atualizar dependências antes que fiquem obsoletas, reorganizar trechos difíceis de alterar, melhorar cobertura de testes. É a mais fácil de adiar e a que mais economiza no longo prazo.
Empresas que só fazem corretiva acumulam dívida técnica até o ponto em que qualquer alteração se torna arriscada e cara — o momento em que se cogita reescrever tudo.
Como orçar a manutenção
A referência de mercado costuma ser um percentual anual sobre o valor do desenvolvimento, variando conforme a complexidade, o número de integrações e a criticidade do sistema.
Modelos de contratação:
- Percentual anual — cobre corretiva e adaptativa, com um volume de horas para evolutiva
- Banco de horas — um pacote mensal, com o que sobra podendo acumular
- Time alocado — para sistemas críticos com evolução contínua
- Sob demanda — sem contrato, cada chamado é orçado
O modelo sob demanda parece econômico e costuma ser o mais caro. Sem contrato, o fornecedor não reserva capacidade, o atendimento demora, ninguém acompanha o sistema entre um chamado e outro e as atualizações preventivas simplesmente não acontecem.
Como reduzir o custo de manutenção
Boa parte do custo de manutenção é definida durante o desenvolvimento:
- Tecnologias com mercado — muitos profissionais disponíveis significa menos dependência e mais competição
- Documentação — sistema não documentado exige que alguém reaprenda tudo a cada mudança de fornecedor
- Testes automatizados — permitem alterar com segurança; sem eles, cada mudança é risco
- Dependências enxutas — cada biblioteca adicionada é um componente a manter
- Código organizado — a diferença entre uma alteração de horas e uma de dias
- Ambiente de homologação — testar em produção sai caro
Cortar essas práticas reduz o preço do desenvolvimento e aumenta o custo de tudo o que vem depois. Vale considerar isso ao comparar propostas.
Sinais de que o sistema está mal mantido
- Ninguém sabe qual versão das dependências está em uso
- Alterações simples levam semanas
- Toda mudança quebra algo em outro lugar
- Uma única pessoa consegue mexer com segurança
- Não existe ambiente de testes
- O último backup restaurado com sucesso ninguém lembra quando foi
- A documentação, quando existe, está desatualizada
- Há medo de atualizar qualquer componente
Um sistema desenvolvido anos antes rodava sem contrato de manutenção. Quando a integração com um parceiro mudou de protocolo, ninguém conhecia o código o suficiente para ajustar em tempo, e as dependências estavam tão desatualizadas que a alteração exigiu atualizar a base inteira. O custo emergencial superou em muito o que a manutenção contínua teria custado no período.
Conclusão
Software exige manutenção pelo mesmo motivo que um veículo exige revisão: ele opera num ambiente que muda. Orçar apenas o desenvolvimento é planejar metade do custo.
Ao contratar um sistema, defina desde o início quem mantém, sob qual modelo e com qual escopo. E ao comparar propostas, considere que práticas como testes automatizados e documentação encarecem o desenvolvimento justamente porque reduzem o custo dos anos seguintes.
Perguntas Frequentes
A referência mais usada no mercado é um percentual anual sobre o valor do desenvolvimento, que varia conforme a complexidade e a criticidade. Sistemas com muitas integrações externas e exigências regulatórias ficam na faixa mais alta, porque mudanças fora do seu controle forçam ajustes. O importante é que essa linha exista no orçamento anual.
Pode, e a facilidade disso depende de decisões tomadas no desenvolvimento: acesso ao código, documentação existente, uso de tecnologias comuns e ausência de dependências exóticas. Se essas condições estiverem presentes, a troca é um processo de transferência de conhecimento. Sem elas, o custo de troca se aproxima do custo de reescrever.
Só quando a manutenção estiver comprovadamente mais cara que a reconstrução, o que acontece em casos de tecnologia sem suporte ou de arquitetura que impede as mudanças necessárias. Reescrever é sempre mais arriscado do que parece, porque o sistema antigo acumula anos de regras de negócio que ninguém documentou — e que só reaparecem quando faltam.