🧩 Exercícios — Cap 07: Processos de Negócio com BPMN
Guia Extra: Engenharia de Software e Modelagem UML • Bloco 2: Requisitos e Processos em Modelo • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 7.1 — Identificar os Elementos
Contexto: “O pedido de compra de livros chega por e-mail. O setor de acervo analisa. Se o valor passar de R$ 5.000, a coordenação aprova; senão, segue direto. Aprovado, o setor financeiro emite o pagamento e o setor de acervo cadastra os livros quando chegarem.”
Requisitos de Execução:
- Liste: evento de início (e seu tipo), eventos de fim, tarefas, gateways (e seus tipos) e raias.
Resultado Esperado
Uma tabela com cada elemento BPMN encontrado.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_1_SeuNome.md - Envie na tarefa:
Atividade Cap 07 - Processos de Negócio com BPMN
🔑 Gabarito de Código & Solução Comentada
| Elemento | Encontrado |
|---|---|
| Evento de início | Mensagem: “pedido chega por e-mail” |
| Tarefas | Analisar pedido; Aprovar compra; Emitir pagamento; Cadastrar livros |
| Gateway | Exclusivo (XOR): “valor > R$ 5.000?” |
| Evento intermediário | Recebimento dos livros (mensagem) antes de cadastrar |
| Evento de fim | Livros cadastrados (e, se houver, “compra reprovada”) |
| Raias | Setor de acervo, Coordenação, Financeiro |
🎯 Nível 2: Prática
Problema 7.2 — Desenhar o Processo de Compra
Contexto: O mesmo processo do Problema 7.1.
Requisitos de Execução:
- Desenhe o processo em Mermaid usando a aproximação do capítulo (subgrafos como raias,
(( ))como eventos, losango com×como gateway exclusivo). - Inclua o caminho de reprovação pela coordenação.
Resultado Esperado
Um diagrama com 3 raias, 1 gateway exclusivo de valor, 1 de aprovação e dois eventos de fim.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_2_SeuNome.md - Envie na tarefa:
Atividade Cap 07 - Processos de Negócio com BPMN
🔑 Gabarito de Código & Solução Comentada
flowchart LR
subgraph ACV["Raia: Setor de acervo"]
S(("Pedido por e-mail")) --> AN["Analisar pedido"]
AN --> G1{"× Valor > R$ 5.000?"}
REC(("Livros recebidos")) --> CAD["Cadastrar livros"] --> F1(((Fim: cadastrados)))
end
subgraph COO["Raia: Coordenação"]
G1 -->|"sim"| AP["Aprovar compra"]
AP --> G2{"× Aprovado?"}
G2 -->|"não"| F2(((Fim: reprovado)))
end
subgraph FIN["Raia: Financeiro"]
G1 -->|"não"| PG["Emitir pagamento"]
G2 -->|"sim"| PG
PG --> REC
end
🎯 Nível 3: Integração
Problema 7.3 — AS-IS, Gargalos e TO-BE da Catalogação
Contexto: Hoje, cada livro novo é catalogado à mão: a bibliotecária digita título, autores e assunto (15 min por livro), imprime a etiqueta e leva à estante. Livros ficam em média 20 dias numa caixa antes de serem catalogados.
Requisitos de Execução:
- Desenhe o AS-IS.
- Aponte 2 gargalos.
- Proponha o TO-BE usando busca automática dos dados pelo ISBN numa base bibliográfica externa (que vira uma nova piscina, com fluxo de mensagem).
- Escreva 2 requisitos funcionais que surgem do TO-BE.
Resultado Esperado
Dois diagramas, a lista de gargalos e dois requisitos numerados.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_3_SeuNome.md - Envie na tarefa:
Atividade Cap 07 - Processos de Negócio com BPMN
🔑 Gabarito de Código & Solução Comentada
flowchart LR
S((Livro chega)) --> CX["Esperar na caixa (média 20 dias)"] --> DG["Digitar dados (15 min)"] --> ET["Imprimir etiqueta"] --> ES["Levar à estante"] --> F(((Fim)))
Gargalos: a fila na caixa (20 dias) e a digitação manual (15 min por livro, com erros de grafia).
flowchart LR
subgraph REDE["Piscina: Rede de bibliotecas"]
S((Livro chega)) --> LI["Ler ISBN"] --> CO["Conferir dados sugeridos"] --> ET["Imprimir etiqueta"] --> F(((Fim)))
end
subgraph EXT["Piscina: Base bibliográfica externa"]
API["Responder dados do ISBN"]
end
LI -.->|"mensagem: consulta ISBN"| API
API -.->|"mensagem: dados"| CO
- [RF030] O sistema deve preencher título, autores e assunto a partir do ISBN consultando a base bibliográfica externa.
- [RF031] O sistema deve permitir que a bibliotecária corrija os dados sugeridos antes de salvar.
🎯 Nível 4: Desafio
Problema 7.4 — Quantos Caminhos Tem o Processo?
Contexto: Para planejar testes de um processo automatizado, é preciso saber quantos caminhos existem do início ao fim. Gateways exclusivos criam alternativas; paralelos não criam caminhos diferentes (todos os ramos executam).
Requisitos de Execução:
- Represente o processo do Problema 7.2 como um grafo em que cada nó tem uma lista de sucessores e os gateways exclusivos são marcados.
- Escreva uma função recursiva que liste todos os caminhos do início a qualquer fim.
- Imprima cada caminho.
Resultado Esperado
Os caminhos possíveis do processo de compra, um por linha.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_4_SeuNome.md - Envie na tarefa:
Atividade Cap 07 - Processos de Negócio com BPMN
🔑 Gabarito de Código & Solução Comentada
# caminhos_bpmn.py
GRAFO = {
"inicio": ["analisar"],
"analisar": ["valor_alto?"],
"valor_alto?": ["aprovar", "pagar"], # gateway exclusivo
"aprovar": ["aprovado?"],
"aprovado?": ["pagar", "fim_reprovado"], # gateway exclusivo
"pagar": ["receber"],
"receber": ["cadastrar"],
"cadastrar": ["fim_cadastrado"],
"fim_reprovado": [],
"fim_cadastrado": [],
}
def caminhos(no: str, atual: list[str]) -> list[list[str]]:
atual = atual + [no]
if not GRAFO[no]:
return [atual]
resultado = []
for prox in GRAFO[no]:
resultado += caminhos(prox, atual)
return resultado
for c in caminhos("inicio", []):
print(" -> ".join(c))
Saída:
inicio -> analisar -> valor_alto? -> aprovar -> aprovado? -> pagar -> receber -> cadastrar -> fim_cadastrado
inicio -> analisar -> valor_alto? -> aprovar -> aprovado? -> fim_reprovado
inicio -> analisar -> valor_alto? -> pagar -> receber -> cadastrar -> fim_cadastrado
Comentário: três caminhos, logo pelo menos três casos de teste. Com um gateway paralelo, os ramos seriam executados juntos e não multiplicariam os caminhos; para isso o grafo precisaria marcar o tipo do gateway.