UML: modelagem dinâmica Prof.: Clarindo Isaías Pereira da Silva e Pádua Synergia / Gestus Departamento de Ciência da Computação - UFMG UML: modelagem dinâmica 2 Bibliografia Rumbaugh, J.; Jacobson, I.; Booch, G., The Unified Modeling Language Reference Manual, Addison Wesley, 2nd edition, 2004. Booch, G.; Rumbaugh, J.; Jacobson, I., "Unified Modeling Language User Guide", 2nd Edition, Addison Wesley, 2005. Eriksson, H-E, Penker, M. Lyons, B., Fado, D. UML 2 Toolkit, Wiley, 2004 UML: modelagem dinâmica Atividade Evento Máquina de estado Interação 3 4 1
UML: modelagem dinâmica UML: modelagem dinâmica O comportamento dinâmico de um objeto tem duas dimensões: mudanças de estado interna. Descrevem como o objeto altera seu estado, por exemplo, mostrando o valor de seus atributos. interações. Descrevem o comportamento externo e sua interação com outros objetos. Atividade Atividade é um grafo de nodos e fluxos que mostra o fluxo de controle (e, opcionalmente, dados) através dos passos de uma computação. Atividades são mostradas em diagramas de atividade. 5 6 UML: modelagem dinâmica > Atividade atividades Diagrama de atividade Transição Indica fluxo de controle de atividade em atividade. Diagramas de interação mostram fluxo de controle de objeto a objeto diagramas de atividade enfatizam o fluxo de controle de atividade para atividade. Pode ser considerado um caso especial de diagramas de estado onde os estados são estados de atividade e as transições são disparadas pelo término de uma atividade. Quando uma atividade termina, o fluxo de controle passa imediatamente para a atividade seguinte. A execução começa no estado de partida e termina quando o controle atinge o estado final. Avalia estoque Faz pedido 7 8 2
atividades atividades Desvio Indica caminhos alternativos de controle baseados em condições de guarda. Uma condição de guarda é denotada por: [expressão booleana]. Exemplo: Avalia estoque Separação/junção de fluxo de controle Indica execução concorrente de atividades. Barras de sincronização são utilizadas para indicar a separação e a junção de fluxos de controle. Um fluxo de controle pode se subdividir em dois ou [ Neces sita reposição? ] Faz pedido mais fluxos. 9 10 atividades > Separação/junção de fluxo de controle atividades Recebe pedidos Raias Com uni ca recebimento Localiza produtos Analisa pedidos Providencia produtos faltantes Raias podem ser usadas para indicar entidades responsáveis pela execução de atividades. Raias correspondem a entidades do mundo real, em geral estruturas organizacionais. Providencia transação 11 12 3
atividades > Raias atividades Fluxo de objetos Pesquisa Desenvolv imento de produtos Marketing Vendas Manufatura É um tipo de fluxo de controle que representa o relacionamento entre <<Process>> Concepção o objeto e a atividade ou transição que o criou. Usa-se o relacionamento de dependência para indicar o fluxo de controle. <<Process>> Desenvolvimento do produto Pode-se indicar o estado do objeto entre [ ]s abaixo de seu nome. <<Process>> Lançamento do produto <<Physical>> : Chapa de Aço [Nova] Furação <<Physical>> Placa : Chapa de Aço [Furada] 13 14 atividades atividades > Diretrizes Diretrizes Um diagrama de atividades bem estruturado: foca na comunicação de aspectos dinâmicos do sistema; contêm somente os elementos essenciais para o entendimento desses aspectos; provê detalhes consistentes com o nível de abstração (usa somente os adornos necessários); não é minimalista a ponto de omitir detalhes importantes. Quando usar um diagrama de atividades: dê-lhe um nome que comunique seu propósito; comece modelando o fluxo primário. Enderece concorrência, desvios e fluxo de objetos como consideração secundária, talvez até em diagramas separados; busque minimizar cruzamento de linhas; use notas e cores para chamar atenção para características importantes do diagrama. 15 16 4
UML: modelagem dinâmica UML: modelagem dinâmica > Eventos Eventos Em um sistema estático nada acontece. Em um sistema dinâmico as coisas acontecem e influenciam o comportamento de outras coisas. Coisas acontecem disparadas por eventos internos ou externos. ou seja, eventos são usados para modelar essas coisas que acontecem. Um evento é a especificação de uma ocorrência significante que tem uma localização no tempo e no espaço. Eventos podem ser internos ou externos. Eventos externos são aqueles que passam entre atores e o sistema. Por exemplo, quando o usuário aciona um comando ou quando um sensor sinaliza um situação importante (colisão de um carro). Eventos internos são aqueles passados entre objetos que vivem dentro de um sistema. por exemplo, uma exceção de overflow. 17 18 UML: modelagem dinâmica > Eventos Disparadores Disparador (trigger) é a especificação de um evento cuja ocorrência causa a execução de um comportamento, como por exemplo, tornar uma transição habilidade a disparar (fire). A palavra pode ser usada como um nome (como o evento) ou um verbo (para a ocorrência do evento). Há quatro tipos de eventos: sinal; chamada; tempo; mudança. UML: modelagem dinâmica > Eventos 19 20 5
UML: modelagem dinâmica > Eventos UML: modelagem dinâmica > Eventos > Sinal Sinal Um sinal é um tipo de evento que representa a especificação de um estímulo assíncrono comunicado entre objetos. É um meio explicito através do qual objetos podem comunicar entre si assincronamente. Uma ação assíncrona é uma requisição na qual o objeto remetente não pára para esperar pelos resultados (ao contrário da ação síncrona) Um sinal é um classificador explicitamente nomeado como Sinal, usado para comunicação explícita entre objetos. Um sinal tem uma lista de parâmetros, expressos como atributos. Um sinal é explicitamente enviado por um objeto a outro objeto ou a um conjunto de objetos. O envio de uma sinal a um conjunto de objetos pode ser considerado como broadcasting (radio ou tele-difusão). 21 22 UML: modelagem dinâmica > Eventos > Sinal UML: modelagem dinâmica > Eventos > Sinal O remetente especifica os argumentos de um sinal quando este é enviado. Enviar um sinal significa instanciar um objeto sinal e transmití-lo ao conjunto de objetos alvo. O recebimento de um sinal é um evento que visa disparar transições na máquina de estados receptora. Um sinal enviado a um conjunto de objetos pode disparar uma ou Um sinal pode ser generalizado. Um sinal filho herda os parâmetros do sinal pai e pode criar parâmetros adicionais. Um sinal filho satisfaz um disparador que requeira um de seus ancestrais (polimorfismo de eventos). nenhuma transição em cada objeto receptor independentemente. 23 24 6
UML: modelagem dinâmica > Eventos > Sinal UML: modelagem dinâmica > Eventos > Sinal Hierarquia de eventos Um sinal pode ser representado num diagrama de classes como uma classe estereotipada e pode-se indicar a classe ou operação que o gera. 25 26 UML: modelagem dinâmica > Eventos > Sinal UML: modelagem dinâmica > Eventos > Sinal Exemplo: Para usar um sinal como um disparador de uma transição, usa-se a sintax: nome-do-sinal (lista de parâmetros), cd diagrama-classe Onde a lista de parâmetros tem a sintax: nome-do-parâmetro: expressão de tipo «signal» Colisão - Força: float «send» Agente de mov imento - posição: int - velocidade: int + move Para() : void Exemplo: diagrama de estado mostrando um evento disparando uma transição e executando uma ação sm diagrama-estado Ativ o Disponív el telefone no gancho /cai Conexão 27 28 7
UML: modelagem dinâmica > Eventos UML: modelagem dinâmica > Eventos Chamada Uma chamada representa o despacho de uma operação de um objeto. Em geral, se um objeto invoca uma operação de um outro objeto que tem uma máquina de estado, o controle passa do remetente para o receptor, a operação é executada, uma transição (se houver) é disparada pela chamada, o receptor muda de estado e o controle volta para o remetente. Evento tempo e mudança Um evento de tempo é um evento que representa a passagem de tempo, ou seja, é utilizado para modelar o tempo disparando uma transição. É representado por uma expressão de tempo. Um evento de mudança representa a satisfação de uma condição. É representado por when seguido de uma expressão booleana entre parênteses. 29 30 UML: modelagem dinâmica > Eventos > Evento tempo e mudança UML: modelagem dinâmica Exemplo: diagrama de estados mostrando transição disparada por evento de tempo e de mudança. Máquina de estados A UML define dois tipos de máquinas de estados: Máquina de estados comportamental. sm diagrama-estado Evento de mudança When (11:30PM) /auto Teste Disponív el evento de tempo after (2 seconds) /cai Conexão Ativ o Capturam o ciclo de vida de objetos, sistemas e subsistemas. Máquina de estados de protocolo. São usadas para expressar transições válidas que podem ocorrer em um classificador abstrato como uma interface ou porto. Aqui consideramos apenas as máquinas de estado comportamental. 31 32 8
UML: modelagem dinâmica > Máquinas de estados UML: modelagem dinâmica > Máquinas de estados > Estados e transições Estados e transição Um objeto passa por uma série de estados em seu tempo de vida. Um estado pode ser considerado uma condição durante a vida de um objeto durante a qual ele satisfaz alguma condição, executa uma do activity ou espera por algum evento. Todos os objetos têm um estado. o estado é o resultado de atividades prévias executadas pelo objeto. tipicamente é determinado pelos valores de seus atributos e links a outros objetos. Um objeto muda de um estado para outro quando alguma coisa, um evento, acontece. Exemplos de evento: uma conta é paga, uma ação aumenta de valor, um raio cai em um tranformador, etc. 33 34 UML: modelagem dinâmica > Máquinas de estados > Estados e transições UML: modelagem dinâmica > Máquinas de estados > Estados e transições Um estado é uma condição ou situação durante a vida de um objeto durante a qual ele satisfaz algumas condições, executa algumas atividades ou espera por eventos. Estados iniciais e finais. Como mostrado no exemplo, são dois estados especiais que indicam, respectivamente: o ponto de partida de uma máquina de estado ou subestado. que a execução da máquina de estado ou estado envolvente terminou. sm Estados iniciais e finais Estado A Estado B Initial Avalia Final 35 36 9
UML: modelagem dinâmica > Máquinas de estados > Estados e transições UML: modelagem dinâmica > Máquinas de estados > Estados e transições > Transições Transições Uma transição é um relacionamento entre dois estados indicando que o objeto no primeiro estado vai executar certas ações e entrar no segundo estado quando um evento especificado ocorrer e uma condição de guarda for satisfeita. Ocorrendo a mudança de estados diz-se que a transição disparou. Um evento disparador pode ser um dos quatro tipos de eventos mostrados anteriormente. No caso de sinais ou chamadas, podem conter parâmetros. Sintaxe de uma transição de estados: Assinatura de evento [ condição de guarda ] / expressão de ação ^ cláusula de envio Onde a assinatura de evento indica o nome do evento e eventuais parâmetros e a cláusula de envio indica o destinatário de possíveis eventos gerados com ação. 37 38 UML: modelagem dinâmica > Máquinas de estados > Estados e transições > Transições UML: modelagem dinâmica > Máquinas de estados > Estados e transições > Transições A condição de guarda é denotada por uma expressão booleana entre [...]. Ela é avaliada somente depois de ocorrer o evento disparador. Ela é avaliada somente uma vez depois do evento ocorrer, mas pode ser avaliada novamente se o evento voltar a ser disparado. Uma ação é uma computação executável atômica (indivisível). Podem ser chamadas de operações (do objeto que possui a máquina ou de outro objeto), a criação ou destruição de outros objetos ou o envio de um sinal. No caso de envio de sinal, a palavra send deve preceder o nome do sinal. 39 40 10
UML: modelagem dinâmica > Máquinas de estados UML: modelagem dinâmica > Máquinas de estados Uma máquina de estados mostra como um objeto reage a eventos e como ele muda seu estado interno. Exemplo: controle de um elevador. sm Statecharts Initial Primeiro andar Chegou Descendo Sobe Chegou Desce Subindo Chegou Aguardando Sobe Uma máquina de estados é a especificação da seqüencia de estados que um objeto atravessa em resposta a eventos durante sua vida, junto com suas ações como respostas. Uma máquina de estados é associada a classes, colaborações ou métodos fontes e especifica o comportamento das instâncias do elemento fonte. Retornando ao primeiro andar Tempo esgotado 41 42 UML: modelagem dinâmica > Máquinas de estados UML: modelagem dinâmica > Máquinas de estados Diagramas de estados mostram máquina de estados. Objetos têm um tempo de vida nascem quando são criados e deixam de existir quando são destruídos. Durante seu tempo de vida, objetos que somente recebem ou enviam mensagem de maneira síncrona e cujo comportamento não depende de seu passado, não necessitam de uma máquina de estados para descrever seu comportamento. Por outro lado, se o objeto precisa responder a sinais (assíncronos), por exemplo, um telefone celular responde a chamadas de outros telefones e a eventos de seu teclado. ou se o comportamento presente do objeto depende de seu passado, por exemplo, o comportamento de um míssil ar-ar depende se o avião está em terra ( o míssil não pode ser disparado) ou não ou se o míssil está calculando seu alvo (só depois ele poderia ser disparado). seu comportamento deve ser especificado por uma máquina de estados. 43 44 11
UML: modelagem dinâmica > Máquinas de estados UML: modelagem dinâmica > Máquinas de estados Pedido recebido do cliente Pedido criado Pedido cancelado / colocar como cancelado Pedido cancelado Exemplo Colocado no mercado Pedido casado/ marcar como concluído Pedido colocado no mercado Pedido sucedido Fim de dia útil Colocado de volta no mercado para próximo dia Aceito como fracasso / marcar como cancelado Pedido fracassado / Criar propriedade de título Estado e transições avançados Um estado tem várias partes. Nome: distingue um estado de outros; Ações de entrada e de saída: ações executadas na entrada ou na saída de estados. Transições internas: transições que são trabalhadas sem mudança de estados. Subestados: estrutura aninhada de um estado envolvendo submáquinas de estado. Atividades: uma atividade pode ser uma nova máquina de estados ou uma seqüencia de ações. Estados adiados: uma lista de eventos que não são trabalhados naquele estado são adiados e colocados em fila para serem trabalhadas em outro estado do objeto. 45 46 UML: modelagem dinâmica > Máquinas de estados > Estados e transições avançados UML: modelagem dinâmica > Máquinas de estados > Estados e transições avançados Ações de entrada e de saída: são usadas para se disparar as mesmas ações independente de onde se veio ou para onde se vai. Notação (dentro do estado): entry / ação ou exit / ação Transições internas: são usadas para se responder a eventos sem sair do estado. Diferente de uma auto transição, a transição interna não causa a execução das ações de entrada ou de saída do estado. Notação: evento / ação Subestados: estrutura aninhada de um estado envolvendo sub-máquinas de estado. Notação: máquina de estados aninhada. Um estado que contém sub-estados é chamado de estado composto. 47 48 12
UML: modelagem dinâmica > Máquinas de estados > Estados e transições avançados Diagrama de Interação Atividades: usado para indicar uma atividade a ser realizada quando o objeto está naquele estado. Notação: do / máquina de estados ou do / ação 1; ação 2; ação 3 Estados adiados: usado quando um estado não prevê transição para um evento e deseja-se manter este evento (adiado) até que se atinja um estado onde aquele evento não seja adiado. Notação: evento / defer Mostram a interação entre objetos. 49 50 13