🛡️ CAPÍTULO 08: VALIDAÇÃO E GESTÃO DE REQUISITOS


🎯 1. Objetivos de Aprendizagem & Competências

Estimativa de Dedicação: 2 horas de estudo autoguiado.
Ao final deste capítulo, você será capaz de:

  • 🔹 Avaliar a qualidade de requisitos aplicando os 5 critérios de Sommerville (Validade, Consistência, Completeza, Realismo e Verificabilidade).
  • 🔹 Compreender a economia do erro e a regra de custo exponencial de correção (Regra 1:10:100).
  • 🔹 Construir e manter Matrizes de Rastreabilidade de Requisitos (RTM) para análise de impacto em mudanças.
  • 🔹 Implementar um sistema de controle de solicitações de mudança (Change Requests) em Python 3.11+.

🏢 2. Cenário Corporativo & Estudo de Caso (TecProExpress)

Na TecProExpress, a equipe de desenvolvimento identificou um grave conflito durante o sprint: o Requisito RF-02 (Cadastro) determinava que o CPF de clientes poderia ser editado a qualquer momento, enquanto o Requisito RF-45 (Segurança e Auditoria Fiscal) proibia qualquer alteração de chaves primárias de identificação fiscal.

O Desafio: Como Analista de Requisitos Sênior, você deve realizar a auditoria cruzada de requisitos, identificar ambiguidades e contradições antes que as tabelas de banco de dados e APIs sejam construídas, formalizando um comitê de controle de mudanças (Change Control Board - CCB).


🧠 3. Fundamentação Teórica & Modelos Visuais

3.1. Os 5 Pilares de Validação de Requisitos (Sommerville)

A validação assegura que a especificação reflete a intenção real do negócio sem contradições lógicas:

flowchart TD
    subgraph PILARES ["5 CRITÉRIOS DE VALIDAÇÃO DE REQUISITOS"]
        V["1. VALIDADE: O software resolve a necessidade real?"]
        C["2. CONSISTÊNCIA: Existem requisitos contraditórios?"]
        CP["3. COMPLETEZA: Todas as exceções e fluxos alternativos foram previstos?"]
        R["4. REALISMO: É viável implementar dentro do prazo e orçamento?"]
        VF["5. VERIFICABILIDADE: É possível escrever um teste automatizado para comprovar?"]
    end
    
    style PILARES fill:#f8fafc,stroke:#475569
    style V fill:#e0f2fe,stroke:#0284c7
    style C fill:#ede7f6,stroke:#5e35b1
    style CP fill:#dcfce7,stroke:#16a34a
    style R fill:#fef3c7,stroke:#d97706
    style VF fill:#fee2e2,stroke:#ef4444

3.2. Fluxo de Gestão de Mudanças (Change Management)

Requisitos de software mudam continuamente devido a novas leis, estratégias de mercado e tecnologias:

flowchart LR
    REQ["📢 Solicitação de Mudança<br>(Change Request)"] --> IMP["🔍 Análise de Impacto<br>(Custo, Prazo & RTM)"]
    IMP --> CCB["⚖️ Comitê CCB<br>(Aprovação/Rejeição)"]
    CCB -->|Aprovado| UPD["📝 Atualização de ERS<br>& Backlog Sprint"]
    CCB -->|Rejeitado| LOG["📁 Arquivamento Justificado"]
    
    style REQ fill:#e0f2fe,stroke:#0284c7
    style IMP fill:#ede7f6,stroke:#5e35b1
    style CCB fill:#fef3c7,stroke:#d97706
    style UPD fill:#dcfce7,stroke:#16a34a
    style LOG fill:#fee2e2,stroke:#ef4444

💻 4. Aplicação Prática & Código Executável (Python 3.11+)

Implementação de um motor de gestão de mudanças e análise de impacto.

📋 Pré-requisitos e Instalação

Este módulo utiliza exclusivamente recursos nativos do Python 3.11+ (dataclasses e enum). Nenhuma instalação externa é necessária:

# Ambiente padrão Python 3.11+ (sem dependências externas)

💻 Código Completo e Autocontido (gestao_mudancas_ccb.py)

Crie o arquivo gestao_mudancas_ccb.py e insira o código abaixo integralmente:

"""
Módulo: gestao_mudancas_ccb.py
Domínio: Análise de impacto e aprovação de Change Requests (CR).
Stack: Python 3.11+
"""
from dataclasses import dataclass, field
from enum import Enum, auto

class StatusMudanca(Enum):
    SUBMETIDA = auto()
    EM_ANALISE_IMPACTO = auto()
    APROVADA_CCB = auto()
    REJEITADA = auto()

@dataclass
class SolicitacaoMudanca:
    id_cr: str
    descricao: str
    requisitos_impactados: list[str]
    horas_estimadas: int
    custo_adicional: float
    status: StatusMudanca = StatusMudanca.SUBMETIDA

class ComiteControleMudancas:
    def __init__(self, limite_orcamento_livre: float = 5000.00):
        self.limite_orcamento_livre = limite_orcamento_livre
        self.solicitacoes: dict[str, SolicitacaoMudanca] = {}

    def registrar_cr(self, cr: SolicitacaoMudanca):
        self.solicitacoes[cr.id_cr] = cr

    def deliberar(self, id_cr: str) -> str:
        cr = self.solicitacoes.get(id_cr)
        if not cr:
            raise KeyError("CR não encontrada.")

        if cr.custo_adicional <= self.limite_orcamento_livre and cr.horas_estimadas <= 40:
            cr.status = StatusMudanca.APROVADA_CCB
            return f"✅ [{cr.id_cr}] APROVADA: Impacto de {len(cr.requisitos_impactados)} requisito(s) dentro do limite."
        else:
            cr.status = StatusMudanca.EM_ANALISE_IMPACTO
            return f"⚠️ [{cr.id_cr}] RETIDA: Requer aprovação da Diretoria Executiva (Custo: R$ {cr.custo_adicional:.2f})."

if __name__ == "__main__":
    ccb = ComiteControleMudancas()
    cr1 = SolicitacaoMudanca("CR-001", "Adição de PIX no Checkout", ["RF-08", "RF-09"], 16, 2400.00)
    cr2 = SolicitacaoMudanca("CR-002", "Migração completa de banco legado", ["RF-01", "RF-02", "RNF-01"], 120, 18000.00)

    ccb.registrar_cr(cr1)
    ccb.registrar_cr(cr2)

    print(ccb.deliberar("CR-001"))
    print(ccb.deliberar("CR-002"))

🚀 Como Executar

Execute o script no terminal:

python gestao_mudancas_ccb.py

🖥️ Saída Esperada no Terminal

✅ [CR-001] APROVADA: Impacto de 2 requisito(s) dentro do limite.
⚠️ [CR-002] RETIDA: Requer aprovação da Diretoria Executiva (Custo: R$ 18000.00).

💡 5. Checkpoint de Engenharia & Boas Práticas

Boas Práticas & Anti-Patterns

  • Regra 1:10:100 (Pressman / Boehm): O custo de corrigir um defeito no documento de requisitos custa 1×; durante o desenvolvimento custa 10×; após o deploy em produção custa 100×. Invista em validação precoce!
  • Anti-Pattern Scope Creep: A expansão desordenada de escopo sem análise de impacto técnico e financeiro é a principal causa de estouro de orçamento em projetos de TI.

🔗 6. Conexão com os Projetos Integradores

Projeto IntegradorComo o conceito deste capítulo é aplicado no PI
PI-02: StockFlowValidação de consistência: movimentações de almoxarifado nunca podem permitir saldo negativo de estoque.
PI-09: FinLiteRTM conectando os títulos a pagar/receber com as baixas financeiras e saldos das contas bancárias.

🧪 7. Quiz de Fixação e Autoavaliação (Formative Assessment)

🧪 Quiz de Autoavaliação — Capítulo 08

1. De acordo com a 'Regra 1:10:100' da Engenharia de Software, por que a validação de requisitos é considerada uma atividade de altíssimo retorno financeiro?

  • A) Porque ela substitui a necessidade de contratar programadores.
  • B) Porque detectar e corrigir um erro conceitual na fase de requisitos custa até 100 vezes menos do que corrigi-lo após o sistema estar em produção.
  • C) Porque ela elimina a necessidade de infraestrutura na nuvem.
  • D) Porque ela gera lucros automáticos no mercado de ações.
💡 Ver Resposta e Justificativa

Resposta Correta: B
Justificativa: O custo de retrabalho cresce exponencialmente. Um erro corrigido no documento exige apenas alterar um texto; em produção, exige refatorar código, migrar bancos de dados, retestar e reparar danos aos usuários.


2. Qual é o papel principal de um Comitê de Controle de Mudanças (CCB - Change Control Board)?

  • A) Escrever o código backend das APIs em Flask.
  • B) Avaliar o impacto técnico, de prazo e de custo de solicitações de alteração de escopo, aprovando ou rejeitando mudanças formalmente.
  • C) Comprar os computadores e licenças da equipe.
  • D) Conduzir testes manuais de interface.
💡 Ver Resposta e Justificativa

Resposta Correta: B
Justificativa: O CCB evita o 'Scope Creep', garantindo que toda modificação de escopo seja tecnicamente justificada, orçada e acordada por todas as partes antes da implementação.


3. O critério de validação de 'Verificabilidade' estabelece que:

  • A) O sistema deve rodar apenas no sistema operacional Windows.
  • B) Todo requisito deve ser formulado de maneira que permita criar um teste objetivo e mensurável para comprovar se ele foi satisfeito.
  • C) O código deve ser escrito sem uso de frameworks.
  • D) O software não pode conter bancos de dados relacionais.
💡 Ver Resposta e Justificativa

Resposta Correta: B
Justificativa: Se não for possível escrever um teste automatizado ou um procedimento claro para auditar o atendimento de um requisito, ele é ambíguo e não-verificável.


🛠️ 8. Ponte para a Ação: Laboratório Prático

🎯 Próximo Passo Prático

Coloque esta teoria em prática executando o roteiro de laboratório autoguiado:
👉 ATIVIDADE 03: ENGENHARIA DE REQUISITOS


📌 9. Resumo Executivo & Key Takeaways

  • Validação Precoce: Validar requisitos no papel é a forma mais barata de garantir a qualidade e a sustentabilidade de um software.
  • 5 Pilares de Qualidade: Validade, Consistência, Completeza, Realismo e Verificabilidade.
  • Gestão de Mudanças (CCB): Mudanças são inevitáveis no ciclo de vida de TI, mas devem ser formalmente auditadas em custo e prazo.
  • Matriz de Rastreabilidade: Permite avaliar em segundos quais módulos e testes serão impactados quando um requisito mudar.