Translate

Mostrar mensagens com a etiqueta engenharia de requisitos. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta engenharia de requisitos. Mostrar todas as mensagens

quarta-feira, 21 de julho de 2021

Da Ideia ao Código: A Engenharia de Software Sem Mistérios - Parte I

 

Bellacosa Mainframe e a engenharia de software sem misterios parte I

☕ Um Café no Bellacosa Mainframe

Da Ideia ao Código: A Engenharia de Software Sem Mistérios

O Guia Definitivo do Programador COBOL Padawan para Entender Como Nascem os Sistemas que Movem o Mundo — Inspirado no Universo de Star Trek

"A lógica é o começo da sabedoria, não o fim."

— Sr. Spock


Introdução — A Ponte de Comando da USS Enterprise e o IBM Z

Existe uma cena recorrente em praticamente toda série de Star Trek.

O Capitão Kirk recebe uma missão.

Antes de simplesmente sair acelerando rumo ao desconhecido, uma sequência acontece quase sempre da mesma forma:

  • Uhura recebe as comunicações;

  • Sulu calcula a rota;

  • Chekov verifica a navegação;

  • Scotty analisa os motores;

  • Dr. McCoy avalia a tripulação;

  • Spock analisa os riscos.

Somente depois disso...

Warp Factor!

Curiosamente...

É exatamente assim que funciona um projeto de software.

O programador iniciante costuma imaginar que um sistema nasce quando alguém abre o Visual Studio Code, o IDz ou o ISPF e começa a escrever COBOL.

Na realidade...

O código representa apenas a ponta do iceberg.

Antes de existir uma única linha de código, dezenas de profissionais trabalharam durante semanas — ou meses — planejando tudo.

Foi justamente essa percepção que criou uma nova ciência chamada:

Engenharia de Software

E é exatamente essa jornada que faremos hoje.

Pegue sua caneca de café.

Ajuste o brilho do terminal 3270.

Ative os sensores de longo alcance.

Nossa missão começa agora.


Diário de Bordo — Stardate 2026

Imagine que a Federação precisa desenvolver um novo sistema para controlar toda a logística das naves da Frota Estelar.

Esse sistema deverá controlar:

  • combustível (Dilithium)

  • tripulação

  • armamentos

  • manutenção

  • suprimentos

  • teletransporte

  • missões

Parece simples.

Mas...

Como garantir que um erro nunca destrua uma nave inteira?

É exatamente para isso que existe a Engenharia de Software.


Capítulo 1 — A Grande Crise do Software

Nos anos 50 e início dos anos 60, programar era relativamente simples.

Os programas eram pequenos.

Poucas pessoas trabalhavam neles.

Mas os computadores ficaram cada vez maiores.

Surgiram:

  • bancos

  • companhias aéreas

  • governos

  • seguradoras

  • sistemas militares

De repente surgiram programas com:

  • milhões de linhas

  • milhares de tabelas

  • centenas de desenvolvedores

Resultado?

Uma verdadeira catástrofe.

Projetos atrasavam anos.

Custavam dezenas de vezes mais.

Nunca terminavam.

Essa situação ficou conhecida como:

Software Crisis

Foi ela que deu origem à Engenharia de Software.


O verdadeiro significado de Software

As apostilas mostram:

Software = Programas + Dados + Documentação

Na prática moderna...

Software significa muito mais.

Um sistema corporativo normalmente inclui:

  • código COBOL

  • programas Java

  • APIs REST

  • filas MQ

  • banco Db2

  • VSAM

  • IMS

  • documentação

  • monitoramento

  • pipelines CI/CD

  • segurança

  • backups

  • auditoria

  • logs

  • scripts

  • automação

Ou seja...

O código é apenas uma pequena parte.


Easter Egg nº 1 ☕

No universo Star Trek, o computador da Enterprise nunca mostra apenas "o programa".

Ele conhece:

  • estado da nave

  • sensores

  • mapas

  • comunicações

  • banco de dados

  • diagnósticos

Isso é exatamente o conceito moderno de software.


Engenharia de Requisitos

Antes de escrever código existe uma pergunta extremamente difícil.

"O que exatamente devemos construir?"

Curiosamente...

Essa costuma ser a pergunta mais complicada de todo projeto.

Imagine um banco dizendo:

"Queremos um sistema PIX."

Pronto?

Claro que não.

Agora começam centenas de perguntas.

Quem pode transferir?

Existe limite?

Qual horário?

Pessoa física?

Pessoa jurídica?

Existe auditoria?

Existe rollback?

Existe LGPD?

Existe dupla autenticação?

Existe assinatura digital?

Existe timeout?

Existe integração com BACEN?

Perceba.

Nenhuma dessas perguntas envolve COBOL.


O Analista é um Investigador Vulcano

Spock nunca tira conclusões precipitadas.

Ele primeiro coleta evidências.

Depois formula hipóteses.

Depois valida.

Um bom analista faz exatamente isso.

Ele investiga.

Questiona.

Confirma.

Documenta.


Engenharia de Requisitos é Engenharia de Perguntas

Quanto melhor forem as perguntas...

Melhor será o software.

Existe um velho ditado da IBM:

Um requisito mal entendido custa centenas de horas de retrabalho.


Requisitos Funcionais

São aqueles que respondem:

"O sistema faz o quê?"

Exemplos:

Consultar saldo

Transferir PIX

Emitir boleto

Gerar extrato

Cadastrar cliente

Calcular juros

Tudo isso é comportamento.


Requisitos Não Funcionais

Agora entra uma categoria que muitos iniciantes ignoram.

Ela responde:

"Como o sistema deve funcionar?"

Por exemplo.

Consultar saldo.

Em menos de 300 milissegundos.

Transferir dinheiro.

Disponibilidade de 99,999%.

Cadastrar cliente.

Suportar 50 mil usuários simultâneos.

Esses requisitos normalmente definem se o projeto será aprovado ou não.


O Segredo do Mainframe

Por que um IBM Z consegue processar bilhões de transações?

Porque praticamente todos os seus requisitos importantes são...

Não funcionais.

Disponibilidade.

Escalabilidade.

Confiabilidade.

Segurança.

Performance.


Curiosidade ☕

A famosa meta de 99,999% de disponibilidade ("cinco noves") significa apenas alguns minutos de indisponibilidade por ano. Esse nível é perseguido por plataformas de missão crítica como o IBM Z porque uma interrupção pode afetar milhões de clientes e transações.


Como levantar requisitos

Existem diversas técnicas.

As mais usadas são:

Entrevistas

Observação

Questionários

Brainstorming

Protótipos

Workshops


O poder da observação

Imagine automatizar um caixa bancário.

Você pergunta:

"Como você trabalha?"

Ele responde.

Mas...

Quando você o observa...

Descobre atalhos.

Planilhas escondidas.

Papéis.

Post-its.

Macetes.

Fluxos nunca documentados.

Isso acontece diariamente nas empresas.


O Documento Mais Importante do Projeto

Depois de semanas de entrevistas nasce um documento.

O famoso:

SRS

Software Requirement Specification

Ele é praticamente a Constituição do projeto.

Tudo nasce dele.

Tudo termina nele.


O que existe em um SRS?

Escopo.

Objetivos.

Glossário.

Casos de uso.

Regras de negócio.

Integrações.

Restrições.

Mensagens.

Fluxos.

Requisitos funcionais.

Requisitos não funcionais.

Critérios de aceitação.

No mundo IBM Z, muitas organizações utilizam documentos equivalentes, às vezes com outros nomes, mas a função é a mesma: registrar claramente o que será construído.


A Validação

Agora acontece algo extremamente importante.

Antes de programar...

Pergunta-se:

"Está correto?"

É muito mais barato descobrir um erro aqui do que meses depois.


A Regra dos Custos

Existe um princípio amplamente aceito na Engenharia de Software:

Quanto mais tarde um defeito é encontrado, maior tende a ser o custo para corrigi-lo.

Encontrar uma falha durante a análise geralmente é muito mais barato do que descobri-la após a implantação em produção.


Arquitetura

Agora começa outra etapa.

Imagine construir a USS Enterprise.

Você começaria instalando os motores?

Claro que não.

Primeiro existe um projeto.

Com software acontece igual.


Arquitetura responde perguntas gigantes

Será:

Monolito?

Microserviços?

Mainframe?

Cloud?

MQ?

REST?

Kafka?

Db2?

VSAM?

IMS?

CICS?

Nada disso envolve código ainda.


Um exemplo IBM Z

Imagine uma compra pela Internet.

O fluxo pode ser:

Cliente

API

z/OS Connect

CICS

Programa COBOL

Db2

MQ

Sistema de Estoque

Isso é arquitetura.


Arquitetura em Camadas

As apostilas mostram:

Presentation

Business

Data

Database

Curiosamente...

Muitos sistemas COBOL já utilizavam esse conceito décadas antes da popularização dos frameworks modernos.

Tela BMS.

Programa COBOL.

Db2.

É uma separação de responsabilidades.


Microserviços

Hoje muito se fala em Microservices.

A ideia é dividir um sistema enorme em pequenos serviços independentes.

Exemplo:

PIX

Cartões

Empréstimos

Investimentos

Clientes

Cada um evolui de forma independente.

Mas isso não significa que seja sempre a melhor escolha. Em muitos cenários, um monólito bem projetado é mais simples de desenvolver e manter.


HLD — High Level Design

Agora a arquitetura vira documento.

O HLD mostra:

Grandes módulos.

Integrações.

Banco.

Protocolos.

Fluxo de dados.

Não entra nos detalhes.

É o mapa da cidade.


LLD — Low Level Design

Agora sim.

Entramos no nível do desenvolvedor.

O LLD explica:

Algoritmos.

Tabelas.

Campos.

Índices.

Funções.

Pseudocódigo.

Fluxogramas.

Entradas.

Saídas.

Mensagens.

Agora o programador consegue escrever código.


Exemplo COBOL

Imagine um programa chamado:

COBPIX01

O LLD pode dizer:

Entrada:

  • Agência

  • Conta

  • Valor

Processamento:

  • validar conta

  • consultar saldo

  • verificar limite

  • debitar

  • registrar auditoria

  • gravar MQ

  • atualizar Db2

  • executar COMMIT

Saída:

  • código de retorno

  • novo saldo

  • mensagem ao usuário

Perceba.

O código praticamente nasce desse documento.


O Pseudocódigo

Uma das ferramentas mais antigas da Engenharia.

Ele permite pensar antes de programar.

Receber conta

↓

Conta existe?

↓

Não

Erro

↓

Sim

Saldo suficiente?

↓

Não

Saldo insuficiente

↓

Sim

Debitar

↓

Registrar log

↓

Atualizar Db2

↓

Commit

↓

Retornar sucesso

Quando esse fluxo está correto...

Programar fica muito mais simples.


SDLC na prática

Todo projeto percorre algo semelhante a:

Ideia

Requisitos

Validação

Arquitetura

HLD

LLD

Codificação

Testes

Implantação

Manutenção

Nova evolução

Perceba que a programação aparece apenas na metade da jornada.


Modelos de Desenvolvimento

A Engenharia criou diversos modelos para organizar esse fluxo.

Waterfall

Segue uma sequência rígida.

Requisitos.

Projeto.

Código.

Testes.

Produção.

Ainda é muito usado em projetos com requisitos estáveis, como diversos sistemas governamentais e aplicações de missão crítica.


Modelo V

Cada etapa de desenvolvimento possui uma etapa correspondente de teste.

Requisitos

⇔ Testes de Aceitação

Projeto

⇔ Testes de Sistema

Arquitetura

⇔ Testes de Integração

Módulos

⇔ Testes Unitários

É excelente para ambientes onde rastreabilidade e qualidade são fundamentais.


Modelo Incremental

Em vez de entregar tudo de uma vez, o sistema cresce por partes.

Primeiro:

Login.

Depois:

Cadastro.

Depois:

Relatórios.

Depois:

Integrações.

Cada incremento entrega valor ao usuário.


Modelo Espiral

Muito usado em projetos grandes e de alto risco.

Cada volta da espiral passa por:

Planejamento.

Análise de riscos.

Desenvolvimento.

Avaliação do cliente.

Nova volta.

É um modelo que combina evolução contínua com gestão de riscos.


Os Atributos da Qualidade

Um software não é considerado bom apenas porque "funciona".

Ele precisa ser:

✔ Correto

✔ Confiável

✔ Eficiente

✔ Seguro

✔ Escalável

✔ Portável

✔ Fácil de manter

✔ Disponível

✔ Fácil de usar

Esses atributos influenciam diretamente o sucesso de um sistema em produção.


A Engenharia Invisível

Quando um cliente faz um PIX em dois segundos...

Ele nunca imagina que por trás daquela simplicidade existiram:

Meses de análise.

Centenas de reuniões.

Documentos.

Diagramas.

Arquitetura.

Revisões.

Testes.

Validações.

Planejamento.

Essa é a parte invisível da Engenharia de Software.


Easter Egg nº 2 — A Diretriz Principal

Em Star Trek existe a famosa Prime Directive, um conjunto de regras criado para evitar consequências desastrosas.

Na Engenharia de Software existe um princípio parecido:

Nunca comece a codificar antes de compreender completamente o problema que precisa ser resolvido.

Escrever código sem requisitos claros costuma produzir sistemas que funcionam tecnicamente, mas não atendem ao negócio.


Lições do Sr. Spock para o Programador COBOL Padawan

Se Spock fosse um arquiteto de software no IBM Z, provavelmente deixaria estas recomendações:

  • A lógica deve vir antes do código.

  • Requisitos mal definidos geram defeitos bem implementados.

  • Um bom design reduz a complexidade futura.

  • Documentação não substitui conhecimento, mas preserva conhecimento.

  • Teste não cria qualidade; ele revela a qualidade do que foi construído.

  • O programa termina de ser escrito, mas o software continua evoluindo durante anos.


Conclusão — A Verdadeira Missão da Engenharia de Software

Muitos iniciantes acreditam que o objetivo de um desenvolvedor é escrever muitas linhas de código.

Com o tempo, descobrem que acontece justamente o contrário.

Os melhores engenheiros escrevem o código certo, no momento certo, apoiado por requisitos claros, uma arquitetura consistente e um projeto bem elaborado.

É exatamente por isso que sistemas COBOL executados em IBM Z continuam sustentando bancos, seguradoras, governos e bolsas de valores após décadas de evolução. Eles não sobreviveram apenas por causa da linguagem ou do hardware, mas porque foram construídos sobre fundamentos sólidos de Engenharia de Software: análise cuidadosa, documentação, arquitetura, testes e manutenção disciplinada.

Assim como a USS Enterprise não parte para uma missão sem planejamento, análise de riscos e coordenação entre toda a tripulação, um grande sistema corporativo também não nasce de improviso. Cada documento, cada diagrama, cada revisão e cada teste representa um membro da "tripulação" trabalhando para que, quando chegar o momento da implantação, tudo funcione de forma segura, previsível e confiável.

No fim da jornada, o verdadeiro Padawan COBOL percebe que programar é uma habilidade importante, mas compreender a Engenharia de Software é o que transforma um programador em um engenheiro capaz de construir sistemas que resistem ao tempo — exatamente como os grandes sistemas do IBM Z e as lendárias naves da Frota Estelar. Vida longa e próspera! 🖖


☕ Um Café no Bellacosa Mainframe

Engenharia de Software sem Mistérios — Parte 2

Da USS Enterprise ao IBM Z

Descubra como arquitetos pensam, como projetos evoluem e como um programador COBOL pode enxergar além do código, compreendendo SRS, HLD, LLD, modelos Incremental e Espiral, arquitetura, qualidade e desenvolvimento de sistemas no IBM Z.