🛡️ 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
- 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 Integrador | Como o conceito deste capítulo é aplicado no PI |
|---|---|
| PI-02: StockFlow | Validação de consistência: movimentações de almoxarifado nunca podem permitir saldo negativo de estoque. |
| PI-09: FinLite | RTM 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
🧪 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
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.