Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🔄 CAPÍTULO 02: MODELOS DE PROCESSO DE SOFTWARE

Um modelo de processo de software é uma representação abstrata e simplificada de um processo real. Na engenharia moderna, esses modelos ditam como o código sai da IDE do desenvolvedor e chega com segurança à nuvem. 🛡️🧩


🎯 Objetivo do Capítulo

Compreender as atividades, artefatos e papéis envolvidos nos principais modelos de ciclo de vida, capacitando o aluno a escolher a melhor estratégia para cada tipo de projeto corporativo.


🏢 O Cenário Corporativo (TecProExpress)

Na TecProExpress, a equipe de arquitetura está dividida. Para o novo sistema de Controle de Satélites de Logística, o gerente sênior exige o rigor do modelo em Cascata. Já para o App de Chat do Motorista, a equipe de inovação quer usar Desenvolvimento Incremental (Ágil).

"Seu papel como Engenheiro de Processos é definir qual modelo se encaixa melhor em cada projeto, equilibrando a necessidade de previsibilidade com a urgência de feedback do usuário."


🧠 Fundamentos: Modelos de Processos

No ecossistema corporativo atual, os modelos de processo funcionam como o "Manual de Instruções" da fábrica de software.

Comparação dos Modelos Fundamentais

Modelo ClássicoDescrição e Perspectiva Tecnológica
Cascata (Waterfall)Abordagem sequencial rígida: Requisitos -> Projeto -> Implementação -> Teste.
Incremental (Ágil)O sistema é construído por versões parciais (incrementos). A arquitetura cresce aos poucos.
Orientada a ReusoFoca na integração de dependências (ex: pacotes do Maven Central) em vez de programar tudo do zero.
graph LR
    A["Caos Ad-hoc"] -->|Engenharia| B["Modelos"]
    B --> C["Processo Estruturado Agile"]
    B --> D["Pipeline CI/CD Predictível"]

🌊 O Modelo em Cascata (Waterfall)

O paradigma mais antigo da Engenharia de Software. Propõe uma abordagem sistemática onde cada fase deve ser concluída antes do início da próxima.

graph TD
    A["Análise e Requisitos"] --> B["Projeto de Domínio"]
    B --> C["Implementação do Código"]
    C --> D["Integração e Testes Funcionais"]
    D --> E["Deploy e Manutenção"]

    style A fill:#e3f2fd,stroke:#1e88e5 
    style B fill:#e3f2fd,stroke:#1e88e5 
    style C fill:#e3f2fd,stroke:#1e88e5 
    style D fill:#e3f2fd,stroke:#1e88e5 
    style E fill:#e3f2fd,stroke:#1e88e5 

🔍 Os Desafios Críticos (Análise TecProExpress)

  • Dificuldade de Iteração: Mudanças tardias são extremamente custosas.
  • Incerteza Inicial: Exige que o cliente defina todos os requisitos no dia 1.
  • Demora no Resultado: O software funcional só aparece no final do ciclo de meses ou anos.

[!CAUTION] Dica de Especialista: O modelo em cascata ainda é usado? Sim, mas apenas quando os requisitos são imutáveis e regulamentados (ex: software de controle militar ou médico). Para construir APIs B2B/B2C, fuja do Cascata e abrace o ágil. 🧠🛡️


🚀 Desenvolvimento Incremental

Baseia-se na ideia de construir um MVP (Minimum Viable Product), expô-lo ao feedback e evoluí-lo em Sprints.

graph LR
    subgraph "Ciclo Incremental (Sprints)"
        direction TB
        E["Especificação da API"] <--> D["Desenvolvimento (Java)"]
        D <--> V["Validação (JUnit / CI)"]
    end

    Iteration --> V1["Release v1.0"]
    V1 --> V2["Release v1.1"]
    V2 --> V3["Release v2.0 Final"]

🔍 Vantagens Práticas

  • Redução de Custos: Menos documentação pesada inicial.
  • Feedback Antecipado: O cliente vê o sistema funcionando em semanas, não anos.
  • Resiliência: Se um incremento der errado, você refatora apenas aquela parte sem perder o projeto todo.

🧩 Engenharia Orientada a Reuso

No ecossistema Java/Spring, você não cria um sistema de segurança do zero. Você importa o Spring Security. Isso é Engenharia de Reuso.

graph LR
    subgraph "Etapas Iniciais"
        direction LR
        E1["Especificação"] --> E2["Busca de Libs (Maven)"] --> E3["Adaptação"]
    end

    subgraph "Implementação Prática"
        direction LR
        E4["Importação"] --> E5["Injeção de Bean"] --> E6["Validação"]
    end

    E3 --> E4

[!TIP] Dica de Performance Corporativa: Antes de criar sua própria solução "inovadora" para manipular datas ou gerar planilhas, verifique bibliotecas maduras como Apache Commons ou Google Guava. Um bom Sênior sabe conectar blocos prontos de forma segura. 🚀


💡 Checkpoint de Lógica

[!IMPORTANT] Reflexão Profissional: Por que o modelo incremental é o favorito das Startups e o modelo em Cascata é o favorito de órgãos governamentais de infraestrutura crítica? (Resposta: Startups vivem da incerteza e feedback rápido; Governos precisam de conformidade rígida e orçamentos fechados pré-determinados). 🧠🛡️