Universidade da Beira Interior Engenharia de Software Diagramas de Estados Fundamentos dos Diagramas de Estados: –conceito e aplicação –quando usar diagramas de estados Bibliografia: M. Fowler and K. Scott, UML Destilled: Applying the Standard Object Modeling Language, Addison-Wesley Longman, Inc., 1997 P-A Muller, Instant UML, English Translation by Wrox Press, ltd., 1997 M. Nunes e H. O’Neilll, Fundamental de UML, FCA Editores, 2001 Universidade da Beira Interior Tópicos Cobertos • Diagrama de Estados: – Conceito e aplicação • estado • transição de estados – Tópicos avançados • agrupamento de estados • concorrência entre subestados • Quando utilizar os Diagramas de Estados Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 2 Universidade da Beira Interior Objectivos • Familiarizar com os conceitos essenciais sobre os Diagramas de Estados – perceber o conceito de estado e transição entre estados – mostrar exemplos de diagramas de estados – familiarizar-se com alguns aspectos avançados relativos aos diagramas de estados – compreender quando usar os diagramas de estados Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 3 Universidade da Beira Interior Máquinas de Estado: Conceito • O comportamento dos objectos de uma classe pode ser descrito formalmente em termos de estados e eventos, utilizando uma máquina de estados conectada à classe em consideração. • Uma máquina de estado é uma abstracção de todos os comportamentos possíveis, semelhante à forma como os diagramas de classes são abstracções da estrutura estática. Engenharia de Software – Capítulo 3-6 – Diagramas de Estados Classe 1 0 .. * Mquina de Estados 4 Universidade da Beira Interior Estado e Diagrama de Estados: Conceito Cada objecto está num estado particular em cada momento. O estado é caracterizado pelos conceitos de duração e estabilidade. • Estado: representa uma situação estável de um objecto que se prolonga durante um intervalo de tempo, durante o qual os atributos não sofrem qualquer alteração de valor, nem o objecto sofre estímulos externos. • Diagrama de Estados – É uma técnica familiar para descrever o comportamento de um sistema. – Descreve todos os estados possíveis que um dado objecto pode assumir e o modo como o estado do objecto se altera em resultado de eventos que atingem o objecto. Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 5 Universidade da Beira Interior Diagramas de Estados: símbolos e elementos de representação • Estado - representado por um rectângulo de cantos arredondados, pode ter actividade associada, indicado por uma etiqueta com a sintaxe: ex. do / actividade; possui um identificador e um compartimento para descrever as operações que são executadas nesse estado. • Estado Inicial e Final - o primeiro representado por um circulo negro, sendo o segundo representado por um circulo negro e circunferência exterior concêntrica com o circulo. Estado Intermédio Estado Inicial Engenharia de Software – Capítulo 3-6 – Diagramas de Estados Estado Final 6 Universidade da Beira Interior Diagramas de Estados: símbolos e elementos de representação • Transição – Ligação unidireccional entre estados, representada por uma seta. A passagem de um estado a outro (instantânea) acontece por via de estímulos externos (eventos) que estão associadas à realização de acções (operações da classe). – Com etiqueta de transição, possuindo três partes (todas opcionais): Nome do Evento (argumentos) [Guarda] / Acção. – Quando uma transição não tem um evento associado, isso significa que a transição ocorrerá logo que qualquer actividade associada ao estado seja completada. Estado A Estado B Uma transição permite a passagem de um estado a outro; é representda através de uma linha desenhada do estado inicial para o final Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 7 Universidade da Beira Interior Diagramas de Estados: símbolos e elementos de representação • Evento – Corresponde à ocorrência de uma dada situação no domínio do problema. Um evento é utilizado como um “trigger” para ir de um estado a outro. – As transições especificam caminhos num diagrama de estados. Os eventos determinam que caminhos serão percorridos. – Eventos, transições e estados não podem ser dissociados da descrição do comportamento dinâmico. – Um objecto, quando num dado estado, espera pela ocorrência de um dado evento para transitar para outro estado. Evento Estado A Estado B Um evento dispara a transição a ele associada Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 8 Universidade da Beira Interior Diagramas de Estados: símbolos e elementos de representação • Guarda - condição lógica que retornará o valor “verdade” ou “falso”. Uma transacção com guarda só ocorre se a guarda for satisfeita. Estado A Evento [condição] Estado A Está muito quente[verão] Estado B A ocorrência do evento disparará a transição se a condição se verificar Ar condicionado Está muito quente[inverno] Abrir Janela Quando está muito quente, as guardas tornam possvel ligar o ar condicionado ou simplesmente abrir as janelas • As condições expressas na guarda têm de ser mutuamente exclusivas, por forma a que num dado momento só possa ocorrer uma transição de saída de um estado. Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 9 Universidade da Beira Interior Diagramas de Estados: símbolos e elementos de representação • Acções - estão associadas às transições ou estados e são consideradas • A acção corresponde a uma das operações declaradas na classe do objecto que está a receber o evento. • Os estados podem também conter acções, executadas ao entrar (simbolizada por entry), sair (simbolizada por exit) ou quando ocorre um evento quando o objecto está no estado (simbolizada pelo nome do evento seguido de /), evento esse que não leve a outro estado. ser processos que ocorrem rapidamente – idealmente instantaneamente, mas no real de alguns ciclos de relógio até alguns segundos, mas sempre com um tempo de execução desprezável face à dinâmica do sistema; as acções não são interruptíveis. A entry/ AnEvent/ exit/ Uma acção pode ser executada ao entar ou sair de um estado, ou na ocorrência de um evento dentro do estado Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 10 Universidade da Beira Interior Diagramas de Estados: símbolos e elementos de representação • Actividades - são as operações que estão associadas a estados e podem demorar mais; podem ser interrompidas por algum evento. – Podem ser activadas em quatro momentos distintos: • • • • no início do estado (entry/) durante o estado (do/) imediatamente antes da transição do estado (exit/) ou em resposta a um estímulo (on event/) – neste caso a sintaxe é: evento(args) [condição]: / operação Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 11 Universidade da Beira Interior Diagramas de Estados: símbolos e elementos de representação - Pontos de Execução de Operações Para resumir, indica-se que há 6 lugares para especificar operações que devem ser executadas. Por ordem de execução: – – – – – – Acção associada à transição à entrada do estado (op1) Acção de entrada no estado (op2) Actividade dentro do estado (op3) Acção associada a eventos internos (op4) Acção à saída do estado (op5) Acção associada à transição à saída do estado (op6) Engenharia de Software – Capítulo 3-6 – Diagramas de Estados /Op1 Um estado entry/Op2 do/Op3 AnEvent/Op4 exit/Op5 /Op6 12 Universidade da Beira Interior Diagramas de Estados: criação e destruição de objectos • • A criação de objectos é representada através do envio de um evento de criação para a classe do objecto. Despenhar-se A voar Levantar Os parâmetros do evento tornam possível inicializar o novo objecto que tem início num dado estado inicial definido na máquina de estados da classe. Aterrar Criar(Registo) Em terra A transição de criação leva o objecto do seu estado inicial ao seu primeiro estado de operação. Atingir o estado final implica que o objecto desaparece. Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 13 Universidade da Beira Interior Diagramas de Estados: transições temporizadas • Por definição, os atrasos são actividades que demoram algum tempo. Assim, atrasos são naturalmente associados a um estado e não a uma transição e representados através de uma actividade “atraso”. • A actividade atraso será interrompida quando o evento esperado ocorrer. • De facto esse evento ao ocorrer, irá disparar uma transição e o fluxo de controlo é transferido para outro estado. • No acetato seguinte mostra-se uma sequência de atraso relativo à operação de depósito numa ATM. Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 14 Universidade da Beira Interior Diagramas de Estados: transições temporizadas Sequência de atraso relativo à operação de depósito numa ATM. Quando a ranhura se abre o utilizador tem 3 minutos para introduzir o envelope com o depósito. Se o fizer, a actividade de atraso é interrompida e há o disparo da transição que leva ao estado B Se não o fizer em 3 minutos, é disparada a transição para o estado cancelada no fim da actividade “atraso”. A A / Abre ranhura / Abre ranhura Espera pelo dinheiro Espera pelo dinheiro do/Espera 3 m inutos entry/Mostra m ensagem exit/Fecha a ranhura depois de (3 minutos) Cancelar Transacção entry/Mostra m ensagem exit/Fecha a ranhura Depósito executado Depósito executado A voar B A voar B Representação de um temporizador através da combinação de uma actividade Espera e uma transição automática Cancelar Transacção Representação alternativa de um temporizador utilizando uma notação mais compacta mercê do evento de disparo after (duração de temporização) Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 15 Universidade da Beira Interior Estado e Diagrama de Estados: Exemplo início busca 1.º item busca próximo item [ainda não verificados todos os itens] Verificação [todos os itens verificados && todos os itens disponíveis] do / verifica item [todos os itens verificados && alguns itens não existentes em armazém] Despacho do / inicia entrega Item recebido [todos itens disposníveis] Entregue actividade Item recebido [alguns itens não em stock] Espera auto-transição Engenharia de Software – Capítulo 3-6 – Diagramas de Estados transição Entregue estado 16 Universidade da Beira Interior Diagramas de Estados: exemplo Explicação do Diagrama • Começa-se com uma transição inicial (com acção / busca o 1.º item) para o estado verificação, que tem uma actividade associada (verifica item) • Três transições saem do estado verificação, todas com guardas: – – – • A 1.ª é uma auto-transação: se não tivermos verificado todos os itens, busca-se o próximo e volta-se para o estado verificação para ser verificado. A 2.ª se tiverem sido verificados todos os itens e estiverem todos em stock, dá-se a transição para o estado Despacho. Na 3.ª se tiverem sido verificados todos os itens, mas não existirem todos em stock, dá-se a transição para o estado Espera. Olhemos para o estado “Espera”: não há actividades para este estado e temos duas transições a sair dele, ambas com o evento Item recebido. Isto significa que a encomenda fica em Espera até que seja detectado esse evento. Nessa altura, vão ser avaliadas as guardas (ou se continua em Espera ou se passa para o estado Despacho). Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 17 Universidade da Beira Interior Diagramas de Estados: exemplo Explicação do Diagrama (continuação) • No estado “Despacho”, temos uma actividade que inicia a entrega.Há uma única transição sem guarda despoletada pelo evento “Entregue”. Isto indica que a transição ocorrerá sempre quando esse evento ocorrer. Note-se que a transição não ocorrerá quando a actividade ficar completa; em vez disso, uma vez a actividade “iniciar entrega” esteja acabada, a encomenda permanece no estado “Despacho” até que o evento Entregue ocorra. Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 18 Universidade da Beira Interior Diagramas de Estados: exemplo No diagrama de estados anterior, o estado final era Encomenda Entregue, mas também é de prever que o processo seja abortado em qualquer ponto, ou seja teremos um estado final alternativo “Cancelada”. busca 1.º item busca próximo item [ainda não verificados todos os itens] Verificação [todos os itens verificados && todos os itens disponíveis] do / verifica item [todos os itens verificados && alguns itens não existentes em armazém] Despacho do / inicia entrega Item recebido [todos itens disposníveis] Cancelada Entregue Cancelada Item recebido [alguns itens não em stock] Espera Cancelada Engenharia de Software – Capítulo 3-6 – Diagramas de Estados Cancelada Entregue 19 Universidade da Beira Interior Diagramas de Estados: tópicos avançados - agrupamento de estados No exemplo que estamos a tratar, a encomenda pode passar a cancelada, a partir de três estados distintos: verificação, espera e despacho. Poderemos agrupar estes num SuperEstado, aumentando a legibilidade do diagrama. Nome do Superestado busca 1.º item busca próximo item [ainda não verificados todos os itens] Verificação Enc. Activa [todos os itens verificados && todos os itens disponíveis] do / verifica item [todos os itens verificados && alguns itens não existentes em armazém] Despacho do / inicia entrega Item recebido [todos itens disposníveis] Entregue Item recebido [alguns itens não em stock] Espera Cancelada Cancelada Engenharia de Software – Capítulo 3-6 – Diagramas de Estados Entregue 20 Universidade da Beira Interior Diagramas de Estados: tópicos avançados - concorrência entre subestados No exemplo anterior os estados da encomenda são baseados na disponibilidade dos itens. Ora há que ter em conta a questão da autorização de pagamento. Se olharmos para essa questão poderemos construir o diagrama ao lado. Autorização [pagamento não OK] do / valida pagamento [pagamento OK] Autorizada Rejeitada Entregue Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 21 Universidade da Beira Interior Diagramas de Estados: tópicos avançados - diagrama de estados concorrentes As secções concorrentes do diagrama de estados são lugares nos quais, em qualquer ponto, a encomenda está em dois estados, cada um a partir de um dos diagramas. Quando a encomenda deixa os estados concorrentes, está apenas num único estado. cancelada Cancelada Espera Despacho Verificação Central Entregue Central Autorizada Autorização Central fim Recusada [Pagamento recusado] Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 22 Universidade da Beira Interior Diagramas de Estados: tópicos avançados - diagrama de estados concorrentes Podemos ver que uma encomenda inicia-se em ambos os estados (verificação e autorização). Se a actividade “verifica pagamento” do estado Verificação é completada antes e com sucesso, então a encomenda ficará nos estados Verificação e Autorizada. Se o evento “cancel” ocorrer, então a encomenda ficará somente no estado “Cancelada”. Os diagramas de estados concorrentes são úteis quando um dado objecto tiver conjuntos de comportamentos independentes. Note-se que não deveremos estabelecer muitos conjuntos de comportamentos concorrentes a ocorrer num único objecto. Se tivermos muitos digramas de estados concorrentes para um objecto, deve considerar-se a divisão do objecto em objectos separados. cancelada Cancelada Espera Verificação Central Despacho Entregue Central Autorização Central Autorizada fim Recusada [Pagamento recusado] Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 23 Universidade da Beira Interior Diagramas de Estados: quando utilizar • Somente para cada classe de objecto que tenha um comportamento dinâmico relevante como, por exemplo, os objectos de controlo ou de interface. • Utilizar os diagramas de estado para as classes que exibam um comportamento interessante, onde a construção do diagrama ajudem na compreensão do que se passa. Engenharia de Software – Capítulo 3-6 – Diagramas de Estados 24