📊 Atividade 11: Diagrama de Atividades (UML)
🎯 Objetivo da Aula
Ao final desta atividade, você será capaz de:
- Modelar a lógica processual e fluxos de negócio usando a sintaxe UML.
- Representar bifurcações e junções lógicas (decisões lógicas).
- Representar forks e joins para fluxos de processamento em paralelo.
- Organizar responsabilidades usando Raias de Natação (Swimlanes / Subgraphs).
🏢 O Cenário Prático (Seu Desafio)
Na TecProExpress, a diretoria de Logística percebeu um grande gargalo: quando um cliente clica em "Confirmar Compra", o sistema antigo esperava o faturamento da Nota Fiscal terminar para somente depois avisar o estoque. Em dias de grande volume, os motoristas ficavam parados esperando a emissão da nota, mesmo com a carga já pronta para carregar!
"Seu desafio como Analista de Processos de TI é desenhar o fluxo de atividades de faturamento e separação de forma paralela. Você deve modelar o processo de ponta a ponta: do clique do usuário, dividindo a ação em duas linhas paralelas (Faturamento e Separação), juntando-as no carregamento e finalizando com a saída do caminhão."
🧠 Fundamentos: A Teoria Traduzida
O Diagrama de Atividades UML é como um super fluxograma. Ele descreve a ordem em que as atividades de um sistema ou processo ocorrem, com excelente suporte para paralelismo.
Elementos Chave:
- Nó Inicial (Círculo Preto Sólido): Onde o processo começa.
- Ação/Atividade (Retângulo Arredondado): Um passo procedural executado pelo sistema ou humano.
- Fork (Barra de Divisão): Divide uma linha em duas ou mais ações que acontecem em paralelo.
- Join (Barra de Sincronização): Aguarda todas as linhas paralelas terminarem para continuar o fluxo.
- Decisão (Losango): Uma bifurcação baseada em uma pergunta do tipo Sim/Não.
- Nó Final (Círculo com Alvo): Onde o processo termina.
📊 Visualizando a Lógica
📖 Exemplo Guiado
Abaixo, veja como detalhar o processamento com raias de natação (separando as responsabilidades entre Cliente, Financeiro e Logística).
| Elemento UML | O que representa? | Ator/Componente Responsável |
|---|---|---|
| Iniciar Compra | Nó Inicial | Cliente |
| Faturar Cartão | Ação | Financeiro (Gateway) |
| Separar Caixas | Ação | Logística (Operador) |
| Despachar Caminhão | Ação | Transportadora |
🛠️ Estrutura Visual da Expedição
Para facilitar a leitura profissional, dividimos o fluxo usando Raias de Natação (subgraphs no Mermaid):
🔍 Detalhamento do Processo:
- A raia de natação deixa evidente quem faz o quê. Se o Financeiro falhar ao registrar impostos, o Join bloqueia o carregamento do caminhão na Transportadora, mesmo que a Logística já tenha embalado tudo!
🛠️ Prática Obrigatória 1: O Diagrama de Atividades
Cenário: O projeto de grupo semestral que você está desenvolvendo.
- Selecione a funcionalidade principal ou a jornada de maior complexidade do seu sistema (Ex: Devolução de Mercadorias, Cadastro e Aprovação de Motoristas, Compra com Vários Modos de Pagamento).
- Identifique pelo menos 3 raias de responsabilidade (Humanos ou Sistemas/Componentes).
- Insira pelo menos 1 Fork e 1 Join para representar ações executadas em paralelo.
- Insira pelo menos 1 Decisão com caminhos alternativos de erro ou validação.
🏁 Resultado Esperado (Para sua Referência)
Uma imagem (PNG/JPG) do diagrama de atividades estruturado de forma limpa, indicando claramente os caminhos paralelos e as fronteiras de responsabilidade.
🛠️ Prática Obrigatória 2: Justificativa de Paralelismo
Cenário: Defesa arquitetural do processo.
- Escreva uma breve justificativa de 1 parágrafo explicando por que você decidiu paralelizar as ações mapeadas na Prática 1.
- Explique o que aconteceria se esse processo fosse executado de forma estritamente sequencial (Cascata procedural) em termos de performance e satisfação do usuário.
📤 Instruções de Entrega (Microsoft Teams)
Após validar suas modelagens técnicas:
- Salve o arquivo de justificativa como
Atividade_11.mde a imagem do seu diagrama com o nomeAtividade_11.pngna pastaes-atv-11-atividades/do seu repositório GitHub. - Certifique-se de fazer o commit e push para o repositório público.
- Submeta o link do seu repositório no Microsoft Teams para avaliação do professor.
💡 Checkpoint de Lógica
📊 Rubrica Formativa de Avaliação
| Critério de Avaliação | Insuficiente (0% - 40%) | Regular (41% - 70%) | Excelente (71% - 100%) |
|---|---|---|---|
| Diagrama de Atividades UML & Raias de Natação | Desenha o fluxo sem raias de natação ou sem nós de decisão e paralelismo. | Mapeia as raias mas confunde os conceitos de Fork e Join. | Diagrama de atividades impecável com ao menos 3 raias, nós de decisão claros e par Fork/Join bem balanceado. |
| Justificativa de Paralelismo | Omite a justificativa de paralelização de tarefas. | Justifica superficialmente sem comparar com a execução sequencial procedural. | Justificativa de alto nível comparando ganhos de performance e UX em relação à execução estritamente sequencial. |
| Entrega no GitHub | Entrega fora da pasta `es-atv-11-atividades/`. | Entrega apenas o texto sem o arquivo `.png` do diagrama. | Submete `Atividade_11.md` e `Atividade_11.png` no repositório com formatação validada. |
🏁 Atividade 10: Projeto Integrador Final
Bem-vindo ao grande encerramento do seu módulo de Engenharia de Software. Ao longo deste semestre, você não apenas aprendeu teoria, você construiu um ativo intelectual. Hoje, você consolidará todas as etapas em um único documento de padrão internacional: o ERS (Especificação de Requisitos de Software). 🛡️🧩
🔄 Atividade 12: Diagrama de Transição de Estados (UML)
Bem-vindo a mais uma etapa prática do seu treinamento em Engenharia de Software. Na atividade anterior, você aprendeu sobre processos e fluxos lógicos. Hoje, nosso foco muda para o ciclo de vida de uma entidade do sistema. Você aprenderá como modelar os Estados pelos quais um dado transiciona, garantindo que o software nunca entre em inconsistência lógica. 🛡️🧩