O diagrama de atividades é um diagrama comportamental importante na UML para descrever aspectos dinâmicos do sistema.
O diagrama de atividades herda várias características dos Diagramas de Transição de Estados .
O diagrama de atividades é essencialmente uma versão avançada de um fluxograma que modela o fluxo de uma atividade para outra.
Os diagramas de atividades descrevem como as atividades são coordenadas para fornecer um serviço e podem estar em diferentes níveis de abstração.
O diagrama de atividades pode ajudar a:
Demonstrar a lógica de um algoritmo;
Descrever um caso de uso UML e modelar fluxos entre de casos de uso;
Ilustrar um processo de negócio ou fluxo de trabalho;
Simplificar e melhorar qualquer processo ao esclarecer casos de uso complicados;
Modelar elementos comportamentais de arquiteturas de software, como método/função/operação;
Identificar casos de uso candidatos, por meio do exame de fluxos de negócios;
Modelar fluxos complexos em operações com objetos;
Modelar detalhadamente atividades complexas em um diagrama de atividades de alto nível.
Exemplo de Diagrama de Atividades genérico para ilustração da sintaxe
É usada para representar um conjunto de ações.
É representada graficamente por um retângulo de cantos arredondados, assim como a Ação, e sua notação diferenciadora muda de ferramenta para ferramenta. No caso ilustrado na Visual Paradigm, é usado o nome em Negrito para uma Atividade.
Uma ação é uma tarefa a ser executada.
É representada graficamente por um retângulo de cantos arredondados.
Indica a sequência de execução entre atividades, ações e objetos.
É representado graficamente por uma seta simples que indica a origem e destino do fluxo.
SINTAXE: Os fluxos seguem a mesma notação das transições de estados e podem ser compostas por três elementos opcionais:
nome do fluxo [condição de guarda] /efeito
Assim como os efeitos de estados, os elementos que compõem uma transição podem ser escritos em linguagem natural ou em linguagem descritiva na forma de operações/métodos, dependendo da etapa do projeto e/ou objetivo do diagrama.
O nó inicial retrata o início de um conjunto de ações ou atividades, sendo o ponto de origem do diagrama.
É representado graficamente por um círculo fechado (⚫).
É o ponto de término do diagrama, este nó define o fim de um ou mais fluxos.
É representado graficamente por um círculo fechado dentro de um círculo aberto (🔘)
Representa um objeto que está conectado a uma ação, atividade ou fluxo.
É representado graficamente por um retângulo, seguindo a mesma notação de objetos em UML (ver Diagrama de Objetos):
Nome do Objeto : Nome da Classe [estado do objeto]
O nome do objeto é obrigatório quando há mais de uma instância da mesma classe no diagrama;
O nome da classe é obrigatório;
O estado do objeto é opcional, geralmente indicado em um diagrama de atividades quando há a alteração do valor do objeto por uma ação/atividade.
Em um diagrama de atividades, os objetos são geralmente dispostos sobre os limites de uma raia.
Representa o ponto de início de fluxos condicionais.
Decisões e Merges modelam um OU lógico (exclusivo ou não) que avaliado por uma ou mais condições.
É representada graficamente por um losango que funciona como ponto de origem dos fluxos de decisão.
Reúne diferentes fluxos que foram criados usando uma Decisão.
É representado graficamente por um losango que funciona como ponto de destino dos fluxos de decisão.
Divide o comportamento em um conjunto de fluxos paralelos ou simultâneos.
Forks e Joins modelam um & lógico.
Seus fluxos podem ser condicionados ou não.
É representado graficamente por um retângulo horizontal preenchido que funciona como ponto de origem dos fluxos paralelos.
Reúne um conjunto de fluxos paralelos ou simultâneos divididos por um Fork.
É representado graficamente por um retângulo horizontal preenchido que funciona como ponto de destino dos fluxos paralelos.
Este elemento funciona como uma maneira de agrupar atividades/ações executadas pelo mesmo Ator em um diagrama de atividades ou agrupar atividades em um único encadeamento com significado semântico.
Partições não determinam ordem e podem estar dispostas na vertical ou horizontal.
São representadas graficamente por um retângulo no estilo container que possui como rótulo o nome de um Ator ou outro significado semântico associado às atividades/ações do diagrama.
Diagrama de Atividades para uma Tarefa
Fluxogramas: foram propostos tão logo se começou a desenvolver os primeiros programas para computadores modernos. Diagramas de atividades são parecidos com fluxogramas; porém, eles incluem suporte a concorrência, enquanto fluxogramas modelam apenas processos sequenciais.
Redes de Petri: é uma notação gráfica, proposta pelo matemático alemão Carl Adam Petri, em 1962, para modelagem de sistemas concorrentes. Redes de Petri possuem uma representação gráfica e também usam fichas para marcar o estado corrente do sistema. Possuem uma definição matemática formal e são menos flexíveis que os diagramas de atividades.
BPMN (Business Process Model and Notation): é um esforço mais recente, que teve início nos anos 2000, visando a proposição de uma notação gráfica mais amigável para modelagem de processos de negócio do que aquela oferecida por diagramas de atividades. Um dos objetivos é propiciar que analistas de negócio possam ler, interpretar e validar diagramas BPMN. Esta linguagem também é mantida pela OMG (https://www.bpmn.org/), sendo bastante utilizada pelo mercado na atualidade.
1) Dada a Descrição do Caso de Uso Solicitar Corrida para um App de Corridas a seguir, faça um Diagrama de Atividades que ilustre os passos do fluxo principal e as ações de todos os fluxos alternativos.
Ator: Passageiro
Fluxo Principal:
O passageiro seleciona a opção “solicitar corrida”
O sistema exibe um mapa da localização atual do passageiro e solicita os dados da corrida
O passageiro informa os dados da corrida (local de origem, local de destino)
O sistema traça a rota da corrida e informa um valor estimado para a corrida
O sistema solicita a confirmação da corrida e da forma de pagamento
O passageiro confirma a corrida e a forma de pagamento
O sistema registra a solicitação da corrida
Pós-condições: Um registro de corrida é criado no sistema; o valor do atributo status da corrida é inicializado com “em aberto”.
Fluxo Alternativo 1: Usuário Suspenso
No passo 1, o sistema verifica que a reputação do passageiro é < “4,5” e informa que o usuário está suspenso para solicitação de corridas. O caso de uso é encerrado.
Fluxo Alternativo 2: Local Inválido
No passo 4, o sistema não consegue verificar o local de destino ou o local de origem informado pelo passageiro e informa o erro. O caso de uso retorna para o passo 3.
Fluxo Alternativo 3: Corrida não confirmada
No passo 6, passageiro não confirma a corrida ou a opção de pagamento. O caso de uso é encerrado.