Vocabulário Básico dos Diagramas de Máquinas de Estados UML

Artigo Interno — GEMS 256/TIDD/Depto. de Computação, PUC-SP

Autor: Dr. Ítalo Santiago Vega

Data: 31/05/16

Encontro: GEMS 256

Resumo

A linguagem UML oferece diferentes elementos para a modelagem de comportamentos computacionais. Diagramas de máquinas de estados introduzem um vocabulário para a representação de modelos de comportamentos primariamente caracterizados por sequências de eventos. Este artigo apresenta a definição de alguns destes elementos, a sua representação em UML e caracteriza o contexto de modelagem no qual eles são normalmente utilizados.

1 Introdução

Segundo o documento de referência (OMG Unified Modeling Language, 2015, p. 283), os casos de uso de um sistema definem um contexto para diferentes espécies de modelos comportamentais (fig. 1). Diagramas de atividades representam comportamentos nos quais o fluxo de atividades torna-se o foco central de modelagem. Em situações nas quais percebem-se os comportamentos como sendo dirigidos pela
ocorrência de eventos discretos, pode-se fazer uso de diagramas de máquinas de estados. Os diagramas de interações são apropriados em situações nas quais procura-se enfatizar a passagem de informações por meio de mensagens entre objetos. A modelagem de comportamentos com máquinas de estados será o foco primário deste artigo interno do Grupo de Estudos em Modelagem de Software (GEMS).

exercicio-1-discussao-dcu

Figura 1: Categorias de modelos comportamentais

2 Máquinas de Estados UML

Um diagrama de máquinas de estados (DME) expressa comportamentos como uma progressão de uma série de estados. Os estados são conectados por eventos-gatilho que podem provocar efeitos computacionais por disparos de transições vinculadas a ações de um computador (BOOCH et al. , 2007, p. 219). Máquinas de estados podem ser utilizadas para modelar o comportamento individual dos objetos ou de componentes mais complexos de um sistema, enfatizando os estados e as transições entre eles, típico de sistemas reativos envolvendo sequências de eventos.

Uma abstração-chave é aquela que faz parte do vocabulário de um domínio de estudo. BOOCH et al. (2007), p. 218, apresentam os elementos essenciais dos diagramas de máquinas de estados para representar as abstrações-chave em modelos dirigidos por eventos-discretos. Neste artigo, consideram-se apenas os conceitos de estado e de transição (fig. 2).

exercicio-3-maq-estado-discussao

Figura 2: Estados e transições

Assim, uma máquina de estados é constituída por um conjunto de estados e de transições. Cada uma delas conecta um estado-origem a um estado-destino. Na ocorrência de um evento-gatilho, dispara-se a transição, provocando uma mudança no estado da máquina. O gatilho pode ser protegido por uma condição de disparo e a transição, vinculada a um efeito computacional do tipo ação. Apresenta-se um detalhamento deste vocabulário logo a seguir.

2.1 Estado

Define-se uma ocorrência de estado como um particular conjunto de pares propriedade estrutural-valor — uma propriedade estrutural é um atributo ou um relacionamento com outra classe de objetos. Um tipo de estado especifica o conjunto de valores de uma propriedade estrutural. Diagramas de máquinas de estados representam tipos de estados cujas ocorrências correspondem aos pares anteriormente citados (BOCK, 2000). Encontrando-se em um determinado tipo de estado (fig. 3), o objeto pode fazer o seguinte (inclusive de forma combinada):

  • atender a uma condição.
  • executar uma ação ou atividade, ou ainda
  • aguardar por um tipo de evento.

estado-1-nocao

Figura 3: Elementos de um diagrama de máquina de estados

Em todo diagrama de máquinas de estados deverá existir exatamente um único estado inicial, indicado por uma transição anônima que se origina do marcador de início. Por estar normalmente associada com uma classe, uma máquina de estados nunca atinge um estado final: ela simplesmente deixa de existir quando o objeto que a contém for destruído.

Por exemplo, seja Normal um tipo de estado que inclui a especificação dos valores de uma propriedade vel. Em um determinado instante de tempo, a ocorrência de um estado deste tipo (representado pelo diagrama mostrado na fig. 4) encontra-se em uma condição na qual uma determinada velocidade vel é igual ao valor k , um valor que se encontra no intervalo delimitado por 50 e 500. Se este for o modelo do comportamento computacional de um objeto, pode-se concluir que, imediatamente depois de instanciado, ele permanecerá em um estado do tipo Normal em que a velocidade vel será igual a k até que ele seja destruído.

exemplo-1-estado

Figura 4: Exemplo de ocorrência de estado inicial

2.2 Transição de Estado

Alterações no modo de trabalho de um objeto podem ser modeladas por disparos de transições. Transições são representadas por setas nos DMEs e cada uma delas conecta um estado-origem a um outro estado-destino. O movimento de uma ocorrência de estado para outro decorre do disparo de uma transição . Uma importante restrição deve ser observada em relação a uma máquina de estados: não se pode disparar mais do que uma transição a partir de um mesmo estado-origem.

Uma transição é dita transição-conclusão quando ela dispara imediatamente após o término do estado-origem, provocando a entrada no estado-destino. O disparo de tais transições é provocado pela ocorrência de um evento-conclusão (DOUGLASS, 2002, p. 24; OMG Unified Modeling Language, 2015, p. 312). A entrada em um estado ou a conclusão de uma atividade (no caso de um estado contendo a execução de uma atividade) sempre provoca a geração de um evento-conclusão.

O modelo representado no diagrama da fig. 5 corresponde ao comportamento de uma classe de objetos Automóvel . Ao ser instanciado, um objeto desta classe entra em um tipo de estado-conclusão Normal com uma velocidade vel . Imediatamente em seguida, ele muda para um estado do tipo Máximo devido ao disparo da transição-conclusão, aí permanecendo até ser destruído.

exemplo-2-conclusao-dme

Figura 5: Exemplo de transição-conclusão

O diagrama mostrado na fig. 6 é consistente com este modelo. Estando o objeto a com uma velocidade vel=k , imediatamente ele passa para um estado Máximo no qual o seu atributo vel tem valor 500. Este é o efeito da transição-conclusão que conecta os estados Normal e Máximo da fig. 5.

Eventos-gatilho e condições permitem um maior controle do disparo de uma transição, possibilitando a modelagem de comportamentos computacionais mais ricos e interessantes.

exemplo-2-conclusaoFigura 6: Efeito da transição-conclusão entre os estados Normal e Máximo

2.3 Evento-Gatilho

Normalmente, o disparo de uma transição é provocado pela ocorrência de um tipo de evento associado a um gatilho de disparo sob uma determinada condição.

 

estado-2-evento

Figura 7: Tipos de eventos em UML

Uma ocorrência de evento é algum acontecimento que pode provocar uma mudança de estado no objeto em um instante específico de tempo (OMG Unified Modeling Language, 2015, p. 288). Três importantes categorias de ocorrências de eventos são: mensagens, alterações de propriedades e eventos de tempo (fig. 7). Eventos-mensagem pode ser assíncronas — representadas pela recepção de sinais — e síncronas — representadas por chamadas de operações. Quando o valor das propriedades estruturais se modifica, ocorrem eventos de alterações (de propriedades). Eventos de tempo podem ser relativos ao instante de entrada em um estado ou instantes vinculados a algum referencial absoluto de tempo.

Na fig. 8, o diagrama representa o modelo do comportamento de um objeto que se encontra em um estado inicial aonde vel tem um valor no intervalo entre 50 e 500. Ele irá permanecer neste estado até que ocorra um evento do tipo mudar() com argumento v (um valor no intervalo entre 50 e 500). Na ocorrência de um tal tipo de evento, o modelo indica que haverá uma alteração no estado do objeto: a sua velocidade passará a ter valor v . A nova ocorrência de estado será do mesmo tipo que o anterior, qual seja, tipo Normal . A interpretação deste modelo é que ocorrências de estados normais para o objeto são aquelas nas quais a sua velocidade corresponde a um valor no intervalo de 50 a 500.

exemplo-3-alteracao

Figura 8: Exemplo de transição disparada por chamada de operação

No meta-modelo representado pelo diagrama da fig. 2, omitiu-se a existência de um gatilho entre a transição e o evento, embora ele esteja presente no modelo semântico da UML. A explicitação do gatilho torna-se importante a partir do momento em que se deseja representar portas de componentes arquiteturais (será foco de um outro artigo do GEMS).

2.4 Guarda de Disparo

Além de evento-gatilho e de ação, uma transição pode ter o seu disparo guardado: na ocorrência do evento, a transição será disparada somente se a condição de guarda for verdadeira (fig. 3). No exemplo de modelo da velocidade de um objeto, deseja-se que ocasionais alterações com valores fora do intervalo 50 e 500 sejam ajustadas de modo que ele permaneça em um estado normal. O diagrama mostrado na fig. 9 representa um modelo no qual as transições encontram-se engatilhadas por eventos do tipo mudar() . Entretanto, o disparo de cada uma delas encontra-se guardado de modo que apenas uma delas irá disparar. A interpretação deste diagrama usa a convenção de se disparar a transição sem guarda explícito apenas se as demais fornecerem um valor falso de avaliação das condições. (Este mesmo comportamento pode ser modelado de maneira diferente: como?)

3 Conclusão

Neste artigo foram apresentados os conceitos essenciais das máquinas de estados UML. A noção de (tipo de) estado captura situações nas quais uma condição, ou uma atividade ou um tipo de evento caracterizam um importante aspecto comportamental de um objeto. A evolução dos seus estados ao longo do tempo envolve o disparo (eventualmente guardado por condições) de transições decorrentes de eventos. Em um próximo encontro do GEMS será tratada a relação entre máquinas de estados e objetos ativos.

exemplo-4-guarda

Figura 9: Exemplo de guarda de disparo

Glossário

ação um efeito computacional atômico.

atividade
um efeito computacional interrompível.

condição
refere-se ao valor-verdade de uma propriedade estrutural de um objeto.

estado
(ocorrência de) conjunto de pares propriedade estrutural/valor de um objeto.

evento
(ocorrência de) acontecimento significativo no tempo e que exige uma reação do objeto.

transição
conecta dois estados; ao ser disparada, provoca uma mudança de estado no objeto.

Bibliografia

BOCK, Conrad. A more object-oriented state machine. Journal Of Object-Oriented Programming , v. 12, n. 8, January 2000 Tradução.

BOOCH, Grady et al. Object-oriented analysis and design with applications . Tradução. 3rd. ed. [S.l.]: Addison-Wesley Professional, 2007.

DOUGLASS, Bruce Powel. Real-time design patterns: Scalable architecture for real-time systems . Tradução. [S.l.]: Addison Wesley, 2002.

OMG Unified Modeling Language . Tradução. v. 2.5 ed. [S.l.]: Object Management Group, 2015. Disponível em: <http://www.omg.org/spec/UML/2.5>.

Comments are closed.

Set your Twitter account name in your settings to use the TwitterBar Section.