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, 18 de dezembro de 2009

📜 COBOL é Autoexplicativo? Problemas na documentação do legado.

  




📜 COBOL é Autoexplicativo?

Documentação, Mitos, Boas Práticas e Sobrevivência no Mainframe Real

“Se o código fosse realmente autoexplicativo, não existiria analista sênior, dump, nem planilha escondida na gaveta.”
— Provérbio não-oficial do Sysprog


1️⃣ O mito do COBOL auto-documentado

Desde sua origem, o COBOL foi vendido como uma linguagem:

  • legível,

  • próxima do inglês,

  • acessível a gestores e usuários de negócio.

Na teoria:

IF CUSTOMER-STATUS = 'A' PERFORM PROCESS-ACTIVE-CUSTOMER END-IF

Na prática, sabemos que:

  • legível ≠ compreensível

  • código não explica regra de negócio

  • o “porquê” quase nunca está no fonte

📌 Primeiro choque de realidade
COBOL ajuda a ler a intenção técnica, mas não documenta contexto histórico, exceções fiscais, gambiarra regulatória ou acordo verbal de 1998.

👉 E isso não é culpa da linguagem. É da ausência de documentação.


2️⃣ Self-documenting code: sonho bonito, realidade dura

Existe um conceito romântico no mundo de software:

“Código limpo se documenta sozinho”

No mainframe isso vira rapidamente:

“Código limpo ajuda, mas não se explica sozinho”

⚠️ Gotcha clássico

IF WS-FLAG = 'Y' MOVE ZERO TO WS-TAX END-IF

Perguntas que o código não responde:

  • Por que zera imposto?

  • Qual legislação?

  • Em que data isso foi criado?

  • Quem autorizou?

  • Isso ainda é válido?

📌 Regra de ouro Bellacosa

Código mostra o que o sistema faz.
Documentação explica por que ele faz isso.


3️⃣ Onde a documentação realmente mora no COBOL

📂 3.1 No código (sim, mas com juízo)

❌ Comentário inútil

* Move value to variable MOVE A TO B.

✅ Comentário que salva vidas

* REGRA FISCAL BR-ICMS-2017 * Conforme decreto 12.887, clientes com FLAG = 'Y' * estao isentos de imposto nesta operacao IF WS-FLAG = 'Y' MOVE ZERO TO WS-TAX END-IF

📌 Comentário bom envelhece melhor que código bonito.


📘 3.2 Cabeçalho de programa (o RG do sistema)

Todo programa COBOL deveria começar com algo assim:

***************************************************************** * PROGRAMA....: FINC1023 * DESCRICAO...: Calculo de impostos para faturamento * MODULO......: Financeiro * AUTOR.......: J. SILVA * DATA........: 12/03/2017 * ALTERACOES..: * - 05/06/2019 - Ajuste ICMS MG (CHG#45871) * - 10/08/2022 - Isencao clientes FLAG=Y (LEGAL-889) *****************************************************************

🧠 Easter Egg #1
Programas sem cabeçalho quase sempre:

  • quebram em virada de ano

  • explodem em auditoria

  • ninguém quer assumir


4️⃣ Público-alvo da documentação: quem você está tentando salvar?

Nem toda documentação é para todo mundo.

🎯 Públicos clássicos no mainframe

PúblicoPrecisa de
DesenvolvedorComentários técnicos, layout, lógica
Analista de negócioRegras, exceções, impacto
Suporte/ProduçãoFluxo, erros, RC, abends
AuditorRastreabilidade, histórico, motivo

📌 Erro comum
Achar que um comentário no código resolve tudo.

👉 Não resolve. Ele ajuda.


5️⃣ Padrões: o verdadeiro caminho do “autoexplicativo”

COBOL só fica “auto-documentável” quando existe:

  • Naming convention clara

  • Layout consistente

  • Regras de codificação

  • Comentários padronizados

❌ Legado sem padrão

01 A. 05 B PIC 9(05).

✅ Código legível e sustentável

01 WS-INVOICE-TOTAL PIC 9(07)V99. 01 WS-INVOICE-TAX PIC 9(07)V99.

🧠 Easter Egg #2
Quem usa ABX1X2 geralmente:

  • herdou código sem documentação

  • tem trauma de manutenção

  • sabe interpretar dump no olho 😅


6️⃣ Documentando o “não documentado” (zona de guerra)

Agora vem a parte crítica.

⚠️ Realidade dura do mainframe

  • Sistemas com 30, 40, 50 anos

  • Regras que ninguém lembra

  • Desenvolvedores se aposentando

  • Conhecimento tribal indo embora

📌 O que fazer?

  • Usar ferramentas modernas

  • Mapear fluxos reais

  • Analisar batch, CICS, DB2

  • Documentar depois que entende

“Se está funcionando, existe uma regra.
Se ninguém sabe qual é, ela precisa ser documentada.”


7️⃣ COBOL, modernização e sobrevivência

Documentação não é nostalgia. É:

  • pré-requisito de modernização

  • base de DevOps

  • segurança contra falha humana

  • seguro contra auditoria

Sistemas mission critical não podem falhar.
E eles só sobrevivem porque:

  • alguém documentou

  • alguém deixou pistas

  • alguém pensou no próximo

🧠 Easter Egg #3
O programa mais crítico da empresa:

  • roda em batch às 02:13

  • ninguém sabe explicar tudo

  • mas todo mundo tem medo de mexer


8️⃣ Conclusão Bellacosa Mainframe

✔ COBOL não é mágico
✔ Código limpo ajuda, mas não basta
✔ Documentação é responsabilidade técnica
✔ Padrões salvam sistemas
✔ Comentários certos salvam carreiras

Documentar não é escrever mais.
É escrever o que o código nunca vai conseguir explicar.

☕💾

segunda-feira, 30 de abril de 2007

Quais outras ferramentas um analista mainframe usa para desenhar e desenvolver software

Bellacosa Mainframe e as ferramentas de um programador mainframe

Quais outras ferramentas um analista mainframe usa para desenhar e desenvolver software

 Um Analista Mainframe utiliza muito mais do que fluxogramas. Ao longo do ciclo de vida de um sistema, ele emprega diferentes técnicas para analisar, modelar, documentar e comunicar soluções. Algumas são tradicionais e existem desde os anos 1970; outras vieram da Engenharia de Software moderna.


1. Fluxograma

É o mais conhecido.

Representa a sequência de execução de um processo.

Exemplo:

Início

↓

Ler Cliente

↓

Cliente Existe?

↓

Sim

↓

Consultar Db2

↓

Fim

É excelente para explicar algoritmos.


2. BPMN (Business Process Model and Notation)

Muito usado por bancos.

Mostra processos completos do negócio.

Exemplo:

Cliente

↓

Solicita Empréstimo

↓

Análise de Crédito

↓

Aprovado?

↓

Sim

↓

Liberação

Enquanto o fluxograma mostra um algoritmo, o BPMN mostra o processo de negócio inteiro.


3. UML (Unified Modeling Language)

A UML possui diversos diagramas.

É uma das ferramentas mais importantes da Engenharia de Software.


Diagrama de Casos de Uso

Mostra quem utiliza o sistema.

Cliente

↓

Consultar Saldo

↓

Transferir PIX

↓

Pagar Conta

Diagrama de Classes

Muito usado em Java e C#.

No Mainframe também ajuda a entender modelos de dados.

Cliente

Nome

CPF

Saldo

↓

Conta

Diagrama de Sequência

Mostra quem conversa com quem.

Exemplo:

Cliente

↓

API

↓

CICS

↓

COBOL

↓

Db2

↓

Resposta

Hoje é um dos diagramas mais utilizados em integrações REST.


Diagrama de Atividades

É semelhante ao fluxograma, porém mais poderoso.

Permite representar:

  • paralelismo;

  • sincronização;

  • múltiplos caminhos;

  • exceções.


Diagrama de Estados

Mostra a vida de um objeto.

Exemplo:

Novo Pedido

↓

Pago

↓

Separado

↓

Enviado

↓

Entregue

4. DFD (Data Flow Diagram)

Muito popular nas décadas de 1980 e 1990.

Mostra como os dados circulam.

Cliente

↓

Sistema

↓

Arquivo VSAM

↓

Relatório

Ainda é encontrado em documentação antiga de Mainframe.


5. DER (Diagrama Entidade-Relacionamento)

Fundamental para Db2.

Mostra as tabelas e seus relacionamentos.

CLIENTE

↓

CONTA

↓

MOVIMENTO

↓

CARTÃO

É praticamente obrigatório para quem trabalha com banco de dados.


6. Matriz CRUD

CRUD significa:

  • Create

  • Read

  • Update

  • Delete

Ela responde:

Quem cria?

Quem consulta?

Quem altera?

Quem exclui?

Exemplo:

ProgramaClienteContaMovimento
COB001CRC
COB002RUR

Muito utilizada em sistemas bancários.


7. Árvore de Decisão

Excelente para regras complexas.

Exemplo:

Cliente Premium?

├── Sim

│     ↓

│ Limite Especial

└── Não

      ↓

Analisar Score

Muito usada em seguros.


8. Tabela de Decisão

Quando existem dezenas de regras.

Exemplo:

SalárioScoreAprovação
AltoAltoSim
AltoBaixoRevisão
BaixoAltoRevisão
BaixoBaixoNão

Muito comum em crédito bancário.


9. Wireframe

Antes da tela existir.

Desenha a interface.

+---------------------+

Conta: __________

Senha: _________

[ Entrar ]

+---------------------+

Muito usado por UX.


10. Protótipo

Vai além do Wireframe.

Já possui aparência próxima da tela final.

Ferramentas:

  • Figma

  • Adobe XD

  • Balsamiq


11. Story Mapping

Muito usado em Scrum.

Cliente

↓

Login

↓

Consultar

↓

Transferir

↓

Pagar

↓

Investir

Ajuda a organizar entregas.


12. User Story

Em vez de documentos enormes.

Exemplo:

Como cliente,

desejo consultar meu saldo,

para saber quanto dinheiro tenho disponível.

Hoje praticamente todo projeto ágil utiliza User Stories.


13. Jornada do Usuário (User Journey)

Mostra toda a experiência.

Aplicativo

↓

Login

↓

PIX

↓

Comprovante

↓

Logout

Ajuda a descobrir dificuldades.


14. Arquitetura de Sistemas

Mostra a visão macro.

Aplicativo

↓

API Gateway

↓

z/OS Connect

↓

CICS

↓

COBOL

↓

Db2

↓

MQ

Muito usada em arquiteturas híbridas.


15. Arquitetura Física

Mostra servidores.

Internet

↓

Firewall

↓

API

↓

IBM Z

↓

Storage

Utilizada pela infraestrutura.


16. Mapa de Integrações

Mostra quem conversa com quem.

SAP

↓

MQ

↓

COBOL

↓

Db2

↓

CRM

↓

PIX

Muito comum em grandes bancos.


17. Diagrama de Deploy

Mostra onde cada aplicação será executada.

LPAR A

↓

CICS

↓

COBOL

↓

Db2

↓

MQ

18. Modelo C4

Uma abordagem moderna para arquitetura de software, dividida em quatro níveis:

  • Contexto: como o sistema se relaciona com usuários e outros sistemas.

  • Contêineres: aplicações, bancos de dados, APIs e serviços.

  • Componentes: módulos internos de cada aplicação.

  • Código: classes, programas ou componentes específicos.

É muito útil para documentar ambientes híbridos envolvendo IBM Z, microsserviços e nuvem.


Ferramentas utilizadas

Um analista normalmente utiliza:

  • Microsoft Visio

  • diagrams.net (Draw.io)

  • Lucidchart

  • IBM Blueworks Live

  • Enterprise Architect (Sparx Systems)

  • Visual Paradigm

  • Figma

  • Balsamiq

  • Bizagi Modeler

  • Microsoft PowerPoint

  • Microsoft Word

  • Confluence

  • Jira

  • Mermaid

  • PlantUML


O que um Analista Mainframe usa no dia a dia?

Em um banco de grande porte, é comum encontrar esta combinação:

  • Levantamento de requisitos → User Stories, Casos de Uso e entrevistas.

  • Modelagem do processo → BPMN.

  • Regras de negócio → Tabelas de Decisão e Árvores de Decisão.

  • Modelagem de dados → DER.

  • Integrações → Diagramas de Sequência e Mapas de Integração.

  • Arquitetura → Modelo C4 e Diagramas de Arquitetura.

  • Lógica dos programas COBOL → Fluxogramas e Diagramas de Atividades.

  • Documentação → Confluence, Word ou ferramentas corporativas.

Uma sugestão de roteiro de estudos

Para quem deseja se tornar um Analista Mainframe completo, uma boa sequência é:

  1. Fluxogramas

  2. Algoritmos e Pseudocódigo

  3. BPMN

  4. UML (Casos de Uso, Atividades e Sequência)

  5. DER e modelagem de dados

  6. Tabelas e Árvores de Decisão

  7. Arquitetura de Software (C4)

  8. COBOL, CICS, Db2, JCL e MQ

  9. APIs REST, z/OS Connect e integrações

  10. Métodos Ágeis (Scrum, User Stories e Story Mapping)

Essa combinação permite conversar com usuários de negócio, desenvolvedores COBOL, DBAs, arquitetos e equipes de infraestrutura, cobrindo praticamente todo o ciclo de desenvolvimento de software em ambientes IBM Mainframe modernos.

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...