☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

Mostrar mensagens com a etiqueta documentação. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta documentação. Mostrar todas as mensagens

quarta-feira, 22 de julho de 2026

Voyage to the Bottom of the Legacy System : Quando um Programador COBOL Descobre que as Economias do Mundo Estão Guardadas no Fundo de um Oceano de Código

Bellacosa Mainframe apresenta uma viagem ao fundo dos sistemas legados onde o cobol é o protagonista

☕ Um Café no Bellacosa Mainframe

Voyage to the Bottom of the Legacy System

Quando um Programador COBOL Descobre que as Economias do Mundo Estão Guardadas no Fundo de um Oceano de Código — e Quase Ninguém Ainda Possui o Mapa

Há uma frase que deveria estar impressa na entrada de cada banco, seguradora, fundo de pensão, bolsa de valores e grande instituição financeira do planeta:

“Conheço exatamente cinco pessoas que entendem como as economias do mundo realmente funcionam. Quatro delas estão aposentadas.”

Isso parece uma piada.

Parece exagero de consultor.

Parece uma daquelas frases dramáticas usadas para vender projetos de modernização, inteligência artificial, transformação digital e mais uma tonelada de apresentações em PowerPoint com setas coloridas. Também conhecida por Buzzwords e incentivando o uso de Balas de Prata.

Mas quem já desceu alguns níveis abaixo da interface elegante de um aplicativo bancário sabe que existe algo assustadoramente verdadeiro nessa afirmação.

O dinheiro moderno não repousa em cofres.

Ele repousa em registros.

Os registros repousam em arquivos, tabelas , mensagens, logs, programas e processos.

E boa parte desses processos ainda é executada por sistemas construídos em COBOL, JCL, CICS, IMS, Db2, Adabas, QSAM, VSAM, Assembler, MQ e outras criaturas que vivem nas profundezas do data center.

Para o programador COBOL iniciante, entrar nesse ambiente é como embarcar no submarino Seaview, da série clássica Voyage to the Bottom of the Sea.

Na superfície, tudo parece tranquilo.

O mar está calmo.

Os clientes consultam saldos.

As transferências acontecem.

Os cartões funcionam.

Os investimentos rendem.

As aposentadorias são pagas e nosso velhinhos aposentados felizes saindo das agencias com seu rico dinheiro na algibeira.

Mas, centenas de metros abaixo, existe uma estrutura monumental enfrentando pressão extrema, correntes invisíveis, monstros desconhecidos e compartimentos que ninguém abre desde 1900 e ventania.

E, em algum lugar da sala de máquinas, existe um programa chamado PGMFIN47 que ninguém ousa alterar. Causando tremores, calafrios e insonia na equipe da sustentação e deixando os operadores da produção em alerta vermelho em cada diaria.

Bem-vindo ao fundo do sistema legado.


1. O dinheiro não está no aplicativo

Quando um cliente abre o aplicativo do banco e vê um saldo de R$ 3.457,82, ele imagina que aquele número simplesmente “está lá”.

Mas aquele saldo é o resultado final de uma longa cadeia de decisões (logado e auditado).

Antes de aparecer na tela, ele pode ter passado por:

  • lançamentos de crédito e débito;

  • compensação;

  • reconciliação;

  • bloqueios;

  • tarifas;

  • impostos;

  • juros;

  • arredondamentos;

  • regras contratuais;

  • limites;

  • autorizações;

  • lotes noturnos;

  • eventos em tempo real;

  • ajustes manuais;

  • ordens judiciais;

  • validações antifraude;

  • integração com sistemas externos.

O valor exibido é apenas a ponta do periscópio.

Debaixo da água existe uma frota inteira de programas.

Um simples depósito pode ativar:

IF CONTA-ATIVA
    IF VALOR-DEPOSITO > ZERO
        ADD VALOR-DEPOSITO TO SALDO-CONTA
    ELSE
        MOVE 'VALOR INVALIDO' TO MENSAGEM-ERRO
    END-IF
END-IF

Bonito, simples e didático.

Mas um sistema real dificilmente termina aí.

Talvez a conta esteja bloqueada.

Talvez seja uma conta conjunta.

Talvez o depósito tenha sido realizado após o horário de corte.

Talvez haja incidência tributária.

Talvez exista um limite diário.

Talvez a origem do dinheiro exija análise.

Talvez o cliente esteja sujeito a uma regra antiga preservada por obrigação judicial.

O código começa simples e cresce como o submarino avançando para uma região do oceano onde os mapas ficam cada vez menos confiáveis.


2. O banco não guarda apenas dinheiro: ele guarda regras

Essa é uma das primeiras grandes lições para um programador COBOL iniciante.

Um sistema bancário não é apenas uma calculadora gigante.

Ele é uma máquina de aplicar regras.

Cada produto financeiro contém uma coleção de decisões.

Uma aplicação pode ter:

  • forma de cálculo;

  • taxa;

  • prazo;

  • carência;

  • vencimento;

  • tributação;

  • liquidez;

  • arredondamento;

  • herança;

  • transferência;

  • resgate antecipado;

  • penalidade;

  • exceção.

Essas regras podem ter origem em:

  • leis;

  • contratos;

  • resoluções;

  • circulares;

  • normas internas;

  • decisões judiciais;

  • aquisições;

  • fusões;

  • migrações;

  • acordos comerciais;

  • correções de incidentes antigos.

O programa COBOL é apenas uma das formas pelas quais essas regras foram cristalizadas.

Por isso, uma linha aparentemente estranha pode ser muito mais importante do que parece:

IF DATA-ADESAO < 19940701
    PERFORM CALCULO-ANTIGO
ELSE
    PERFORM CALCULO-NOVO
END-IF

Um iniciante pode pensar:

“Isso está feio. Vou simplificar.”

Só que a data de 1º de julho de 1994 pode estar relacionada a uma mudança monetária, regulatória, contratual ou operacional.

Remover a condição sem compreender sua origem é como abrir uma escotilha externa do submarino porque ela parece enferrujada.

A escotilha pode estar feia.

Mas talvez esteja impedindo o oceano inteiro de entrar.


3. Código não é a mesma coisa que conhecimento

Um programa pode mostrar o que acontece.

Nem sempre mostra por que acontece.

Considere:

IF WS-TIPO-CLIENTE = '09'
    MOVE 0 TO WS-TAXA
END-IF

A sintaxe é fácil.

O comportamento é claro.

Clientes do tipo 09 recebem taxa zero.

Mas por quê?

  • São funcionários?

  • São clientes judiciais?

  • São contas herdadas de outro banco?

  • São contratos especiais?

  • São beneficiários de uma legislação?

  • São contas de teste?

  • São clientes de uma campanha encerrada há vinte anos?

O código não responde automaticamente.

Esse é o ponto central de toda a discussão.

Existe uma diferença entre:

O que o sistema faz

e

Por que o sistema faz

A primeira pergunta pode ser respondida por análise de código.

A segunda exige contexto histórico, regulatório, comercial e humano.

Muitos projetos fracassam porque tratam essas duas perguntas como se fossem iguais.


4. A tripulação que conhece o fundo do oceano

Em grandes instituições, sempre existem profissionais que parecem possuir um sonar interno.

Eles olham um erro e dizem:

“Isso começou depois da conversão de arquivos de 2003.”

Ou:

“Esse campo não pode ficar em branco porque o sistema de previdência antigo usa espaço como indicador de benefício vitalício.”

Ou ainda:

“Não altere essa ordenação. O arquivo precisa chegar desse jeito porque o processo noturno compara registros por posição, não por chave.”

Esses profissionais não apenas conhecem o código.

Eles conhecem a história.

Eles lembram:

  • de incidentes;

  • de migrações;

  • de auditorias;

  • de exceções;

  • de soluções provisórias;

  • de clientes especiais;

  • de mudanças regulatórias;

  • de sistemas desativados que ainda deixam rastros.

Eles são a documentação viva da organização.

O problema é que muitos estão se aposentando.

Quando essas pessoas saem, a instituição não perde apenas mão de obra.

Ela perde contexto.

É como se o capitão do Seaview abandonasse o submarino levando consigo a única carta náutica da região.

Os motores continuam funcionando.

Os painéis continuam acesos.

Mas ninguém sabe exatamente o que existe adiante.


5. Conhecimento explícito e conhecimento tácito

Existem dois tipos principais de conhecimento dentro de uma organização.

Conhecimento explícito

É aquele que pode ser registrado.

Exemplos:

  • manuais;

  • diagramas;

  • wikis;

  • especificações;

  • normas;

  • comentários;

  • fluxos;

  • casos de teste;

  • atas de reunião;

  • registros de mudança.

Conhecimento tácito

É aquele que vive na experiência das pessoas.

Exemplos:

  • perceber que determinado erro costuma indicar arquivo incompleto;

  • saber qual sistema costuma atrasar o processamento;

  • reconhecer um padrão estranho em um relatório;

  • lembrar que uma exceção existe por causa de um processo judicial antigo;

  • saber quem deve ser consultado antes de alterar uma regra.

O conhecimento tácito é poderoso, mas frágil.

Ele não é facilmente pesquisável.

Não aparece em diagramas.

Não pode ser encontrado com CTRL+F.

E desaparece quando a pessoa muda de área, se aposenta ou simplesmente esquece.

O verdadeiro risco dos sistemas legados não está apenas em sua idade.

Está na distância crescente entre o comportamento do sistema e a compreensão humana desse comportamento.


6. O comentário mais perigoso do mainframe

Todo programador COBOL eventualmente encontra um comentário assim:

* NAO ALTERAR

Ou:

* CORRECAO TEMPORARIA

Ou o clássico:

* AJUSTE ESPECIAL

A pergunta imediata deveria ser:

Por quê?

Mas muitas vezes não existe resposta.

A correção temporária foi criada em 1996.

O autor saiu da empresa em 2008.

O sistema que gerava o problema foi desativado em 2014.

Mesmo assim, o código continua lá.

É possível que não seja mais necessário.

Também é possível que seja a única coisa impedindo um desastre.

Esse tipo de situação transforma manutenção em arqueologia.

O programador deixa de ser apenas desenvolvedor.

Ele se torna investigador.

Cada comentário é um fragmento de mapa.

Cada IF é uma pista.

Cada arquivo antigo é uma caixa-preta retirada de um naufrágio.


7. O problema nunca foi simplesmente o COBOL

É comum ouvir:

“O problema é que o sistema está em COBOL.”

Isso é uma simplificação confortável.

COBOL pode ser antigo, mas isso não significa que seja incapaz.

Ele continua sendo eficiente para processamento de grandes volumes de dados, regras de negócio, cálculos financeiros e operações transacionais.

O problema real costuma ser outro:

  • arquitetura não documentada;

  • dependências ocultas;

  • regras espalhadas;

  • ausência de testes;

  • falta de rastreabilidade;

  • conhecimento concentrado;

  • décadas de mudanças incrementais;

  • integrações pouco compreendidas.

Reescrever tudo em Java, C#, Python, Go ou qualquer outra linguagem não corrige automaticamente essas falhas.

Você pode transportar uma regra mal compreendida para uma tecnologia moderna e continuar tendo um sistema mal compreendido.

Agora ele terá contêineres, APIs e dashboards coloridos.

Mas continuará sendo um mistério.

É como trocar o casco do submarino sem saber por que alguns compartimentos precisam permanecer isolados.


8. Por que microserviços não são uma boia salva-vidas

Microserviços podem ser excelentes.

Eles ajudam a separar responsabilidades, escalar componentes, melhorar implantações e reduzir acoplamentos.

Mas não resolvem desconhecimento.

Imagine um programa legado com cinquenta regras pouco compreendidas.

A equipe decide dividi-lo em vinte microserviços.

Agora existem vinte componentes carregando regras pouco compreendidas.

Antes, o mistério estava em um programa.

Agora está distribuído pela rede.

Você também ganhou:

  • APIs;

  • autenticação;

  • latência;

  • filas;

  • observabilidade;

  • versionamento;

  • tolerância a falhas;

  • consistência distribuída;

  • retries;

  • circuit breakers.

Os microserviços não eliminaram o problema.

Eles adicionaram novas camadas ao oceano.

A modernização correta começa por entendimento, não por tecnologia.


9. “Show your work”: mostre como chegou ao resultado

Reguladores e auditores estão cada vez menos satisfeitos com a resposta:

“O sistema sempre funcionou assim.”

Eles querem evidências.

Querem saber:

  • qual regra foi aplicada;

  • qual dado foi usado;

  • quem alterou o programa;

  • quem aprovou;

  • qual teste foi executado;

  • qual requisito justificou a mudança;

  • qual impacto foi analisado;

  • como o resultado pode ser reproduzido.

Isso aparece em diferentes regulações, normas e políticas.

A mensagem geral é simples:

Mostre como chegou ao resultado.

Em matemática escolar, não basta escrever a resposta.

É preciso demonstrar o cálculo.

Em sistemas críticos, ocorre o mesmo.

Não basta o programa gerar o valor correto.

É preciso explicar:

  • o fluxo;

  • a decisão;

  • a origem;

  • a evidência;

  • a responsabilidade.

Essa exigência afeta tanto sistemas tradicionais quanto soluções com inteligência artificial.


10. O que reguladores estão enxergando

Durante décadas, muitas instituições conviveram com sistemas que funcionavam, mas eram pouco explicáveis.

Enquanto os resultados estavam corretos, o risco parecia aceitável.

Agora isso mudou.

Regulações relacionadas à proteção de dados, resiliência operacional, governança, risco e inteligência artificial aumentaram a pressão por:

  • transparência;

  • documentação;

  • rastreabilidade;

  • responsabilidade;

  • explicabilidade;

  • controle de mudanças;

  • gestão de terceiros;

  • continuidade operacional.

Um sistema que ninguém compreende completamente deixa de ser apenas um problema técnico.

Ele se torna um risco de conformidade.

Imagine um cálculo de benefício financeiro contestado por um cliente.

A instituição precisa responder:

Por que esse valor foi calculado?

Qual regra foi aplicada?

Em qual versão do programa?

Com quais dados?

Quem aprovou aquela regra?

Se a única resposta for:

“O senhor Antônio sabia, mas se aposentou há três anos”,

o problema já ultrapassou o departamento de tecnologia.


11. Por que o ChatGPT sozinho não salvará o submarino

Modelos de linguagem podem ajudar muito na análise de código.

Eles podem:

  • explicar trechos;

  • resumir programas;

  • sugerir documentação;

  • gerar casos de teste;

  • identificar estruturas;

  • converter pseudocódigo;

  • apontar possíveis inconsistências;

  • criar diagramas conceituais;

  • auxiliar novos profissionais.

Mas existe um limite essencial.

A IA só pode trabalhar com o contexto disponível.

Se determinada regra não está:

  • no código;

  • nos documentos;

  • nos testes;

  • nos tickets;

  • nos manuais;

  • nos registros;

  • nas conversas preservadas;

a IA não pode recuperar magicamente sua intenção original.

Ela pode inferir.

Mas inferência não é certeza.

Considere:

IF IDADE-CLIENTE > 65
    COMPUTE TAXA = TAXA * 0.75
END-IF

A IA pode dizer:

“O programa aplica desconto de 25% para clientes com mais de 65 anos.”

Isso descreve o comportamento.

Mas não explica:

  • se é obrigação legal;

  • se é benefício promocional;

  • se vale para todos os produtos;

  • se a idade correta deveria ser 60;

  • se a regra ainda está vigente;

  • se existem exceções.

A IA genérica entende a linha.

Não necessariamente entende o mundo que criou a linha.


12. IA genérica versus IA de domínio

Uma IA genérica conhece muitos assuntos.

Uma IA de domínio é construída ou enriquecida para compreender profundamente um contexto específico.

Em um ambiente bancário, uma solução realmente útil precisaria relacionar:

  • código COBOL;

  • copybooks;

  • JCL;

  • tabelas Db2;

  • arquivos VSAM;

  • transações CICS;

  • mensagens MQ;

  • normas internas;

  • legislação;

  • casos de teste;

  • tickets;

  • documentação;

  • histórico de mudanças;

  • entrevistas com especialistas.

Não basta alimentar um modelo com um único programa.

É preciso criar uma visão do ecossistema.

Essa abordagem pode envolver:

  • mecanismos de busca semântica;

  • catálogos de metadados;

  • grafos de dependência;

  • análise estática;

  • documentação recuperada;

  • bases vetoriais;

  • trilhas de auditoria;

  • validação humana;

  • controle de acesso.

A IA torna-se um sonar.

Ela ajuda a mapear o oceano.

Mas ainda é necessário um comandante humano para interpretar o que aparece na tela.


13. Passo a passo para compreender um sistema legado

Para o programador COBOL iniciante, a melhor estratégia não é tentar entender tudo de uma vez.

Um sistema crítico precisa ser explorado por camadas.

Passo 1 — Descubra a entrada

Pergunte:

  • O programa recebe arquivo?

  • Recebe COMMAREA?

  • Lê fila MQ?

  • Usa parâmetros?

  • Consulta banco?

  • É chamado por outro programa?

Identifique os dados de entrada.

Passo 2 — Descubra a saída

O programa:

  • grava arquivo;

  • atualiza tabela;

  • retorna código;

  • envia mensagem;

  • imprime relatório;

  • chama outro módulo?

Saber o que entra e o que sai ajuda a delimitar a responsabilidade.

Passo 3 — Mapeie os acessos

Procure:

  • SELECT;

  • FD;

  • EXEC SQL;

  • EXEC CICS;

  • CALL;

  • LINK;

  • XCTL;

  • READ;

  • WRITE;

  • REWRITE;

  • DELETE.

Esses comandos mostram conexões importantes.

Passo 4 — Identifique regras

Procure decisões:

IF
EVALUATE
PERFORM
COMPUTE
ADD
SUBTRACT
MULTIPLY
DIVIDE

Registre cada regra com linguagem simples.

Exemplo:

“Clientes com adesão anterior a julho de 1994 utilizam cálculo histórico.”

Passo 5 — Procure datas e códigos mágicos

Valores fixos são pistas.

IF WS-CODIGO = 47

Por que 47?

IF WS-DATA < 20010101

O que aconteceu em 2001?

Todo número mágico merece investigação.

Passo 6 — Leia o JCL

O JCL pode explicar mais do que o programa.

Ele mostra:

  • arquivos;

  • etapas;

  • ordenações;

  • parâmetros;

  • programas anteriores;

  • programas posteriores;

  • condições;

  • utilitários.

O programa é apenas um compartimento do submarino.

O JCL mostra a rota da missão.

Passo 7 — Converse com especialistas

Pergunte:

  • Que problema esse processo resolve?

  • O que acontece se ele falhar?

  • Quais clientes são afetados?

  • Quais exceções existem?

  • Que parte ninguém deve alterar?

  • Qual incidente antigo explica essa regra?

Grave ou documente as respostas de forma autorizada e organizada.

Passo 8 — Crie testes de caracterização

Antes de alterar o sistema, registre seu comportamento atual.

Forneça entradas conhecidas.

Capture saídas.

Esses testes funcionam como fotografias do sistema antes da reforma.

Passo 9 — Valide com o negócio

Não confie apenas na interpretação técnica.

Uma regra pode estar implementada de determinada forma e ainda assim não refletir a política atual.

A área de negócio precisa validar.

Passo 10 — Documente enquanto aprende

Não deixe para o final.

O final nunca chega.

Documente:

  • fluxo;

  • regras;

  • dependências;

  • dúvidas;

  • exceções;

  • responsáveis;

  • fontes;

  • testes.


14. Um mapa mínimo para cada programa

Todo programa importante deveria possuir uma ficha simples:

Identificação

  • Nome do programa;

  • sistema;

  • módulo;

  • responsável;

  • criticidade.

Objetivo

Uma frase clara:

“Calcula o valor líquido de resgate de contratos de previdência.”

Entradas

  • arquivos;

  • tabelas;

  • parâmetros;

  • mensagens;

  • chamadas.

Saídas

  • tabelas atualizadas;

  • arquivos gerados;

  • códigos de retorno;

  • mensagens.

Regras principais

Uma lista de regras de negócio compreensíveis.

Dependências

  • programas chamados;

  • transações;

  • filas;

  • bancos;

  • jobs.

Exceções

Casos especiais e históricos.

Evidências

  • documentos;

  • tickets;

  • legislação;

  • testes;

  • entrevistas.

Riscos

O que pode acontecer se houver alteração incorreta.

Essa ficha não precisa começar perfeita.

Ela precisa começar.


15. Testes são caixas-pretas de sobrevivência

Em sistemas pouco documentados, testes automatizados são fundamentais.

Um teste de caracterização não pergunta inicialmente se o comportamento está certo.

Ele registra o que o sistema faz hoje.

Exemplo:

Entrada:

IDADE = 67
SALDO = 10000
TIPO = 09

Saída atual:

TAXA = 0
VALOR-LIQUIDO = 10000

Mesmo que você ainda não saiba por que o tipo 09 recebe taxa zero, agora existe uma evidência do comportamento.

Depois, especialistas e analistas podem decidir se a regra deve continuar.

Sem testes, cada mudança é uma descida em águas desconhecidas.

Com testes, pelo menos existem boias marcando o caminho de volta.


16. O perigo da reescrita heroica

Existe um tipo de projeto que aparece ciclicamente:

“Vamos reescrever tudo.”

A proposta parece corajosa.

A equipe escolhe uma tecnologia moderna.

Cria uma nova arquitetura.

Desenha diagramas.

Depois começa a descobrir que o sistema antigo possui milhares de regras não documentadas.

A reescrita passa a exigir decisões sobre comportamentos que ninguém consegue explicar.

O novo sistema pode ficar mais bonito, mas incompleto.

Reescrever sem compreender é como construir outro submarino usando fotografias externas do antigo.

Você copia o formato.

Mas não entende os sistemas internos que o mantinham vivo sob pressão.


17. Estratégias de modernização mais seguras

Modernização não precisa significar destruição total.

Existem abordagens graduais.

Encapsular

Expor funções existentes por APIs sem reescrever imediatamente a lógica.

Refatorar

Melhorar a estrutura interna preservando o comportamento.

Extrair regras

Separar regras de negócio de partes técnicas.

Substituir por etapas

Migrar componentes de menor risco primeiro.

Manter onde faz sentido

Nem tudo precisa ser reescrito.

Um programa estável, eficiente, bem testado e compreendido pode continuar cumprindo sua função.

Criar observabilidade

Adicionar logs, métricas, rastreamento e evidências.

Preservar conhecimento

Transformar entrevistas, código, documentação e testes em uma base pesquisável.

A modernização madura pergunta:

“Qual problema precisamos resolver?”

A modernização imatura pergunta:

“Qual tecnologia está na moda?”


18. Curiosidades das profundezas do legado

Curiosidade 1 — Muitos sistemas antigos são extremamente rápidos

Programas batch bem construídos conseguem processar volumes gigantescos com eficiência impressionante.

Curiosidade 2 — O código antigo pode estar correto há décadas

Antigo não significa defeituoso.

Às vezes, o código permaneceu porque funciona.

Curiosidade 3 — A regra mais estranha pode ser a mais importante

Exceções esquisitas frequentemente revelam contratos, leis ou incidentes históricos.

Curiosidade 4 — O melhor documento pode estar no JCL

A sequência de steps mostra como o negócio realmente é processado.

Curiosidade 5 — Arquivos de teste antigos são tesouros

Eles revelam cenários, combinações e resultados esperados.

Curiosidade 6 — O nome do programa pode enganar

CALCJURO talvez calcule imposto, tarifa, comissão e arredondamento além de juros.

Curiosidade 7 — O sistema real ultrapassa o código

Parte da lógica pode estar em:

  • parâmetros;

  • tabelas;

  • procedimentos;

  • agendamentos;

  • configurações;

  • arquivos;

  • rotinas operacionais.


19. Dicas para o programador COBOL padawan

Não tenha vergonha de perguntar

O sistema pode ser mais velho do que sua carreira.

Ninguém espera compreensão instantânea.

Evite assumir

Confirme.

O nome de um campo nem sempre reflete seu uso atual.

Não altere números mágicos sem investigar

Datas, códigos e percentuais fixos quase sempre possuem uma história.

Leia os dados

Um copybook pode revelar mais do domínio do que várias páginas de documentação.

Aprenda o negócio

O melhor programador de sistemas financeiros não é apenas quem domina PERFORM.

É quem entende:

  • contrato;

  • saldo;

  • juros;

  • imposto;

  • compensação;

  • liquidação;

  • risco;

  • exceção.

Crie diagramas simples

Não espere uma arquitetura perfeita.

Comece com:

Arquivo → Job → Programa → Db2 → Relatório

Depois aprofunde.

Registre dúvidas

Uma dúvida esquecida vira um problema futuro.

Preserve a voz dos veteranos

Entrevistas estruturadas podem recuperar histórias que nunca foram escritas.

Não confunda confiança com certeza

Um sistema pode parecer simples porque você ainda não descobriu suas exceções.


20. Easter eggs do Bellacosa Mainframe

Todo grande sistema legado possui seus easter eggs.

Não necessariamente piadas escondidas, mas pequenos sinais de sua história.

Pode ser:

  • um campo com nome de projeto extinto;

  • uma data que marca uma mudança econômica;

  • um código de retorno que ninguém mais usa;

  • um comentário com iniciais de um programador;

  • uma condição criada para um único cliente;

  • uma rotina chamada FINAL-FINAL;

  • um programa chamado NOVO criado em 1989;

  • uma variável chamada TEMP usada há trinta anos.

E existe o easter egg supremo:

* RETIRAR DEPOIS DA MIGRACAO

A migração ocorreu em 1997.

A linha continua em produção.

Ao encontrá-la, o programador iniciante deve resistir à tentação de apagar.

Primeiro investigue.

Talvez seja apenas um fóssil.

Talvez seja a coluna estrutural secreta do submarino.


21. A inteligência artificial como novo sonar

Usada corretamente, a IA pode acelerar enormemente o trabalho de compreensão.

Ela pode ajudar a:

  • resumir programas;

  • explicar parágrafos;

  • sugerir nomes melhores;

  • encontrar padrões repetidos;

  • correlacionar copybooks;

  • gerar perguntas para especialistas;

  • criar documentação inicial;

  • propor testes;

  • identificar regras candidatas;

  • montar mapas de chamadas.

Mas o fluxo seguro é:

  1. A IA analisa.

  2. O especialista revisa.

  3. O negócio valida.

  4. O teste comprova.

  5. A documentação registra.

  6. A governança aprova.

A IA não deve ser tratada como oráculo.

Ela é um instrumento de navegação.

Um sonar pode indicar uma grande massa à frente.

Mas cabe à tripulação decidir se é uma montanha submarina, um navio naufragado ou um monstro marinho de um episódio de 1966.


22. Onde estamos indo

O futuro não será simplesmente “COBOL versus IA”.

Nem “mainframe versus cloud”.

Nem “monólito versus microserviços”.

O futuro mais provável será híbrido.

Sistemas críticos continuarão executando regras maduras.

APIs facilitarão integração.

Cloud fornecerá elasticidade e novos serviços.

IA ajudará na compreensão.

Grafos mapearão dependências.

Testes automatizados protegerão comportamentos.

Documentação viva conectará código, regra, requisito e evidência.

O objetivo não é apagar o passado.

É tornar o passado compreensível.

Porque somente aquilo que pode ser compreendido pode ser modernizado com segurança.


23. O verdadeiro risco sistêmico

Falamos muito sobre:

  • ataques;

  • falhas de hardware;

  • indisponibilidade;

  • fraude;

  • ransomware;

  • bugs;

  • desastres naturais.

Mas existe um risco mais silencioso:

A organização continuar operando sistemas que ninguém consegue explicar.

Esse risco cresce lentamente.

Primeiro sai um especialista.

Depois outro.

A documentação envelhece.

As equipes mudam.

Os fornecedores trocam.

As tecnologias são empilhadas.

Até que, um dia, ocorre um incidente.

E todos percebem que o sistema ainda funciona, mas a instituição já não sabe completamente por quê.

Esse é o verdadeiro Voyage to the Bottom of the Legacy System.

A descida não é em direção ao fundo do mar.

É em direção às camadas de decisões acumuladas por décadas.


Conclusão: não desligue os motores antes de encontrar o mapa

O maior patrimônio de um banco não está apenas em seus cofres, prédios, servidores ou aplicações.

Está no conhecimento que conecta tudo isso.

COBOL não é apenas uma linguagem antiga.

Em muitos ambientes, ele é o idioma em que décadas de decisões financeiras foram registradas.

O perigo não é o código ser velho.

O perigo é ninguém mais conseguir explicar suas escolhas.

Para o programador iniciante, a missão não é apenas aprender PIC, MOVE, PERFORM, EVALUATE e EXEC SQL.

A missão é aprender a fazer perguntas.

Por que essa regra existe?

De onde vem esse valor?

Quem depende desse processamento?

Qual documento comprova esse comportamento?

O que acontece se eu alterar?

Que parte do negócio este código representa?

No fundo do oceano, coragem sem mapa é imprudência.

No fundo do sistema legado, modernização sem compreensão é apenas uma forma mais cara de se perder.

Portanto, antes de reescrever, compreenda.

Antes de apagar, investigue.

Antes de automatizar, documente.

Antes de confiar na IA, forneça contexto.

E antes que o último especialista se aposente, sente-se ao lado dele, abra o código, prepare o café e pergunte:

“Pode me explicar por que esse IF existe?”

Talvez a resposta salve não apenas um programa.

Talvez salve parte das economias do mundo.

Mensagem recebida via telegrafo

Seja um mainframer, aprenda COBOL e participe desta missão nas profundezas do CPD, os famosos Centros de Processamento de Dados.


quinta-feira, 25 de dezembro de 2025

Arquitetura de Conteúdo: 35 anos de dados, memória e narrativa (1990–2025)

 

Bellacosa Mainframe e a estrutura do nosso blog

📚 El Jefe Midnight Lunch

Arquitetura de Conteúdo: 35 anos de dados, memória e narrativa (1990–2025)

Todo sistema grande precisa, em algum momento, parar o batch, acender a luz do CPD e olhar para si mesmo.
Este texto é exatamente isso: um dump controlado da memória editorial do El Jefe Midnight Lunch após mais de quatro décadas de escrita contínua, do mundo analógico dos anos 1980 até a era dos algoritmos e da inteligência artificial.

O que emerge dessa análise não é caos.
É arquitetura.

Assim como em um mainframe, onde nada é aleatório, o blog construiu ao longo do tempo clusters temáticos sólidos, recorrentes, resilientes — verdadeiros subsystems editoriais.


🧠 Visão geral do sistema

  • Período analisado: 1983 a 2025

  • Total aproximado de publicações: +3.100 posts

  • Modelo editorial: crescimento orgânico, sem reset, sem “rewrite total”, apenas evolução incremental — como sistemas críticos fazem.

O resultado é um acervo que mistura:

  • memória pessoal,

  • cultura pop,

  • tecnologia pesada,

  • filosofia,

  • Japão,

  • fantasia,

  • comida,

  • cidade,

  • gente comum.


🗂️ Os 20 grandes subsistemas editoriais

1️⃣ Anime & Cultura Japonesa (~29,7%)

O maior LPAR do blog.
Listas, arquétipos, estética, linguagem simbólica, fandom, isekai, cultura otaku e leitura sociológica do Japão.
Aqui o anime não é entretenimento: é documento cultural.


2️⃣ Mainframe & Tecnologia (~17,4%)

O coração de missão crítica.
IBM Z, z/OS, COBOL, REXX, DevOps em ambientes legados, história da computação e defesa do sistema que sustenta o mundo enquanto ninguém olha.

Enquanto o hype muda, o batch continua rodando.


3️⃣ Filosofia & Comportamento (~11,3%)

Ensaios sobre desejo, solidão, identidade, ética, estoicismo e comportamento humano — quase sempre dialogando com cultura pop, tecnologia ou cotidiano.

Pensar antes de escalar.
Refletir antes de compilar.


4️⃣ RPG, Fantasia & Bestiário Bellacosa (~9,6%)

Bestiários, raças, monstros, mitologias e estruturas narrativas.
Um universo próprio, sistematizado, com regras internas claras — como todo bom sistema complexo.


5️⃣ Gastronomia & Comida Cultural (~7,1%)

Comida como memória, cultura e identidade.
Do lanche paulistano ao prato japonês, a cozinha aparece como linguagem emocional.


6️⃣ Viagem, Cidade & Memória Urbana (~6,4%)

Cidades, trilhos, ruas, interiores, deslocamentos.
O Brasil visto a pé, de trem, de ônibus, antes e depois da pressa digital.


7️⃣ Cultura Pop Geral (~4,8%)

Cinema, séries, música, TV e referências cruzadas — o ruído de fundo cultural que molda gerações.


8️⃣ Internet, Algoritmos & Sociedade Digital (~3,9%)

Quando a rede deixou de ser ferramenta e virou ambiente.
Críticas ao controle algorítmico, à IA rasa e à perda de profundidade.


9️⃣ Crônica Pessoal & Diário (~3,7%)

Memória viva.
Sem romantização excessiva, sem autopromoção — apenas registro.


🔟 Crítica Social & Política (~2,9%)

Observações diretas, muitas vezes desconfortáveis, sobre o mundo contemporâneo.
Sem torcida organizada. Sem slogan.


(Os demais grupos incluem guias técnicos, história cultural, psicologia otaku, música, literatura, estética visual, identidade geek, séries editoriais e ferramentas profissionais.)


🧩 O que esse mapa revela

📌 Nada aqui é aleatório
O blog não “mudou de assunto”: ele expandiu domínios, como sistemas bem projetados fazem.

📌 Anime, Mainframe e Filosofia formam o triângulo estrutural
Juntos, esses três eixos representam mais da metade de todo o conteúdo.

📌 O passado não foi descartado
Viagem, memória urbana e crônica pessoal continuam lá — apenas operando em background processing.


🖥️ Conclusão: um sistema que não reinicia

O El Jefe Midnight Lunch não é um feed.
É um arquivo vivo, um sistema em produção contínua desde 1983.

Enquanto plataformas vêm e vão,
enquanto linguagens “morrem” (mas não morrem),
enquanto modas passam…

👉 o sistema continua.

Batch após batch.
Post após post.
Sem reboot forçado.


sexta-feira, 12 de dezembro de 2025

quarta-feira, 13 de maio de 2020

O Fator Ônibus Rules : O Dia em que um Programador COBOL Descobriu que o Maior Risco do Mainframe Não Era um ABEND... Era uma Pessoa Só

 

Bellacosa Mainframe e o fator onibus rules em engenharia de software

☕ Um Café no Bellacosa Mainframe

O Fator Ônibus Rules sem Mistérios

O Dia em que um Programador COBOL Descobriu que o Maior Risco do Mainframe Não Era um ABEND... Era uma Pessoa Só

"Computadores não guardam conhecimento. Pessoas guardam. O problema começa quando apenas uma pessoa sabe como tudo funciona."


Introdução — O Incidente na USS Enterprise

Imagine que a USS Enterprise esteja explorando um setor desconhecido da galáxia.

O Capitão Kirk está em uma missão diplomática.

Spock foi capturado pelos romulanos.

Scotty está preso na casa de máquinas tentando impedir uma explosão no núcleo de dobra.

McCoy está operando um tripulante.

Sulu está pilotando uma nave auxiliar.

Chekov perdeu comunicação.

Quem sabe operar toda a Enterprise?

Se apenas Scotty conhece o funcionamento do motor de dobra...

...a missão inteira depende dele.

No desenvolvimento de software acontece exatamente a mesma coisa.

Existe um conceito bastante conhecido na Engenharia de Software chamado Bus Factor (Fator Ônibus).

É uma métrica extremamente simples.

E extremamente assustadora.


O que é o Bus Factor?

Bus Factor mede:

Quantas pessoas podem deixar um projeto antes que ele deixe de funcionar.

Ou, na definição clássica:

Quantas pessoas precisariam ser atropeladas por um ônibus para que o projeto ficasse inviável.

Apesar do nome parecer humor negro, o objetivo nunca foi falar de acidentes.

Hoje muitas empresas preferem nomes como:

  • Lottery Factor

  • Truck Factor

  • Beer Truck Factor

  • Departure Factor

A ideia é a mesma.

Se apenas uma pessoa conhece todo o sistema...

Bus Factor = 1

Se cinco pessoas dominam tudo...

Bus Factor = 5

Quanto maior o número...

mais saudável é o projeto.


A origem do termo

O conceito apareceu informalmente nos anos 1990 em equipes de desenvolvimento.

Depois foi bastante difundido por comunidades Open Source.

Grandes projetos como:

  • Linux

  • Apache

  • PostgreSQL

  • Kubernetes

passaram a discutir continuamente como aumentar seu Bus Factor.

Hoje empresas como Google, Microsoft, IBM, Amazon e Meta utilizam práticas justamente para evitar esse risco.


Por que isso acontece?

Porque conhecimento técnico é caro.

E conhecimento acumulado durante anos é mais caro ainda.

Imagine um sistema bancário COBOL criado em 1987.

Foram feitas:

  • milhares de correções

  • centenas de integrações

  • dezenas de migrações

Mas apenas João conhece:

  • o motivo daquele IF estranho

  • porque existe aquele PERFORM GO TO

  • porque aquele arquivo VSAM não pode ser reorganizado na sexta-feira

Sem João...

ninguém entende.


O verdadeiro patrimônio não é o código

Muitos pensam:

"O código está no Git."

Não.

O código é apenas uma fotografia.

O conhecimento está na cabeça das pessoas.

Por exemplo.

Imagine este trecho:

IF CODIGO = 98
    MOVE "N" TO PROCESSAR
END-IF

Todo mundo consegue ler.

Mas somente um programador sabe que:

"98 significa agência incorporada antes da fusão de 1999."

Isso nunca foi documentado.


O Bus Factor no Mainframe

Mainframe possui uma característica curiosa.

Sistemas vivem por décadas.

Enquanto aplicações Web costumam durar poucos anos...

há programas COBOL executando desde os anos 80.

Isso cria um fenômeno interessante.

Os programadores mudam.

O sistema permanece.

Quem sobrevive?

O conhecimento.


O Programador Lendário

Toda empresa possui um.

Normalmente conhecido por frases como:

"Pergunta para o Carlos."

ou

"Só a Maria sabe."

ou

"Não mexe nisso."

ou

"Esse módulo é do Roberto."

Quando alguém fala isso...

o Bus Factor acabou de aparecer.


Um caso clássico

Imagine um programa COBOL de 250 mil linhas.

Existe um JOB chamado:

PGM=FECHAMES

Todos sabem executá-lo.

Ninguém sabe como funciona.

Quando aparece erro...

esperam José voltar das férias.

Isso significa:

Bus Factor = 1


Como identificar um Bus Factor baixo?

Existem sinais muito claros.

Sempre chamam a mesma pessoa

"Fulano resolve."

Isso é risco.


Férias geram pânico

A equipe evita liberar férias.

Outro alerta.


Ninguém revisa aquele código

Porque ninguém entende.


Documentação inexistente

Tudo está "na memória".


Medo de alterar

Frases como:

"Melhor não mexer."

indicam conhecimento concentrado.


O impacto nos projetos

Um Bus Factor baixo provoca:

  • atrasos

  • retrabalho

  • bugs

  • decisões lentas

  • dependência

  • burnout

E principalmente:

medo.


Burnout técnico

O especialista nunca descansa.

Nunca tira férias.

Nunca muda de área.

Nunca cresce.

Porque virou gargalo.

Ele deixa de ser desenvolvedor.

Passa a ser suporte permanente.


O paradoxo

Muitos profissionais acreditam:

"Quanto menos gente souber, mais indispensável eu fico."

Na realidade acontece o contrário.

Empresas modernas promovem quem compartilha conhecimento.

Porque líderes multiplicam.

Guardiões escondem.


O Bus Factor no COBOL

Imagine um sistema composto por:

800 programas COBOL

120 CICS

300 JCL

90 PROC

60 COPYBOOK

15 VSAM

120 tabelas DB2

Apenas um analista conhece:

  • arquitetura

  • fluxo

  • dependências

Esse sistema possui Bus Factor baixíssimo.


Como aumentar o Bus Factor?

1. Documentação viva

Não basta Word esquecido.

Documentação precisa acompanhar o código.


2. Code Review

Todo código passa por outra pessoa.

Assim o conhecimento circula.


3. Pair Programming

Duas pessoas desenvolvendo juntas.

Muito comum em Extreme Programming.


4. Rotação de equipes

Hoje você mantém cobrança.

Amanhã cartões.

Depois investimentos.

Conhecimento distribuído.


5. Treinamentos internos

Mini workshops.

Lightning Talks.

Brown Bag Sessions.

Lunch & Learn.


6. Diagramas

Fluxos ajudam mais do que textos enormes.


7. Wiki

Confluence.

GitHub Wiki.

Markdown.

Obsidian.

Qualquer coisa melhor que memória humana.


8. Comentários úteis

Não explique COBOL.

Explique regra de negócio.

Ruim:

MOVE X TO Y

Bom:

* Conta especial criada após Resolução BACEN 2451

O papel dos COPYBOOKS

No Mainframe, COPYBOOKS também espalham conhecimento.

Padronizam:

  • layouts

  • mensagens

  • estruturas

  • contratos

Isso reduz dependências.


A importância dos testes

Testes também documentam.

Um bom teste responde:

"O que esse programa deveria fazer?"


Integração com IA

Hoje IA ajuda muito.

Ela pode:

  • explicar COBOL

  • gerar documentação

  • criar diagramas

  • resumir programas

Mas atenção.

Ela aprende com o código disponível.

Se o conhecimento nunca foi registrado...

nem a IA consegue descobrir.


Bus Factor e sucessão

Toda empresa deveria perguntar:

"Se João sair amanhã, conseguimos continuar?"

Se a resposta for "não"...

o problema já existe.


Curiosidade

Algumas empresas medem oficialmente:

  • percentual de conhecimento compartilhado

  • quantidade de revisores

  • cobertura de documentação

Tudo isso influencia o Bus Factor.


Um exemplo divertido

Imagine o motor de dobra da Enterprise.

Scotty conhece:

  • manutenção

  • peças

  • ajustes

  • gambiarra klingon

Se Scotty aposentar...

a nave para.

Kirk então decide:

  • treinar Geordi (sim, ele ainda nem nasceu nesta linha temporal!)

  • criar manuais

  • registrar procedimentos

Bus Factor aumenta.


Erros mais comuns

Heroísmo

"O sistema depende de mim."

Não deveria.


Falta de documentação

Erro clássico.


Não ensinar

Conhecimento escondido envelhece.


Medo de perder espaço

Na prática ocorre o contrário.

Quem ensina cresce.


Sistemas sem arquitetura

Tudo funciona.

Ninguém entende.


O que um Padawan COBOL deve aprender?

Nunca seja apenas executor.

Entenda:

  • negócio

  • arquitetura

  • fluxo

  • integração

  • histórico

Quanto mais contexto...

mais valor você gera.


Outros termos curiosos da Engenharia de Software

O Bus Factor faz parte de uma enorme coleção de conceitos curiosos usados por arquitetos de software.

1. Technical Debt (Dívida Técnica)

Atalhos tomados hoje que gerarão custo no futuro.


2. Yak Shaving

Resolver dezenas de problemas irrelevantes antes do verdadeiro.


3. Bike Shedding

Horas discutindo detalhes pequenos.

Exemplo:

"A cor do botão."

Enquanto ninguém fala da arquitetura.


4. Golden Hammer

Usar sempre a mesma tecnologia.

"Para tudo usamos Java."

Mesmo quando não faz sentido.


5. Cargo Cult Programming

Copiar código sem entender.

Muito comum na internet.


6. Spaghetti Code

Código totalmente desorganizado.


7. Lasagna Code

Camadas demais.

Tudo depende de tudo.


8. Big Ball of Mud

Sistema gigantesco sem arquitetura definida.

Muito comum em sistemas antigos.


9. God Object

Objeto que faz absolutamente tudo.


10. Lava Flow

Código antigo que ninguém remove.

Porque ninguém sabe se ainda é usado.


11. Boiling Frog

Problemas pequenos acumulam lentamente.

Quando percebem...

o sistema virou caos.


12. Death March Project

Projeto impossível desde o início.

Prazo irreal.

Equipe pequena.

Escopo gigante.


13. Brooks's Law

Do clássico The Mythical Man-Month:

"Adicionar pessoas a um projeto atrasado o atrasará ainda mais."

Porque novos membros precisam aprender.


14. Conway's Law

O software reflete a estrutura organizacional.

Departamentos separados criam sistemas separados.


15. Murphy's Law

Tudo que pode falhar...

falhará.

Por isso existem testes.


16. KISS

Keep It Simple.

Soluções simples sobrevivem mais.


17. YAGNI

You Aren't Gonna Need It.

Não implemente funcionalidades imaginárias.


18. DRY

Don't Repeat Yourself.

Evite duplicação.


19. SOLID

Cinco princípios para software sustentável.


20. Boy Scout Rule

"Deixe o código um pouco melhor do que encontrou."

Uma pequena melhoria por vez transforma um sistema inteiro ao longo dos anos.


O grande ensinamento

O verdadeiro objetivo do Bus Factor não é medir acidentes.

É medir resiliência organizacional.

Em um ambiente Mainframe, onde sistemas podem sobreviver por 30, 40 ou até 50 anos, o ativo mais valioso não é o servidor IBM Z, nem o Db2, nem o CICS, nem o código COBOL. É o conhecimento coletivo da equipe.

Quando apenas uma pessoa conhece um módulo crítico, cria-se um ponto único de falha tão perigoso quanto um disco sem redundância ou um banco de dados sem backup. Por outro lado, quando o conhecimento é compartilhado por meio de documentação, revisões de código, mentorias, treinamentos, programação em pares e rotação de responsabilidades, o sistema torna-se mais robusto e a equipe evolui em conjunto.

Para um Programador COBOL Padawan, a maior lição é esta: não aspire ser insubstituível; aspire ser inesquecível. O profissional que ensina, documenta, orienta e forma novos especialistas deixa um legado muito maior do que aquele que guarda segredos técnicos. Assim como na Frota Estelar, uma nave não depende de um único oficial para cumprir sua missão. Ela depende de uma tripulação preparada, colaborativa e capaz de assumir o comando quando necessário.

No fim das contas, o melhor indicador de maturidade de uma equipe não é quantas pessoas sabem tudo, mas quantas conseguem continuar navegando com segurança quando qualquer membro precisa se afastar. Esse é o verdadeiro espírito do Bus Factor: transformar conhecimento individual em patrimônio coletivo, garantindo que a missão continue, independentemente de quem esteja na ponte de comando.

domingo, 15 de março de 2020

☕💥 Fluxogramas no Mundo Mainframe

 

Bellacosa Mainframe e o fluxograma no mundo mainframe

☕💥 Fluxogramas no Mundo Mainframe

Ou como um Padawan COBOL descobre que antes do IF WS-SALDO > ZERO, existia um desenhinho que salvava projetos milionários

"Um programa COBOL sem fluxograma é como um JCL sem JOB CARD. Talvez execute. Talvez funcione. Mas ninguém vai entender daqui seis meses."

— Mestre Bellacosa Mainframe


Introdução

Uma das maiores diferenças entre um desenvolvedor COBOL júnior de hoje e um analista de sistemas da década de 1970, 1980 ou 1990 não está na linguagem.

Não está no z/OS.

Não está no DB2.

Não está no CICS.

Está na forma de pensar software.

Hoje aprendemos:

  • Fazer código

  • Testar

  • Commitar

  • Fazer Pull Request

Antigamente aprendíamos:

  • Analisar

  • Modelar

  • Desenhar

  • Revisar

  • Aprovar

  • Codificar

E neste mundo existia um personagem muito poderoso.

O Fluxograma.


O nascimento dos fluxogramas

A ideia é muito antiga.

Vem dos trabalhos de engenharia industrial.

Frank Gilbreth

Henry Gantt

Por volta de 1921 começaram a desenhar processos industriais.

Exemplo:

Receber matéria-prima

↓

Produzir

↓

Inspecionar

↓

Embalar

↓

Enviar

Décadas depois os computadores apareceram.

E alguém percebeu:

"Programas são processos."

Logo...

Processos industriais

viraram

Processos computacionais.


O modelo Waterfall

Se você trabalha em Mainframe bancário provavelmente ainda verá isso.

Waterfall.

As fases clássicas:

Requisitos

↓

Análise

↓

Fluxogramas

↓

Especificação Técnica

↓

Codificação

↓

Teste

↓

Implantação


Documentos clássicos do Waterfall

Documento Funcional

O que o sistema faz.

Exemplo:

Pagamento de boleto

Regra:

Se vencido

cobrar multa

Se pago em dia

valor normal


Documento Técnico

Como será implementado.

Exemplo:

Programa:

PAGBOL01

Tabela:

TB_BOLETO

Transação:

PB01

Copybooks

CPBOLETO


Fluxograma

É a ponte entre os dois.

Negócio

↓

Fluxograma

↓

COBOL


Bellacosa Mainframe e os simbolos de fluxograma

O que é um Fluxograma?

É uma representação gráfica de um algoritmo.

Ao invés de escrever:

IF SALDO > ZERO
   DISPLAY "OK"
ELSE
   DISPLAY "NEGADO"
END-IF

Desenhamos.

        ◇
SALDO > 0 ?
   /    \
 SIM    NÃO
 ↓       ↓
OK    NEGADO

Nosso cérebro entende imagens mais rapidamente.

Por isso funcionam.


Símbolos principais

Oval

Significado:

Início

Fim

Exemplo

 _______
(START )
 -------

ou

 _______
( END  )
 -------

Retângulo

Processamento.

Fazer algo.

Exemplo:

Calcular juros

Atualizar cadastro

Mover campos


Exemplo COBOL

COMPUTE JUROS =
SALDO * 0.05

Fluxograma

□ Calcular juros


Losango

Decisão.

Pergunta.

Tem duas saídas.

SIM

NÃO

Exemplo

Cliente VIP?


COBOL

IF CLIENTE-VIP='S'

Paralelogramo

Entrada e saída.

DISPLAY

ACCEPT

RECEIVE

SEND


Batch

Ler arquivo

Online

Receber PFKEY


Seta

Fluxo.

Indica sequência.

Sem seta.

Existe caos.

Com seta.

Existe entendimento.


Círculo

Conector.

Liga páginas.

Muito usado em especificações gigantes.

Página 1

↓

○A

Página 10

○A

continuação


Bellacosa Mainframe e um fluxograma cobol batch

Fluxograma de Batch COBOL

Imagine:

Pagar folha salarial.


Desenho

START

↓

Abrir arquivo

↓

Ler funcionário

↓

Fim Arquivo?

◇

Sim

Gerar relatório

END

Não

Calcular salário

Gravar saída

Ler próximo


COBOL

OPEN INPUT FUNCIONARIO

PERFORM UNTIL EOF='S'

 READ FUNCIONARIO

   AT END
      MOVE 'S' TO EOF

   NOT AT END

      PERFORM CALCULA

      WRITE REG-SAIDA

 END-READ

END-PERFORM

Bellacosa Mainframe exemplo de fluxograma cobol vsam


Fluxograma para VSAM

Abrir KSDS

↓

READ

↓

FOUND?

SIM

UPDATE

REWRITE

NÃO

WRITE

END


Bellacosa Mainframe exemplo de fluxograma online cics

Fluxograma Online CICS

Exemplo.

Consulta saldo.


START

Receber tela

↓

ENTER?

SIM

↓

Validar conta

↓

Conta existe?

◇

SIM

Ler DB2

Enviar tela

NÃO

Mensagem erro

END


COBOL

EXEC CICS RECEIVE MAP


EXEC SQL

SELECT SALDO

INTO :WS-SALDO

FROM CONTA


END-EXEC


EXEC CICS SEND MAP


END-EXEC

Bellacosa Mainframe exemplo de fluxograma db2

Fluxograma com DB2

Exemplo.

Transferência bancária.


START

Receber origem

Receber destino

Valor válido?

◇

SIM

BEGIN UNIT OF WORK

SELECT

UPDATE

UPDATE

COMMIT

NÃO

ROLLBACK

END


Fluxograma das tabelas DB2

Tabela

CLIENTE

Tabela

CONTA

Tabela

MOVIMENTO

Fluxo

CLIENTE

↓

CONTA

↓

MOVIMENTO


Exemplo SQL

SELECT
C.NOME,
M.VALOR

FROM CLIENTE C

JOIN CONTA CT

ON...

JOIN MOVIMENTO M

Fluxograma ajuda a enxergar joins.


Workflow

Muitos confundem.

Fluxograma

não é

Workflow

Mas workflow pode usar fluxograma.


Exemplo

Solicitação crédito

Cliente

↓

Análise

↓

Aprovação gerente

↓

Compliance

↓

Liberação


Hoje isso está em:

IBM BPM

Camunda

ServiceNow

Power Automate


Fluxos de diálogo

Muito usado em CICS.

Tela login

↓

Senha válida?

◇

Sim

Menu

Não

Mensagem erro


Chatbots fazem isso.

ChatGPT faz isso.

URA faz isso.

PIX faz isso.


Boas práticas

1 Não cruzar linhas

Errado

Linhas embaralhadas.

Causa dor psicológica.


2 Usar nomes claros

Errado

Processo 1

Correto

Calcular IOF


3 Uma decisão por vez

Evita confusão.


4 Modularizar

Subfluxos.

Exemplo

Pagamento

↓

Calcular imposto

↓

Fluxograma separado


Curiosidades

Easter Egg 1

COBOL nasceu em 1959.

Fluxogramas já eram padrão.


Easter Egg 2

Muitos programadores COBOL dos anos 80 codificavam olhando apenas para fluxogramas.

Nem tinham acesso ao usuário.


Easter Egg 3

Ferramentas CASE prometiam gerar COBOL automaticamente.

Excelerator

ADW

CoolGen

IEF

Pacbase

A ideia era:

Desenhar

Gerar programa

Compilar


Easter Egg 4

IBM usou fluxogramas extensivamente na documentação do OS/360.

Centenas de páginas.


Easter Egg 5

DFSORT pode ser representado perfeitamente por fluxograma.

INPUT

↓

SORT

↓

SUM

↓

OUTREC

↓

OUTPUT


Por que ainda usamos em Mainframe?

Porque sistemas bancários possuem:

Centenas de regras

Milhares de IFs

Milhões de contas

Um código COBOL pode ter:

30000 linhas

500 parágrafos

200 IFs

Ler isso é cansativo.

Ver um desenho leva segundos.


O Fluxograma como ferramenta de sobrevivência do Padawan COBOL

Imagine receber:

Programa:

FINA0345

38 mil linhas.

Criado em 1994.

Sem documentação.

Sem analista.

Sem usuário.

Sem autor.

Você abre.

Encontra:

PERFORM P1120

PERFORM P1130

PERFORM P1140

PERFORM P1150

O que fazem?

Ninguém sabe.

Mas após desenhar:

START

↓

Validar Cliente

↓

Consultar DB2

↓

Calcular Limite

↓

Atualizar Histórico

↓

Gerar Extrato

↓

END

Tudo fica claro.

É por isso que arquitetos, analistas de sistemas, especialistas em CICS, DB2, IMS, MQ, BPM e até equipes DevOps continuam utilizando fluxogramas.

Eles não substituem COBOL.

Não substituem UML.

Não substituem documentação funcional.

Mas fazem algo extremamente valioso: transformam milhares de linhas de código em uma história visual que qualquer pessoa consegue seguir.

E, no universo Bellacosa Mainframe, talvez esta seja a melhor definição possível:

Fluxograma é o mapa da dungeon. COBOL é a espada. DB2 é o tesouro. CICS é o portal de entrada. E o programador júnior que aprende a desenhar processos deixa de ser apenas um codificador e começa a pensar como um verdadeiro Analista de Sistemas do Reino IBM Z. ☕🚀

 

sexta-feira, 5 de setembro de 2014

🧙 SHIROE E A DUNGEON DA DOCUMENTAÇÃO — QUANDO O PROGRAMADOR COBOL DESCOBRIU QUE ÁGIL NÃO SIGNIFICA PROGRAMAR SEM MAPA

 

Bellacosa Mainframe e a metodologia agil uma pequena introdução


☕ Um Café no Bellacosa Mainframe

🧙 SHIROE E A DUNGEON DA DOCUMENTAÇÃO — QUANDO O PROGRAMADOR COBOL DESCOBRIU QUE ÁGIL NÃO SIGNIFICA PROGRAMAR SEM MAPA

Agile Modeling, COBOL, documentação, conhecimento tribal, Bus Factor, CICS, Db2, VSAM, JCL, modelos, legado, IA — e o dia em que Shiroe descobriu que um comentário escrito em 1989 podia valer mais que um documento de 400 páginas.



🎬 PRÓLOGO — BEM-VINDO A ELDER TALE

Imagine acordar dentro de um sistema que existe há quarenta anos.

Não um MMORPG.

Pior.

Um sistema corporativo.

Você abre o inventário:

3.842 programas COBOL
1.927 copybooks
674 JCLs
283 PROCs
416 tabelas Db2
138 arquivos VSAM
91 transações CICS
37 filas MQ
12 sistemas externos

E uma documentação chamada:

DOCUMENTACAO_FINAL_V7_DEFINITIVA_REV3_ULTIMA.doc

Data da última atualização:

17/08/2004

Shiroe ajusta os óculos.

— Não confie no nome do arquivo.

O jovem programador COBOL pergunta:

— Então vamos documentar tudo novamente?

Shiroe olha para os milhares de componentes.

— Não.

— Então não vamos documentar nada?

— Também não.

Bem-vindo ao problema que o Agile Modeling tenta resolver.



🏰 CAPÍTULO 1 — O MONSTRO NÃO É A DOCUMENTAÇÃO

Quando alguém começa a estudar desenvolvimento ágil, existe uma interpretação perigosa:

“Ágil significa pouca documentação.”

Não.

Outra interpretação é ainda pior:

“Ágil significa nenhuma documentação.”

Também não.

O material que deu origem à nossa investigação apresenta Agile Modeling, ou AM, como uma abordagem para tornar modelagem e documentação mais eficientes. A preocupação central é evitar produzir e manter artefatos que não entregam valor suficiente ao projeto.

A ideia fundamental é simples:

DOCUMENTAR
     ↓
custa tempo
     ↓
custa dinheiro
     ↓
precisa ser atualizado
     ↓
portanto
     ↓
PRECISA TER UTILIDADE

Imagine que alguém passe oito horas criando um belíssimo diagrama UML.

Ele é impresso.

Colocado numa pasta.

Arquivado.

Nunca mais ninguém olha para ele.

Tecnicamente houve documentação.

Economicamente talvez tenha ocorrido apenas desperdício.

Agora imagine o contrário.

Um programador escreve três linhas:

      * REGRA CRIADA PARA CONTRATOS ANTERIORES A 1994.
      * NAO REMOVER SEM VALIDACAO COM FATURAMENTO.
      * REF: NORMA FIN-047.

Trinta anos depois, alguém encontra esse comentário.

Ele impede que uma regra aparentemente inútil seja removida.

Três linhas acabaram de salvar uma manutenção.

Qual documentação possuía mais valor?

Shiroe sorriria.

Essa é a pergunta correta.



🧙 CAPÍTULO 2 — O QUE É AGILE MODELING?

Agile Modeling não deve ser confundido com uma metodologia completa de desenvolvimento.

O próprio material destaca essa diferença: AM concentra-se na modelagem, podendo complementar tanto abordagens ágeis quanto processos mais prescritivos.

Pense assim:

        DESENVOLVIMENTO DE SOFTWARE

┌─────────────────────────────────────┐
│                                     │
│ Scrum / XP / Kanban / outros        │
│                                     │
│       ┌─────────────────────┐       │
│       │   AGILE MODELING    │       │
│       │                     │       │
│       │ entender            │       │
│       │ modelar             │       │
│       │ comunicar           │       │
│       │ validar             │       │
│       │ documentar          │       │
│       └─────────────────────┘       │
│                                     │
└─────────────────────────────────────┘

Agile Modeling pergunta:

Qual é a maneira mais eficiente de representar determinado conhecimento?

Às vezes será UML.

Às vezes será uma tabela.

Às vezes será um fluxograma.

Às vezes será um protótipo.

Às vezes será um desenho feito no quadro branco.

Às vezes será o próprio código.

Isso nos leva a uma ideia fundamental.



🗺️ CAPÍTULO 3 — O MAPA NÃO É A DUNGEON

Shiroe conhece mapas.

Mas nenhum jogador de Log Horizon confundiria o mapa de Elder Tale com Elder Tale.

O mapa é uma representação simplificada da realidade.

Software funciona da mesma maneira.

Considere:

CLIENTE
   │
   ▼
API
   │
   ▼
z/OS Connect
   │
   ▼
CICS
   │
   ▼
COBOL
   │
   ├───────────┐
   ▼           ▼
  Db2         VSAM

Isso não contém cada programa, variável, tabela, chamada ou transação.

E não precisa.

Seu propósito pode ser simplesmente responder:

“Como uma requisição externa chega ao programa COBOL?”

Se respondeu isso, cumpriu sua missão.

O documento original define um modelo ágil por características como atender ao propósito, ser inteligível e possuir detalhamento suficiente, evitando complexidade adicional que não contribua para a comunicação.

Essa expressão é importantíssima:

suficientemente detalhado.

Não é:

minimamente detalhado.

Também não é:

absurdamente detalhado.

É suficiente para a missão.



⚔️ CAPÍTULO 4 — MODELE COM UM PROPÓSITO

Antes de criar qualquer documento, Shiroe colocaria uma pergunta na mesa:

POR QUE?

Por que estamos fazendo este diagrama?

Por que estamos escrevendo este documento?

Por que precisamos desta planilha?

Por que estamos descrevendo esta interface?

As respostas possíveis podem ser:

entender o sistema
comunicar uma arquitetura
explicar uma regra
treinar uma pessoa
registrar uma decisão
atender auditoria
planejar uma alteração
operar produção
recuperar um processamento
investigar incidente

Tudo isso pode justificar documentação.

Agora compare com:

“Porque o processo manda.”

Temos um problema.

Um artefato deve possuir consumidor e finalidade.

Uma pergunta Bellacosa extremamente útil seria:

QUEM VAI USAR ISSO
E PARA TOMAR QUAL DECISÃO?

Se ninguém souber responder, investigue antes de produzir cinquenta páginas.


🎒 CAPÍTULO 5 — VIAJE COM POUCA BAGAGEM

Entre os princípios apresentados pelo material está a ideia de “viajar com pouca bagagem”, juntamente com simplicidade, aceitação de mudanças, incrementos, feedback rápido e modelagem com propósito.

Isso é perigoso quando interpretado por alguém muito empolgado.

O jovem aventureiro poderia dizer:

— Shiroe! Descobri! Vamos apagar os documentos!

— Por quê?

— Para viajar com pouca bagagem!

— Aquela pasta contém o procedimento de recuperação do faturamento.

— Ah.

— E aquela contém o mapeamento das interfaces bancárias.

— Ah...

— E você acabou de deletar o procedimento de restart do batch.

— Posso restaurar?

😂

Pouca bagagem não significa entrar numa dungeon sem espada, comida e mapa.

Significa não levar quinze armaduras quando você precisa de uma.

No desenvolvimento:

DOCUMENTAÇÃO ENXUTA
            ≠
AUSÊNCIA DE DOCUMENTAÇÃO

Uma definição melhor seria:

DOCUMENTAÇÃO ENXUTA
            =
MENOR CONJUNTO DE INFORMAÇÕES
CAPAZ DE PRESERVAR O CONHECIMENTO
NECESSÁRIO

🦖 CAPÍTULO 6 — O COBOL DE 1989

Agora Shiroe abre um programa.

       3100-CALCULA-TAXA.

           IF WS-TIPO-CLIENTE = 'E'
              COMPUTE WS-TAXA =
                      WS-TAXA * 0.8735
           END-IF.

O iniciante observa.

— Entendi.

Shiroe pergunta:

— Entendeu o quê?

— Clientes do tipo E recebem multiplicação por 0.8735.

— Por quê?

Silêncio.

Eis uma das grandes dificuldades do legado.

Código é excelente para responder:

COMO?

Mas frequentemente é insuficiente para responder:

POR QUÊ?

Talvez 0.8735 represente uma norma de 1989.

Talvez seja uma condição comercial.

Talvez seja compatibilidade com um sistema aposentado.

Talvez seja correção de algum erro histórico.

Ou talvez seja realmente uma porcaria que deveria ter desaparecido em 1997.

Não sabemos.

O código preservou o algoritmo.

Não preservou necessariamente a intenção.

Essa diferença é gigantesca.


🧠 CAPÍTULO 7 — SOFTWARE É CONHECIMENTO FOSSILIZADO

Um sistema legado não é simplesmente código velho.

Ele é uma espécie de arqueologia corporativa.

Dentro dele existem décadas de:

decisões
leis
contratos
exceções
fusões
produtos
clientes
incidentes
migrações
limitações técnicas
decisões arquiteturais
gambiarras
correções

Por isso um programa de 1987 ainda pode estar executando em 2026.

Não necessariamente porque ninguém conseguiu substituí-lo.

Às vezes porque ele contém uma quantidade absurda de conhecimento acumulado.

Imagine:

       IF ESTADO = 'SP'
          AND PRODUTO = 17
          AND DT-CONTRATO < 19940701
             PERFORM 7300-REGRA-ESPECIAL
       END-IF.

Um iniciante pode pensar:

Que regra horrorosa.

Talvez seja.

Mas antes de apagá-la precisamos descobrir por que existe.

Shiroe diria:

Primeiro descubra as regras do mundo. Depois tente mudá-las.


📚 CAPÍTULO 8 — O CÓDIGO TAMBÉM É DOCUMENTAÇÃO

Agora considere:

       01  CUSTOMER-RECORD.
           05 CUSTOMER-ID       PIC 9(10).
           05 CUSTOMER-NAME     PIC X(30).
           05 CUSTOMER-BALANCE  PIC S9(7)V99 COMP-3.
           05 CUSTOMER-STATUS   PIC X.

Alguém cria um documento:

CUSTOMER-ID      10 posições
CUSTOMER-NAME    30 posições
CUSTOMER-BALANCE decimal
CUSTOMER-STATUS  1 posição

Parece útil.

Mas agora existem duas fontes:

COPYBOOK
   +
DOCUMENTO

Alguém muda:

05 CUSTOMER-NAME PIC X(40).

E esquece o Word.

Nasce uma criatura terrível:

DOCUMENTAÇÃO ZUMBI.

Ela parece viva.

Ela parece oficial.

Ela está errada.

E documentação errada pode ser mais perigosa que nenhuma documentação.


🧟 CAPÍTULO 9 — A DOCUMENTAÇÃO ZUMBI ATACA ELDER TALE

Imagine o manual:

PGM001 chama PGM002.

Mas a produção evoluiu:

PGM001
   ↓
PGM017
   ↓
MQ
   ↓
PGM002

Chega um incidente.

O analista consulta a documentação.

Começa procurando no lugar errado.

Resultado:

DOCUMENTAÇÃO DESATUALIZADA
          ↓
HIPÓTESE ERRADA
          ↓
INVESTIGAÇÃO ERRADA
          ↓
TEMPO PERDIDO
          ↓
MTTR MAIOR

A documentação que deveria reduzir risco tornou-se fonte de risco.

Por isso devemos evitar duplicar indiscriminadamente informações que já possuem uma fonte autoritativa.

Se o copybook define o layout, talvez a documentação deva dizer:

Layout oficial:
COPY CUSTOMER01

em vez de copiar cinquenta campos para outro lugar.


👥 CAPÍTULO 10 — O RAID BOSS CHAMADO CONHECIMENTO TRIBAL

O material original traz outra ideia essencial: conhecimento deve ser coletivo, evitando que somente uma pessoa domine todo o processo.

Shiroe encontra a equipe:

— Quem conhece o fechamento mensal?

Todos apontam para Alfredo.

— Quem conhece o programa FATU047?

Alfredo.

— Quem sabe reiniciar o JOB FATNIGHT?

Alfredo.

— Quem conhece aquela interface VSAM?

Alfredo.

Shiroe pergunta:

— Onde está Alfredo?

— Aposentou ontem.

...

Temos um problema.

Hoje costumamos relacionar essa situação ao conceito de Bus Factor: quantas pessoas podem ficar indisponíveis antes que determinado conhecimento crítico desapareça da equipe?

Não precisamos matar ninguém.

A pessoa pode simplesmente:

  • mudar de projeto;

  • mudar de empresa;

  • aposentar;

  • entrar de férias;

  • ficar indisponível;

  • esquecer detalhes depois de anos.

Conhecimento tribal excessivamente concentrado é dívida operacional.


⏰ CAPÍTULO 11 — 03:17

Produção cai.

Relógio:

03:17

Easter egg encontrado.

No console:

ICH408I USER(PROD01)
ACCESS INTENT(READ)
ACCESS ALLOWED(NONE)

Telefone toca.

— Quem conhece essa aplicação?

Silêncio.

— Onde está o runbook?

Silêncio.

— Como reinicia?

Silêncio.

— Qual foi o último checkpoint?

Mais silêncio.

Nesse momento ninguém quer um UML com 600 classes.

Queremos:

1. O QUE CAIU?
2. QUAL IMPACTO?
3. COMO CONFIRMAR?
4. COMO RECUPERAR?
5. PODE RESTARTAR?
6. DE QUAL STEP?
7. EXISTE RISCO DE DUPLICIDADE?
8. QUEM PRECISA SER ACIONADO?

Esse pequeno runbook pode possuir valor operacional gigantesco.

Agile Modeling não mede documentação pela quantidade.

Mede pela utilidade.


🧪 CAPÍTULO 12 — PROVE COM CÓDIGO

O texto inclui entre suas práticas a consideração da testabilidade e a recomendação de “provar com código”.

Isso é fantástico.

Imagine uma reunião:

— Será que COBOL → CICS → MQ → sistema externo suporta 500 transações por segundo?

Podemos criar 47 slides.

Ou criar uma POC.

LOAD GENERATOR
      ↓
    CICS
      ↓
    COBOL
      ↓
     MQ
      ↓
 MOCK EXTERNO

Agora medimos:

latência
TPS
CPU
filas
erros
timeouts
retries
locks

O PowerPoint dizia:

A arquitetura deverá suportar a carga.

O teste diz:

487 TPS
p95 = 83 ms
CPU = 41%
erro = 0,03%

Qual informação ajuda mais na decisão?

Shiroe ajusta os óculos novamente.

— Dados derrotam opiniões com frequência assustadora.


🧩 CAPÍTULO 13 — UM MODELO NÃO PRECISA SER BONITO

Imagine desenhar no quadro:

AUTORIZAÇÃO
     ↓
 CAPTURA
     ↓
COMPENSAÇÃO
     ↓
LIQUIDAÇÃO

Quatro caixas.

Cinco minutos.

Um iniciante finalmente entende o ciclo de pagamentos.

Missão cumprida.

Não precisamos necessariamente:

EnterpriseArchitectureUltimateFinalDiagram-v23.drawio

Um modelo deve comunicar.

Isso significa que podemos utilizar:

ASCII
quadro branco
papel
UML
BPMN
tabela
fluxograma
Markdown
planilha
código
protótipo

A ferramenta é secundária.

O conhecimento transmitido é primário.

O próprio material enfatiza que conteúdo é mais importante que representação e recomenda conhecer modelos e ferramentas sem transformar a ferramenta no objetivo.


🏦 CAPÍTULO 14 — MAS E AUDITORIA?

Aqui aparece uma exceção que todo programador precisa compreender.

Imagine um banco.

Alguém pergunta:

— Quem aprovou esta mudança?

Não podemos responder:

“A equipe conversou perto da máquina de café.”

Existem ambientes nos quais documentação serve para:

auditoria
compliance
segurança
rastreabilidade
segregação de funções
regulamentação
continuidade
evidência

Nesse caso o consumidor do documento talvez nem seja o programador.

Pode ser:

auditor
regulador
segurança
jurídico
gestão de risco

O princípio continua exatamente igual:

MODELE E DOCUMENTE COM PROPÓSITO.

A diferença é que o propósito mudou.

Agilidade não elimina governança.

Boa agilidade tenta evitar governança burra.


🤖 CAPÍTULO 15 — SHIROE ENCONTRA UMA INTELIGÊNCIA ARTIFICIAL

Agora chegamos a 2026.

Shiroe recebe:

800 programas COBOL
300 JCLs
150 copybooks
80 tabelas

Uma IA pode ajudar a descobrir:

CALL GRAPH
DEPENDÊNCIAS
ACESSOS Db2
ARQUIVOS VSAM
FLUXOS BATCH
COPYBOOKS
SQL
INTERFACES
REGRAS CANDIDATAS

Imagine:

SOURCE COBOL
     ↓
     IA
     ↓
ANÁLISE
     ↓
MAPA

Isso muda profundamente a economia da documentação.

Antes talvez fossem necessárias semanas para reconstruir parte do sistema.

Agora máquinas podem ajudar a acelerar a descoberta.

Mas existe um problema crítico.

A IA lê:

IF WS-TYPE = 'P'
   PERFORM CALC-047
END-IF

e responde:

“P provavelmente significa cliente premium.”

Provavelmente?

A palavra é importante.

Pode significar:

Premium
Pessoa
Parcelado
Provisório
Produto
Pendência

A IA fez uma inferência.

Não descobriu um fato.

Portanto documentação assistida por IA deveria distinguir claramente:

FATO ENCONTRADO NO SOURCE
          ↓
INFERÊNCIA TÉCNICA
          ↓
HIPÓTESE
          ↓
REGRA CONFIRMADA

Misturar essas categorias cria documentação extremamente convincente — e potencialmente falsa.


🧭 CAPÍTULO 16 — PASSO A PASSO: VOCÊ RECEBEU 800 PROGRAMAS COBOL

Não comece abrindo PGM0001.CBL.

Primeiro descubra o mundo.

Passo 1 — Faça o mapa territorial

                SISTEMA
                   │
        ┌──────────┼──────────┐
        ▼          ▼          ▼
      ONLINE      BATCH    INTERFACES
        │          │          │
       CICS       JES       MQ/API
        │          │          │
        └──────────┼──────────┘
                   ▼
                  DADOS
               Db2 / VSAM

Passo 2 — Descubra entradas

Quem chama o sistema?

3270?
API?
arquivo?
MQ?
outro batch?

Passo 3 — Descubra saídas

Para onde o sistema envia informação?

Passo 4 — Identifique dados críticos

Db2
VSAM
sequential datasets
MQ

Passo 5 — Descubra programas centrais

Procure:

CALL
LINK
XCTL
START
MQPUT
MQGET
EXEC SQL
READ
WRITE
REWRITE

Passo 6 — Mapeie jornadas críticas

Por exemplo:

TRANSAÇÃO CICS
      ↓
PROGRAMA A
      ↓
PROGRAMA B
      ↓
SELECT Db2
      ↓
MQPUT
      ↓
COMMIT

Passo 7 — Documente o conhecimento que o código não consegue explicar

Especialmente:

POR QUE?

Esse é o ouro.


🟢 CAPÍTULO 17 — O INVENTÁRIO DE SHIROE

Podemos classificar documentação assim:

ClasseExemploTratamento
🟢 Vitalarquitetura críticapreservar
🟢 Negócioregras e exceçõespreservar
🟢 Operacionalrestart/runbookpreservar
🟢 Segurançaacessos e responsabilidadespreservar
🟡 Temporáriadesenho de discussãodescartar quando perder função
🟡 Históricadecisão antiga relevantearquivar
🔴 Duplicadacopybook copiado em Wordquestionar
🔴 Zumbidocumentação incorretacorrigir ou eliminar
🔴 Cerimonialdocumento sem consumidorquestionar

Não transforme essa tabela em religião.

Ela própria deve obedecer ao princípio:

Use aquilo que possui valor.


🏛️ CAPÍTULO 18 — DOCUMENTAÇÃO É MEMÓRIA ORGANIZACIONAL

Agora chegamos à conclusão mais profunda.

Um sistema possui várias camadas de conhecimento:

┌───────────────────────────────────┐
│ NEGÓCIO                           │
│ Por que fazemos isso?             │
├───────────────────────────────────┤
│ ARQUITETURA                       │
│ Como as partes se relacionam?     │
├───────────────────────────────────┤
│ IMPLEMENTAÇÃO                     │
│ Como foi programado?              │
├───────────────────────────────────┤
│ OPERAÇÃO                          │
│ Como funciona em produção?        │
└───────────────────────────────────┘

O código normalmente preserva muito bem a implementação.

Mas não necessariamente preserva:

intenção
história
decisões
alternativas rejeitadas
restrições
motivações
procedimentos humanos

Por isso documentação continua necessária.

O segredo não é documentar tudo.

É descobrir qual conhecimento desapareceria se determinada pessoa saísse amanhã.

Essa pergunta é brutalmente eficiente.


💡 CAPÍTULO 19 — DICAS PARA O PADAWAN COBOL

Quando entrar numa aplicação antiga, não comece julgando.

Pergunte.

Quando encontrar uma regra estranha, não remova imediatamente.

Investigue.

Quando encontrar documentação antiga, não confie cegamente.

Compare com produção.

Quando criar documentação, pergunte quem vai utilizá-la.

Quando copiar informação, pergunte se está criando uma segunda fonte da verdade.

Quando desenhar um modelo, pare quando ele já responder à pergunta para a qual foi criado.

Quando encontrar conhecimento tribal, espalhe esse conhecimento pela equipe.

Quando a IA explicar código, trate inferências como inferências.

E quando o telefone tocar às...

03:17

...torça para alguém ter criado um runbook decente.


🥚 CURIOSIDADE — O DOCUMENTO DE 2003 QUE CONTINUA CONVERSANDO COM 2026

Há algo particularmente interessante no material estudado.

Suas referências registram consultas realizadas em abril de 2003.

Estamos olhando para uma discussão produzida quando o movimento ágil ainda era extremamente jovem.

Naquela época era necessário explicar:

“Não estamos dizendo para abandonar documentação.”

Décadas depois continuamos tendo de explicar exatamente a mesma coisa.

A tecnologia mudou:

CASE
↓
UML
↓
Agile
↓
DevOps
↓
Cloud
↓
Containers
↓
LLMs
↓
Agentes de IA

Mas o problema humano continua:

COMO PRESERVAR
E TRANSMITIR
CONHECIMENTO?

Talvez essa seja a verdadeira dungeon.


🧙 EPÍLOGO — SHIROE FECHA O GRIMÓRIO

O jovem programador finalmente pergunta:

— Mestre Shiroe, então qual é a quantidade certa de documentação?

Shiroe permanece alguns segundos olhando para o terminal 3270.

Na tela:

READY

Então responde:

— A suficiente para que alguém consiga entender, decidir, modificar, operar ou recuperar aquilo que precisa... sem obrigá-lo a manter conhecimento que ninguém utiliza.

— Então documentação não é o objetivo?

— Não.

— O código é o objetivo?

Shiroe ajusta os óculos.

— Também não.

O programador estranha.

— Então qual é?

Shiroe aponta para o sistema funcionando.

Resolver o problema.

Código é uma representação.

Diagramas são representações.

Documentos são representações.

Testes são representações.

Modelos são representações.

Até aquele velho comentário COBOL de 1989 é uma representação.

O verdadeiro patrimônio da empresa é o conhecimento que permite que o sistema continue cumprindo sua função.

O material estudado termina reforçando justamente que Agile Modeling não pretende ser solução milagrosa, não substitui competência, não é uma metodologia completa e, sobretudo, não constitui um ataque à documentação ou às ferramentas.

Essa é a lição que vale atravessar décadas.

No mainframe encontramos programas mais velhos que muitos dos profissionais que hoje os mantêm.

Alguns começaram em cartões.

Passaram por terminais 3270.

Sobreviveram a cliente-servidor.

Sobreviveram à Internet.

Sobreviveram ao Java.

Sobreviveram ao “mainframe vai morrer”.

Sobreviveram à cloud.

Agora estão conhecendo inteligência artificial.

E provavelmente sobreviverão a mais algumas revoluções.

Não porque possuam documentação infinita.

Mas porque alguém, em algum momento, preservou conhecimento suficiente para que a próxima geração pudesse continuar a aventura.

Shiroe fecha o grimório.

O terminal continua piscando.

ENTER COMMAND ===>

E lá no topo daquele programa COBOL esquecido desde o século passado existe um comentário:

      *---------------------------------------------------------*
      * NAO REMOVER ESTA REGRA.
      * EXISTE POR CAUSA DO FECHAMENTO ANUAL.
      * VER INCIDENTE 1989-047.
      *---------------------------------------------------------*

Três linhas.

Trinta e sete anos.

Milhares de execuções.

Talvez nenhum diagrama UML no mundo conseguisse substituí-las.

Porque Agile Modeling nunca foi simplesmente sobre produzir menos documentação.

Era sobre algo muito mais importante:

preservar o conhecimento e eliminar o ritual.

E essa, jovem aventureiro do COBOL, é uma regra que vale tanto em Elder Tale quanto numa LPAR às 03:17 da manhã.

☕ Bem-vindo ao Bellacosa Mainframe.

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
GitHub LinkedIn
Inicializando conteúdo...