☕ 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 Melhoria Contínua. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Melhoria Contínua. Mostrar todas as mensagens

quarta-feira, 18 de março de 2020

Boy Scout Rules : Quando um Programador COBOL Descobriu que a Matrix Não Era Mantida por Heróis… Mas por Pequenas Melhorias Feitas Todos os Dias

 

Bellacosa Mainframe apresenta boy scout rules

☕ Um Café no Bellacosa Mainframe

Boy Scout Rules sem Mistérios

Quando um Programador COBOL Descobriu que a Matrix Não Era Mantida por Heróis… Mas por Pequenas Melhorias Feitas Todos os Dias

"Você não precisa reescrever a Matrix inteira. Basta deixá-la um pouco melhor cada vez que passar por ela."


Prólogo — A Sala Esquecida da Matrix

Após anos atravessando corredores infinitos da Matrix, Neo começou a notar algo estranho.

Algumas partes pareciam modernas.

Outras lembravam sistemas criados décadas antes.

Havia corredores impecáveis.

Outros estavam escuros.

Cabos pendurados.

Portas enferrujadas.

Painéis quebrados.

Neo perguntou ao Arquiteto:

— Quem deixou isso assim?

O Arquiteto respondeu:

— Ninguém.

Neo estranhou.

— Como assim ninguém?

O Oráculo apareceu carregando uma velha lanterna.

Caminhou lentamente por um corredor abandonado.

Pegou um cabo solto.

Prendeu-o corretamente.

Apagou uma mensagem de erro antiga.

Organizou alguns arquivos.

Depois continuou andando.

Neo perguntou:

— Isso resolve o problema da Matrix?

Ela respondeu:

— Não.

Resolve apenas este corredor.

Neo insistiu:

— Então por que perder tempo?

Ela sorriu.

— Porque milhares de pessoas fizeram exatamente isso durante muitos anos.

É por isso que a Matrix ainda funciona.

Naquele instante Neo compreendeu a Boy Scout Rule.


O que é a Boy Scout Rule?

A regra é extremamente simples.

"Always leave the campground cleaner than you found it."

Em português.

"Sempre deixe o acampamento mais limpo do que você encontrou."

Na Engenharia de Software ela foi adaptada para:

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

Não significa reescrever tudo.

Significa realizar pequenas melhorias sempre que tocar em um trecho de código.


A origem da regra

A inspiração vem do movimento dos Escoteiros (Boy Scouts of America).

Existe uma orientação tradicional ensinada aos jovens escoteiros:

Quando abandonar um acampamento.

Deixe-o melhor do que estava.

Mesmo que isso signifique apenas:

  • recolher um papel;

  • apagar uma fogueira;

  • organizar algumas pedras.

Na Engenharia de Software, Robert C. Martin (Uncle Bob) popularizou essa ideia como um hábito de desenvolvimento.


Matrix explica perfeitamente

Imagine que milhões de pessoas percorrem diariamente os corredores da Matrix.

Cada uma realiza apenas uma pequena melhoria.

No fim do ano.

Toda a Matrix está melhor.

Agora imagine o contrário.

Todos dizem:

"Não fui eu quem bagunçou."

Resultado.

O sistema envelhece rapidamente.


O COBOL vive exatamente esse cenário

Existem aplicações bancárias com:

  • trinta;

  • quarenta;

  • cinquenta anos.

Nenhuma equipe consegue parar tudo para reescrever esses sistemas.

Mas milhares de pequenas melhorias acumuladas durante décadas fazem enorme diferença.


O efeito da melhoria contínua

Imagine um programa COBOL.

Você entra apenas para alterar uma regra tributária.

Durante a alteração percebe:

  • variável mal nomeada;

  • comentário desatualizado;

  • código morto;

  • PERFORM desnecessário;

  • IF duplicado.

Você corrige.

Leva cinco minutos.

O próximo programador agradecerá.


Matrix Reloaded

Neo observa Zion sendo mantida.

Não existem apenas engenheiros brilhantes.

Existem centenas de pessoas realizando pequenas manutenções diariamente.

É isso que mantém a cidade viva.


O efeito psicológico

Existe um pensamento perigoso.

"Isso não é problema meu."

A Boy Scout Rule combate exatamente essa mentalidade.

Ela transforma todos em responsáveis pela qualidade coletiva.


O Programador COBOL Padawan

Você abre um programa.

Encontra:

MOVE ZERO TO WS-X.
MOVE ZERO TO WS-Y.
MOVE ZERO TO WS-Z.

Poderia deixar.

Mas decide organizar.

Talvez usar inicialização mais clara.

Talvez melhorar nomes.

Talvez remover duplicações.

Nenhuma dessas mudanças altera o negócio.

Mas todas melhoram a manutenção.


O Agente Smith adora abandono

Smith não destrói sistemas apenas criando bugs.

Ele espera.

Espera que pequenas sujeiras se acumulem.

Comentários antigos.

Variáveis confusas.

Código morto.

Layouts duplicados.

Depois de alguns anos.

A manutenção torna-se um pesadelo.


Um exemplo inspirado na Matrix

Imagine uma escada.

Cada pessoa deixa uma pequena pedra sobre um degrau.

Nenhuma pedra parece importante.

Anos depois.

A escada torna-se intransitável.

Agora imagine o contrário.

Cada pessoa remove uma pedra.

A escada permanece limpa para sempre.


Pequenas melhorias fazem enorme diferença

Você pode:

  • alinhar código;

  • renomear variáveis;

  • remover comentários incorretos;

  • apagar código morto;

  • dividir um PERFORM enorme;

  • atualizar documentação;

  • melhorar mensagens de erro.

Nada disso muda o negócio.

Mas muda profundamente a qualidade.


O impacto no Mainframe

No ambiente IBM Z encontramos frequentemente:

  • programas COBOL escritos por dezenas de equipes ao longo de décadas;

  • COPYBOOKs antigos;

  • comentários que não correspondem mais ao código;

  • JCLs com parâmetros obsoletos;

  • procedimentos duplicados.

Esperar uma reescrita completa é, muitas vezes, inviável.

A Boy Scout Rule oferece um caminho realista: evoluir continuamente.


Curiosidade

Muitas empresas perceberam que a maior parte da dívida técnica não nasce de grandes erros arquiteturais.

Ela surge de pequenas negligências repetidas diariamente.

Uma variável mal nomeada hoje.

Um comentário errado amanhã.

Uma duplicação na semana seguinte.

Meses depois.

Temos um sistema difícil de manter.


Atenção!

Boy Scout Rule não significa:

Refatorar o sistema inteiro enquanto corrige um pequeno bug.

Esse é um erro bastante comum.


A diferença

Boa prática

Corrigir um pequeno problema relacionado ao trecho alterado.


Exagero

Transformar uma correção simples em um projeto de seis meses.


Matrix e o Oráculo

O Oráculo nunca tenta reconstruir toda a Matrix.

Ela influencia pequenas decisões.

Uma conversa.

Uma escolha.

Uma melhoria.

No final.

Essas pequenas ações mudam toda a história.


Um exemplo COBOL

Antes.

IF WS-A = "S"
    MOVE "A" TO WS-X
ELSE
    MOVE "B" TO WS-X
END-IF

Você percebe que o comentário acima diz:

Calcula imposto.

Mas o código não calcula imposto algum.

Atualiza o comentário.

Parece pequeno.

Mas evita confusão futura.


Outro exemplo

Você encontra:

WS-TEMP1
WS-TEMP2
WS-TEMP3

Durante a manutenção.

Renomeia para:

WS-SALDO-ATUAL
WS-LIMITE-CREDITO
WS-VALOR-PARCELA

Nenhuma regra mudou.

Mas a legibilidade aumentou enormemente.


Ferramentas ajudam

Hoje possuímos excelentes ferramentas para apoiar pequenas melhorias contínuas.

Entre elas:

  • IBM ADDI.

  • SonarQube.

  • COBOL Check.

  • IBM Developer for z/OS.

  • IBM Z Open Editor.

  • Git.

  • Pull Requests.

  • Code Review.

  • IA Generativa.

Elas ajudam a identificar pontos simples que podem ser aprimorados sem grandes impactos.


O papel da IA

A Inteligência Artificial tornou-se uma excelente parceira da Boy Scout Rule.

Ela consegue sugerir:

  • nomes melhores;

  • simplificação de IFs;

  • remoção de código morto;

  • reorganização de PERFORMs;

  • comentários mais claros;

  • duplicações.

Mas a decisão continua sendo humana.

Nem toda sugestão melhora o sistema.


Os riscos

Ignorar pequenas melhorias produz:

  • crescimento da dívida técnica;

  • manutenção lenta;

  • onboarding difícil;

  • maior número de bugs;

  • baixa produtividade.


Erros clássicos

  • "Depois alguém arruma."

  • "Sempre foi assim."

  • "Não vale a pena."

  • "Não é minha responsabilidade."

  • "Funciona, então deixa."

Essas frases envelhecem sistemas muito rapidamente.


Boas práticas

  • Corrigir pequenos problemas ao modificar um módulo.

  • Atualizar comentários inconsistentes.

  • Remover código morto.

  • Melhorar nomes de variáveis.

  • Eliminar duplicações simples.

  • Organizar PERFORMs.

  • Registrar decisões importantes.


Boy Scout Rule conversa com toda esta série

Esse princípio é praticamente um elo entre todos os conceitos estudados até aqui.

Ele ajuda a combater:

  • Technical Debt, reduzindo o acúmulo de dívida técnica.

  • Lava Flow, removendo pequenos trechos abandonados.

  • Spaghetti Code, reorganizando gradualmente o código.

  • Big Ball of Mud, promovendo pequenas melhorias estruturais.

  • DRY, eliminando duplicações encontradas durante a manutenção.

  • KISS, simplificando trechos excessivamente complexos.

  • YAGNI, removendo funcionalidades desnecessárias.

  • Murphy's Law, fortalecendo validações e tratamentos de erro.

  • SOLID, aproximando o código de responsabilidades mais claras.

Em vez de esperar um grande projeto de modernização, a qualidade cresce continuamente.


Aplicabilidade

A Boy Scout Rule pode ser aplicada em praticamente qualquer área da engenharia:

  • COBOL.

  • CICS.

  • Db2.

  • JCL.

  • REXX.

  • Java.

  • Python.

  • APIs.

  • DevOps.

  • Infraestrutura como Código.

  • Documentação.

  • Pipelines CI/CD.

  • Playbooks Ansible.

Ela não depende de tecnologia.

Depende de cultura.


O ensinamento do Oráculo

O Oráculo leva Neo até um velho jardim dentro da Matrix.

O chão está coberto por folhas.

Ela entrega uma pequena vassoura.

Neo pergunta:

— Vamos limpar tudo?

Ela responde:

— Não.

Limpe apenas o caminho por onde passaremos hoje.

Horas depois.

Outras pessoas fazem o mesmo em outros caminhos.

Dias depois.

O jardim inteiro está limpo.

Sem que ninguém tenha realizado uma grande reforma.

Ela olha para Neo e diz:

"Quem espera pela grande transformação normalmente não muda nada. Quem melhora um pequeno detalhe todos os dias acaba transformando o mundo inteiro."


Lições para um Programador COBOL Padawan

Durante sua carreira você herdará programas escritos por profissionais que talvez nunca conheça.

Alguns serão excelentes.

Outros nem tanto.

Resista à tentação de criticar quem veio antes.

Lembre-se de que aqueles sistemas sobreviveram porque alguém os manteve funcionando.

Sua missão agora é continuar essa história.

Sempre que modificar um programa, pergunte:

  • Posso melhorar o nome desta variável?

  • Posso remover este trecho morto?

  • Este comentário ainda faz sentido?

  • Posso reduzir esta duplicação?

  • Posso tornar este IF mais legível?

  • Posso registrar melhor esta decisão?

Se a resposta for "sim" e o risco for baixo, faça a melhoria.

A próxima pessoa que abrir esse código talvez seja você mesmo daqui a cinco anos.


Curiosidades

A Boy Scout Rule influenciou fortemente práticas modernas como:

  • Clean Code, de Robert C. Martin.

  • Refatoração Contínua, popularizada por Martin Fowler.

  • Trunk-Based Development, incentivando pequenas mudanças frequentes.

  • Continuous Integration, reduzindo grandes refatorações.

  • Code Review, estimulando melhorias incrementais.

  • InnerSource, promovendo responsabilidade coletiva sobre o código.

Todas compartilham uma mesma visão:

qualidade é construída diariamente, não apenas em grandes projetos de modernização.


Conclusão — A Matrix Não Foi Salva em um Único Dia

Neo derrotou Smith em uma batalha decisiva.

Mas a Matrix não permaneceu estável por causa daquele único momento.

Ela continuou existindo porque milhares de pequenas correções, ajustes e melhorias foram realizadas continuamente ao longo do tempo.

Na Engenharia de Software acontece exatamente o mesmo.

A Boy Scout Rule nos ensina que grandes sistemas não envelhecem bem por acaso. Eles envelhecem bem porque cada desenvolvedor deixa uma pequena contribuição positiva sempre que toca no código.

Para um Programador COBOL trabalhando em IBM Z, essa filosofia é especialmente poderosa. Não é necessário esperar um projeto milionário de modernização para melhorar um sistema legado. Pequenas melhorias consistentes, feitas com responsabilidade e baixo risco, acumulam um enorme ganho de qualidade ao longo dos anos.

No universo Bellacosa Mainframe existe uma máxima que certamente estaria escrita na entrada da oficina de manutenção da Matrix:

"Você talvez não tenha tempo para reconstruir toda a Matrix hoje. Mas sempre terá tempo para deixar um único corredor melhor do que o encontrou. E quando milhares de engenheiros fizerem o mesmo, a própria Matrix parecerá nova sem jamais ter sido reconstruída."

Porque o verdadeiro legado de um engenheiro não é apenas o código que ele escreve.

É o código que ele entrega em condições melhores para a próxima geração de Padawans.

quinta-feira, 10 de maio de 2018

Lean vs Kaizen vs Six Sigma : O Que Todo Programador COBOL Padawan

 

Bellacosa Mainframe lean kaizen e six sigma 

☕ Um Café no Bellacosa Mainframe

Lean vs Kaizen vs Six Sigma

O Que Todo Programador COBOL Padawan Precisa Saber Sobre as Três Filosofias que Mantêm Bancos, Mainframes e Grandes Empresas Funcionando Há Décadas

"Qualidade não acontece por acaso. Ela é construída todos os dias, medida continuamente e aperfeiçoada infinitamente."

Quando alguém começa a estudar melhoria contínua, normalmente encontra três nomes que parecem sinônimos:

  • Lean

  • Kaizen

  • Six Sigma

Mas eles não são a mesma coisa.

Na verdade, eles atacam problemas completamente diferentes.

É como administrar um IBM Z.

Você pode:

  • eliminar processamento desnecessário;

  • melhorar continuamente seus procedimentos;

  • ou reduzir erros críticos em produção.

Cada abordagem resolve um tipo específico de problema.

A grande descoberta das empresas mais eficientes do mundo foi perceber que não existe competição entre Lean, Kaizen e Six Sigma. Existe complementaridade.

Toyota, IBM, GE, Amazon, Boeing, Intel e praticamente toda empresa de classe mundial utiliza uma combinação dessas filosofias.

Vamos entender por quê.


Antes de tudo...

Imagine um sistema bancário rodando em COBOL.

Durante um processamento batch noturno existem três problemas possíveis.

Problema 1

O processamento demora 8 horas.

Não existem erros.

Tudo funciona.

Mas demora demais.

Esse é um problema de...

Lean.


Problema 2

O processamento funciona hoje.

Mas amanhã alguém encontra uma pequena melhoria.

Depois outra.

Depois outra.

Todos colaboram.

Esse é um problema de...

Kaizen.


Problema 3

O processamento termina em 2 horas.

Mas a cada 5 dias aparece um ABEND diferente.

Ou registros inconsistentes.

Ou valores incorretos.

Esse é um problema de...

Six Sigma.

Observe que são problemas completamente diferentes.


Lean

A arte de eliminar desperdícios

Lean nasceu no Sistema Toyota de Produção.

Seu objetivo é extremamente simples.

Fazer mais utilizando menos.

Menos:

  • tempo

  • estoque

  • movimentação

  • espera

  • retrabalho

  • burocracia

  • custo

Lean pergunta constantemente:

"Existe alguma atividade aqui que não agrega valor ao cliente?"

Se a resposta for sim...

Ela deve ser eliminada.


O que é desperdício?

No Lean, desperdício recebe o nome japonês:

Muda (無駄)

Taiichi Ohno identificou sete desperdícios clássicos, depois ampliados para oito.

1. Superprodução

Produzir antes da hora.

Exemplo Mainframe:

Gerar dezenas de relatórios que ninguém lê.


2. Espera

Jobs aguardando recursos.

Exemplo:

Batch esperando dataset.


3. Transporte

Mover informações desnecessariamente.

Exemplo:

Transferências repetidas entre ambientes.


4. Processamento excessivo

Fazer mais do que o necessário.

Exemplo:

Executar SORTs redundantes.


5. Estoque

Acumular trabalho.

Exemplo:

Milhares de requisições aguardando aprovação.


6. Movimentação

Pessoas gastando energia desnecessária.

Exemplo:

Operadores alternando entre dezenas de painéis.


7. Defeitos

Retrabalho.

Exemplo:

ABENDs.

Correções.

Reprocessamentos.


8. Talento desperdiçado

Talvez o maior desperdício moderno.

Ter profissionais excelentes realizando tarefas mecânicas.


Lean no Mainframe

Imagine um batch.

JOB A

↓

SORT

↓

SORT

↓

SORT

↓

COPY

↓

COPY

↓

REPORT

Após análise...

Descobre-se que dois SORTs são desnecessários.

Resultado:

  • menos CPU

  • menos I/O

  • menos tempo

  • menos custo

Isso é Lean.


Kaizen

A filosofia do "sempre um pouco melhor"

Kaizen significa literalmente:

改善

Kai = mudança

Zen = melhor

Ou seja...

"Mudança para melhor."

Mas existe um detalhe importante.

Kaizen não busca revoluções.

Busca pequenas melhorias.

Todos os dias.


O poder das pequenas melhorias

Imagine melhorar um processo apenas 1% por dia.

Parece insignificante.

Mas ao longo do tempo...

A melhoria composta torna-se gigantesca.

É exatamente isso que tornou a Toyota uma referência mundial.


Kaizen não depende da chefia

Esse é um dos maiores erros de interpretação.

Muitos acreditam que melhoria depende do gerente.

Kaizen diz justamente o contrário.

Todo colaborador deve sugerir melhorias.

Desde:

  • estagiário

  • operador

  • analista

  • desenvolvedor

  • arquiteto

  • diretor

Todos participam.


Exemplo Mainframe

Um desenvolvedor COBOL percebe que:

Todos os programas repetem o mesmo código de validação.

Ele cria uma COPYBOOK.

Agora:

Antes:

200 linhas repetidas

Depois

COPY VALIDA-CPF.

Pequena melhoria.

Grande impacto.

Isso é Kaizen.


Six Sigma

A ciência da redução da variabilidade

Enquanto Lean pergunta:

"Existe desperdício?"

Six Sigma pergunta:

"Por que o processo produz resultados diferentes?"

A palavra-chave aqui é:

Variabilidade.


Imagine um caixa eletrônico.

Ele deve entregar exatamente:

R$100

Sempre.

Não:

R$99

Nem:

R$101

Nem:

Erro de leitura.

Nem:

Travamento.

Nem:

Falha ocasional.

Processos críticos precisam ser previsíveis.

É isso que Six Sigma busca.


O significado de Sigma

Sigma (σ) representa o desvio padrão.

Quanto menor a variação...

Mais previsível o processo.

Six Sigma significa atingir um nível extremamente alto de qualidade.

Na prática, a meta clássica é cerca de 3,4 defeitos por milhão de oportunidades (DPMO) sob premissas específicas do método.


DMAIC

Six Sigma utiliza um roteiro muito conhecido.

D — Define

Definir o problema.


M — Measure

Medir.

Sem dados...

Não existe Six Sigma.


A — Analyze

Descobrir a causa raiz.


I — Improve

Implementar melhorias.


C — Control

Garantir que o problema não volte.


Six Sigma no Mainframe

Imagine um sistema financeiro.

De cada

10 milhões

de transações...

120 apresentam erro.

O objetivo é descobrir:

Por quê?

Em qual módulo?

Qual horário?

Qual banco?

Qual rotina?

Qual variável?

Six Sigma vive de estatística.

Não de opiniões.


Lean x Kaizen x Six Sigma

LeanKaizenSix Sigma
Remove desperdíciosMelhoria contínuaRemove variabilidade
Mais velocidadeMais evoluçãoMais qualidade
FluxoCulturaEstatística
EficiênciaPessoasDados
CustosEngajamentoPrecisão

Uma analogia perfeita

Imagine uma rodovia.

Lean:

Retira congestionamentos.

Kaizen:

Melhora a estrada diariamente.

Six Sigma:

Garante que nenhum carro saia da pista.

São problemas diferentes.


Como IBM Mainframe utiliza essas filosofias?

Embora muitas vezes associadas à indústria automotiva, essas abordagens são extremamente relevantes em ambientes IBM Z.

Lean

  • redução de consumo de CPU

  • otimização de JCL

  • eliminação de etapas redundantes

  • redução de I/O

  • tuning de SQL no Db2

  • consolidação de jobs


Kaizen

  • padronização de COPYBOOKs

  • melhoria contínua de procedimentos operacionais

  • revisão de convenções de nomenclatura

  • documentação viva

  • automação incremental com REXX, Ansible ou Zowe


Six Sigma

  • redução de ABENDs

  • análise estatística de falhas

  • monitoramento de SLAs

  • controle de incidentes

  • melhoria da confiabilidade em sistemas financeiros

  • uso de métricas de qualidade em testes e produção


Onde entram os Core Quality Tools?

As três filosofias utilizam diversas ferramentas de apoio.

Por exemplo:

  • Lean: Value Stream Mapping (VSM), Kanban, 5S, SMED, Heijunka, Takt Time.

  • Kaizen: PDCA, 5W2H, Brainstorming, A3 Report, Gemba Walk, Círculos de Qualidade.

  • Six Sigma: DMAIC, Controle Estatístico de Processo (SPC), Cartas de Controle, Histograma, Diagrama de Pareto, Análise de Capabilidade, DOE, MSA e FMEA.

Os 7 Core Quality Tools (Fluxograma, Folha de Verificação, Pareto, Ishikawa, Histograma, Diagrama de Dispersão e Carta de Controle) são amplamente utilizados em Kaizen e Six Sigma, fornecendo dados para análise e melhoria.


A falsa competição

Muitas empresas perguntam:

"Devemos implantar Lean ou Six Sigma?"

A pergunta correta é:

"Qual problema queremos resolver?"

Se há desperdício...

Use Lean.

Se falta cultura de melhoria...

Use Kaizen.

Se há muitos defeitos...

Use Six Sigma.


Lean Six Sigma

Foi justamente por perceber que as metodologias se complementavam que surgiu o Lean Six Sigma.

Lean acelera.

Six Sigma estabiliza.

Kaizen garante que a evolução nunca pare.

É por isso que organizações maduras combinam as três abordagens em seus programas de Excelência Operacional.


A grande lição para um Programador COBOL Padawan

No universo IBM Mainframe, não basta escrever programas que funcionem. É preciso escrever programas eficientes, evolutivos e confiáveis.

Pense nessas três filosofias como três lentes complementares:

  • Lean pergunta: "Posso fazer isso com menos recursos e menos desperdício?"

  • Kaizen pergunta: "O que posso melhorar hoje, mesmo que seja apenas 1%?"

  • Six Sigma pergunta: "Como garantir que esse processo produza o mesmo resultado correto, todas as vezes?"

Os sistemas bancários, de seguros, telecomunicações e governo executados em IBM Z permanecem relevantes há décadas porque incorporam esses princípios. A combinação entre eficiência operacional, melhoria contínua e controle rigoroso da qualidade é o que permite processar milhões de transações diariamente com alta disponibilidade e confiabilidade.

No fim, a verdadeira excelência operacional não surge da escolha entre Lean, Kaizen ou Six Sigma, mas da capacidade de aplicar cada abordagem no momento certo. Empresas que fazem isso constroem processos mais rápidos, equipes mais engajadas e sistemas mais robustos — exatamente as características esperadas dos ambientes críticos onde o Mainframe continua sendo referência mundial.

quarta-feira, 9 de maio de 2018

Os 5 Core Quality Tools na Stack IBM Mainframe

 

Bellacosa Mainframe e as 5 core quality tools

☕ Um Café no Bellacosa Mainframe

Os 5 Core Quality Tools na Stack IBM Mainframe

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Como Construir Sistemas Bancários que Não Podem Falhar

"A qualidade não nasce durante o teste. Ela nasce muito antes da primeira linha de código ser compilada."

Quando um desenvolvedor COBOL inicia sua jornada no mundo do IBM Mainframe, normalmente acredita que qualidade significa apenas "o programa compilou sem erro" ou "o teste passou".

Essa visão funciona para pequenos projetos.

Mas desaparece completamente quando você entra em uma instituição financeira, seguradora, empresa aérea ou governo.

Ali, uma única linha de COBOL pode movimentar bilhões de reais diariamente.

Uma alteração aparentemente simples em um programa de cálculo de juros pode impactar milhões de clientes.

Uma mudança em um COPYBOOK pode afetar centenas de programas.

Um campo alterado em um registro VSAM pode quebrar integrações com CICS, DB2, MQ, IMS e dezenas de aplicações.

É por isso que grandes empresas não dependem apenas da habilidade do programador.

Elas dependem de processos.

Esses processos são conhecidos mundialmente como Core Quality Tools.

Embora tenham surgido na indústria automotiva através da AIAG (Automotive Industry Action Group) e hoje façam parte da IATF 16949, seus princípios são universais.

Na prática, eles representam exatamente aquilo que faz um ambiente IBM Z operar durante décadas com níveis de disponibilidade próximos de 99,9999%.

E talvez você nunca tenha percebido...

Grande parte da cultura de desenvolvimento Mainframe já segue esses princípios há décadas.

Vamos descobrir como.


O verdadeiro significado de qualidade

Existe uma diferença enorme entre:

"Meu programa funciona."

e

"Meu sistema continuará funcionando pelos próximos vinte anos."

Essa diferença chama-se engenharia de qualidade.

O Mainframe sempre foi pioneiro nisso.

Enquanto muitas plataformas modernas seguem o famoso:

"Deploy rápido e corrige depois."

O Mainframe tradicionalmente segue outra filosofia:

"Planeje tanto que quase não seja necessário corrigir."

Parece exagero?

Pense em um banco.

Imagine que durante o fechamento financeiro do mês:

  • um JOB falha

  • uma transação CICS trava

  • um cálculo de imposto gera valores incorretos

  • um débito é executado duas vezes

Agora multiplique isso por:

  • dez milhões de clientes.

A qualidade deixa de ser uma característica técnica.

Ela passa a ser um requisito de sobrevivência.


A fábrica de software também é uma fábrica

Quando olhamos para uma montadora, vemos:

  • matéria-prima

  • máquinas

  • operadores

  • inspeções

  • manutenção

  • produção

Agora olhe para um ambiente Mainframe.

Temos praticamente a mesma estrutura.

Na indústriaNo Mainframe
Matéria-primaRequisitos
ProjetoArquitetura
Linha de produçãoPipeline DevOps
MáquinasLPARs IBM Z
FerramentasCOBOL, JCL, DB2, CICS
InspeçãoTestes
Controle estatísticoMonitoramento SMF/RMF
Produto finalAplicação em produção

Mudam os nomes.

A engenharia continua exatamente igual.


APQP

Planejamento Avançado da Qualidade

O primeiro erro de um desenvolvedor júnior é acreditar que programação começa no editor COBOL.

Não começa.

Começa muito antes.

Imagine que o banco deseja criar uma nova modalidade de PIX internacional.

Antes de alguém escrever:

MOVE VALOR TO WS-TOTAL.

centenas de decisões já foram tomadas.

Será utilizado DB2?

VSAM?

MQ?

CICS?

Batch?

Online?

REST?

z/OS Connect?

Quais campos serão adicionados?

Quem fará rollback?

Como será a auditoria?

Qual será o SLA?

Como será a recuperação após desastre?

Tudo isso faz parte do equivalente Mainframe do APQP.


O APQP na prática

Em grandes empresas essa etapa envolve:

  • levantamento de requisitos

  • arquitetura corporativa

  • análise de impacto

  • padrões COBOL

  • convenções JCL

  • segurança RACF

  • definição de índices DB2

  • planejamento de backup

  • definição de monitoramento

  • cronograma

Observe algo interessante.

Nenhuma linha de código foi escrita.

Mesmo assim já existe enorme trabalho.

É exatamente isso que reduz defeitos.


Um exemplo real

Imagine alterar um programa responsável pelo cálculo do FGTS.

Sem planejamento:

"É só incluir um campo."

Na prática:

Esse campo pode existir em:

  • COPYBOOK

  • DB2

  • VSAM

  • MQ

  • CICS

  • telas BMS

  • APIs REST

  • batch noturno

  • relatórios

  • ETL

  • Data Warehouse

Uma alteração pode atingir centenas de programas.

O APQP identifica isso antes.


FMEA

Failure Mode and Effects Analysis

Se existe uma ferramenta que todo desenvolvedor deveria aprender, é esta.

O FMEA faz uma pergunta simples:

"O que pode dar errado?"

Mas a resposta nunca é simples.


Exemplo COBOL

Programa:

PAGTO001

Função:

Efetuar pagamento.

O programador pensa:

"O código está certo."

O FMEA pergunta:

E se o arquivo VSAM estiver cheio?

E se ocorrer DEADLOCK no DB2?

E se o MQ estiver indisponível?

E se o cliente enviar CPF inválido?

E se faltar espaço no SORTWK?

E se ocorrer S0C7?

E se houver rollback?

E se duas transações atualizarem o mesmo registro?

Percebe?

O FMEA obriga a pensar como um arquiteto.


Exemplo prático

Modo de falha

Registro duplicado.

Efeito

Cliente recebe pagamento em dobro.

Consequência

Prejuízo financeiro.

Severidade

10

Ocorrência

4

Detecção

3

Risco elevado.

Ação recomendada

Implementar chave única.

Controle transacional.

Logs.

Rollback.

Auditoria.


O FMEA e os ABENDs

Os ABENDs representam excelente fonte para alimentar um FMEA.

Por exemplo:

S0C7

Pode indicar:

dados inválidos.

S806

Programa inexistente.

SB37

Dataset sem espaço.

S322

Timeout.

Cada um desses eventos deveria gerar perguntas:

Como evitar?

Como detectar antes?

Como recuperar automaticamente?


MSA

Measurement System Analysis

Imagine um gerente perguntar:

"Nosso sistema está rápido?"

Resposta:

"Mais ou menos."

Isso não serve.

No Mainframe tudo precisa ser medido.

Mas...

Quem garante que a medição está correta?

Esse é exatamente o papel do MSA.


No mundo IBM Z

O equivalente do MSA inclui:

SMF

RMF

OMEGAMON

IBM Z IntelliMagic

IBM Instana

Grafana

Prometheus

Z APM Connect

Todos precisam fornecer dados confiáveis.


Imagine.

Uma ferramenta informa:

CPU 95%.

Outra:

CPU 52%.

Qual está correta?

Sem confiabilidade na medição não existe gerenciamento.


Gage R&R aplicado ao Mainframe

Na indústria mede-se paquímetro.

No Mainframe mede-se observabilidade.

Por exemplo:

Tempo CICS.

Tempo DB2.

Tempo MQ.

Tempo Batch.

Latência API.

Precisamos validar:

  • consistência

  • repetibilidade

  • precisão


SPC

Statistical Process Control

Esta talvez seja a ferramenta mais próxima do universo dos operadores Mainframe.

Imagine acompanhar diariamente:

Quantidade de JOBs.

Tempo médio Batch.

CPU.

IOPS.

Locks DB2.

Tempo CICS.

Uso DASD.

Uso de memória.

Esses indicadores possuem comportamento normal.

Quando começam a fugir do padrão...

Algo está acontecendo.


Exemplo

Um JOB sempre executa em:

7 minutos.

Durante semanas.

Depois:

8

9

10

11

13

15 minutos.

Ainda termina.

Mas existe tendência.

SPC detecta.

O operador investiga.

Descobre:

Novo índice DB2.

Plano alterado.

RUNSTATS desatualizado.

Sem SPC isso só seria descoberto quando o batch atrasasse horas.


PPAP

Production Part Approval Process

Agora imagine o momento mais temido.

Deploy em produção.

O desenvolvedor diz:

"Funciona na homologação."

O gerente pergunta:

"Você tem evidências?"

Entra o equivalente Mainframe do PPAP.


Antes do Go Live

São revisados:

Código COBOL.

Resultados dos testes.

Testes unitários.

Testes integrados.

Performance.

Planos DB2.

EXPLAIN.

SCAN de segurança.

Revisão RACF.

Validação CICS.

JCL.

Rollback.

Documentação.

Plano de retorno.

Checklist CAB.

Aprovação do negócio.

Somente depois ocorre o deploy.


O PPAP moderno

Hoje muitas empresas automatizam esse processo.

Ferramentas:

Git

Jenkins

UrbanCode Deploy

Endevor

Changeman

ISPW

SonarQube

Zowe CLI

Ansible

Cada etapa produz evidências.

O pipeline torna-se um PPAP digital.


A relação entre os cinco

Observe como cada ferramenta depende da anterior.

Sem planejamento...

não existe análise de risco.

Sem análise de risco...

não sabemos o que medir.

Sem medição...

não sabemos controlar.

Sem controle...

não existe aprovação.

É uma cadeia.


Os Core Tools dentro do ciclo de vida do software

Imagine um projeto para modernizar um sistema COBOL de empréstimos.

Durante o planejamento (APQP), arquitetos definem requisitos, integração com APIs via z/OS Connect, impactos em DB2, VSAM e CICS, requisitos de segurança RACF e critérios de desempenho.

Na sequência, realiza-se o FMEA, identificando riscos como indisponibilidade de serviços externos, deadlocks em tabelas DB2, falhas de comunicação com IBM MQ, concorrência entre transações CICS, erros de conversão de dados e possíveis ABENDs. Para cada risco são propostas ações preventivas.

Com o projeto definido, entram em cena as práticas equivalentes ao MSA. Ferramentas como SMF, RMF, OMEGAMON, Instana e Grafana são configuradas para garantir que CPU, I/O, tempos de resposta e utilização de recursos sejam medidos de forma consistente e confiável.

Durante testes e homologação, aplica-se o conceito de SPC. A equipe monitora métricas como tempo médio de execução de jobs, consumo de CPU, quantidade de locks DB2, latência de transações CICS e volume de mensagens em filas MQ. O objetivo é identificar tendências antes que se transformem em incidentes.

Por fim, o PPAP se materializa no processo de aprovação para produção. Revisões de código, testes automatizados, análise estática, validação de planos DB2, documentação, plano de rollback, aprovação da CAB (Change Advisory Board) e conformidade com normas corporativas garantem que o software esteja apto para operar em produção com segurança.


A Qualidade como Cultura

O maior ensinamento dos Core Tools não é preencher formulários.

É desenvolver uma forma de pensar.

Um bom programador pergunta:

"Como faço isso funcionar?"

Um excelente engenheiro pergunta:

  • Como isso pode falhar?

  • Como detectarei a falha?

  • Como evitarei que ela ocorra novamente?

  • Como monitorarei esse comportamento ao longo do tempo?

  • Como demonstrarei, com evidências, que o sistema é confiável?

Essa mudança de mentalidade transforma desenvolvedores em arquitetos de soluções resilientes.


O que Todo COBOL Padawan Deve Levar para a Carreira

Se existe uma lição que atravessa décadas de evolução tecnológica, do COBOL ao DevOps, do batch ao cloud híbrido, é que qualidade nunca é um evento; é um processo contínuo.

Os 5 Core Quality Tools mostram que sistemas robustos não são fruto de sorte ou de programadores "geniais". Eles são resultado de planejamento disciplinado, análise de riscos, medições confiáveis, monitoramento estatístico e processos rigorosos de aprovação.

No universo IBM Mainframe, essa filosofia sempre esteve presente. É por isso que aplicações escritas há 30 ou 40 anos continuam processando milhões de transações diariamente com níveis extraordinários de disponibilidade e confiabilidade.

Ao estudar APQP, FMEA, MSA, SPC e PPAP, o COBOL Padawan percebe que essas ferramentas não pertencem apenas à indústria automotiva. Elas representam uma forma universal de construir sistemas críticos: pensar antes de programar, prevenir antes de corrigir, medir antes de decidir, controlar antes que o problema aconteça e liberar para produção apenas quando houver evidências objetivas de que o software está pronto.

No fim das contas, o maior legado da Stack IBM Mainframe talvez não seja apenas sua tecnologia, mas sua cultura de engenharia. Uma cultura em que cada linha de código, cada JCL, cada tabela DB2, cada transação CICS e cada job batch fazem parte de um ecossistema projetado para entregar confiança. E confiança, em sistemas que movimentam bilhões de reais todos os dias, é a mais valiosa das qualidades. Afinal, como costumo dizer aos novos Padawans do Mainframe:

"No IBM Z, qualidade não é um departamento. É uma característica da arquitetura, do processo e da mentalidade de quem escreve cada linha de código."

 

sábado, 2 de janeiro de 2010

O Incidente do Queijo Suíço: Doctor Who, COBOL e o Dia em que Todos os Buracos se Alinharam

Bellacosa Mainframe e o incidente do queijo suico

☕ Um Café no Bellacosa Mainframe

O Incidente do Queijo Suíço: Doctor Who, COBOL e o Dia em que Todos os Buracos se Alinharam

Uma viagem pela TARDIS dos incidentes para entender por que sistemas seguros também falham

Imagine a seguinte manhã.

08:02.

Você chega ao trabalho.

Café na mesa.

TSO aberto.

ISPF funcionando.

Nenhum chamado desesperado.

Nenhum gerente perguntando por que a produção está parada.

Nenhum telefone tocando com aquela frase que todo analista veterano aprendeu a temer:

— Você mexeu em alguma coisa ontem?

Uma manhã perfeita.

Naturalmente, isso significa que alguma coisa terrível está prestes a acontecer.

Às 08:17, um pequeno alerta aparece no monitoramento.

Nada grave.

Às 08:22, outro.

Também aparentemente irrelevante.

Às 08:41, um job termina com RC=04.

Alguém olha.

— RC=04 não é erro.

Tecnicamente, a pessoa está correta.

O que, em informática, às vezes é uma maneira particularmente eficiente de estar completamente errada.

Às 09:06, uma fila começa a crescer.

Às 09:35, um batch demora sete minutos a mais que o normal.

Às 10:12, um operador executa um procedimento alternativo que já havia sido usado outras vezes.

Às 10:46, uma aplicação recebe dados incompletos.

Às 11:03, a primeira reclamação chega.

Às 11:11, cinquenta reclamações.

Às 11:27, alguém pronuncia a palavra que transforma adultos perfeitamente civilizados em personagens de filme-catástrofe:

produção.

E então, em algum lugar do universo, ouvimos o som característico da TARDIS.

VWORP.

VWORP.

VWORP.

Aquela velha cabine policial azul pousa discretamente ao lado de um IBM Z.

A porta se abre.

O Doctor olha para os consoles.

Olha para os operadores.

Olha novamente para os consoles.

E provavelmente diz:

— Fascinante.

Pausa.

— Vocês têm café?

Porque hoje não estamos procurando simplesmente quem errou.

Estamos procurando algo muito mais interessante:

como diversas pequenas falhas conseguiram se alinhar e atravessar todas as defesas do sistema.

Bem-vindo ao Swiss Cheese Model.



🧀 Afinal, o que queijo suíço tem a ver com incidentes?

O chamado Swiss Cheese Model, ou Modelo do Queijo Suíço, foi desenvolvido e popularizado pelo psicólogo britânico James Reason no estudo de erros humanos, acidentes e segurança de sistemas complexos.

A ideia central é brilhantemente simples.

Imagine que uma organização possua várias barreiras destinadas a impedir que alguma coisa ruim aconteça.

Por exemplo:

  • procedimentos;

  • treinamento;

  • validações;

  • testes;

  • segregação de funções;

  • revisão de código;

  • monitoramento;

  • autorização;

  • redundância;

  • backups;

  • controles automáticos.

Cada uma dessas barreiras seria uma fatia de queijo suíço.

O problema?

Nenhuma fatia é perfeita.

Cada uma possui buracos.

Esses buracos representam fragilidades.

Uma pessoa pode estar cansada.

Um procedimento pode estar desatualizado.

Um teste pode não cobrir determinado cenário.

Um alerta pode ter sido configurado incorretamente.

Uma documentação pode ser ambígua.

Um sistema pode permitir determinada operação sem confirmação.

Uma decisão gerencial tomada seis meses atrás pode ter reduzido redundâncias.

Normalmente isso não produz um desastre.

Por quê?

Porque existe outra fatia depois.

E outra.

E outra.

Um operador erra, mas o sistema detecta.

O sistema não detecta, mas a revisão humana percebe.

A revisão não percebe, mas uma validação posterior bloqueia.

A validação falha, mas o monitoramento dispara.

E assim por diante.

O acidente aparece quando, temporariamente, os buracos das diferentes fatias ficam alinhados.

A ameaça atravessa todas as barreiras.

É como se alguém pudesse olhar através de cinco pedaços de queijo e enxergar perfeitamente o outro lado.

Nesse momento:

Houston, nós temos um problema.

Ou, para manter nossa viagem britânica:

Doctor, I think we have a problem.


🌀 A TARDIS pousa antes do incidente

Existe algo especialmente interessante no Swiss Cheese Model.

Ele nos obriga a viajar no tempo.

Quando investigamos um incidente da maneira tradicional, existe uma tendência natural de começar pelo último acontecimento.

O programa apagou o arquivo.

Quem executou?

João.

Caso encerrado.

João apagou o arquivo.

Treinamos João.

Mandamos um memorando dizendo:

“Tenham mais atenção ao apagar arquivos.”

Pronto.

Problema resolvido.

Até o próximo João.

O Swiss Cheese Model pergunta:

Por que João tinha capacidade de apagar aquele arquivo?

Outra pergunta:

Por que não havia confirmação?

Outra:

Por que não havia backup imediatamente recuperável?

Outra:

Por que o procedimento permitia aquela operação?

Outra:

Por que ninguém percebeu durante os testes que esse cenário era possível?

Outra:

Por que João estava realizando aquela atividade sob pressão às duas horas da manhã?

Outra:

Por que aquele trabalho precisava acontecer às duas horas da manhã?

Outra:

Quem decidiu isso?

Outra:

Quando essa decisão foi tomada?

Agora entramos na TARDIS.

Porque descobrimos que o incidente das 02:17 começou talvez seis meses antes.


🧀 Fatia número 1 — O programador COBOL

Vamos construir um exemplo.

Você é um programador COBOL iniciante.

Recebe uma alteração:

“Excluir registros temporários com mais de 90 dias.”

Programa simples.

Algo conceitualmente parecido com:

IF WS-DIAS > 90
    DELETE ARQUIVO
END-IF.

Você desenvolve.

Compila.

Testa.

Funciona.

Primeira fatia de queijo.

Mas existe um buraco.

A variável que calcula os dias eventualmente recebe uma data inválida.

Seu teste não cobre essa situação.

Ainda não aconteceu nada.


🧀 Fatia número 2 — Code Review

Outro desenvolvedor revisa seu código.

Ele verifica:

  • sintaxe;

  • nomes;

  • padrões;

  • fluxo;

  • chamadas;

  • tratamento de erros.

Tudo parece razoável.

A alteração é aprovada.

Segunda fatia.

Mas existe outro buraco.

O revisor também não percebe a condição envolvendo datas inválidas.

Dois buracos.

Ainda não estão alinhados necessariamente.


🧀 Fatia número 3 — Homologação

O programa vai para homologação.

Testam:

  • registro com 30 dias;

  • registro com 89;

  • registro com 90;

  • registro com 91;

  • registro com 180.

Perfeito.

Só que ninguém testa uma data zerada.

Ninguém testa 31 de fevereiro.

Ninguém testa um registro antigo migrado de outro sistema cujo campo possui um formato historicamente diferente.

Terceira fatia.

Terceiro buraco.

A ameaça continua avançando.


🧀 Fatia número 4 — Controle operacional

O programa entra em produção.

Existe uma previsão:

antes da exclusão definitiva, deveria ser produzido um relatório para conferência.

Excelente defesa.

Só existe um pequeno detalhe.

O volume cresceu muito nos últimos anos.

O relatório agora possui centenas de milhares de linhas.

Ninguém realmente o lê.

Ele existe.

É produzido.

É arquivado.

A auditoria pode verificar que o controle existe.

Todo mundo fica feliz.

Exceto o queijo.

Porque temos outro buraco.

Essa situação possui inclusive um nome extremamente importante no estudo de incidentes:

controle ritualístico.

Um mecanismo continua existindo formalmente, mas perdeu sua função prática.

O relatório nasceu para ser conferido.

Com o tempo virou:

“o relatório que precisamos gerar porque o procedimento manda.”

Isso acontece assustadoramente em ambientes corporativos.


🧀 Fatia número 5 — Backup

Mas tudo bem.

Temos backup.

A palavra mais reconfortante da informática.

Até alguém perguntar:

— Já testamos o restore?

Silêncio.

Um silêncio tão profundo que quase podemos ouvir a TARDIS estacionando.

Ter backup não significa necessariamente possuir capacidade de recuperação.

Existe uma diferença gigantesca entre:

backup realizado

e

restauração comprovadamente funcional dentro do tempo necessário.

Mais um buraco.


💥 Agora os buracos se alinham

Chega o dia.

Um conjunto de registros antigos possui datas inconsistentes.

O programa interpreta incorretamente.

A homologação nunca testou.

O code review não percebeu.

O relatório operacional é grande demais e ninguém verifica.

O job executa.

Os registros são apagados.

O backup existe.

Mas a restauração é lenta e nunca havia sido ensaiada adequadamente.

Pronto.

Incidente.

E agora surge a pergunta tradicional:

Quem escreveu o programa?

Nosso Doctor provavelmente levantaria uma sobrancelha.

Porque essa é uma pergunta extremamente conveniente.

Mas muito pobre.

O programador participou do incidente?

Sim.

Foi a causa?

Não exatamente.

Ele foi uma das fatias.


👨‍⚕️ James Reason e os dois tipos de falha

Aqui aparece uma das partes mais importantes dessa teoria.

Reason diferencia especialmente dois grupos de condições:

Falhas ativas

São erros próximos do evento.

Exemplos:

  • operador pressionou botão errado;

  • desenvolvedor criou condição incorreta;

  • administrador executou comando errado;

  • piloto selecionou opção equivocada;

  • enfermeiro administrou medicamento incorreto.

São extremamente visíveis.

Por isso recebem atenção.


🕰️ Condições latentes

Agora começam as coisas interessantes.

Condições latentes são fraquezas que podem permanecer escondidas durante semanas, meses ou anos.

Por exemplo:

  • treinamento insuficiente;

  • equipe reduzida;

  • documentação ruim;

  • arquitetura frágil;

  • alertas excessivos;

  • procedimento inadequado;

  • pressão por prazo;

  • interface confusa;

  • ausência de segregação;

  • manutenção atrasada;

  • testes incompletos;

  • metas conflitantes.

Essas condições ficam esperando.

Como Cybermen adormecidos em uma instalação esquecida.

Até surgir a combinação adequada.


🧠 O erro humano frequentemente é consequência, não origem

Essa ideia merece ser colocada em letras garrafais.

“Erro humano” não deveria encerrar uma investigação.

Deveria iniciá-la.

Quando alguém diz:

“O incidente aconteceu por erro humano.”

Nossa próxima pergunta deveria ser:

“Excelente. Agora podemos começar a investigação?”

Porque dizer que um humano errou explica aproximadamente tanto quanto dizer que um avião caiu porque deixou de voar.

Precisamos descobrir por quê.

A pessoa estava cansada?

A interface induzia ao erro?

Havia duas opções visualmente idênticas?

O procedimento estava errado?

Existia pressão para terminar rapidamente?

Era normal ignorar aquele alarme?

A pessoa havia sido treinada?

O sistema permitia desfazer?

A ação exigia dupla autorização?

Quanto mais investigamos, mais descobrimos que aquilo que chamamos de “erro humano” frequentemente é a manifestação visível de problemas sistêmicos.


🚨 Os pequenos sinais antes da invasão

Uma das missões de nossa série será procurar weak signals, os sinais fracos.

Antes do grande incidente, normalmente existem pequenas pistas.

Imagine:

segunda-feira:

RC=04.

terça:

job demorou dez minutos a mais.

quarta:

um operador precisou reiniciar manualmente.

quinta:

duas reclamações.

sexta:

um arquivo ficou próximo de 90% de utilização.

Individualmente, parecem pequenas coisas.

Em conjunto podem formar uma narrativa.

É aqui que observabilidade e cultura operacional tornam-se fundamentais.

Não basta perguntar:

“O sistema está funcionando?”

Precisamos perguntar:

“O sistema está se comportando como normalmente se comporta?”

São perguntas muito diferentes.


📊 Baseline: conheça o normal antes de procurar o anormal

Imagine um batch que normalmente processa dez milhões de registros em 45 minutos.

Hoje levou 47.

Normal.

Amanhã 48.

Normal.

Depois 51.

Hmm.

Depois 56.

Ainda funciona.

Depois 63.

Continua RC=00.

Depois 81.

RC=00 novamente.

Tudo verde.

Mas existe uma tendência.

Um iniciante frequentemente procura ABEND.

Um profissional experiente procura mudança de comportamento.

Esse é um conhecimento importantíssimo para quem entra no mainframe.

RC=00 significa apenas que determinado programa terminou segundo critérios que foram definidos como sucesso.

Não significa:

“Todo o universo está em perfeita harmonia.”


🧀 Não existe queijo perfeito

Talvez você pense:

“Então precisamos eliminar todos os buracos.”

Seria ótimo.

Também seria ótimo possuir uma TARDIS.

Na engenharia real, sistemas possuem limitações.

Pessoas possuem limitações.

Processos possuem limitações.

Recursos são finitos.

Não existe segurança absoluta.

A estratégia é criar defesa em profundidade.

Se uma barreira falhar, outra deverá impedir a propagação.

Essa filosofia aparece em:

  • segurança cibernética;

  • aviação;

  • medicina;

  • energia nuclear;

  • sistemas financeiros;

  • engenharia industrial;

  • mainframes.

Nunca confie exclusivamente em uma única proteção.


🏦 Exemplo Bellacosa Mainframe: transferência bancária

Imagine uma transferência de R$ 10 milhões.

Seria pouco prudente possuir apenas:

EXEC CICS
     TRANSFER MONEY
END-EXEC

e torcer pelo melhor.

Em um sistema sério existirão diversas barreiras:

autenticação;

autorização;

limite transacional;

validação da conta;

saldo;

controle antifraude;

segregação de funções;

confirmação;

log;

monitoramento;

reconciliação;

auditoria.

Cada uma é uma fatia do queijo.

Uma pode falhar.

Talvez duas.

O objetivo é impedir que todas falhem simultaneamente.


🛠️ Como aplicar o Swiss Cheese Model em um incidente

Agora vamos transformar teoria em método.

Imagine que ocorreu um incidente ontem.

Não comece procurando culpados.

Pegue café.

Abra um quadro.

E faça o seguinte.

Passo 1 — Defina o evento

Escreva claramente o que aconteceu.

Evite:

“O sistema deu problema.”

Prefira:

“Entre 14:03 e 14:47, transações do canal X foram processadas duas vezes.”

Precisão importa.


Passo 2 — Construa uma timeline

14:00 — deploy.

14:03 — primeiro erro.

14:04 — alerta.

14:09 — operador reconhece alerta.

14:16 — chamados aparecem.

14:22 — equipe de aplicação acionada.

14:31 — processamento interrompido.

14:47 — serviço estabilizado.

Timeline frequentemente revela coisas que narrativas escondem.


Passo 3 — Identifique as defesas esperadas

Pergunte:

O que deveria impedir isso?

Talvez:

  • teste automatizado;

  • revisão;

  • autorização;

  • monitoramento;

  • reconciliação;

  • rollback.

Cada mecanismo vira uma fatia.


Passo 4 — Descubra o buraco de cada fatia

Por que o teste não detectou?

Por que a revisão não detectou?

Por que o alerta não funcionou?

Por que o operador não percebeu?

Por que não houve rollback?

Não aceite:

“porque fulano esqueceu.”

Pergunte por que era possível esquecer.


🔍 Passo 5 — Procure condições latentes

Agora viaje meses para trás.

Houve corte de equipe?

Mudança organizacional?

Migração?

Novo fornecedor?

Pressão por entrega?

Acúmulo de dívida técnica?

Procedimento antigo?

Alertas demais?

Sistema sem manutenção?

Você ficará surpreso com quantos acidentes possuem raízes muito anteriores ao evento.


🧹 Passo 6 — Não corrija apenas o último buraco

Depois de um incidente causado por um comando incorreto, uma organização pode decidir:

“Treinaremos novamente os operadores.”

Ótimo.

Mas talvez também fosse necessário:

  • alterar a interface;

  • exigir confirmação;

  • restringir permissão;

  • registrar comando;

  • automatizar operação;

  • criar rollback;

  • melhorar documentação.

Treinamento sozinho frequentemente é a correção favorita porque é barata e transfere responsabilidade para pessoas.

Mas pessoas continuam sendo pessoas.

E continuarão errando.

Projetar sistemas seguros significa considerar essa realidade.


🔁 Passo 7 — Feche o loop

Aqui entramos no verdadeiro objetivo da nossa série:

melhoria contínua.

Incidente sem aprendizado é apenas sofrimento administrativo.

Depois do post-mortem, crie ações.

Cada ação precisa de:

responsável;

prazo;

prioridade;

evidência de conclusão;

validação posterior.

Caso contrário teremos um documento lindíssimo armazenado em algum SharePoint que ninguém jamais abrirá novamente.

Possivelmente ao lado de outros 847 post-mortems.

Todos chamados:

INCIDENT_FINAL_V2_FINAL_AGORA_VAI.docx


🪤 A grande armadilha: hindsight bias

Depois que sabemos o resultado, tudo parece óbvio.

“Como ninguém percebeu?”

Essa frase aparece depois de praticamente todos os grandes acidentes.

Mas existe um fenômeno chamado hindsight bias, o viés retrospectivo.

Nós conhecemos o final.

As pessoas naquele momento não conheciam.

Elas estavam tomando decisões com informações incompletas.

Por isso uma investigação justa pergunta:

“Com as informações disponíveis naquele instante, essa decisão parecia razoável?”

Essa pergunta muda tudo.


⚖️ Blameless não significa ausência de responsabilidade

Outra confusão comum.

Um post-mortem sem caça às bruxas não significa:

“ninguém é responsável por nada.”

Existem negligência, violações deliberadas e comportamentos imprudentes.

Eles precisam ser tratados.

Mas um ambiente que pune automaticamente qualquer erro cria outro problema:

as pessoas começam a esconder erros.

E sistemas complexos onde ninguém relata pequenos problemas são maravilhosos.

Até explodirem.


🛸 Doctor Who e o paradoxo da prevenção

Existe uma injustiça curiosa na segurança.

Quando você evita um incidente, aparentemente nada aconteceu.

Você detectou um problema.

Corrigiu.

Produção continuou.

No relatório executivo:

0 incidentes.

Alguém então pergunta:

— Por que gastamos tanto com essa equipe se nunca acontece nada?

Essa talvez seja uma das grandes ironias corporativas.

O sucesso da prevenção frequentemente parece evidência de que prevenção não era necessária.

O Doctor conhece bem esse problema.

Salva o universo.

Volta para a TARDIS.

E provavelmente ninguém aprovou sequer uma hora extra.


🧀 O queijo suíço aplicado à sua primeira semana como COBOL

Se você está começando agora, crie este hábito.

Ao escrever um programa, pergunte:

Se meu código estiver errado, o que impedirá o desastre?

Depois:

E se essa proteção também falhar?

Depois:

Existe outra?

Exemplo:

Programa gera arquivo.

Fatia 1: validação no programa.

Fatia 2: contagem de registros.

Fatia 3: totalizadores financeiros.

Fatia 4: comparação com histórico.

Fatia 5: validação antes da aplicação.

Fatia 6: possibilidade de rollback.

Agora você não está apenas programando.

Está pensando como engenheiro de confiabilidade.


🧪 Teste também o impossível

Uma das melhores lições para iniciantes:

testar apenas o caminho feliz é fácil.

Teste:

  • arquivo vazio;

  • arquivo duplicado;

  • número negativo;

  • campo inválido;

  • data impossível;

  • registro maior;

  • registro menor;

  • sequência incorreta;

  • arquivo inexistente;

  • disco cheio;

  • timeout;

  • retorno inesperado.

Pergunte constantemente:

“O que aconteceria se...?”

Essa pergunta talvez seja uma das ferramentas mais poderosas da engenharia.


👻 Easter Egg nº 1

Em Doctor Who existe uma regra quase universal:

se existe um corredor escuro onde claramente ninguém deveria entrar, alguém inevitavelmente entra.

Em TI existe uma versão semelhante:

se existe um parâmetro chamado:

BYPASS-VALIDATION=YES

alguém eventualmente usará.

Provavelmente numa sexta-feira.

Às 17:43.


🧯 Near Miss: quando o Dalek erra o tiro

Nem todo alinhamento de buracos termina em desastre.

Às vezes alguma defesa final salva o sistema.

Isso é um near miss.

Quase acidente.

E near misses são ouro.

Uma organização madura não comemora simplesmente:

“Ufa, não aconteceu nada.”

Ela pergunta:

“Por que quase aconteceu?”

Porque o universo acabou de oferecer uma investigação gratuita.

Sem clientes prejudicados.

Sem manchetes.

Sem diretor telefonando.

Estude seus near misses.

Eles são trailers dos incidentes futuros.


📚 Curiosidade: acidentes são bibliotecas

Existe um hábito poderoso para profissionais de tecnologia:

estudar acidentes de outras áreas.

Leia sobre:

aviação;

energia nuclear;

medicina;

ferrovias;

exploração espacial;

indústria química.

Por quê?

Porque tecnologias mudam.

Comportamentos sistêmicos, nem tanto.

Você começa a reconhecer padrões.

Pressão por prazo.

Alertas ignorados.

Redundância removida.

Normalização de desvios.

Comunicação falha.

Treinamento insuficiente.

Confiança excessiva na automação.

É quase assustador.

Troque cockpit por data center e certos relatórios parecem familiares.


🔄 Regeneração

E chegamos à palavra perfeita para nossa série.

No universo de Doctor Who, o Doctor não simplesmente morre.

Ele regenera.

Muda.

Aprende.

Continua.

Uma organização madura deveria fazer algo parecido depois de cada incidente.

Não restaurar simplesmente o estado anterior.

Mas perguntar:

como voltaremos melhores?

Esse é o objetivo da melhoria contínua.

Incidente.

Análise.

Aprendizado.

Mudança.

Validação.

Monitoramento.

Novo aprendizado.

Um loop.


🌀 A verdadeira mensagem do Swiss Cheese Model

Talvez o maior ensinamento seja abandonar a fantasia confortável de que acidentes possuem uma causa única.

Encontramos frequentemente diagramas assim:

João executou comando errado
        ↓
Sistema caiu

Simples.

Elegante.

Provavelmente incompleto.

A realidade costuma parecer mais assim:

pressão por prazo
        ↓
procedimento abreviado
        ↓
treinamento incompleto
        ↓
interface ambígua
        ↓
permissão excessiva
        ↓
comando incorreto
        ↓
alerta ignorado
        ↓
rollback indisponível
        ↓
INCIDENTE

Agora temos algo que pode realmente ser melhorado.


☕ Diário do Doctor

Se você guardar apenas algumas ideias desta nossa primeira viagem pela TARDIS dos incidentes, guarde estas:

Um acidente raramente nasce de uma única falha.

Existem diversas camadas de proteção.

Todas possuem fragilidades.

Incidentes surgem quando essas fragilidades se alinham.

O erro visível geralmente está próximo do fim da cadeia.

Condições latentes podem existir durante meses ou anos.

Erro humano deve iniciar perguntas, não encerrá-las.

Near misses precisam ser investigados.

Monitorar comportamento é tão importante quanto monitorar falhas.

Defesa em profundidade é melhor que confiar numa única proteção.

Post-mortems precisam produzir mudança verificável.

E talvez a mais importante:

não procure apenas quem estava segurando a chave de fenda quando a máquina explodiu. Descubra por que havia uma máquina capaz de explodir quando alguém segurasse aquela chave de fenda daquele jeito.


🧀 O último pedaço de queijo

Nosso programador COBOL iniciante fecha o notebook.

Olha para o velho mainframe.

Agora entende algo que talvez nenhum manual de sintaxe tenha explicado.

Programar não é apenas escrever instruções corretas.

É imaginar o que acontece quando alguma coisa estiver errada.

Porque estará.

Algum dia.

Em algum lugar.

Um campo virá inválido.

Um arquivo ficará cheio.

Uma rede cairá.

Uma pessoa ficará cansada.

Um procedimento estará desatualizado.

Um teste esquecerá um cenário.

Uma mensagem será interpretada incorretamente.

Não podemos eliminar completamente esses buracos.

Mas podemos evitar que se alinhem.

Lá fora ouvimos novamente:

VWORP.

VWORP.

VWORP.

A TARDIS começa a desaparecer.

O Doctor coloca a cabeça para fora da porta.

— Ah, mais uma coisa.

Olha para nosso jovem programador COBOL.

— RC=00?

O programador sorri.

— Sucesso.

O Doctor faz aquela expressão de quem acabou de encontrar algo terrivelmente interessante.

— Não. Apenas significa que o programa acredita que terminou bem.

Fecha a porta.

A TARDIS desaparece.

Na console chega uma mensagem:

JOB12345 ENDED - RC=0000

Tudo parece perfeito.

E é justamente por isso que resolvemos dar uma olhada nos logs.

Porque esta série está apenas começando.

Next stop: Normalization of Deviance.

Ou, como provavelmente diria algum operador veterano:

“Sempre fizemos desse jeito e nunca deu problema.”

Até o dia em que deu.

☕🌀


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