Translate

Mostrar mensagens com a etiqueta Tática. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Tática. Mostrar todas as mensagens

quinta-feira, 5 de fevereiro de 2015

Engenharia Militar : Capítulo II — Estratégia, Operação e Tática: O IF, o Job e a Guerra Inteira

 

Bellacosa Mainframe e a engenharia militar parte ii

☕ Um Café no Bellacosa Mainframe

Engenharia Militar sem Mistérios para Programadores COBOL

Capítulo II — Estratégia, Operação e Tática: O IF, o Job e a Guerra Inteira

Quando um Programador Descobre que Vencer uma Batalha Não Significa Salvar o Sistema — e que Alterar Dez Linhas Pode Derrotar uma Campanha de Trinta Anos

O nevoeiro ainda cobria o vale quando o mensageiro chegou ao castelo.

Seu cavalo estava coberto de espuma, suas roupas carregavam lama e uma das sandálias havia se rompido durante a subida. Ele atravessou o portão principal sem desmontar, ignorou os protestos dos guardas e somente parou diante da escadaria do salão de comando.

Trazia uma mensagem simples:

A ponte do leste havia sido tomada.

O jovem general ergueu-se imediatamente.

— Mandarei duzentos homens para recuperá-la.

O engenheiro permaneceu em silêncio.

O conselheiro político fechou o mapa.

O senhor feudal observou o mensageiro e perguntou:

— Quantos inimigos?

— Talvez cinquenta.

— Então duzentos homens bastam — respondeu o general.

O senhor feudal não pareceu convencido.

— Por que eles tomaram a ponte?

O mensageiro hesitou.

Não sabia.

A ponte era pequena. Não conduzia diretamente ao castelo. Não ficava na principal rota de suprimentos. À primeira vista, recuperá-la parecia apenas uma questão de honra.

O general via uma batalha.

O senhor feudal tentava compreender a campanha.

Naquela mesma madrugada, muitos séculos depois, um programador COBOL recebeu uma solicitação aparentemente simples:

Alterar uma condição para que clientes com determinado código fossem processados de maneira diferente.

Era apenas um IF.

Talvez dez linhas.

Talvez quinze minutos de trabalho.

Mas ninguém havia explicado por que a regra existia, de onde vinha o código, quem consumia o resultado ou o que aconteceria no fechamento mensal.

O programador enxergava a alteração.

O sistema escondia a guerra inteira.

Prepare o café.

Abra o editor.

E antes de modificar o IF, descubra quem está tentando tomar a ponte.


1. Três palavras que mudam a maneira de pensar

Estratégia, operação e tática são palavras frequentemente utilizadas como se significassem a mesma coisa.

Em reuniões corporativas, quase tudo é chamado de estratégia.

Existe estratégia de senha, estratégia de impressão, estratégia de atualização de planilha e até estratégia para marcar uma reunião sobre outra reunião.

No pensamento militar, porém, essas palavras representam níveis diferentes de decisão.

Estratégia

A estratégia define o objetivo maior.

Ela responde:

  • O que queremos alcançar?

  • Por que isso é importante?

  • Quais resultados justificam o esforço?

  • Que riscos estamos dispostos a aceitar?

  • Como essa ação se conecta ao futuro?

Operação

A operação coordena diversas ações para transformar a estratégia em realidade.

Ela responde:

  • Quais campanhas ou processos precisam acontecer?

  • Quais unidades participarão?

  • Em qual sequência?

  • Com quais recursos?

  • Dentro de qual período?

Tática

A tática trata da ação local.

Ela responde:

  • Como executaremos esta tarefa específica?

  • Qual formação será utilizada?

  • Qual técnica resolverá o problema imediato?

  • Como reagiremos ao obstáculo encontrado agora?

Esses três níveis não competem entre si.

Eles se encaixam.

A estratégia aponta o destino.

A operação organiza a viagem.

A tática decide como atravessar a próxima ponte.


2. A estratégia empresarial escondida atrás do COBOL

Um programa COBOL raramente existe apenas para processar registros.

Ele existe porque alguma organização precisa cumprir uma missão.

Pode ser:

  • pagar aposentadorias;

  • liberar transações bancárias;

  • calcular impostos;

  • emitir faturas;

  • processar sinistros;

  • controlar estoques;

  • fechar a contabilidade;

  • registrar movimentações;

  • atualizar saldos;

  • gerar informações regulatórias.

Essa é a camada estratégica.

Quando o programador recebe uma manutenção, normalmente não recebe toda essa explicação.

O pedido pode chegar assim:

Incluir o código 47 na condição do parágrafo 3200-VALIDAR-CLIENTE.

A frase descreve uma ação tática.

Mas esconde perguntas estratégicas:

  • O que representa o código 47?

  • Por que ele passou a ser aceito?

  • É uma exigência legal?

  • Afeta clientes antigos?

  • Altera cálculo financeiro?

  • Produz impacto regulatório?

  • Existe data de vigência?

  • Pode ser aplicado retroativamente?

  • Quem autorizou a mudança?

O perigo nasce quando uma decisão estratégica é tratada como simples alteração técnica.

Em sistemas críticos, códigos misteriosos raramente são apenas números.

Podem representar produtos, contratos, categorias fiscais, exceções jurídicas ou regras construídas após incidentes históricos.

O programador vê 47.

A empresa vê milhões de reais.


3. O IF como manobra tática

Considere o seguinte trecho:

       IF TIPO-CLIENTE = 10
           PERFORM PROCESSAR-CLIENTE-PREFERENCIAL
       ELSE
           PERFORM PROCESSAR-CLIENTE-PADRAO
       END-IF

A solicitação pede que os tipos 10 e 47 sejam tratados como preferenciais.

Uma solução possível seria:

       IF TIPO-CLIENTE = 10 OR 47
           PERFORM PROCESSAR-CLIENTE-PREFERENCIAL
       ELSE
           PERFORM PROCESSAR-CLIENTE-PADRAO
       END-IF

Além de essa forma poder ser inadequada dependendo do compilador, do padrão adotado e da clareza desejada, ela revela um problema maior: alterar a condição sem compreender o significado.

Uma forma mais explícita seria:

       IF TIPO-CLIENTE = 10
          OR TIPO-CLIENTE = 47
           PERFORM PROCESSAR-CLIENTE-PREFERENCIAL
       ELSE
           PERFORM PROCESSAR-CLIENTE-PADRAO
       END-IF

Ou:

       EVALUATE TIPO-CLIENTE
           WHEN 10
           WHEN 47
               PERFORM PROCESSAR-CLIENTE-PREFERENCIAL
           WHEN OTHER
               PERFORM PROCESSAR-CLIENTE-PADRAO
       END-EVALUATE

Tecnicamente, a alteração pode estar correta.

Mas a pergunta permanece:

O que significa ser preferencial?

Talvez esse processamento conceda:

  • juros diferentes;

  • tarifa reduzida;

  • prioridade de pagamento;

  • limite especial;

  • tratamento tributário;

  • isenção;

  • relatórios distintos.

A tática cuida do IF.

A estratégia precisa justificar a regra.


4. Um exército pode vencer a batalha errada

Na história militar, existem inúmeros casos em que uma força venceu um confronto local, mas piorou sua situação geral.

Ela pode ter:

  • conquistado território sem valor;

  • utilizado recursos demais;

  • perdido tempo;

  • exposto uma rota importante;

  • abandonado uma posição melhor;

  • perseguido o inimigo até uma armadilha;

  • vencido sem capacidade de manter a conquista.

No desenvolvimento de sistemas, também é possível vencer a batalha errada.

Imagine que um programa esteja lento.

A equipe modifica o código e reduz o tempo de execução de quarenta para vinte minutos.

Vitória?

Talvez.

Mas, durante a otimização, o programa passa a manter locks por mais tempo em uma tabela crítica, prejudicando centenas de transações CICS.

O batch ficou mais rápido.

O sistema inteiro ficou pior.

A tática venceu.

A operação perdeu.

Outro exemplo:

Um desenvolvedor elimina uma validação considerada redundante.

O programa processa mais registros e reduz rejeições.

Entretanto, dados inconsistentes começam a chegar ao sistema contábil.

O relatório diário parece melhor.

A reconciliação mensal explode.

Mais uma vez, a batalha local foi vencida, mas a campanha sofreu uma derrota.


5. A estratégia pergunta “por quê?”

O pensamento tático normalmente começa com:

Como faço?

O pensamento estratégico começa com:

Por que fazemos?

Essa diferença é essencial para programadores iniciantes.

Quando alguém solicita uma alteração, não significa que o desenvolvedor deva contestar tudo ou transformar uma manutenção simples em investigação filosófica.

Significa apenas que precisa compreender o objetivo suficiente para não produzir uma solução tecnicamente correta e operacionalmente desastrosa.

Perguntas estratégicas úteis

  • Qual problema empresarial estamos resolvendo?

  • Quem será beneficiado?

  • Qual risco existe se nada for feito?

  • Existe prazo legal ou comercial?

  • A regra será permanente ou temporária?

  • Como saberemos que a mudança funcionou?

  • Qual resultado não pode ser afetado?

Essas perguntas ajudam a transformar uma especificação superficial em uma missão compreensível.


6. A operação conecta sistemas, equipes e horários

A estratégia pode determinar:

Todos os pagamentos devem estar disponíveis antes das seis da manhã.

Essa frase não diz como isso acontecerá.

A operação traduz a intenção em uma cadeia coordenada:

  1. receber os movimentos;

  2. validar arquivos;

  3. consolidar transações;

  4. consultar cadastros;

  5. calcular valores;

  6. atualizar contas;

  7. gerar relatórios;

  8. transmitir resultados;

  9. reconciliar totais;

  10. liberar os sistemas online.

Cada etapa pode envolver programas, jobs, bancos de dados, filas, equipes e janelas diferentes.

No mainframe, uma operação pode ser representada por uma cadeia batch composta por dezenas ou centenas de jobs.

Por exemplo:

RECEBE01
   ↓
VALIDA01
   ↓
ORDENA01
   ↓
CALCULA01
   ↓
ATUALIZA01
   ↓
RELATOR01
   ↓
ENVIA001

O programador responsável pelo CALCULA01 pode acreditar que sua responsabilidade termina quando o job retorna MAXCC=0000.

Mas isso não garante sucesso operacional.

Talvez o arquivo gerado esteja vazio.

Talvez os totais estejam incorretos.

Talvez o layout tenha mudado.

Talvez o job seguinte não reconheça a nova geração.

Talvez o processamento tenha terminado depois da janela.

Operação não é apenas executar.

É entregar o resultado necessário ao próximo participante da campanha.


7. MAXCC=0000 não significa vitória

Uma das armadilhas mais famosas do mundo batch é acreditar que MAXCC=0000 significa que tudo ocorreu corretamente.

Ele significa apenas que, segundo os critérios técnicos do job, nenhuma condição registrada elevou o código de retorno.

Um programa pode terminar com zero e ainda produzir:

  • arquivo vazio;

  • valor incorreto;

  • quantidade errada;

  • registros duplicados;

  • layout inválido;

  • totais inconsistentes;

  • resultado referente à data errada.

Imagine:

       IF DATA-MOVIMENTO = DATA-PROCESSAMENTO
           PERFORM PROCESSAR-REGISTRO
       END-IF

Se DATA-PROCESSAMENTO estiver incorreta, nenhum registro será processado.

O programa chegará ao final sem ABEND.

Poderá retornar zero.

Tecnicamente, executou o que foi programado.

Operacionalmente, fracassou.

Por isso, sistemas maduros utilizam controles de negócio:

  • quantidade de entrada;

  • quantidade processada;

  • quantidade rejeitada;

  • totais financeiros;

  • data de referência;

  • arquivo de trailer;

  • reconciliação;

  • limites esperados.

Exemplo:

       IF WS-QTD-PROCESSADA = ZERO
           DISPLAY 'ERRO: NENHUM REGISTRO PROCESSADO'
           MOVE 12 TO RETURN-CODE
       END-IF

O código de retorno começa a representar a missão, não apenas a ausência de falhas técnicas.


8. Tática é escolher como fazer

No campo militar, a tática pode determinar:

  • posicionamento;

  • formação;

  • horário do ataque;

  • uso do terreno;

  • distribuição das unidades;

  • reação a uma ameaça imediata.

Na programação, a tática envolve escolhas como:

  • usar IF ou EVALUATE;

  • utilizar busca sequencial ou binária;

  • ler arquivo ou consultar tabela;

  • ordenar antes de processar;

  • usar subprograma;

  • realizar commit por lote;

  • tratar erro imediatamente ou acumular rejeições.

Essas escolhas importam.

Mas precisam servir ao objetivo maior.

Exemplo: commit em lote

Imagine um programa que atualiza um milhão de registros no Db2.

Uma abordagem ingênua pode fazer commit apenas ao final.

       PERFORM UNTIL FIM-DO-ARQUIVO = 'S'
           PERFORM LER-REGISTRO
           PERFORM ATUALIZAR-DB2
       END-PERFORM

       EXEC SQL
           COMMIT
       END-EXEC

Isso pode gerar:

  • locks prolongados;

  • consumo excessivo;

  • rollback enorme;

  • dificuldade de recuperação;

  • impacto em outros sistemas.

Uma tática melhor pode incluir commits periódicos:

       ADD 1 TO WS-CONTADOR-COMMIT

       IF WS-CONTADOR-COMMIT >= 1000
           EXEC SQL
               COMMIT
           END-EXEC
           MOVE ZERO TO WS-CONTADOR-COMMIT
       END-IF

Mas até isso depende da estratégia e da operação.

É aceitável ter commits parciais?

O programa pode ser reiniciado?

Como evitar duplicidade?

Existe checkpoint?

A escolha tática precisa respeitar a arquitetura operacional.


9. Quando a tática contradiz a estratégia

Considere uma empresa cuja estratégia seja:

Garantir máxima rastreabilidade de operações financeiras.

Durante uma manutenção, um desenvolvedor decide remover logs para melhorar o desempenho.

Do ponto de vista tático, a decisão parece eficiente.

Menos I/O.

Menos dados gravados.

Job mais rápido.

Mas a decisão viola a estratégia de rastreabilidade.

Outro exemplo:

A estratégia determina alta disponibilidade.

Uma equipe realiza uma implantação que exige seis horas de indisponibilidade porque o procedimento técnico é mais simples.

A tática favorece a equipe.

A estratégia exigia proteger o serviço.

Outro caso:

A empresa deseja reduzir riscos de fraude.

Um sistema é alterado para aprovar automaticamente determinadas exceções e diminuir trabalho manual.

A operação fica mais rápida.

O controle estratégico enfraquece.

É possível produzir eficiência local e fragilidade global.

O bom engenheiro aprende a desconfiar de otimizações que beneficiam apenas um componente.


10. O mapa estratégico do programa COBOL

Antes de alterar um programa, tente construir um pequeno mapa.

Não precisa ser sofisticado.

Pode ser uma página com cinco áreas.

Missão

O que o programa entrega ao negócio?

Entradas

Quais dados recebe?

Processamento

Quais regras aplica?

Saídas

Quem consome o resultado?

Controles

Como verificamos se tudo funcionou?

Exemplo:

MISSÃO:
Calcular tarifas mensais dos clientes.

ENTRADAS:
Arquivo de contas.
Tabela de produtos.
Tabela de isenções.

PROCESSAMENTO:
Classificar cliente.
Determinar tarifa.
Aplicar descontos.
Registrar exceções.

SAÍDAS:
Atualização Db2.
Arquivo contábil.
Relatório de rejeições.

CONTROLES:
Quantidade recebida.
Quantidade tarifada.
Total financeiro.
Quantidade rejeitada.

Esse mapa ajuda a compreender onde uma pequena alteração pode produzir impacto.

Adicionar o código 47 talvez afete:

  • classificação;

  • cálculo;

  • contabilidade;

  • relatórios;

  • auditoria.

O IF está em uma linha.

A regra atravessa o sistema inteiro.


11. Shogun: a guerra travada antes da batalha

Em narrativas como Shogun, o conflito mais importante raramente se limita ao choque de exércitos.

A guerra acontece por meio de:

  • alianças;

  • casamentos;

  • religião;

  • comércio;

  • informação;

  • reputação;

  • reféns;

  • rotas marítimas;

  • cerimônias;

  • promessas.

Toranaga não avalia apenas quantos soldados possui.

Ele observa:

  • quem aparenta ser aliado;

  • quem depende de quem;

  • quem controla portos;

  • quem possui legitimidade;

  • quem teme perder posição;

  • quem pode mudar de lado.

Isso é estratégia.

Uma batalha pode ser apenas uma peça de uma campanha política maior.

No mainframe, também existem forças invisíveis.

Um sistema pode parecer tecnicamente independente, mas depender de:

  • calendário fiscal;

  • contrato com fornecedor;

  • exigência regulatória;

  • janela de parceiro externo;

  • equipe disponível;

  • licença;

  • autorização;

  • fluxo contábil.

O código é apenas o campo visível.

As verdadeiras alianças estão nas dependências.


12. Legend of the Galactic Heroes: vencer custa recursos

Legend of the Galactic Heroes é quase um tratado animado sobre estratégia, política, logística e liderança.

A obra mostra algo que muitas narrativas simplificam:

Toda vitória possui custo.

Uma frota pode vencer e ainda perder:

  • naves;

  • oficiais;

  • combustível;

  • tempo;

  • legitimidade;

  • apoio político;

  • capacidade futura.

No desenvolvimento, também precisamos calcular o custo da solução.

Uma mudança pode resolver o problema, mas aumentar:

  • complexidade;

  • dependência;

  • tempo de processamento;

  • manutenção;

  • consumo;

  • risco;

  • necessidade de suporte.

Uma solução tecnicamente brilhante pode gerar uma dívida operacional que permanecerá durante anos.

Por isso, a pergunta não é apenas:

Funciona?

Também precisamos perguntar:

Quanto custa manter funcionando?


13. Attack on Titan: informação muda a estratégia

Em Attack on Titan, muitos planos fracassam porque os personagens trabalham com informações incompletas ou incorretas.

Quando novas informações surgem, a interpretação do inimigo, da missão e até da própria sociedade muda.

Esse é um ponto essencial para sistemas.

Uma estratégia baseada em premissas erradas pode produzir operações perfeitamente organizadas e completamente inúteis.

Imagine uma solicitação:

Todos os clientes do código 47 devem receber isenção.

O desenvolvedor implementa corretamente.

Depois descobre que apenas clientes ativos antes de determinada data deveriam receber o benefício.

A primeira informação estava incompleta.

O código executou a ordem.

A missão foi mal definida.

Por isso, requisitos precisam conter:

  • público afetado;

  • condições;

  • exceções;

  • vigência;

  • exemplos;

  • resultados esperados;

  • critérios de aceitação.

O programador não precisa conhecer todo o universo empresarial.

Mas precisa reconhecer quando o mapa possui áreas em branco.


14. Goblin Slayer: tática rigorosa dentro de uma estratégia simples

Goblin Slayer possui uma estratégia muito clara:

Impedir que goblins continuem ameaçando pessoas.

As operações variam:

  • limpar cavernas;

  • proteger aldeias;

  • resgatar vítimas;

  • defender cidades;

  • eliminar ninhos.

As táticas mudam conforme o terreno:

  • fogo;

  • fumaça;

  • água;

  • armadilhas;

  • corredores estreitos;

  • trabalho em equipe;

  • bloqueio de rotas.

A força da personagem está em não confundir objetivo com método.

Ele não se apaixona por uma arma específica.

Usa o que funciona dentro das condições existentes.

Essa é uma excelente lição para tecnologia.

O bom programador não deve ser devoto de uma solução.

Não importa se prefere:

  • arquivo;

  • tabela;

  • API;

  • MQ;

  • programa interno;

  • serviço externo.

A ferramenta precisa servir à missão.

Quando a tecnologia vira religião, a estratégia desaparece.


15. O erro do herói overpower

Muitos sistemas são construídos ao redor de uma única pessoa extraordinária.

É o analista que conhece tudo.

O programador que resolve qualquer incidente.

O sysprog que sabe o comando secreto.

O operador que lembra a sequência correta.

Essa estrutura parece eficiente enquanto o herói está disponível.

Mas é estrategicamente frágil.

No anime, o personagem overpower resolve tudo sozinho.

Na produção, isso cria um ponto único de falha humano.

Uma estratégia madura exige:

  • documentação;

  • treinamento;

  • compartilhamento;

  • automação;

  • revisão;

  • procedimentos;

  • sucessão.

Se apenas uma pessoa sabe recuperar o sistema, não existe capacidade operacional.

Existe dependência pessoal.

O verdadeiro mestre não apenas vence.

Ele cria outros que também podem vencer.


16. Planejamento operacional de uma mudança

Vamos transformar a teoria em um roteiro prático.

Suponha que o código 47 precise ser incluído no processamento preferencial.

Fase 1 — Entender a estratégia

Pergunte:

  • Qual objetivo da mudança?

  • Qual regra empresarial está sendo aplicada?

  • Existe data de vigência?

  • Há impacto financeiro?

  • Quem aprovou?

Fase 2 — Mapear a operação

Identifique:

  • programas afetados;

  • jobs;

  • tabelas;

  • arquivos;

  • relatórios;

  • consumidores;

  • horários;

  • equipes.

Fase 3 — Definir a tática

Escolha:

  • forma de alterar a condição;

  • tratamento de exceções;

  • mensagens;

  • validações;

  • ajustes de teste.

Fase 4 — Preparar cenários

Teste pelo menos:

  • cliente tipo 10;

  • cliente tipo 47;

  • cliente padrão;

  • código inválido;

  • registro incompleto;

  • data antes da vigência;

  • data depois da vigência.

Fase 5 — Validar impactos

Confira:

  • valores calculados;

  • arquivos;

  • tabelas;

  • relatórios;

  • totais;

  • códigos de retorno.

Fase 6 — Preparar implantação

Defina:

  • load module;

  • bind;

  • promoção;

  • janela;

  • responsáveis;

  • rollback;

  • monitoramento.

Fase 7 — Verificar a missão

Após executar, não confira apenas o job.

Confirme se o resultado empresarial aconteceu.


17. O quadro de comando do programador

Antes de iniciar uma manutenção, o programador pode preencher uma tabela mental.

NívelPerguntaExemplo
EstratégiaPor que mudar?Cumprir nova regra de isenção
OperaçãoOnde a regra circula?Batch, Db2, contabilidade e relatório
TáticaComo alterar?Incluir código 47 no EVALUATE
ControleComo comprovar?Totais, testes e reconciliação
ContingênciaComo voltar?Restaurar load anterior e reprocessar

Essa estrutura evita que o desenvolvedor fique preso apenas à linha alterada.


18. Estratégia sem tática é discurso

Também existe o problema oposto.

Algumas organizações produzem grandes declarações estratégicas, mas não fornecem meios para executá-las.

Dizem:

  • precisamos modernizar;

  • precisamos inovar;

  • precisamos ser ágeis;

  • precisamos melhorar a qualidade;

  • precisamos reduzir riscos.

Mas não definem:

  • responsáveis;

  • recursos;

  • prazos;

  • prioridades;

  • métricas;

  • arquitetura;

  • treinamento.

Estratégia sem operação vira apresentação.

Operação sem tática vira confusão.

Tática sem estratégia vira movimento sem direção.

Os três níveis precisam estar conectados.


19. O programador COBOL como soldado ou estrategista?

O iniciante pode perguntar:

Preciso virar estrategista empresarial para alterar um programa?

Não.

Mas precisa desenvolver consciência de contexto.

No início, sua responsabilidade será principalmente tática:

  • corrigir;

  • testar;

  • documentar;

  • analisar;

  • implementar.

Com experiência, começará a enxergar a operação:

  • cadeias;

  • dependências;

  • janelas;

  • integrações;

  • riscos.

Mais tarde, poderá contribuir estrategicamente:

  • arquitetura;

  • modernização;

  • continuidade;

  • governança;

  • capacidade;

  • segurança.

A carreira técnica amadurece quando a pessoa deixa de enxergar apenas comandos e passa a compreender consequências.


20. Easter egg: o IF que protegia o império

Em um sistema antigo, existia uma condição curiosa:

       IF CODIGO-OPERACAO = 88
           MOVE 'N' TO IND-PROCESSAR
       END-IF

Ninguém sabia por que o código 88 era ignorado.

Não havia comentário.

A documentação havia desaparecido.

Durante uma modernização, a condição foi removida.

Os testes comuns passaram.

Na produção, operações históricas começaram a ser processadas novamente.

O código 88 identificava registros enviados apenas para auditoria. Eles não deveriam gerar movimento financeiro.

O IF não era uma gambiarra.

Era uma fronteira entre informação e transação.

Alguém havia preservado a regra durante décadas, mas o significado se perdera.

Depois do incidente, o trecho foi reescrito:

       IF CODIGO-OPERACAO = 88
           MOVE 'N' TO IND-PROCESSAR
           DISPLAY
             'OPERACAO 88: REGISTRO SOMENTE PARA AUDITORIA'
       END-IF

E recebeu um comentário:

      * NÃO PROCESSAR FINANCEIRAMENTE.
      * REGISTRO UTILIZADO PARA RASTREABILIDADE.

Uma única linha havia protegido o império.

O problema não era o código antigo.

Era a estratégia esquecida.


21. Curiosidade: o terreno pode ser mais forte que o exército

Ao longo da história, forças menores venceram adversários maiores porque utilizaram melhor:

  • montanhas;

  • rios;

  • estreitos;

  • clima;

  • distância;

  • fortificações.

O terreno altera a força real de cada unidade.

Em tecnologia, o “terreno” também importa.

O mesmo programa pode comportar-se de maneira diferente conforme:

  • volume;

  • ambiente;

  • configuração;

  • concorrência;

  • versão do compilador;

  • plano Db2;

  • disponibilidade de memória;

  • janela de execução.

Um teste com mil registros não representa necessariamente produção com cem milhões.

Uma consulta eficiente em desenvolvimento pode encontrar estatísticas diferentes em produção.

Uma rotina rápida isoladamente pode degradar quando centenas de jobs executam ao mesmo tempo.

Nunca avalie a tática ignorando o terreno.


22. Erros comuns do programador tático

Alterar somente o ponto indicado

A regra pode existir em outros módulos.

Testar apenas o caminho feliz

As exceções revelam a verdadeira qualidade.

Confiar apenas no MAXCC

O resultado de negócio pode estar errado.

Ignorar quem consome a saída

A alteração pode quebrar sistemas posteriores.

Otimizar sem medir impacto global

Ganhar tempo em um ponto pode aumentar contenção em outro.

Aceitar requisitos sem exemplos

Ambiguidades aparecem tarde demais.

Implantar sem rollback

Toda campanha precisa de rota de retirada.


23. Checklist de campanha

Antes de modificar uma regra, responda:

  • Qual é a missão empresarial?

  • Qual resultado precisa ser preservado?

  • A regra possui data de vigência?

  • Existem exceções?

  • Quais sistemas participam?

  • Quem produz as entradas?

  • Quem consome as saídas?

  • Qual é o volume?

  • Quais controles comprovam o resultado?

  • O código de retorno representa falhas de negócio?

  • Existe reconciliação?

  • O teste cobre caminhos alternativos?

  • Existe plano de rollback?

  • Quem decide interromper a implantação?

  • Quem precisa ser informado?

Quando essas respostas existem, a alteração deixa de ser um salto no escuro.

Torna-se uma operação planejada.


Conclusão — A ponte que não deveria ser recuperada

De volta ao castelo, o jovem general aguardava autorização para marchar.

Duzentos homens estavam preparados.

Arqueiros ajustavam cordas.

Cavalos batiam os cascos contra o chão.

O senhor feudal, porém, continuava olhando o mapa.

Finalmente, o engenheiro apontou para o norte.

— A ponte do leste não possui valor suficiente para justificar a força inimiga.

O conselheiro compreendeu primeiro.

— Eles querem que retiremos homens da estrada principal.

O senhor feudal assentiu.

A pequena ponte era uma distração.

Se o general marchasse, enfraqueceria a rota por onde chegariam os verdadeiros suprimentos.

O inimigo não pretendia manter a ponte.

Pretendia controlar a decisão do castelo.

O general baixou a cabeça.

Havia preparado uma excelente tática para cumprir a estratégia do adversário.

Na madrugada do data center, o jovem programador também interrompeu sua alteração.

Em vez de incluir imediatamente o código 47, procurou o analista de negócio.

Descobriu que a regra começaria apenas no mês seguinte.

Somente determinados contratos seriam afetados.

O relatório contábil precisava ser ajustado.

O programa de estorno também utilizava a mesma classificação.

A alteração não era um IF.

Era uma pequena campanha.

O programador desenhou o fluxo, listou dependências, preparou cenários e definiu controles.

Dias depois, a mudança entrou em produção.

Os jobs terminaram.

Os totais fecharam.

Os sistemas consumidores receberam os dados.

Nenhum cliente indevido recebeu o benefício.

O veterano aproximou-se com duas canecas.

— Qual foi a parte mais difícil?

O jovem respondeu:

— Não foi escrever a condição.

— Então o que foi?

— Descobrir qual guerra ela estava ajudando a vencer.

O veterano sorriu.

No terminal, o cursor piscava diante de uma nova solicitação.

Outra alteração pequena.

Outro território desconhecido.

O jovem respirou fundo e abriu o mapa antes de tocar no código.

Porque agora sabia:

A estratégia define a vitória.

A operação organiza o caminho.

A tática executa o movimento.

E um programador que enxerga apenas o IF pode vencer a batalha errada.

No alto da fortaleza, as bandeiras permaneceram imóveis.

A ponte do leste continuou nas mãos do inimigo.

Mas a rota principal estava protegida.

E, naquela manhã, não lutar havia sido a decisão mais poderosa de toda a campanha.

☕ Um Café no Bellacosa Mainframe

Engenharia Militar sem Mistérios para Programadores COBOL

Uma campanha completa sobre estratégia, logística, inteligência, segurança, liderança, continuidade, sistemas críticos, IBM Z e COBOL.

Consultar arquivo
25 documentos
2014–2016 linha histórica
IBM Z fortaleza digital
COBOL linguagem da missão
Arquivo estratégico

Um Data Center analisado como uma fortaleza em guerra

A série Engenharia Militar sem Mistérios para Programadores COBOL compara castelos, exércitos, muralhas, cadeias de comando, logística, inteligência e operações militares com os ambientes IBM Z responsáveis por bancos, governos, seguros, transportes e serviços essenciais.

Cada artigo apresenta uma parte dessa arquitetura: aplicações COBOL, Jobs JCL, transações CICS, bancos Db2, filas MQ, segurança RACF, monitoramento, contingência, liderança, documentação e continuidade operacional.

Sala de operações

Índice da campanha

25 documentos localizados
Índice permanente

Links completos da série Engenharia Militar

Esta relação permanece disponível no HTML da página para mecanismos de busca, leitores de tela, navegadores sem JavaScript e ferramentas de arquivamento.

  1. Engenharia Militar sem Mistérios para Programadores COBOL
  2. Prólogo — O Chamado do Guardião
  3. Capítulo I — O Castelo, a Ponte e o Job que Não Podia Falhar
  4. Capítulo II — Estratégia, Operação e Tática
  5. Capítulo III — A Cadeia de Comando
  6. Capítulo IV — Logística
  7. Capítulo V — As Muralhas Invisíveis
  8. Capítulo VI — Inteligência, Reconhecimento e Espionagem
  9. Capítulo VII — A Arte da Guerra Aplicada ao Mainframe
  10. Capítulo VIII — Liderança, Moral e Disciplina
  11. Capítulo IX — Inovação, Evolução e o Futuro
  12. Capítulo X — O Legado do Engenheiro
  13. Capítulo XI — O Guardião Invisível
  14. Capítulo XII — A Fortaleza Invisível
  15. Capítulo XIII — Os Sentinelas da Madrugada
  16. Capítulo XIV — A Civilização Invisível
  17. Capítulo XV — Engenharia de Cerco
  18. Glossário IBM Z + Engenharia Militar
  19. Apêndice A — Correspondências Históricas e Técnicas
  20. Os 10 Animes Mais Emblemáticos Sobre Engenharia Militar
  21. Os 10 Animes Mais Emblemáticos Sobre Logística Militar
  22. Os 10 Animes Mais Emblemáticos Sobre Tática Militar
  23. Os 10 Animes Mais Emblemáticos Sobre Estratégia Militar
  24. Especial — Guerrilha Urbana
  25. Especial — Guerrilha no Campo e na Floresta
Bellacosa Mainframe — Arquivo de Engenharia Militar

Estratégia, disciplina, conhecimento, resiliência e continuidade aplicados aos sistemas que não podem parar.

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988