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 Emitir factura Processar débito 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 José Correia index := index * 5 + 1 UML - Diagramas de Actividades 4 Outros tipos de estados Estado de espera (estado normal) Estado • a saída deste estado é causada por eventos • pode ter actividade e acções associadas • 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 barra de sincronização (separação) [não há café] [há café] [há cola] Pôr Água no Reservatório Pôr Café no Filtro decisão e ramificação Pôr Chávenas Buscar latas de cola Pôr Filtro na Maquina barra de sincronização (fusão) [não há cola] envio de sinal Ligar Máquina /ligar cafeteira estado de espera (cantos arredondados) Esperar que aqueça luz desliga-se transição disparada por recepção de sinal José Correia Deitar café subactividade (lados arredondados) UML - Diagramas de Actividades Beber 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 UML - Diagramas de Actividades 8 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 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 Evaluate Impact Revise Plan [ priority = 1] 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 consulta obj1:C1 acção 1 acção 2 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 Dep. Vendas Faz encomenda Regista encomenda Armazém e: Encomenda [pendente] Despacha encomenda Paga factura Emite factura e: Encomenda [despachada] f: Factura [pendente] Estado de objecto f: Factura [paga] 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 [ indisponível ] [ espera ] [ desiste ] Exemplo: caso de utilização “Requisitar publicação” [ disponível ] Coloca em lista de espera : requisição [espera disponibilidade] Aguarda disponibilidade Publicação disponível Desloca-se à Biblioteca Recebe a publicação Avisa o requisitante : requisição [espera levantamento] Empresta a publicação : requisição [espera devolução] Consulta a publicação Devolve a publicação José Correia Recolhe a publicação : requisição [finalizada] UML - Diagramas de Actividades 19 UML - Diagramas de Actividades 20 Exemplo José Correia 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