Diagramas de Transición de Estados

Anuncio
8 Diagramas de Transición de Estados
8.1 Introducción
En este capítulo aprenderemos:
♦ la notación de los diagramas de transición de estados.
♦ cómo dibujar partes de un diagrama de transición de estados.
♦ cómo construir con éxito un diagrama de transición de estados.
♦ la relación de los DTE y otros modelos.
En capítulos anteriores hemos aprendido a identificar las funciones que realiza un
sistema así como los almacenamientos de datos que debe recordar. Ahora estudiamos una
tercera clase de herramienta de modelado conocida como DTE o diagrama de transición de
estados, que nos permite expresar el comportamiento del sistema dependiente del tiempo.
Los modelos para estudiar el comportamiento de un sistema dependiente del tiempo
son importantes aplicarlos para una categoría especial de sistemas conocidos como
sistemas de tiempo real. Como ejemplos podríamos citar; control de procesos, sistemas de
permutación telefónica, sistemas de adquisición de datos a alta velocidad y sistemas de
control militares. Algunos de estos sistemas son pasivos, es decir, no persiguen el control
del entorno pero si capturar la reacción de este o la captura de datos respecto a éste.
Muchos sistemas de adquisición de datos a alta velocidad entran en esta categoría de
sistemas (por ejemplo, sistemas de captura a alta velocidad de datos científicos vía
satélite). Otros sistemas de tiempo real son mas activos, en el sentido de que ellos
persiguen mantener el control sobre algunos aspectos del entorno del sistema. Sistemas de
control de procesos y una variedad de sus subsistemas entran en esta categoría.
Como podrá imaginarse, sistemas de esta clase trabajan con fuentes de datos a alta
velocidad y por tanto deben proporcionar respuestas y salidas de datos lo suficientemente
rápidas a las exigencias del entorno del sistema. Una parte importante para especificar este
tipo de sistemas es describir qué pasa cuándo.
Para sistemas administrativos convencionales, este tipo de modelado no tiene
ninguna importancia. Las entradas llegan al sistema desde diferentes fuentes y a una
determinada velocidad, pero éstas pueden ser retrasadas si el sistema está ocupado
realizando alguna otra cosa. Un sistema de gestión de nóminas, por ejemplo, no tiene
porque preocuparse sobre interrupciones o señales que provengan de una unidad de rádar.
Aquí únicamente describimos las especificaciones de respuesta temporal.
Sin embargo, estamos empezando a ver un tipo de sistemas mas complicados que los
sistemas administrativos, sistemas sobre los que hay que estudiar aspectos de
comportamiento en tiempo real. Si un sistema está caracterizado por entradas desde miles
de terminales, así como entradas de alta velocidad desde otros ordenadores o a través
facilidades de comuncación vía satélite, entonces debe tener la misma clase de dependencia
del tiempo que un sistema de timepo real clásico tiene.
8.2 Notación del diagrama de transición de estado
A continuación, en la figura 1, se muestra un típico diagrama de transición de
estados. Este diagrama muestra el comportamiento de un contestador telefónico.
IDLE
ESPERA
DE
LLAMADA
GRABANDO
MENSAJE
REWINDING
REPROD.
MENSAJES
CONTEST.
LLAMADA
figura 1: DTE para un contestador telefónico
Los componentes principales del diagrama son los estados y las flechas (que
representan el cambio entre estados). Hay una gran variadad de notaciones alternativas
para los DTE pero nosotros utilizaremos esta a lo largo del capítulo.
8.2.1 Estados del sistema
Cada caja rectangular representa un posible estado en el que el sistema se puede
encontrar. Se puede definir estado como:
El conjunto de circunstancias o atributos que caracterizan a una persona o cosa en
un tiempo dado, manera o forma de inicio, condición.
Por tanto, estados típicos de un sistema podrían ser:
♦ esperar que un usuario introduzca el password.
♦ calentar una mezcla química.
♦ esperar siguiente comando.
♦ acelerar un motor.
♦ mezclar ingredientes.
♦ esperar datos de un instrumento.
♦ llenar un tanque
♦ desocupado.
Fijémonos que muchos de estos ejemplos implican que el sistema está esperando que
ocurra algo en vez de expresar que el ordenador está haciendo algo. Esto es porque nuestro
DTE está siendo utilizado para desarrollar el modelo esencial del sistema, es decir, cómo
debería comportarse el sistema si tuviéramos una tecnología perfecta. Un aspecto de la
tecnología perfecta sería que la computadora trabaje de manera infinitamente rápida, de
modo que cualquier proceso o cálculo que tenga que hacer, o cualquier acción que deba
tomar, se haga en cero memoentos. Así, cualquier estado observable en el que el sistema se
pueda encontrar se corresponde sólamente con un período de tiempo cuando:
♦ está esperando que algo ocurra en el entorno externo.
♦ está esperando que la actividad actual que se realiza en el entorno (mezclar,
lavar, llenar, acelerar,...) cambie a alguna otra.
Esto no significa que nuestro sistema sea incapaz de ejecutar acciones o que no
pretendamos mostrarlas, sino sólo que las acciones, que ocurren instantáneamente en
nuestro modelo de tecnología perfecta, no son lo mismo que los estados que representan
condiciones observables en las que el sistema se puede encontrar. Por consiguiente, un
estado representa algún comportamiento del sistema que es observable y que por último
finaliza en algún período de tiempo finito.
8.2.2 Cambio de estado
Un sistema que sólo tuviese un posible estado no tendría mucho interés de estudio,
sería un sistema estático. Realmente, los sistemas de información que modelamos pueden
tener docenas de estados diferentes. Pero, como cambia un sistema de un estado a otro?, si
el sistema tiene determinadas reglas de comportamiento, entonces ciertas clases de cambios
de estado tendrán sentido y por tanto serán válidos.
Podemos mostrar los cambios válidos de estado en nuestro DTE conectando los
estados con una flecha. En la figura 2, se muestra como el sistema puede cambiar del
estado 1 al estado 2; también muestra como cuando el sistema se encuentra en el estado 2,
se puede pasar al estado 3 o volver al estado 1. Sin embargo, no es posible pasar desde el
estado 1 directamente al estado 3, pero si podemos pasar desde este último estado al
primero. Fijémonos que el estado 2 tiene dos estados sucesores, esto es bastante común en
los DTE. Cualquier estado puede tener un número arbitrario de estados sucesores.
ESTADO
1
ESTADO
2
ESTADO
3
figura 2 : Sucesión de estados
Respecto a la figura 2, hay un aspecto que todavía no está reflejado y este referente
a cuales son los estados iniciales y finales del sistema. Puesto que en este caso no hay
debemos asumir que el sistema ha estado activo siempre y seguirá estando activo por
siempre. Sin embargo, la mayoría de los sistemas tienen un estado inicial reconocible y un
estado final reconocible. Observemos la figura 3:
ESTADO
1
ESTADO
2
ESTADO
3
ESTADO
4
ESTADO
5
figura 3: Estados inicial y final
El estado inicial es normalmente el de la parte superior de la figura 3, además está
identificado claramente con una flecha sin origen (que no está conectada a ningún otro
estado). De forma similar el estado final es el de la parte inferior y lo que lo identifica
claramente es que no tiene ninguna flecha de salida hacia ningún otro estado.
El sentido común puede indicarnos que un sistema puede sólo tener un estado inicial,
sin embargo, es posible que el sistema tenga varios estados finales, estos estados finales
son mutuamente exclusivos, (sólo uno de ellos puede ocurrir).
Veamos un ejemplo:
ESTADO
1
ESTADO
2
ESTADO
4
ESTADO
3
ESTADO
5
ESTADO
6
figura 4: Varios estados finales
Obsérvese como en la figura 4, tenemos dos posibles estados finales como son el 4 y
el 6, el estado 5 no sería final puesto que de éste puedo pasar al estado 2.
8.2.3 Condiciones y Acciones
Para completar nuestro DTE, necesitamos añadir dos cosas mas: las condiciones
que causan los cambios de estado, y las acciones que el sistema realiza cuando se cambia
de estado. La figura 5, muestra donde se refleja la información de condiciones/acciones en
un DTE.
ESTADO
1
C:condición
A:acción
ESTADO
2
figura 5: Condiciones y Acciones
Una condición es cualquier evento del entorno que el sistema es capaz de detectar,
normalmente se corresponde con una señal, una interrupción o la llegada de un paquete de
datos. Esto causará en el sistema un cambio desde un estado X a un estado Y, pero como
parte del cambio de estado, el sistema realizará una o mas acciones: se producirá una
salida, o se mostrará un mensaje por pantalla, o se realizará algún cálculo. Por tanto las
acciones mostradas en el DTE, son las respuestas devueltas al entorno o cálculos cuyos
resultados deberán de ser recordados por el sistema (reflejados como almacenamientos de
datos en los DFD’s) para poder responder a futuros eventos.
8.2.4 Particionando diagramas
En un sistema complejo hay muchos posibles estados del sistema, intentar mostrarlos
todos en un solo doagrama podría ser muy dificultoso aunque no imposible. Esta es la
razón por la cual particionamos los DTE al igual que hacíamos con los DFD’s. La figura
6, muestra un ejemplo con dos niveles de DTE para un sistema complejo.
ESTADO
1
ESTADO
2
ESTADO
3
ESTADO
2.1
ESTADO
3.1
ESTADO
2.2
ESTADO
3.2
ESTADO
3.3
ESTADO
2.3
ESTADO
2.4
ESTADO
3.4
figura 6: Partición de diagramas
Fijémonos cómo en este caso, un estado individual del diagrama de mas alto nivel
puede llegar a ser el estado inicial de un diagrama de nivel inferior que describe el estado
de nivel superior, y el estado/s final/es en el diagrama de nivel inferior se corresponde con
las condiciones de salidas asociadas al estado de nivel superior.
Un ejemplo de la necesidad de particionar los DTE lo tenemos en el modelado de un
cajero automático veamos la solución.
IDLE
pulsar start
display insert card
tarjeta insertada
display enter passwd
pulsar reset
ESPERA
TARJETA
ESPERA
PASSWD
passwd insertado
display select function
reset o passwd error
limpiar pantalla
reset pulsado
ESPERA
OPCION
obtener dinero
OBTENER
DINERO
MOSTRAR
BALANCE
DEPOSITO
DINERO
TRANSF.
figura 7: Modelado cajero automático, nivel superior
Ahora veamos como sería el DTE asociado al estado OBTENER DINERO.
ESPERAR
ENTRADA
intro cantidad de dinero
display por favor espere
ABONAR
DINERO
dinero disponible
display coja dinero
ESPERAR
RETIRO
DINERO
figura 8: Modelado cajero automático para el estado obtener dinero
Obsérvese que el estado esperar retiro dinero, cuando finalizase retornaría al estado
espera opción del DTE superior.
8.2.5 Construyendo el Diagrama de Transición de Estado
Ahora que ya hemos visto la notación de los DTE’s, pasaremos a comentar los paso
en la construcción de este tipo de diagramas. Podemos utilizar dos aproximaciones:
1. Empezar identificando todos los posibles estados de un sistema, representando
cada uno como una caja seperada en una hoja de papel. Entonces podemos
explorar todas las posibles conexiones que tengan significado entre cajas.
2. Alternativamente, podemos empezar con el estado inicial y metódicamente
trazar la manera de llegar al próximo estado, después del segundo al tercero y
así sucesivamente.
La aproximación que se utilice estará dirigida en la mayoría de los casos por el
usuario con el cual estes trabajando. Cuando se termine de realizar el DTE preliminar se
deberían comprobar las siguientes reglas de consistencia:
♦ Han sido todos los estados definidos?, se debe de mirar el sistema en
cinjunto para ver si hay algún otro comportamiento observable o cualquier
otra condición en la que el sistema podría encontrarse distinta a lo ya
definido.
♦ Puedo alcanzar todos los estados?, si hemos definido estados a los cuales
nunca se llega.
♦ Puedo salir de todos los estados?, como se mencionó anteriormente el
sistema puede tener uno o mas estados finales con múltiples entradas en ellos,
pero todos los estados deben de tener un sucesor a expeción de éstos.
♦ Para cada estado, responde el sistema adecuadamente a todas las posibles
condiciones?, este es el error mas común en el que podemos caer cuando
construimos DTE’s, pues el analista identifica los cambios de estados cuando
ocurren condiciones normales, pero se falla a la hora de especificar el
comportamiento del sistema para condiciones inesperadas.
Supongamos que un analista ha modelado el comportamiento de un sistema
como se muestra en la figura 9, el espera que el usuario pulse una tecla de
funcion que cause un cambio de un estado 1 a un estado 2 y luego pulse otra
tecla de función diferente que provocará el cambio del estado 2 al estado 3.
Pero qué ocurre si el usuario pulsa la misma tecla de función las dos veces o
pulsa cualquier otra?.
ESTADO
1
ESTADO
2
ESTADO
3
figura 9 : Comportamiento de un sistema
8.2.6 Balanceo del DFD y el Diagrama de Transición de Estados
(DTE).
La condición de estado puede considerarse balanceada con el diagram de flujo de
datos si se cumple con las siguientes reglas :
◊ Cada burbuja de control del DFD se asocia con un diagrama de
transición de estados como su especificación de proceso. De manera
similar, cada diagrama de transición de estados en el modelo global del
sistema debe asociarse con un proceso (burbuja) de control en el DFD.
◊ Cada condición del diagrama de transición de estados debe
corresponder con un flujo de datos de entrada al proceso de control
asociado con el diagrama de transición de estados. De manera similar,
cada flujo de control que entra en la burbuja de control debe asociarse
con una condición apropiada en el diagrama de transición de estados
correspondiente.
◊ Cada acción en el diagrama de transición de estados debe corresponder
con un flujo de control de salida del proceso de control asociado con
dicho diagrama. De manera similar, cada flujo de control de salida de
la burbuja de control debe asociarse con una acción apropiada en el
diagrama de transición de estados correspondiente.
ESTADO
1
1
señal X
activa burbuja 2
X
ESTADO
2
2
señal Y
activa burbuja 3
Y
3
ESTADO
3
figura 10: Relación DFD´s con DTE
Descargar