Estudo de caso
Da planilha ao sistema de produção validado
Um cálculo voltado ao cliente que dependia de um fluxo de planilha ambíguo foi reconstruído como regras determinísticas e reimplementado como um sistema de produção testado, com interface web, uma API e importação/exportação XLSX.
A operação diária do cliente dependia de um cálculo que havia crescido dentro de uma planilha. A planilha funcionava, no sentido de que as pessoas a usavam todos os dias. Mas tinha se tornado difícil de confiar, e difícil de alterar sem risco.
O problema
Um cálculo voltado ao cliente era feito por meio de um fluxo de planilha ambíguo em vários pontos. Pessoas diferentes interpretavam partes dele de maneiras diferentes. As regras que mais importavam — os cálculos que determinavam o resultado recebido pelo cliente — não estavam declaradas como regras em lugar nenhum. Viviam em fórmulas, em referências de células e na memória das pessoas que operavam a planilha.
Quando um cálculo é feito assim, o risco não é a planilha parar de funcionar. O risco é ninguém conseguir provar o que “correto” significa.
O contexto operacional
O fluxo era crítico para o negócio. Rodava repetidamente, produzia um resultado do qual o cliente dependia e precisava se reconciliar com documentos e números produzidos em outras partes da operação. Também precisava interoperar com as planilhas que as próprias pessoas do cliente já usavam, porque elas não iriam desaparecer.
As restrições
- O resultado precisava ser determinístico e repetível: as mesmas entradas precisavam produzir a mesma saída.
- As regras precisavam ser validadas quanto ao significado de negócio e regulatório que carregavam.
- O sistema precisava se encaixar em como o cliente já trabalhava, incluindo Excel e Google Sheets.
- O sistema precisava chegar à Produção sem desestabilizar um processo do qual as pessoas dependiam.
Entendendo o fluxo
O primeiro passo foi reconstruir o fluxo a partir da planilha e de como ela era de fato usada. Isso significou transformar um processo ambíguo e parcialmente manual em um modelo explícito: quais são as entradas, quais são as regras, quais são os cálculos e qual deve ser a saída.
Essa é a parte que não pode ser pulada. Automatizar um processo ambíguo apenas automatiza a ambiguidade.
Decisões de engenharia
- Reconstruir o cálculo como um motor determinístico com regras explícitas, em vez de portar as fórmulas da planilha como estavam.
- Manter a validação de regras de negócio e regulatórias próxima à lógica de cálculo, para que uma regra possa ser verificada antes de ser confiada.
- Oferecer uma interface web, uma API e importação/exportação XLSX com entrada manual, para que o sistema funcione para pessoas e para outros softwares.
- Tratar as planilhas como documentos OOXML de forma controlada, em vez de tratar arquivos de planilha como entrada confiável.
- Executar a aplicação em um runtime conteinerizado, para que o ambiente seja reproduzível.
O sistema entregue
O resultado foi um sistema de produção validado: um motor de cálculo determinístico com interface web, uma API e interoperabilidade com planilhas. O mesmo fluxo que vivia em uma planilha ambígua agora roda sobre regras explícitas e validadas.
Mecanismos de confiabilidade
- Testes de regressão automatizados protegem as regras e os cálculos.
- Fixtures de regressão preservam entradas conhecidas e saídas esperadas, para que o comportamento não mude silenciosamente.
- Liberações controladas passam por um ambiente de Preview antes da Produção.
- Rollback está disponível para cada liberação.
- Testes de fumaça em Produção confirmam que o sistema funciona antes de uma liberação ser aceita.
A suíte de testes cresceu para 233 testes automatizados. Esse número é evidência de engenharia de apoio, não o ponto do projeto: o ponto é que as regras das quais o cliente depende agora estão protegidas por verificações automatizadas.
Situação em Produção
O sistema está em Produção e é usado para executar o cálculo voltado ao cliente. O engajamento continua sob um acordo de Confiabilidade & Evolução.
Uma nota sobre confidencialidade
Este estudo de caso é anonimizado. O nome do cliente, o setor e detalhes identificadores são omitidos, e nenhuma fórmula, lógica proprietária ou documento privado é mostrado. A descrição acima é intencionalmente limitada ao que pode ser dito publicamente sem identificar o cliente.
Serviços relacionados
- Avaliação de Sistemas Operacionais
- Construção de Sistema Confiável
- Confiabilidade & Evolução