🔄 CAPÍTULO 02: MODELOS DE PROCESSO DE SOFTWARE
🎯 1. Objetivos de Aprendizagem & Competências
Estimativa de Dedicação: 2 horas de estudo autoguiado.
Ao final deste capítulo, você será capaz de:
- 🔹 Compreender as características, forças e limitações dos modelos Cascata, Prototipação, Espiral e Incremental.
- 🔹 Avaliar e selecionar o modelo de ciclo de vida ideal com base na volatilidade de requisitos, criticidade de segurança e prazos.
- 🔹 Analisar o impacto da gestão de riscos e feedback contínuo no custo de alteração de software.
- 🔹 Implementar um sistema de máquina de estados em Python 3.11+ para rastrear o ciclo de vida de transição de fases.
🏢 2. Cenário Corporativo & Estudo de Caso (TecProExpress)
Na TecProExpress, a diretoria de TI está iniciando dois novos projetos simultâneos:
- Módulo de Telemetria e Frenagem Crítica: Integrado diretamente ao computador de bordo da frota pesada (risco de vida em caso de falha).
- App de Chat do Motorista com IA: Ferramenta experimental para interação em tempo real com o suporte (requisitos muito voláteis).
O Desafio: A equipe técnica não pode aplicar a mesma estratégia de processo para ambos os produtos. Você deve estruturar a governança de processos, aplicando o modelo preditivo formal para o módulo crítico e o modelo incremental adaptativo para o app experimental.
🧠 3. Fundamentação Teórica & Modelos Visuais
3.1. Panorama dos Modelos de Ciclo de Vida
Um modelo de processo de software prescreve a ordem das atividades, os critérios de entrada/saída de cada fase e as estratégias de validação com os clientes.
flowchart TD
subgraph PROCESSOS ["PARADIGMAS DE PROCESSO"]
W["🌊 Cascata (Waterfall)<br>Sequencial & Preditivo"]
I["🔄 Incremental / Iterativo<br>Entregas Parciais & Evolutivas"]
P["🎨 Prototipação<br>Validação de UI & Descoberta"]
E["🌀 Espiral (Boehm)<br>Orientado a Riscos & Ciclos"]
end
style W fill:#e1f5fe,stroke:#0284c7
style I fill:#dcfce7,stroke:#16a34a
style P fill:#fef3c7,stroke:#d97706
style E fill:#f3e5f5,stroke:#7b1fa2
3.2. Cascata vs. Incremental: Análise de Custo da Mudança
No modelo Cascata, o custo de corrigir um requisito mal compreendido na fase de testes pode ser até 100× maior do que na fase inicial de elicitação. No modelo Incremental, o feedback frequente reduz o retrabalho.
flowchart LR
subgraph Cascata ["🌊 Modelo Cascata"]
R1["Requisitos"] --> D1["Design"] --> C1["Código"] --> T1["Testes"] --> O1["Operação"]
end
subgraph Incremental ["🚀 Modelo Incremental"]
direction TB
Inc1["Incremento 1: MVP Core (4 semanas)"]
Inc2["Incremento 2: Pagamentos & API (3 semanas)"]
Inc3["Incremento 3: Relatórios & BI (3 semanas)"]
Inc1 --> Inc2 --> Inc3
end
style Cascata fill:#fee2e2,stroke:#ef4444
style Incremental fill:#dcfce7,stroke:#16a34a
💻 4. Aplicação Prática & Código Executável (Python 3.11+)
Implementação de um motor de ciclo de vida de fases de projeto com validação estrita de transições.
📋 Pré-requisitos e Instalação
Este módulo utiliza exclusivamente recursos nativos do Python 3.11+ (enum). Nenhuma instalação externa é necessária:
# Ambiente padrão Python 3.11+ (sem dependências externas)
💻 Código Completo e Autocontido (ciclo_vida_processo.py)
Crie o arquivo ciclo_vida_processo.py e insira o código abaixo:
"""
Módulo: ciclo_vida_processo.py
Domínio: Automação e rastreamento de estágios do processo de software.
Stack: Python 3.11+
"""
from enum import Enum, auto
class FaseProcesso(Enum):
CONCEPCAO = auto()
REQUISITOS = auto()
DESENHO_ARQUITETURAL = auto()
IMPLEMENTACAO = auto()
TESTES_INTEGRACAO = auto()
DEPLOY_PRODUCAO = auto()
class CicloVidaProjeto:
def __init__(self, nome_projeto: str, modelo: str = "INCREMENTAL"):
self.nome_projeto = nome_projeto
self.modelo = modelo
self.fase_atual = FaseProcesso.CONCEPCAO
self.historico_fases: list[FaseProcesso] = [self.fase_atual]
def transicionar(self, proxima_fase: FaseProcesso, criterios_aceite_atendidos: bool):
"""Valida se os critérios de qualidade da fase atual foram satisfeitos antes de avançar."""
if not criterios_aceite_atendidos:
raise PermissionError(
f"❌ Transição bloqueada: Critérios de aceite incompletos para sair de {self.fase_atual.name}."
)
self.fase_atual = proxima_fase
self.historico_fases.append(self.fase_atual)
print(f"🚀 [{self.nome_projeto}] Avançou com sucesso para a fase: {self.fase_atual.name}")
if __name__ == "__main__":
projeto_core = CicloVidaProjeto("TecPro-Telemetria", modelo="CASCATA")
# 1. Avançando com critérios satisfeitos
projeto_core.transicionar(FaseProcesso.REQUISITOS, criterios_aceite_atendidos=True)
projeto_core.transicionar(FaseProcesso.DESENHO_ARQUITETURAL, criterios_aceite_atendidos=True)
# 2. Tentativa de avanço com pendências de qualidade
try:
projeto_core.transicionar(FaseProcesso.IMPLEMENTACAO, criterios_aceite_atendidos=False)
except PermissionError as err:
print(err)
🚀 Como Executar
Execute o script no terminal:
python ciclo_vida_processo.py
🖥️ Saída Esperada no Terminal
🚀 [TecPro-Telemetria] Avançou com sucesso para a fase: REQUISITOS
🚀 [TecPro-Telemetria] Avançou com sucesso para a fase: DESENHO_ARQUITETURAL
❌ Transição bloqueada: Critérios de aceite incompletos para sair de DESENHO_ARQUITETURAL.
💡 5. Checkpoint de Engenharia & Boas Práticas
- Critério de Seleção: Use modelos sequenciais (Cascata) apenas quando os requisitos forem 100% estáveis, conhecidos e as tecnologias consolidadas.
- Anti-Pattern Big Bang Release: Nunca acumule 6 meses de desenvolvimento sem entregas intermediárias ao usuário final. Entregue valor em pequenos incrementos funcionais (sprints de 2 a 3 semanas).
🔗 6. Conexão com os Projetos Integradores
| Projeto Integrador | Como o conceito deste capítulo é aplicado no PI |
|---|---|
| PI-02: StockFlow | Definição do processo de desenvolvimento em 2 marcos (MVP no Marco 1 e PCP avançado no Marco 2). |
| PI-05: ParkFlow | Prototipação rápida do fluxo de check-in antes da codificação das tabelas de tarifação. |
🧪 7. Quiz de Fixação e Autoavaliação (Formative Assessment)
🧪 Quiz de Autoavaliação — Capítulo 02
🧪 Quiz de Autoavaliação — Capítulo 02
1. Em qual dos seguintes cenários o modelo em Cascata tradicional é mais indicado?
- A) Sistema de rede social com funcionalidades inovadoras e público jovem indefinido.
- B) Aplicativo mobile para startups onde o modelo de negócio muda a cada semana.
- C) Sistema embarcado de controle de freios aeronáuticos com especificações rigorosas e imutáveis da autoridade reguladora.
- D) Portal de e-commerce cujo design visual será testado por testes A/B em tempo real.
💡 Ver Resposta e Justificativa
Resposta Correta: C
Justificativa: O modelo Cascata funciona perfeitamente quando os requisitos são totalmente claros, previsíveis e fixados por normativas rígidas, sem necessidade de alterações constantes de escopo.
2. Qual é a principal característica distintiva do Modelo Espiral proposto por Barry Boehm?
- A) Eliminação total de documentação escrita.
- B) Ausência de testes de integração.
- C) Avaliação e mitigação explícita de riscos em cada ciclo de desenvolvimento.
- D) Uso obrigatório de metodologias NoSQL.
💡 Ver Resposta e Justificativa
Resposta Correta: C
Justificativa: O modelo Espiral é centrado na análise contínua e sistemática de riscos a cada volta da espiral, antes de comprometer recursos com desenvolvimento pesado.
3. O que define a abordagem de Desenvolvimento Incremental?
- A) O sistema é entregue apenas quando 100% das telas estiverem concluídas.
- B) O sistema é dividido em pequenos subconjuntos funcionais (incrementos), permitindo validação antecipada com os usuários.
- C) Todo o código é escrito antes de qualquer fase de requisitos.
- D) O cliente só testa o software após 12 meses de implantação.
💡 Ver Resposta e Justificativa
Resposta Correta: B
Justificativa: O desenvolvimento incremental entrega versões parciais e funcionais a cada ciclo, permitindo colher feedback real dos usuários e refinar o produto continuamente.
🛠️ 8. Ponte para a Ação: Laboratório Prático
Coloque esta teoria em prática executando o roteiro de laboratório autoguiado:
👉 ATIVIDADE 02: PROCESSOS DE SOFTWARE
📌 9. Resumo Executivo & Key Takeaways
- Processos são Guias: Um processo de software estrutura as atividades da equipe para transformar requisitos de negócio em valor de produção com previsibilidade.
- Modelo Cascata: Adequado para domínios altamente regulados e com requisitos imutáveis; vulnerável a mudanças tardias.
- Modelo Incremental: Base das metodologias ágeis modernas; reduz o risco de construir o produto errado ao colher feedback contínuo.
- Modelo Espiral: Abordagem de alta maturidade com ênfase na identificação e neutralização antecipada de riscos técnicos e de negócio.