Unified Modeling Language Diagramas de Actividades José Correia, Junho 2006 (http://paginas.ispgaya.pt/~jcorreia/) Diagramas de Estados e de Actividades Um diagrama de actividades é um caso particular de um diagrama de estados Os diagramas de actividade estendem diagramas de estados, com notação para distinguir vários tipos de estados: estados de (sub)actividade (execução de subactividade) estados de acção (representam a execução de uma acção) estados de espera (estados normais, de espera por eventos) estados de decisão (com várias saídas condicionais) O que é um estado de actividade? José Correia UML - Diagramas de Actividades 2
Estados de actividade Os estados de (sub)actividade...... podem ser decompostos - onde se usa actividade pode usar-se outro diagrama de actividades... têm tempo de execução... não sendo atómicos, podem ser interrompidos As transições de saída destes estados não têm eventos, mas podem ter condições e acções a conclusão da (sub)actividade determina a saída do estado Processar débito Emitir factura José Correia UML - Diagramas de Actividades 3 Estados de acção Os estados de acção representam a execução de uma acção não podem ser decompostos Acção operação atómica, instantânea (tempo de execução irrelevante), que não pode ser interrompida exemplo: criar ou destruir um objecto Não existe uma distinção na representação gráfica entre estadosacção e estados-actividade Calcular total index := index * 5 + 1 José Correia UML - Diagramas de Actividades 4
Outros tipos de estados Estado de espera (estado normal) a saída deste estado é causada por eventos pode ter actividade e acções associadas Estado as transições de saída têm eventos e, possivelmente, condições e acções (ver exemplos em diagramas de estados ) Estado de decisão estado de passagem em que são testadas condições as condições aparecem nas transições de saída não é um estado verdadeiro, mas uma ramificação numa transição José Correia UML - Diagramas de Actividades 5 Exemplo: Preparar bebida Procurar Bebida [não há café] [não há cola] barra de sincronização (separação) [há café] [há cola] decisão e ramificação Pôr Café no Filtro Pôr Água no Reservatório Pôr Chávenas Pôr Filtro na Maquina Buscar latas de cola barra de sincronização (fusão) estado de espera (cantos arredondados) Ligar Máquina /ligar cafeteira Esperar que aqueça transição disparada por recepção de sinal luz desliga-se envio de sinal Deitar café subactividade (lados arredondados) Beber José Correia UML - Diagramas de Actividades 6
Diagramas de actividades vs. estados Ambos os tipos de diagramas são utilizados para modelar o tempo de vida de um objecto ou sistema Usar diagramas de actividade em vez de diagramas de estados quando: todos, ou quase todos, os estados são estados de acção ou subactividade, e não estados de espera por eventos todas, ou quase todas, as transições são automáticas - disparadas pela conclusão do processamento no estado fonte e não disparadas por eventos José Correia UML - Diagramas de Actividades 7 Exemplo Processo de Retirar dinheiro de uma conta bancária, através de uma máquina ATM As três classes envolvidas na actividade são: Cliente (Customer) Máquina ATM Banco (Bank) José Correia UML - Diagramas de Actividades 8
Pistas (swimlanes) Na modelação de fluxos de trabalho relativos a processos de negócio é comum a realização de actividades por várias entidades participantes no processo Um diagrama de actividades pode ser dividido em pistas de responsabilidade (swimlanes) separadas por linhas contínuas verticais Cada pista...... é encabeçada pelo nome da unidade organizacional, entidade ou objecto, responsável pelas acções e actividades aí localizadas... agrupa as várias actividades da responsabilidade de cada entidade participante José Correia UML - Diagramas de Actividades 9 Pistas: exemplo Management [ priority = 1] Evaluate Impact Revise Plan Support Register Bug Release Fix Engineering Fix Bug Test Fix Cada acção ou actividade é localizada numa única pista mas uma transição pode atravessar várias pistas José Correia UML - Diagramas de Actividades 10
Transições Transições: quando a acção ou actividade de um estado se completa, o fluxo de controlo passa imediatamente para o próximo estado de acção ou actividade Uma única transição sai de cada actividade, ligando-a à próxima actividade Uma transição pode ramificar em duas, ou mais, transições mutuamente exclusivas José Correia UML - Diagramas de Actividades 11 Decisões A tomada de decisão consiste em especificar que actividade deve ser realizada após a execução da actividade corrente uma decisão consiste em uma transição de entrada e duas ou mais de saída A representação das decisões envolve a utilização de: losangos, marcando o início e o fim de ramificações condições de guarda (dentro de [ ] ), colocadas de forma adjacente às transições correspondentes Nas transições de saída as condições não se devem sobrepor, mas devem cobrir todas as possibilidades exemplos (levantamento de dinheiro): - [valid PIN] e [invalid PIN] - [balance >= amount] e [balance < amount] José Correia UML - Diagramas de Actividades 12
Disjunção (fork) e junção (join) Um processo pode implicar a execução independente e concorrente de um conjunto de actividades Uma transição pode bifurcar (fork) em duas, ou mais, actividades paralelas, dando origem a várias sequências (threads) não é relevante a ordem da execução das actividades paralelas Uma disjunção (fork) representa a separação de um fluxo de controlo em dois ou mais fluxos de controlo pode ter uma transição de entrada e duas ou mais transições de saída José Correia UML - Diagramas de Actividades 13 Disjunção (fork) e junção (join) Uma junção representa a sincronização de dois ou mais fluxos de controlo pode ter duas ou mais transições de entrada e uma de saída os fluxos concorrentes sincronizam-se assim: espera-se que todos os fluxos de entrada cheguem ao ponto de junção prosseguindo com apenas um fluxo depois da junção As actividades paralelas são representadas entre barras de sincronização exemplos (levantamento de dinheiro): - Take money from slot e Debit account José Correia UML - Diagramas de Actividades 14
Actividades e Objectos Os diagramas de actividades podem explicitar relações de dependência entre actividades e objectos permitem ilustrar o fluxo de um objecto ao longo de um conjunto de actividades cria, modifica ou destroi acção 1 obj1:c1 acção 2 consulta Um objecto pode ser entrada (para consulta), ou saída (para criação, modificação ou destruição) de uma acção indica-se por uma seta a traço interrompido (seta de dependência) entre a acção e o objecto, no sentido do fluxo José Correia UML - Diagramas de Actividades 15 Fluxos de objectos Quando uma acção tem como saída um objecto que é entrada para a acção seguinte, é desnecessário indicar o fluxo de controlo (a transição), basta o fluxo de/para objectos (tipo DFD) acção 1 obj1:c1 acção 2 Para além de se ilustrar o fluxo de um objecto num diagrama de actividades, podem ainda ilustrar-se os seus papéis, atributos e estado José Correia UML - Diagramas de Actividades 16
Exemplo: Processo de Encomenda Cliente Faz encomenda Dep. Vendas Regista encomenda Armazém e: Encomenda [pendente] Despacha encomenda Emite factura e: Encomenda [despachada] Paga factura f: Factura [paga] f: Factura [pendente] Estado de objecto José Correia UML - Diagramas de Actividades 17 Pistas e fluxo de objectos Pistas (swimlanes): utilizado para particionar os estados de actividade em grupos quando se modela workflows, business process, processos de software cada swimlane pode ser implementada por uma ou mais classes transições podem partir de um swimlane para outro mas uma actividade pertence a um só swimlane Objectos podem estar envolvidos no fluxo de controlo associado com uma diagrama de actividade os fluxos de objecto são dependências que criam, destruem ou alteram um objecto pode-se mostrar o estado ou os valores dos atributos do objecto José Correia UML - Diagramas de Actividades 18
requisitante : Leitor Solicita publicação a biblioteca : Biblioteca Verifica disponibilidade Exemplo: caso de utilização Requisitar publicação [ indisponível ] [ disponível ] [ desiste ] [ espera ] Coloca em lista de espera Aguarda disponibilidade : requisição [espera disponibilidade] Publicação disponível Desloca-se à Biblioteca Avisa o requisitante : requisição [espera levantamento] Recebe a publicação Empresta a publicação : requisição [espera devolução] Consulta a publicação Devolve a publicação Recolhe a publicação : requisição [finalizada] José Correia UML - Diagramas de Actividades 19 Exemplo José Correia UML - Diagramas de Actividades 20
Em que situações são usados diagramas de actividades? Embora possam ter outro tipo de utilização, os diagramas de actividades são usados, principalmente, nas seguintes situações: especificar operações - os diagramas de actividades são usados como fluxogramas para especificar detalhadamente um algoritmo - p. ex., são usados os conceitos de tomada de decisão, de bifurcação e de junção especificar processos de negócio (workflows) - o foco dos diagramas de actividades reside na identificação dos actores intervenientes e a correspondente colaboração com o sistema - p. ex., são usados os conceitos das pistas e da modelação do fluxo de objectos especificar o comportamento de casos de uso - modelizar as actividades que ocorrem num caso de uso José Correia UML - Diagramas de Actividades 21 Quando devemos usar um diagrama de actividades? Os diagramas de actividades devem ser usados quando o comportamento que está a ser modelizado depende pouco de eventos externos na sua maior parte é composto por passos/etapas que decorrem até ao fim, em vez de serem interrompidas por eventos requer fluxo de dados entre etapas Usar diagramas de actividades para aplicações que são, essencialmente, de controlo e data-driven, como business modeling em vez de aplicações event-driven, como os embedded systems José Correia UML - Diagramas de Actividades 22
Resumo Um diagrama de actividades é, essencialmente, um fluxograma com concorrência é diferente de um fluxograma no aspecto em que mostra processos que decorrem em paralelo, e não apenas processos sequenciais para as actividades que decorrem em paralelo, não é importante a ordem pela qual são desempenhadas - elas poderão ser executadas ao mesmo tempo ou uma a seguir à outra Os diagramas de actividades descrevem um processo consistindo em: acções e actividades fluxo de controlo objectos de entrada e saída decisões concorrência José Correia UML - Diagramas de Actividades 23 Resumo (cont.) Um diagrama de actividades...... modela o fluxo de controlo de uma operação, classe, sistema, subsistema... mostra como as actividades de um processo dependem umas das outras... decompõe uma actividade em sub-actividades - actividades de mais baixo nível - podendo chegar a acções atómicas, com fluxo de controlo sequencial ou concorrente entre sub-actividades... pode ser utilizado para descrever cenários de use cases José Correia UML - Diagramas de Actividades 24
Referências Estes apontamentos foram baseados em: UML Unified Modeling Language, Curso em Tecnologia de Objectos, FEUP, Novembro 2000 Ademar Aguiar, Gabriel David, João Pascoal Faria Practical UML: A Hands-On Introduction for Developers, TogetherSoft Corporation UML, Metodologias e Ferramentas CASE, Alberto Rodrigues da Silva, Carlos Videira, Maio 2001 Behavioral Modeling, Gunnar Övergaard, Bran Selic, Conrad Bock, UML Revision Task Force, November 2000 José Correia UML - Diagramas de Actividades 25