Translate

segunda-feira, 2 de maio de 2022

Auditoria de Software em Mainframe Muito Além do Código: Como Descobrir a Saúde de um Sistema que Movimenta Bancos, Seguradoras e Governos

 

Bellacosa Mainframe e a auditoria de software

☕ Um Café no Bellacosa Mainframe

Auditoria de Software em Mainframe

Muito Além do Código: Como Descobrir a Saúde de um Sistema que Movimenta Bancos, Seguradoras e Governos

"O bom desenvolvedor faz o programa funcionar. O excelente desenvolvedor faz o programa continuar funcionando durante décadas. A auditoria existe justamente para descobrir a diferença."


Introdução

Quando alguém ouve a palavra auditoria, normalmente imagina alguém procurando erros, apontando culpados ou produzindo relatórios intermináveis.

No universo do IBM Mainframe, a realidade é completamente diferente.

A auditoria de software é uma disciplina de engenharia.

Ela mede qualidade.

Mede risco.

Mede maturidade.

Mede sustentabilidade.

Principalmente, mede algo extremamente valioso:

a capacidade de um sistema continuar funcionando daqui a vinte anos.

Poucas plataformas do mundo possuem aplicações executando continuamente há 30, 40 ou até 60 anos.

Isso muda completamente a forma de avaliar software.

Enquanto no mundo web normalmente pergunta-se:

"Está funcionando?"

No IBM Z pergunta-se:

"Continuará funcionando depois das próximas mil mudanças?"

Essa pequena diferença muda toda a filosofia de auditoria.


A origem da auditoria de software

Curiosamente, a auditoria de software nasceu praticamente junto com os primeiros computadores comerciais.

Na década de 1960, grandes bancos perceberam um problema.

Era impossível validar manualmente milhões de transações.

Foi necessário criar processos para responder perguntas como:

  • Quem alterou este programa?

  • Quando?

  • Por quê?

  • Quem autorizou?

  • Existe documentação?

  • Existe teste?

  • Existe rollback?

Foi aí que nasceram conceitos que hoje chamamos de:

  • Governança

  • Compliance

  • Rastreabilidade

  • Gestão de Configuração

  • Segregação de Funções

Muito antes de DevOps existir.


Auditoria não procura bugs

Esse talvez seja o maior mito.

Uma auditoria séria quase nunca começa olhando código.

Ela começa olhando processos.

Porque processos ruins inevitavelmente geram software ruim.


O grande tripé

Toda auditoria madura observa três pilares.

Pessoas

Quem desenvolve?

Quem revisa?

Quem aprova?

Existe segregação?

Existe treinamento?

Existe documentação?


Processo

Como mudanças acontecem?

Existe fluxo formal?

Existe versionamento?

Existe rollback?

Existe aprovação?


Produto

Como está o software?

É complexo?

É duplicado?

É documentado?

É testado?

É sustentável?


O que normalmente é auditado

Uma auditoria completa pode analisar dezenas de aspectos.

Entre eles:

Código-fonte

  • COBOL

  • PL/I

  • Assembler

  • JCL

  • REXX

  • Easytrieve


Banco de Dados

  • DB2

  • IMS DB

  • VSAM


Processamento Batch

  • Dependências

  • Restart

  • Checkpoint

  • Performance


Online

  • CICS

  • IMS DC

  • MQ

  • APIs


Segurança

  • RACF

  • Permissões

  • Criptografia

  • Auditoria


Operação

  • JES2

  • WLM

  • RMF

  • SMF


Indicadores clássicos

Uma auditoria profissional mede indicadores.

Não opiniões.


1. Complexidade Ciclomática

Criada por Thomas McCabe em 1976.

Ela mede quantos caminhos independentes existem no programa.

Quanto maior o número...

Maior o risco.

Exemplo

IF

ELSE

END-IF

Possui baixa complexidade.

Agora imagine dezenas de:

IF

EVALUATE

PERFORM

GO TO

ALTER

A complexidade explode.


Valores típicos

Até 10 → Excelente

10–20 → Bom

20–40 → Atenção

Acima de 50 → Alto risco


2. Tamanho do Programa

Nem sempre maior significa pior.

Mas programas enormes costumam esconder problemas.

Exemplo

COBOL com

40.000 linhas

é muito diferente de

40 módulos com 1.000 linhas.


3. Acoplamento

Quanto um programa depende dos outros.

Alto acoplamento significa:

qualquer mudança provoca efeito dominó.


4. Coesão

Quanto um módulo faz apenas uma responsabilidade.

Alta coesão

é excelente.

Baixa coesão

indica "programa faz tudo".


5. Duplicação

Quanto código repetido existe.

Ferramentas modernas conseguem localizar blocos duplicados automaticamente.


6. Cobertura de Testes

Quantos caminhos realmente foram testados.

No Mainframe isso inclui:

Batch

Online

Abends

Rollback

Recovery

Restart


7. Taxa de Mudanças

Quantas alterações um programa recebe por ano.

Programas alterados constantemente merecem atenção especial.


8. Taxa de Defeitos

Quantos defeitos aparecem após produção.

Pode ser medida por:

1000 linhas

100 mudanças

Sprint

Release

Aplicação


9. Tempo Médio para Correção

MTTR

Quanto tempo demora para corrigir um incidente.


10. Disponibilidade

Quanto tempo o sistema permanece disponível.

No IBM Z frequentemente encontramos:

99,99%

99,999%

ou superior.


Rácios importantes

Uma auditoria raramente olha números isolados.

Ela cruza informações.


Defeitos por KLOC

Quantidade de defeitos

/

1000 linhas


Alterações por Programa

Mudanças

/

Quantidade de módulos


Incidentes por Release

Muito usado em bancos.


Percentual de Reprocessamentos

Quanto batch precisou ser executado novamente.


Percentual de Abends

Número de abends

/

Número total de Jobs


Percentual de Rollback

Importante para CICS.


Percentual de Mudanças Emergenciais

Mudanças urgentes

/

Mudanças totais

Quanto maior esse índice...

Menor costuma ser a maturidade.


Indicadores específicos de COBOL

Existem métricas interessantes.

Número médio de:

IF

EVALUATE

PERFORM THRU

GO TO

COPYBOOKS

DECLARATIVES

SQL EMBEDDED

CALL

Dynamic CALL

Static CALL


Indicadores de JCL

Quantidade média de:

STEP

COND

IF/THEN

RESTART

GDG

Temporary Dataset

SORT

IDCAMS

IEFBR14

Quanto maior a padronização...

Melhor.


Indicadores de DB2

Número de:

Tablespaces

Indexes

Packages

RUNSTATS vencidos

REORG pendentes

Locks

Deadlocks

Escalation

Access Path alterado


Indicadores CICS

Número médio de

Transações

Abends

Pseudo-Conversational

Syncpoint

Threadsafe

Storage Violations

Temporary Storage

Transient Data


Indicadores Operacionais

SMF

CPU

MSU

zIIP

Tempo Batch

Janela Batch

Fila JES

Espera em Dataset

Tempo em DB2

Tempo em MQ

Tempo em VSAM


O que um auditor experiente enxerga rapidamente

Ele procura padrões.

Por exemplo.

Programa de 60 mil linhas.

Pouquíssimos comentários.

Mais de 200 GO TO.

Sem testes.

Última documentação em 1998.

Esse programa funciona?

Provavelmente.

É saudável?

Talvez não.


As melhores práticas do mercado

1. Revisão por pares

Nenhum código importante deve entrar em produção sem revisão.


2. Versionamento

Hoje Git já faz parte do universo IBM Z.


3. Integração Contínua

Build automático.

Testes automáticos.

Deploy controlado.


4. Padronização

Naming.

Layout.

Comentários.

Copybooks.

Macros.


5. Código pequeno

Programas menores.

Mais simples.

Mais reutilizáveis.


6. Automatização

Quanto menos atividade manual...

Menor chance de erro.


7. Documentação viva

Nunca documente apenas uma vez.

Documentação envelhece.


8. Métricas contínuas

Não espere auditoria anual.

Métricas devem ser diárias.


Ferramentas frequentemente utilizadas

No ecossistema IBM Z encontramos soluções como:

  • IBM Application Discovery and Delivery Intelligence (ADDI)

  • IBM Developer for z/OS (IDz)

  • IBM Debug for z/OS

  • IBM File Manager

  • IBM Fault Analyzer

  • IBM Application Performance Analyzer

  • IBM z/OS Debugger

  • IBM Z IntelliMagic Vision

  • SonarQube (com plugins específicos para COBOL)

  • Micro Focus Enterprise Analyzer

  • BMC AMI DevX

  • Broadcom Endevor

  • IBM Engineering Workflow Management

Cada uma observa um aspecto diferente do ciclo de vida.


O que diferencia uma auditoria madura

Ela não gera apenas números.

Ela responde perguntas.

Como:

Onde está o maior risco?

Qual aplicação envelheceu?

Qual equipe produz menos defeitos?

Qual módulo merece refatoração?

Qual banco precisa reorganização?

Onde investir primeiro?


Um erro muito comum

Medir produtividade por linhas de código.

Isso é péssimo.

Um excelente desenvolvedor frequentemente reduz milhares de linhas.

Menos código.

Menos defeitos.

Menos manutenção.

Mais qualidade.


Outro erro clássico

Medir apenas velocidade.

Velocidade sem qualidade gera retrabalho.

Retrabalho custa caro.

Muito caro.


Curiosidade

Muitos bancos utilizam indicadores internos que jamais são divulgados.

Alguns acompanham centenas de métricas diariamente.

Não apenas software.

Também:

CPU

Storage

I/O

MSU

Licenciamento

Tempo de resposta

Custo por transação

Consumo energético

Capacidade futura


Easter Egg

Você sabia que um dos primeiros conceitos de métricas estruturadas para software surgiu antes mesmo da popularização da Engenharia de Software como disciplina?

Na década de 1970, organizações financeiras perceberam que um programa COBOL "que nunca dava problema" geralmente compartilhava características curiosas:

  • poucos desvios incondicionais (GO TO);

  • lógica de negócio bem dividida em parágrafos;

  • convenções de nomenclatura consistentes;

  • alterações pequenas e frequentes, em vez de grandes reescritas.

Décadas depois, muitos desses princípios foram formalizados em métricas de qualidade e continuam válidos até hoje.


Pontos de atenção

Nem toda dívida técnica aparece no código. Muitas vezes ela está na documentação ausente, nos processos informais ou na dependência de um único especialista.

Indicadores isolados enganam. Um programa grande pode ser excelente, enquanto um programa pequeno pode concentrar enorme risco. Sempre correlacione métricas.

Mudanças emergenciais recorrentes são um sinal de alerta. Se a exceção virou rotina, há problemas no planejamento, nos testes ou na governança.

Softwares críticos exigem histórico. Uma boa auditoria valoriza rastreabilidade: requisito, alteração, teste, aprovação e implantação devem formar uma cadeia verificável.

Ferramentas ajudam, mas não substituem experiência. Um relatório automatizado aponta sintomas; um auditor experiente identifica causas.


Como evoluir na carreira de Auditor de Software Mainframe

Se você deseja atuar nessa área, desenvolva competências em camadas:

Nível 1 — Fundamentos

  • COBOL

  • JCL

  • TSO/ISPF

  • SDSF

  • VSAM

  • DB2

  • CICS

Nível 2 — Operação

  • JES2

  • WLM

  • RMF

  • SMF

  • RACF

  • Catálogos

  • Performance

Nível 3 — Engenharia

  • Métricas de software

  • Refatoração

  • Arquitetura

  • Design de sistemas

  • Gestão de configuração

  • CI/CD para IBM Z

Nível 4 — Governança

  • ITIL

  • COBIT

  • ISO/IEC 25010 (qualidade de software)

  • ISO/IEC 12207 (ciclo de vida)

  • NIST Cybersecurity Framework

  • Auditoria baseada em risco

Nível 5 — Visão Estratégica

O diferencial dos grandes auditores não é conhecer todas as instruções do COBOL ou todos os parâmetros do JCL.

É conseguir responder perguntas como:

  • Onde estão os maiores riscos para o negócio?

  • Qual aplicação merece modernização primeiro?

  • Quanto custa manter esse sistema?

  • O risco de uma alteração é aceitável?

  • A arquitetura atual suporta o crescimento esperado?

Quando você conecta métricas técnicas aos objetivos do negócio, deixa de ser apenas um especialista em tecnologia e passa a atuar como um consultor estratégico.


Conclusão

A auditoria de software em Mainframe não é uma caça aos erros nem uma atividade burocrática. Ela é um processo contínuo de medição, análise e melhoria que transforma dados em decisões. Organizações que monitoram indicadores de qualidade, complexidade, desempenho, segurança e manutenção conseguem reduzir riscos, aumentar a estabilidade e prolongar a vida útil de aplicações que sustentam operações críticas há décadas.

No estilo Bellacosa Mainframe, vale lembrar uma última lição:

"Software não envelhece porque foi escrito em COBOL. Ele envelhece quando ninguém mais consegue entendê-lo, medi-lo ou evoluí-lo. A melhor auditoria não é a que encontra problemas; é a que cria um ambiente onde eles deixam de nascer."

Porque, no fim das contas, um sistema crítico não é aquele que nunca muda. É aquele que consegue mudar continuamente sem perder a confiança de milhões de usuários. Essa é a verdadeira medida de excelência em engenharia de software no IBM Z.

Sem comentários:

Enviar um comentário