Está en la página 1de 75

Diagramas de máquina de

estados
Diagramas de máquina de estados

Una máquina de estados es un comportamiento que especifica


las secuencias de estados por las que pasa un objeto a lo largo
de su vida en respuesta a eventos, junto con sus respuestas a
esos eventos (Booch, Rumbaugh, Jacobson)
Diagramas de máquina de estados
Un estado es una condición o situación en la vida de un objeto
durante la cual satisface una condición, realiza alguna actividad
o espera algún evento

Un evento es la especificación de un acontecimiento significativo que ocupa


un lugar en el tiempo y en el espacio. Es la aparición de un estímulo que
puede (o no) activar una transición de estado (mensaje, tiempos, errores)

Una transición es una relación entre dos estados que indica que un objeto que
esté en el primer estado realizará ciertas acciones y entrará en el segundo
estado cuando ocurra un evento especificado y se satisfagan unas condiciones
especificadas
Diagramas de máquina de estados

Imagen tomada de:


http://www.codecom
piling.net/files/slides/
UML_clase_03_UML_
actividades_estados.p
df

Imagen tomada presentación máquina de


estados Universidad de los Andes de
Venezuela
Diagramas de máquina de estados
• Los diagramas de estados muestran una máquina de estados
• La máquina de estados nos permite mostrar el comportamiento del
sistema.
• Estos tienen relación con las máquinas de estados finitos, en las cuales
podemos además de los estados encendido y apagado, tener muchos
más estados (finitos).
• De acuerdo a la forma en que se conectan estos estados entre si
podemos modelar el comportamiento de esa máquina
Diagramas de máquina de estados
• Aplicaciones de los diagramas de estado
• De forma similar a la mayoría de los diagramas UML, los diagramas de estado
tienen diferentes usos. Las aplicaciones principales son las siguientes:
• Representar objetos basados en eventos en un sistema reactivo.
• Ilustrar escenarios de casos de uso en un contexto de negocios.
• Describir cómo se mueve un objeto a través de diversos estados a lo largo de
su existencia.
• Mostrar el comportamiento general de una máquina de estados o el
comportamiento de un conjunto relacionado de máquinas de estados
Diagramas de máquina de estados
• Existen dos tipos de diagrama de estado
1. Comportamiento: Este especifica la implementación de objetos, es
decir como estos van surgiendo
2. Protocolo: Este sirve para describir la secuencia de eventos que se
dan en el sistema, sin mostrar el comportamiento específico del
objeto
Diagramas de máquina de estados
• Cada estado puede llevar en su interior actividades.
• Las actividades son las cosas que realiza ese estado en particular
• Los estados están conectados entre sí por medio de transiciones
• El estado A, una vez termina Inicia el estado B y entre los dos lleva
una transición
• Las transiciones puede llevar una etiqueta llamada firma, que da
información sobre la transición, y su objetivo es dar mayor
información acerca de la transición
Diagramas de máquina de estados
• La Firma – signature: tienen tres partes aunque no son obligatorias
estas proporcionan mayor información de la transición
• Gatillo - “Trigger” (Disparador): Coloca un evento que se necesita
para llevar a cabo el cambio de un estado (evento).
• Guarda: Es la condición que se debe cumplir para llevar a cabo la
transición, es decir, si se ejecuta el evento pero no se cumple la
condición no se lleva a cabo la transición. Ej: encender un bombillo si
es de noche, el gatillo prender el interruptor, transición se enciende el
bombillo, la condición (si es de noche)
• Efecto - Effect: es la actividad que sucede durante la transición.
Diagramas de máquina de estados
Representación de un estado
• En la parte superior lleva el nombre y debe ser descriptivo con
respecto a lo que sucede en el estado
• La transición se representa mediante una flecha continua, indicando
que cuando un estado termina, pasa al siguiente estado.
Diagramas de máquina de estados
Transición simple: un objeto en el primer
estado puede entrar al segundo estado y
ejecutar ciertas operaciones, cuando un
evento ocurre y si ciertas condiciones son
satisfechas.
Se representa gráficamente como una
línea continua dirigida desde el estado
origen (source) hasta el estado destino
(target). Puede venir acompañada por un
texto con el siguiente formato: nombre-
evento ‘(’lista-argumentos‘)’ ‘[’guard-
condition‘]’ ‘/’ expresión-acción ‘^’
claúsula-envío
Diagramas de máquina de estados
“Trigger” (Disparador) es la causa de la transición, la cual podría ser una
señal, un evento, un cambio en alguna condición, o el pasaje de
tiempo. "Guard" (guarda) es una condición que debe ser verdadera
para que el disparador cause la transición. "Effect" (efecto) es una
acción que se llamará directamente en el objeto que tiene la maquina
de estado como resultado de la transición.

Imagen tomada de:


http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-5.pdf
Diagramas de máquina de estados
La máquina de estados puede encontrarse
• Activa
• Inactiva
Si la máquina de estados tiene concurrencia, podemos tener 1 o más
estados activos al mismo tiempo. Si la maquina de estados no tiene
concurrencia, solo un estado a la vez esta activo
Cuando el estado esta haciendo su trabajo decimos que esta activo,
cuando entra en una transición, el estado queda inactivo, activándose
el estado hacia el cual va la transición.
Diagramas de máquina de estados
• Entendiendo que el estado puede estar activo o inactivo
• Podemos tener tres posibles actividades dentro de un estado, y
podemos usar 1, 2 o las 3 si lo requerimos, estas son:
• Entry: Actividad que se lleva a cabo cuando inicia un estado.
• Do: La actividad que esta llevando a cabo la actividad, esperando un evento.
• Exit: Es la actividad que se lleva a cabo justo antes de terminar el estado. Para
luego llevar a cabo la transición.

Un Diagrama de Actividades es un caso especial de un diagrama


de estados, en el que todos los estados (o la gran mayoría) son
actividades.
Diagramas de máquina de estados
State Escribir

Entry / Entry Entry / Tomar Lápiz


Do / Do Do / Trazar Letras
Exit / Exit Exit / Soltar Lápiz

Un estado se representa gráficamente por medio de un


rectángulo con los bordes redondeados y con tres divisiones
internas. Los tres compartimentos alojan el nombre del
estado, el valor característico de los atributos del objeto en Transición Interna: Normalmente son
ese estado y las acciones que se realizan en ese estado, interrupciones. help representa un evento que no
respectivamente. En muchos diagramas se omiten los dos causa ningún cambio de estado, pues sólo
compartimentos inferiores. muestra, en cualquier momento, una ayuda al
usuario que viene expresada en display help.
Diagramas de máquina de estados
nombre-evento y lista-argumentos describen el
donde expresión-acción es una expresión evento que da lugar a la transición y forman lo que se
procedimental que se ejecuta cuando se dispara denomina event-signature (Firma)
la transición. Es posible tener una o varias
expresión-acción en una transición de estado,
las cuales se delimitan con el carácter “/”.

donde guard-condition es una condición (expresión


booleana) adicional al evento y necesaria para que la
transición ocurra. Si la guard-condition se combina con
una event-signature, entonces para que la transición se
dispare tienen que suceder dos cosas: debe ocurrir el
evento y la condición booleana debe ser verdadera.

http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-5.pdf
Acción
Diagramas de máquina de estados
Transiciones recursivas: Un estado puede tener una transición que
retorna a sí misma. Esto es más útil cuando un efecto se asocia con la
transición.

Imagen tomada de:


http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-5.pdf
Diagramas de máquina de estados

Ejemplo tomado de:


http://www.codecompil
ing.net/files/slides/UML
_clase_03_UML_activid
ades_estados.pdf
Diagramas de máquina de estados

Ejemplo tomado de:


http://www.codecompil
ing.net/files/slides/UML
_clase_03_UML_activid
ades_estados.pdf
Pseudoestados
1. Initial: Este sirve de punto de entrada a la máquina y lleva al primer
estado
2. Terminate: Indica que la máquina ha finalizado su ejecución.  Es
decir, la línea de vida de la maquina de estado ha terminado
Indica el punto de entrada a la máquina y nos lleva al primer estado
Pseudoestados

Material tomado de
http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-5.pdf
Pseudoestados
3. Junction: Permite que varias transiciones converjan en una sola y
que la transición tome determinado estado basado en condiciones.
Pseudoestados

Material tomado de
http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-5.pdf
Pseudoestados
4. Choice: Es un punto de decisión, el cual va a permitir seleccionar
entre dos o más estados basado en condiciones.
Se representa con un diamante
Pseudoestados

Material tomado de
Pseudoestados
6. Estados compuestos: estos estados contienen en su interior otros
estados.
Diagramas de máquina de estados
• A diferencia de los estados simples que no poseen estructura, los
estados compuestos contienen otros estados (estados anidados).
• Un estado compuesto puede contener subestados secuenciales
(disjuntos) o subestados concurrentes (ortogonales).
• Los pseudoestados, permiten agregar información de lo que sucede
durante las transiciones.
• No es un estado del objeto, sino que muestra lo que sucede cuando
se pasa de un estado a otro.
Pseudoestados
7. Estados compuesto Ortogonal: Se usa para dos estados que se
ejecutan de forma simultánea o concurrentemente.
Pseudoestados El estado de Mantenimiento está descompuesto en dos
Una máquina de estado concurrente subestados concurrentes, Verificando y Ordenando, que
anidada no tiene un estado inicial y se encuentran anidados en dicho estado pero separados
un estado final. Sin embargo, los
por una línea discontinua. Cada uno de estos subestados
subestados secuenciales que
componen un estado concurrente concurrentes a su vez está descompuesto en subestados
pueden tener dichos estados. secuenciales. Cuando el control pasa del estado Parado al
estado Mantenimiento, el control se bifurca en dos flujos
concurrentes y el objeto implicado estará en el estado
Verificando y también en el estado Ordenando. Mientras
se encuentre en el estado Ordenando, el objeto estará
bien Esperando o bien en el estado Orden. La ejecución
de estos dos subestados concurrentes continúa en
paralelo. Luego cada máquina de estado anidada alcanza
su final. Si un subestado concurrente alcanza su final
antes que el otro, el control en dicho estado espera a su
estado final. Cuando ambas máquinas de estado anidadas
alcanzan sus estados finales, el control de los dos
Material tomado de subestados concurrentes se juntan de nuevo en un único
http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-5.pdf flujo.
Pseudoestados
8. Fork: Se usa para dividir y tener dos o más estados que ocurren de
forma concurrente
9. Join: Une las concurrencias para tener un solo hilo de ejecución, y
para pasar al siguiente estado es necesario que todos los hilos
lleguen al Join
• Fork y Join: Son usados para sincronizar la concurrencia
Pseudoestados
Pseudoestados Entradas y Salidas
• Cuando tenemos un estado compuesto, siempre debemos indicar con
un pseudoestado el estado que va a ocurrir primero
• Podemos colocar un punto de entrada alterno
• Círculo vacío
• Siempre se debe indicar la condición con la que entra
• Se puede indicar una salida alternativa
• Círculo con una X en su interior X
• Y se debe indicar su condición
Pseudoestados
Pseudoestados

Material tomado de
http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-5.pdf
Pseudoestados Historia
• Recordar los estados pasados, es decir, se usa para recordar el estado
anterior de una maquina de estado cuando fue interrumpida.
• SI el estado compuesto es interrumpido, la historia le permite regresar a un
estado
1. Deep
• Profunda
• Regresa al estado más reciente que estaba activado
• Circulo con H*
2. Shallow
• Regresa al estado más exterior o inicial
• Circulo con H
Pseudoestados Historia
Máquina de estado de una lavadora
En esta maquina de estado,
cuando un lavarropas
comience, su proceso será
desde el lavado y enjuague
hasta el secado. Si hay un
corte de luz, el lavarropas se
detendrá por lo que pasará al
*
estado Power off (apagado).
Luego, cuando la energía
retorne, el estado Running
(ejecutar) ingresa al símbolo
de estado Historial, lo que
significa que debería seguir
con el proceso donde quedó
cuando se cortó la energía.

Material tomado de
http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-5.pdf
Pseudoestados Historia
Pseudoestados Historia
Regresa al estado en el que
se encontraba antes del
apagón
TEMARIO

• Finalizado el tema de Diagramas de estado por comportamiento

• Continua Diagramas de estado por protocolo


Máquina de estados de Protocolo
• No modela comportamientos sino una secuencia de estados y sus
transiciones
• No se muestran las actividades del elemento o las transiciones
• Es importante colocar nombre {protocol}
• No son para implementar, son para entender el sistema
• Se usan mucho para modelar interfaces
• ejemplo
Diagramas de Actividades
Diagramas de Actividades
• Concepto
• Nodos básicos
• Flujos paralelos
• Nodo Objeto
• Pins
• Transformación
Diagramas de Actividades
¿Si estoy contento, eso es un estado o una
actividad?
¿Cuál es la diferencia entre estar contento o
preparar una torta?
¿Cómo paso de contento a triste?
¿Qué sucede después de que termino de
preparar la torta?
Ejemplo tomado de: http://www.codecompiling.net/files/slides/UML_clase_03_UML_actividades_estados.pdf
Diagramas de Actividades

Ejemplo tomado de:


http://www.codecompiling
.net/files/slides/UML_clase
_03_UML_actividades_esta
dos.pdf
Diagramas de Actividades
• Estos muestran lo que sucede durante una actividad u operación, un
proceso o caso de uso, nos va a permitir ver los pasos que se deben dar para
poder llevar a cabo un proceso en particular.
• La actividad es un proceso, donde cada paso del proceso es una acción
• Estos diagramas de actividad especifican un comportamiento que puede ser
parametrizado y que define la secuenciación coordinada de unidades
subordinadas denominadas acciones
• Acción: Una acción es la unidad fundamental de especificación de
comportamiento. Una acción es generalmente atómica, es decir, indivisible.
• Transiciones: Representan el paso de una acción a otra.
Diagramas de Actividades

Material tomado de:


http://www.codecompiling
.net/files/slides/UML_clase
_03_UML_actividades_esta
dos.pdf
Diagramas de Actividades
Diagramas de Actividades
Flujos paralelos
Se presentan cuando hay un flujo de entrada que se divide en varios
flujos de salida que se ejecutan de forma concurrente.

• Fork: es empleado para iniciar la concurrencia


• Join: Se usa para volver a un solo hilo de ejecución.
Diagramas de Actividades
Diagramas de Actividades
Algunas veces se requiere mostrar algún objeto en particular, y sus
cambios de estado, se hace con el nodo objeto.
• Nodo Objeto: Nos sirve para mostrar un objeto en particular que se
relaciona con la actividad
• El objeto cambia de estado según lo que sucede en el proceso u
operación
El nombre del objeto
Y el estado que tiene el objeto dependiendo de la
acción que se está llevando a cabo dentro de la
actividad.
Diagramas de Actividades
Diagramas de Actividades
• Los objetos también pueden ser mostrados por medio de Pins
• Los pins se usan para indicar que el objeto hace parte de una entrada
o una salida en una acción
• Pins de Salida
• Pins de entrada
• Se usan para indicar que el objeto sale de una acción y entra como
parámetro a otra.
Diagramas de Actividades
Pin de salida: Pin de entrada: indica que
Indica que envía un recibe un objeto como
objeto parámetro de entrada

Objeto de salida Objeto de entrada


Diagramas de Actividades
• Transformación: Se usa para indicar que del objeto solo se requiere
una parte de él.

Del Objeto ListaCalif, MostrarLista


solo se va a emplear el promedio
en caso que se requiera mostrar la
lista de estudiantes reprobados con
promedio inferior a 5
Diagramas de Subactividades
• Estos diagramas proporcionan más detalle acerca de la funcionalidad
de una acción en particular El objeto de entrada y salida pueden
ser el mismo o diferentes
Objeto de entrada Objeto de salida

Este símbolo indica que la actividad, contiene subactividades,


también se usa
Diagramas de actividades
• Señales: Suceden cuando se envía o se recibe un mensaje / evento
• De entrada
• De salida

Mensaje o evento
de entrada

Indica cada cuánto Mensaje o evento


tiempo sucede la acción de salida
Diagramas de actividades
Cada vez que se da el
evento de insertar
tarjeta, el cajero lee
la información

Cada hora sucede un


evento que conlleva a
que se dé la acción
ActualizarAntivirus

Cuando sucede la
acción de prender
la alarma, se envía
una señal de
notificar a la polícia
Diagramas de actividades
• Excepciones: Se presenta cuando suceden situaciones inusuales
• Se debe manejar la excepción para poder continuar la ejecución o
finalizarla.
Flecha quebrada
para indicar
excepción
Diagramas de actividades
• Regiones de actividad Interrumpible: Se presenta cuando una o
varias acciones son interrumpidas por algún evento.
• La región se representa con un rectángulo punteado de esquinas
redondas. Y en su interior las acciones que se pueden interrumpir
• Se requiere colocar el evento o eventos que crea la interrupción
• Y se coloca qué actividad debe suceder cuando suceda la
interrupción.
Diagramas de actividades
Evento que genera
la interrupción
Conjunto de
acciones que se
interrumpen

Actividad que se lleva


a cabo cuando se
genera la interrupción
Diagramas de actividades
• Regiones de Expansión: Sucede cuando una acción invoca múltiples acciones
• Cuando una acción tiene como salida una colección (arreglo, lista) con varios
elementos.
• Cada acción de la región de expansión va a ser utilizada con los elementos de la
colección.
• Sobre cada elemento de la colección actúan las acciones de la región de expansión
• Hay tres tipos de acciones:
• Iterative: Un elemento a la vez va pasando por cada una de las acciones
• Parallel: Sucede concurrentemente, todos los elementos reciben las acciones de forma
concurrente
• Stream: Se lleva a cabo la acción sobre todos los elementos de la colección como un todo, por
cada una de las actividades.
Diagramas de actividades
Indica que la salida de la acción es
un parámetro que contiene una
Región de expansión: Se colección
debe indicar la forma en la
que va a trabajar. Iterative Si fuese en Parallel, todos
los objetos de la
colección entran
concurrentemente a cada
una de las acciones de la
Este diagrama Iterative indica 18 a la 20.
que el primer elemento de la
colección pasan desde la acción
18 hasta la acción 20, luego el Si fuese en Stream, toda
segundo, luego el tercero, etc. la colección como si fiera
un solo objeto pasa de la
acción 18 a la acción 20.
Diagramas de actividades
Particiones / Swinlanes:
• Se utilizan cuando se requiere visualizar roles y conocer quién es el
responsable de alguna acción.
• Se pueden presentar
• Horizontal: Si tienen filas donde cada fila tiene el rol de quien lleva a cabo
ciertas acciones.
• Vertical: Se cuenta con columnas donde cada una representa un rol que
lleva a cabo ciertas acciones.
Diagramas de actividades

Objeto entregado
por el rol Cajero al
rol Cliente
Ejemplo tomado de:
http://www.codecompiling
.net/files/slides/UML_clase
_03_UML_actividades_esta
dos.pdf
Ejemplo tomado de:
http://www.codecompiling
.net/files/slides/UML_clase
_03_UML_actividades_esta
dos.pdf
Ejemplo tomado de:
http://www.codecompiling
.net/files/slides/UML_clase
_03_UML_actividades_esta
dos.pdf
Ejemplo tomado de:
http://www.codecompiling
.net/files/slides/UML_clase
_03_UML_actividades_esta
dos.pdf
Ejemplo tomado de:
http://www.codecompiling
.net/files/slides/UML_clase
_03_UML_actividades_esta
dos.pdf
Ejemplo tomado de:
http://www.codecompiling
.net/files/slides/UML_clase
_03_UML_actividades_esta
dos.pdf
Ejemplo tomado de:
http://www.codecompiling
.net/files/slides/UML_clase
_03_UML_actividades_esta
dos.pdf
Referencias
• http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-5.pdf
• http://www.sparxsystems.com.ar/resources/tutorial/uml2_statediagram.php
• http://www.codecompiling.net/files/slides/UML_clase_03_UML_actividades_estados.pdf
• https://
www.ibiblio.org/pub/linux/docs/LuCaS/Tutoriales/doc-modelado-sistemas-UML/multiple-html/x
291.html
• https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/diagramas-de-actividades-uml/
• https://www.lucidchart.com/pages/es/tutorial-diagrama-de-actividades-uml
• http://www.vc.ehu.es/jiwotvim/IngenieriaSoftware/Teoria/BloqueII/UML-5.pdf
• https://
support.microsoft.com/es-es/office/crear-un-diagrama-de-estados-uml-2e46fd66-e861-4e8c-918
8-36255395ebf3

También podría gustarte