Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Maquinas de Estados Finitos
Maquinas de Estados Finitos
Ingeniera de Software I
-1-
Ingeniera de Software I
-2-
Introduccin
Las mquinas de estado finito son una herramienta muy til para especificar aspectos
relacionados con tiempo real, dominios reactivos o autnomos, computacin reactiva,
protocolos, circuitos, arquitecturas de software, etc.
El modelo de FSM (Finite State Machine) es un modelo que posee sintaxis y semntica
formales y que sirve para representar aspectos dinmicos que no se expresan en otros
diagramas.
Sintaxis
Las mquinas de estado finito se definen como una tupla S , , A S S , sk , donde:
Ejemplo
a
2
1
b
b
3
S = {1, 2,3}
= {a, b}
,
A = {(1, a, 2 ) , ( 2, b,3) , ( 3, a,1) , (1, b,3)}
sk = 1
Ingeniera de Software I
-3-
Semntica
Los nodos representan los posibles estados de aquello que se desea modelar. Las etiquetas
representan eventos que provocan un cambio. Las aristas determinan de qu manera cada
estado, dado un evento, deriva en otro estado.
Ejemplo
Supongamos que se quiere modelar el comportamiento de una puerta. La puerta,
inicialmente cerrada, puede pasar a estar abierta tras el evento abrir puerta. Una vez
abierta, puede pasar al estado cerrada, tras el evento cerrar puerta.
abrir puerta
cerrada
abierta
cerrar puerta
Ingeniera de Software I
-4-
Trazas
El conjunto de posibles trazas correspondientes a una mquina de estado finitos, se puede
definir en trmino de grafos, cmo el conjunto de todos los caminos (de ejes) alcanzables
desde el estado inicial.
Ejemplo
Dada la FSM de ejemplo:
a
2
1
b
b
3
a
Las trazas de esta FSM son:
{a, b, a} correspondiente a 1, 2, 3, 1
{b, a} correspondiente a 1, 3, 1
{a, b, a, b, a} correspondiente a 1, 2, 3, 1, 3, 1
{b, a, a, b, a} correspondiente a 1, 3, 1, 2, 3, 1
{b, a, b, a, ... , b, a} 1, 3, 1, 3, , 1, 3
Etc
Ingeniera de Software I
-5-
Deadlock
Formalmente hablando, una FSM S , , A S S , sk , tiene deadlock, si existe algn
nodo s S , tal que no existen un evento e y un nodo t S tal que ( s, e, t ) A . En otras
palabras, si existe algn nodo que no posea salida para ningn evento.
Ejemplo
El estado 2 no posee salida alguna.
a
2
1
b
3
a
Esperando
inicio
Partido en
curso
Partido
finalizado
Ingeniera de Software I
-6-
Composicin de FSM
Supongamos que se quiere modelar el siguiente comportamiento de un horno microondas:
El horno microondas posee una puerta. Si la puerta est cerrada, entonces puede estar o no
en funcionamiento (segn se prenda o apague). Estando prendido no es posible abrir la
puerta del horno sin antes apagarlo.
Tambin asumamos lo siguiente: en cualquier momento es posible establecer el modo de
coccin.
modo de
coccin
cerrar puerta
modo de
coccin
Puerta abierta y
encendido
deshabilitado
Puerta cerrada y
horno apagado
prender horno
apagar horno
abrir puerta
Puerta cerrada y
horno prendido
modo de
coccin
No es obligatorio etiquetar los nodos, sin embargo puede resultar muy til hacerlo: sobre
todo aquellos nodos que representan los estados principales de que se est modelando.
Muchas veces es posible descomponer un complicado problema en problemas ms
pequeos y ms fciles de tratar. Esto tambin es aplicable a las FSMs: una FSM puede
descomponerse en varias FSMs ms simples. Sin embargo (como vern resolviendo los
ejercicios de la prctica) no es trivial hacerlo, y hay que tener mucho cuidado de que la
composicin de las maquinas sencillas represente exactamente a la FSM descompuesta y no
a una parecida.
Ingeniera de Software I
-7-
Sintaxis de la composicin
La composicin de FSMs se realiza a travs de la sincronizacin de etiquetas.
Sean A = S A , A , AA S A A S A , sk A y B = S B , B , AB S B B S B , sk B
La composicin paralela A || B se define como
S , A B , A ( S A S B ) ( A B ) ( S A S B ) , ( sk A , sk B ) donde:
S S A SB
o
o
o
dos FSM.
( sa , e, sc ) AA e B sb = sd
( sb , e, sd ) AB e A sa = sc
( sa , e, sc ) AA ( sb , e, sd ) AB e A B
Ejemplo
B
a
A1
B1
A2
B2
B3
d
c
A||B
a
d
A1,B1
A2,B2
c
A2,B3
Ingeniera de Software I
-8-
Sobre la composicin
Analicemos el siguiente ejemplo:
B
B1
A1
b
B2
A2
A2,B2
Segn nuestras reglas de composicin, A||B quedara con el estado inicial (A1,B1) y la
nica transicin posible sera a, dejando a la mquina en el estado (A2, B2) y en deadlock.
Las mquinas A y B no posean deadlock, pero su composicin s. Tambin podra pasar al
revs. Componer dos FSM no es simplemente poner el smbolo || entre sus nombres: se
debe analizar el posible resultado para comprobar que se est modelando lo que uno
realmente desea modelar.
Ingeniera de Software I
-9-
Ejemplo
Volviendo a nuestro ejemplo:
modo de
coccin
cerrar puerta
modo de
coccin
Puerta cerrada y
horno apagado
Puerta abierta y
encendido
deshabilitado
prender horno
apagar horno
abrir puerta
Puerta cerrada y
horno prendido
modo de
coccin
Podemos descomponer este problema en tres partes: por un lado modelaremos una puerta
que se abre y se cierra, y por otro un horno que se prende y apaga y trataremos el modo de
coccin de manera independiente.
Horno
Puerta
Puerta
abierta
cerrar
puerta!
Encendido
deshabilitado
abrir
puerta!
abrir
puerta?
cerrar
puerta?
Puerta
cerrada
Horno
apagado
apagar
horno
prender
horno
Modo
Horno
prendido
modo de
coccin
Ingeniera de Software I
- 10 -
Cuando se hagan composiciones de FSMs, en las transiciones que posean etiquetas con el
mismo nombre en dos o ms maquinas de estado diferentes (es decir las transiciones que
componen) se utilizar el smbolo de exclamacin y de interrogacin para diferenciar entre
el arco que realmente dispara la transicin, del que recibe el impulso. Al nombre de
etiqueta del primero se le concatenar un signo de exclamacin, mientras que al segundo
uno de exclamacin. La semntica es tan simple como que la transicin con el signo de
exclamacin es la que realmente emite y dispara el evento, y las que poseen el de
interrogacin son las que lo reciben.
Extensiones
Para aumentar el poder expresivo, existen extensiones al lenguaje de FSM visto
anteriormente.
Condiciones
Son expresiones booleanas que determinan si una transicin entre estados puede realizarse.
Se escriben entre corchetes.
[expresin booleana]
Acciones
Inmediatamente despus de ejecutar una transicin y antes de arribar al siguiente estado, la
mquina de estado ejecuta una accin. Bsicamente, para nosotros, las acciones sern
asignaciones de valores a variables. En algunos contextos, dentro de las acciones, tambin
se lanzan eventos (para luego sincronizar otras mquinas). Se escriben entre corchetes.
{accin; accin}
Variables
Sus valores posibles deben pertenecer a un dominio finito. Pueden utilizarse estructuras
como arreglos o tipos abstractos de datos en general (cmo por ejemplo conjuntos o pilas).
Los variables pueden usarse dentro de las expresiones booleanas de las condiciones y su
valor puede cambiarse utilizando acciones, generalmente asignaciones. A su vez, salvo
explicitado lo contrario, las variables son compartidas por todas las FSMs de la
composicin (es decir pueden verse como globales a todas las mquinas de estado).
Ingeniera de Software I
- 11 -
Ejemplo
Un local de ropa puede estar vaco o lleno segn la cantidad de personas que hay en su
interior. Inicialmente est vaco, pero luego de ingresar la primer persona esta lleno. A
partir de ah, la gente puede ingresar o salir. Cuando sale el ltimo, vuelve a estar vaco.
Todas las variables se deben definir de antemano:
contador : [0, 99999999] (por simplicidad, permitiremos decir . Sin embargo, debemos
resaltar que esto no es del todo correcto: el dominio debe tener un nmero finito de
valores).
Local
{contador = 0}
vaco
ingresa persona
{contador++}
egresa persona
[contador = 1]
{contador--}
lleno
ingresa persona
{contador++}
egresa persona
[contador > 1]
{contador--}
Ingeniera de Software I
- 12 -
Ejemplo
Alarma
alarma
apagada
[contador
<= 1000]
[contador = 1000]
apagar alarma
FSMs Temporizadas
Muchas veces los disparadores de los eventos que provocan los cambios de estado de las
mquinas son iniciados por el paso del tiempo. Por ej. el cambio de luz de los semforos,
un rociador automtico de csped que se enciende y riega cada 2 horas por 10 minutos, o un
sistema de dosificacin de qumicos en una caera que cada determinada cantidad de
tiempo inyecta distintas sustancias en un orden especial. En todos estos casos la decisin de
que ocurran los eventos es disparada por el tiempo. Para poder representar este
funcionamiento utilizando FSMs se hace necesario extenderlas agregando un componente
extra denominado timer.
Este ser declarado junto con el resto de las variables de la siguiente manera:
nombreTimer: timer. En -unidad de tiempo-. (por ej. segundos).
Las nicas operaciones permitidas por el timer es resetearlo (es decir colocar su cuenta en
0) y chequear su valor (es decir, ver el tiempo transcurrido desde su ltimo reset). Una
vez que el timer es reseteado empieza a contar el tiempo transcurrido hacia adelante, y
eso es todo lo que sabe hacer (no se lo puede setear en un valor determinado por ej.).
Podremos chequear el tiempo transcurrido a travs del uso de condiciones y podremos
resetearlo utilizando acciones.
La sintaxis para resetear el timer es colocando al nombre del mismo dentro de llaves.
Plasmemos el ejemplo del rociador automtico en una FSM para ver como se puede utilizar
esta extensin para representar dicha situacin:
Ingeniera de Software I
- 13 -
Ejemplo
t : timer. En minutos.
u: timer. En minutos.
Rociador
[t = 120]
abrir grifo
{t}
{u}
rociador
encendido
[u < 10]
rociador
apagado
[t < 120]
[u = 10]
cerrar grifo
{t}
No Determinismo
Si dado un estado y dado un evento, existe ms de una transicin vlida (cuya condicin, si
existe, se satisface), hacia distintos estados, se asumir un comportamiento no
determinstico: es decir, cualquiera de los estados posibles podr ser alcanzado, sin orden
alguno.
Ejemplo
A
a
a
b
B
b
C
Ingeniera de Software I
- 14 -
Abusos de Notacin
Supongamos que se quiere modelar lo siguiente: un operador telefnico puede llamar a tres
personas diferentes, pero slo a una de estas a la vez.
Operador
Llama a 2
Llama a 1
Llama a 3
Hablando
Sin
hablar
Cuelga 3
Cuelga 2
Cuelga 1
Persona 1
Persona 2
Llama a 1
Llama a 2
Cuelga 2
Cuelga 1
Persona 3
Llama a 3
Cuelga 3
Ingeniera de Software I
- 15 -
Para modelar lo anterior, aclarando que la cantidad de personas es finita, se podr utilizar la
siguiente notacin:
Llama a 1
Operador
...
Llama a N
Hablando
Sin
hablar
Cuelga 1
...
Cuelga N
Persona i
Llama a i
Cuelga i
Ingeniera de Software I
- 16 -
Llama a 1
Operador
...
Llama a N
Hablando i
Sin
hablar
Cuelga 1
...
Cuelga N
Llama a i
Persona i
Cuelga i
Es decir, identificar en el operador, no slo si est hablando o no, sino que tambin con
quien lo est haciendo (en el otro ejemplo, esta informacin es deducible).
Operador
Llama a 1
Cuelga 1
Hablando 1
Llama a 2
Sin
hablar
Cuelga 2
Hablando 2
Llama a 3
Cuelga 3
Hablando 3
Puede verse cmo, al explotar los estados, se forma una especie de abanico. Imaginense
ahora que desde el estado Hablando i, sale otra flecha cuyo evento tambin se encuentra
indizado y que llega a otro estado tambin indizado. Este tipo de abuso, oculta mucha
informacin que hace a la interpretacin de la mquina de estados.
Ingeniera de Software I
- 17 -
Operador
Sin
hablar
...
Llama a N
{destinatario=N}
Hablando
[destinatario=1]
Cuelga 1
...
[destinatario=N]
Cuelga N
Es decir se reemplazan las N FSMs Persona i por una variable destinatario que
almacena al receptor de la llamada del operador y restringe la salida del estado Hablando
por la nica transicin correcta.
Modelo Conceptual
Las mquinas de estado finito, puede utilizarse para especificar aspectos dinmicos de
problemas. Dichos problemas, probablemente tambin posean aspectos estticos:
estructuras de datos necesarias, entidades relacionadas entre s, invariantes, etc. Muchos de
estos aspectos pueden modelarse a travs de un modelo conceptual. A veces, puede ser til
especificar el comportamiento de las entidades identificadas en el modelo conceptual: sus
posibles cambios de estados. En estos casos, es interesante combinar distintas tcnicas:
modelo conceptual, OCL y FSM.
El objetivo ser explicar la semntica de las transiciones de la FSM, identificando
responsabilidades en las entidades, las cuales podrn ser especificadas formalmente
utilizando OCL.
Ejemplo
Ingeniera de Software I
- 18 -
Ingeniera de Software I
- 19 -
Ingresada
emitirFactura
Autorizada
Facturada
Cuando una FSM describa el comportamiento de una sola entidad, podremos fijar el
contexto de la misma y podremos delegar las acciones correspondientes a algunos eventos,
en responsabilidades de la entidad contexto.
Context: Orden de Compra
OrdenDeCompra
Ingresada
Autorizada
registrarAutorizacin
R: autorizar()
Facturada
emitirFactura
R: facturar()
Ingeniera de Software I
- 20 -
Aclaraciones
Una vez establecido el contexto de una FSM, es posible utilizar expresiones OCL en
las condiciones y acciones: se cuenta con los valores de los atributos (accediendo
mediante el operador self) y con toda la informacin disponible mediante la
navegacin del modelo conceptual.
Ingeniera de Software I
- 21 -
Ejercicio Resuelto
Cierta estancia cuenta con tres parcelas en las cuales realiza sus cultivos. Con el fin de
optimizar su productividad, se ha definido una poltica con respecto a cmo trabajar la
tierra.
La primer etapa consiste en preparar la tierra en todas las parcelas. Para ello se utiliza un
tractor. La estancia posee un nico tractor, el cual puede ser usado de a una parcela a la vez
(y luego liberado). No hay un orden predeterminado para estas actividades, es ms, todas
las parcelas se pelean entre s para el uso del tractor. De esta manera, mientras que en una
parcela se est realizando el preparado de la tierra, las dems parcelas deben esperar a que
termine.
Recin cuando la tierra de todas las parcelas ha sido preparada se da inicio a la segunda
etapa.
Durante la segunda etapa se siembran simultneamente todas las parcelas (no se utiliza el
tractor para tal tarea). La manera de hacer el sembrado no es relevante (por lo general se
utilizan aviones especialmente equipados).
La tercer etapa es comprendida por la cosecha de cada parcela, nuevamente utilizando el
nico tractor (con las mismas condiciones en cuanto a su uso con respecto al preparado de
la tierra). Luego de realizar la cosecha de todas las parcelas, se est en condiciones de dar
inici, nuevamente, a la primer etapa.
1. Modele la poltica implementada por la estancia, utilizando FSM.
2. Cmo extendera el modelo para contemplar n parcelas?
Ingeniera de Software I
- 22 -
Respuesta sugerida
Vamos a resolver el problema para n parcelas directamente.
En este caso N sera 3.
La respuesta es la composicin paralela de las mquinas que describimos a continuacin,
esto se simboliza:
Siembra || Tractor || Parcela1 || .. || ParcelaN
Modelamos con una mquina la secuencia de operaciones que se realizarn en las parcelas:
FSM Siembra
Preparar
preparando
Cosechar
Sembrar
sembrando
intentoReservarTractor_i
liberarTractor_i
Ingeniera de Software I
- 23 -
liberarTractor_i
intentoReservarTractor_i
Preparar
cosechando_i
liberarTractor_i
reservarTractor_i
reservarTractor_i
Cosechar
finSiembra_i
prep_i
Sembrar
sembrando_i
intentoReservarTractor_i
{tractorLibre = true}
preparar
inicioPreparacion_i
[tractorLibre = true]
{tractorLibre = false}
finCosecha_i
{tractorLibre = true}
cosechar
sembrar
inicioCosecha_i
[tractorLibre = true]
{tractorLibre = false}
fin_siembra_i
finPreparacion_i
{tractorLibre = true}