🎭 Cap 06: Casos de Uso: Diagrama e Especificação Textual
Guia Extra: Engenharia de Software e Modelagem UML • Bloco 2: Requisitos e Processos em Modelo
🗺️ Mapa Conceitual do Capítulo
flowchart TD
subgraph ATORES["Atores (Papéis Externos)"]
AP["Ator Primário\n(Inicia a interação para atingir meta)"]
AS["Ator Secundário\n(Sistema de Apoio / Gateway de Pagamento)"]
AT["Ator Temporal\n(Cron Job / Timer do Sistema)"]
end
subgraph SISTEMA["Fronteira do Sistema (System Boundary)"]
UC_BASE["Caso de Uso Base: Realizar Matrícula"]
UC_INC["Caso de Uso Incluído: Validar CPF\n<<include>> (Obrigatório e Reutilizável)"]
UC_EXT["Caso de Uso Extensão: Solicitar Bolsa\n<<extend>> (Opcional sob Ponto de Extensão)"]
UC_BASE -.->|"<<include>>"| UC_INC
UC_EXT -.->|"<<extend>>"| UC_BASE
end
AP --> UC_BASE
UC_BASE --> AS
subgraph ESPECIFICACAO["Especificação Textual Estruturada (Alistair Cockburn)"]
EP_META["Meta no Nível do Mar (Objetivo do Usuário)"]
EP_COND["Pré-condições e Pós-condições (Garantia de Sucesso)"]
EP_FLUX["Fluxo Principal (Caminho Feliz)"]
EP_ALT["Fluxos Alternativos e Tratamento de Exceções"]
end
UC_BASE --> ESPECIFICACAO
style ATORES fill:#ede7f6,stroke:#512da8,stroke-width:2px
style SISTEMA fill:#e1f5fe,stroke:#0288d1,stroke-width:2px
style ESPECIFICACAO fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style UC_BASE fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style UC_INC fill:#fce4ec,stroke:#e91e63,stroke-width:2px
style UC_EXT fill:#e0f2f1,stroke:#009688,stroke-width:2px
🎭 1. Conceito e Elementos Centrais do Modelo de Casos de Uso
Introduzido por Ivar Jacobson no método OOSE e incorporado à UML, o Modelo de Casos de Uso é a técnica padrão da indústria para capturar requisitos funcionais sob a perspectiva dos usuários. Ele estabelece uma fronteira rigorosa entre o que reside dentro do software e o que está fora dele no ambiente operacional.
O modelo é composto por dois artefatos complementares:
- O Diagrama de Casos de Uso: Funciona como o mapa visual ou “índice gráfico” das capacidades oferecidas pelo sistema.
- A Especificação Textual: Onde reside o verdadeiro valor da engenharia, documentando passo a passo o diálogo entre os atores e o sistema.
Elementos Estruturais do Diagrama
- Fronteira do Sistema (System Boundary): Um retângulo delimitador que contém todos os casos de uso internos. Tudo o que estiver fora do retângulo é considerado ambiente externo.
- Atores: Entidades externas que interagem com o sistema. Um ator representa um papel, nunca o cargo de uma pessoa física específica.
- Ator Primário: Quem inicia o caso de uso para alcançar um objetivo mensurável (posicionado convencionalmente à esquerda).
- Ator Secundário: Sistemas externos, bancos ou serviços de terceiros que fornecem suporte ao caso de uso (posicionados à direita).
- Ator Temporal: Eventos baseados em tempo (ex: “Relógio do Sistema à meia-noite”).
- Caso de Uso: Uma sequência de ações executadas pelo sistema que produz um resultado observável de valor para o ator. Sua nomenclatura deve obrigatoriamente iniciar com um verbo no infinitivo seguido de um substantivo (ex: Emitir Boleto, Efetuar Matrícula, Consultar Saldo).
🔗 2. Os Relacionamentos da UML: Semântica e Regras de Ouro
| Relacionamento | Notação Visual | Semântica Formal | Regra de Ouro Prática |
|---|---|---|---|
| Associação | Linha contínua sólida | Comunicação direta bidirecional entre ator e caso de uso. | Atores nunca se associam diretamente entre si no diagrama. |
<<include>> |
Seta tracejada: Base $\rightarrow$ Incluído | O caso base sempre e obrigatoriamente executa o caso incluído. | Usado para reaproveitar lógicas comuns em múltiplos casos de uso (ex: autenticação, logs). |
<<extend>> |
Seta tracejada: Extensão $\rightarrow$ Base | O caso de extensão insere comportamento opcional no caso base sob uma condição. | A seta aponta para o caso base. O caso base precisa desconhecer a extensão para manter baixo acoplamento. |
| Generalização | Linha com triângulo fechado vazado | Especialização e herança de comportamento (de atores ou casos). | Exemplo: Professor é uma especialização do ator Usuário. |
classDiagram
direction LR
class AtorPrimario["Ator: Aluno"]
class UC_Inscricao["UC01: Inscrever em Disciplina"]
class UC_Verificar["UC02: Verificar Pré-requisitos"]
class UC_Trancar["UC03: Solicitar Trancamento Excepcional"]
AtorPrimario --> UC_Inscricao
UC_Inscricao ..> UC_Verificar : <<include>>
UC_Trancar ..> UC_Inscricao : <<extend>> (se reprovação >= 2)
🎚️ 3. A Granularidade dos Casos de Uso (Níveis de Cockburn)
Alistair Cockburn estabeleceu uma metáfora clássica baseada em altitude para calibrar o nível de abstração dos casos de uso:
- Nível Muito Alto (Nuvens / Céu): Objetivos estratégicos corporativos (ex: “Gerenciar Cadeia de Suprimentos”). Abrange múltiplos sistemas e processos de negócio completos.
- Nível do Mar (Sea Level - Padrão Ouro): Objetivos da tarefa do usuário (ex: “Cadastrar Novo Fornecedor”). É o nível canônico para a UML: uma única sessão de uso onde o usuário atinge um objetivo concreto.
- Nível Submarino (Peixe / Fundo do Mar): Subfunções técnicas pequenas demais para serem casos de uso autônomos (ex: “Digitar Senha”, “Clicar em Salvar”). Não devem ser diagramados como casos de uso isolados.
📝 4. Template Formal de Especificação Textual (Cockburn)
# UC04 — Efetuar Reserva de Exemplar de Livro
- **Identificador:** UC04
- **Ator Primário:** Leitor (Aluno ou Professor)
- **Atores Secundários:** Provedor de Notificação por E-mail (SendGrid)
- **Pré-condições:**
1. O Leitor deve estar devidamente autenticado no portal.
2. O Leitor não pode possuir multas em aberto superiores a R$ 10,00.
- **Pós-condições (Garantia de Sucesso):**
1. A reserva é gravada na base de dados com status "PENDENTE".
2. A posição na fila de espera é recalculada e informada ao usuário.
3. Um e-mail de confirmação é despachado.
### Fluxo Principal (Caminho Feliz):
1. O Leitor localiza o título desejado e solicita a reserva de um exemplar.
2. O Sistema verifica se todos os exemplares físicos daquele título estão emprestados.
3. O Sistema valida que o Leitor não ultrapassou o limite máximo de 3 reservas ativas.
4. O Sistema inclui o Leitor na fila de espera do título e atribui a posição ordinal.
5. O Sistema exibe a data limite estimada de espera e o número do protocolo da reserva.
6. O Sistema agenda o envio de e-mail de confirmação através do ator secundário.
### Fluxos Alternativos:
- **2a. Existe exemplar disponível na estante:**
1. O Sistema informa que a reserva é desnecessária pois há cópias disponíveis no balcão.
2. O Sistema oferece a opção de gerar um mapa de localização na estante.
3. O caso de uso termina.
### Fluxos de Exceção:
- **3a. Leitor possui pendência financeira ou suspensão cadastral:**
1. O Sistema bloqueia a transação e exibe o extrato das multas em aberto.
2. O Sistema encerra o fluxo sem efetivar a reserva.
🚫 5. Anti-Patterns Clássicos de Modelagem
- Decomposição em Fluxograma Funcional: Criar casos de uso para cada etapa sequencial de uma tela (“Validar Campo Nome”, “Clicar no Botão OK”).
- Proliferação de CRUDs Vazios: Criar quatro casos de uso idênticos (Incluir, Alterar, Excluir, Consultar) para entidades simples. O padrão correto é unificar em um único caso de uso abrangente: “Manter Cadastro de Clientes”.
- Abuso de
<<extend>>e<<include>>: Criar teias complexas de dezenas de setas tracejadas. Diagramas legíveis possuem no máximo 5 a 10 casos de uso por pacote funcional.