Los diagramas de UML se classifican en:
- Modelo estático, define la estructura de clases y objetos.
- Modelo dinámico, define las interrelaciones entre objetos.
- Modelo de implementación, describe el programario en terminos de componentes y aplicación.
En las aplicaciones de tiempo real, el diagrama de estados es muy importante.
Podemos encontrar otros lenguajes como PetriNets y SDL (Specification and Description Language).
Conceptos
- Los objetos y sistemas en todo momento se encuentran en un estado.
- El estado actual de un objeto o sistema determina su futuro.
- Los cambios de estados son posibles, en UML les llamamos transiciones.
- La transición entre estados se debe a un evento.
- Los diagramas de estado serán para modelar el comportamiento (complejo) de objetos y sistemas.
- El diagrama de estados se documenta en la fase de analisis.
- Hace poco se han incorporado los diagramas de Harel en UML, con estos se permite que un objeto o un sistema pueda estar en dos estados a la vez.
Notación
Los estados se representan en rectangulos redondeados:El nombre del estado no se puede repetir en ningun lugar del diagrama. Tiene que ser único, aunque un objeto puede llegar varias veces al largo de su vida a un determinado estado.
Pueden tener tres compartimientos:
- El primero es el nombre del estado.
- El segundo es para valores característicos del sistema o objeto del cuando se encuentra el estado.
- El tercero para las acciones que se ejecutan al entrar, mientras esta o al salir del estado.
Las transiciones se representan por flechas, que van de un estado a otro:
El nombre del evento que disparan las transacciones se escriben al lado de las flechas.
Puede que una transición comporte una acción que se indica con /acción.
Una acción puede ir precedida por una condición de guarda que se representa como [condición]. El texto que acompaña a una transición tiene la siguiente forma:
evento [condición] / acción.
De acciones podemos tener una, varias o ninguna, y el orden de estas es importante porque especifica el orden de ejecución.
El estado de un objeto esta determinado por los valores de los atributos. Los diagramas de estados nos sirven para especificar todos los estados por los que puede pasar un objeto al largo de su vida.
Por ejemplo, el proceso de los posibles estados del objeto correo electrónico.
La dinámica de un sistema esta determinada por:
- Todos los posibles estados que pueden tener sus objetos.
- Todas las secuencias de eventos posibles.
- Todas las transacciones posibles de un estado a otro, consecuencia de los eventos que afectan a los objetos.
Podemos hacer uso de un diagrama de estado para modelar la dinámica de un sistema. Por ejemplo:
Una máquina expendedora de billetes.
Otro ejemplo seria:
En el ejemplo se muestra un diagrama de estados que modela gran parte del "login" de un sistema de banca online. Para hacer el "logging" al sistema, hace falta introducir un número de seguridad (SSN) y un número de identificación personal (PIN), que después se tienen que validar. El proceso de "logging" se puede factorizar en cuatro estados del sistema:
- GettingSSN.
- GettingPIN.
- Validating.
- Rejecting.
De cada estado se obtiene un conjunto completo de transacciones que determina el estado siguiente.
Hay dos auto transacciones, GettingSSN i GettingPIN. Al estado Validating el objeto no espera que un evento dispare una transacción, pero ejecuta una actividad. El resultado de esta actividad la determina el propio estado.
Estado: es una situación determinada dentro de la vida de un objeto. También puede ser la duración de una interacción durante la cual se cumple alguna condición, se lleva a hacer a alguna acción o se espera algún evento. No necesariamente se corresponde a un instante en el tiempo (puede tener una duración).
Transición simple: una transición simple consiste en que un objeto o interacción pasa de un estado a otro, puede ser incluso el mismo. La transición se da cuando hay un evento más una condición de "guarda". Todo estado puede tener transiciones de llegada y transiciones de salida.
Transición interna: son pseudotransiciones en las cuales no hay cambio de estado. Sirven para especificar acciones que se tienen que ejecutar en respuesta a eventos que no provocan ningún cambio de estado en el objeto.
Acción: una acción es la especificación de un proceso atómico (o se ejecuta totalmente o no se ejecuta). De una transición, se puede ejecutar una acción o más. Las acciones se pueden describir mediante procedimientos.
Señales: los objetos pueden recibir mediante mensajes peticiones de operaciones o señales. Las señales se diferencian de las operaciones en que no hacen ningún proceso y solo pueden producir eventos. A su vez, los eventos provocan transiciones que si que son capaces de llamar a acciones.
Señal → evento → transiciones → acciones
Eventos: hechos que cuando se producen provocan trasiciones de un estado a otro y también se pueden dar determinadas acciones. Los eventos no van ligados a ningún objeto en concreto, sino que forman parte del paquete. Cada evento tiene nombre y parámetros. Cuando se produce un evento tiene que ser tratado, sino se pierde, a no ser que se declare diferido. Los eventos pueden ser del tipo síncrono (el transmisor debe coordinarse con el receptor antes del envío de datos) o asíncrono.
Tipos de eventos:
- De llamada: se producen cuando se llama una operación de un objeto.
- De señal: se produce cuando se recibe una señal.
- De cambio: es una notificación que una determinada condición ha sucedido.
- De tiempo: representa que o bien ha pasado un determinado tiempo o bien es una determinada hora.
Hay unos eventos que se llaman internos y son pseudoeventos porque estan ligados a un estado en vez de una transición. Sirven para encender acciones que no estan vinculadas a ningún cambio de estado. Pueden ser de entrada, salida o de acción:
- El de entrada se produce cuando el objeto entra en el estado correspondiente. No tiene parámetros ni guarda, y se identifica con la palabra "entry".
- El de salida se producen en la salida del estado y se identifican con la palabra "exit".
- El de acción especifican acciones que se generan cuando se llega a un determinado estado, y desaparecen en el momento que sale. Se declaran con la palabra "do".
La firma de eventos entonces dependerá de su tipo:
- De llamada o señal:Nombre_evento(NombreParametro:exp_tipo,...)
- De tiempo:after(expresión_de_tiempo)After es la duración, por ejemplo, when(hora/fecha)
- De cambio:when(expresión_booleana)
Sintaxis
- La condición de guarda es una expresión que puede tomar el valor de cierto o falso, se escribe en pseudocódigo y determina cuando se cumple el evento.
- La acción es una especificación en pseudocódigo que indica que procedimientos se tendrán que ejecutar cuando se cumple el evento.
- Un envío toma la forma destinación '.' mensaje'(argumento','...')', donde destinación pueden ser uno o mas objetos y mensaje es una operación del objeto de destinación o una señal.
Un ejemplo sería:
introducir_tarjeta[tarjeta=válida]/abrir_puerta^registrar_entrada
O
introducir_tarjeta[tarjeta=válida]/defer abrir_puerta^registrar_entrada.
(este lo deja para después: diferido)
Ejemplos:
Transiciones complejas: Un objeto o interacción pueden estar en mas de un estado al mismo tiempo, y puede haber mas de una transición saliendo de un estado y mas de una transición llegando a un estado. Estas se llaman transiciones complejas. Se utiliza un pseduoestado intermedio que se llama sincronización o de bifurcación. Otro ejemplo de facturas:
Estados compuestos: Un estado compuesto es aquel en el cual hay varios subestados posibles, cada uno de los cuales también puede ser a la vez compuesto o simple. Todo estado compuesto tiene un diagrama de subestados, que pueden ser concurrentes (a la vez) o secuenciales (uno detrás de otro). Se representa como un estado simple pero con 2 compartimientos. Dentro de un estado compuesto pueden haber transiciones que van de subestado a subestado; Transiciones que entran o salen del estado compuesto o bien, transiciones que tienen como destinación un indicador de historia de estados, que es un pseudoestado que recuerda al estado del cual salió. Del indicador de historia puede salir una transición hacia un subestado y será la destinación en el caso de que la transición tenga lugar sin que se haya pasado ninguna vez al estado compuesto.
Finalmente hay unas transiciones que se llaman stubbed, que tienen como destinación o origen algún subestado de un estado compuesto que no se identifica en el diagrama.
Ejercicios
- Diseña el diagrama de estados de un objeto trabajador teniendo en cuenta que éste puede estar en el paro, activo o jubilado. En el diagrama tienen que verse los posibles cambios de estado del trabajador cuando sea contratado, se jubile o finalice una relación laboral.
- En una biblioteca se quiere llevar el control de los libros existentes, de los socios de la biblioteca y de los préstamos que se han hecho. De cada libro pueden existir uno o muchos ejemplares y cada ejemplar tendrá que encontrarse en un catálogo. Por eso se podrá dar entrada a un ejemplar del catálogo o darle de salida. Cada ejemplar se encuentra en un posbile estado:
- Disponible
- Prestado
- No disponible
3.
a) Especifica un diagrama de estados del cambio de marchas de un coche automático.
b) Especifica un diagrama de estados del cambio de marchas de un coche manual.
4. Una universidad europea tiene el siguiente proceso de matriculación.
"Cuando un alumno aprueba el bachillerato se puede preinscribir a ocho opciones universitarias y se puede presentar a las pruebas de acceso para aprobarlas. Si no las aprueba puede presentarse el año siguiente, pero se conserva la preinscripción. Si aprueba las pruebas de acceso entra en el proceso de asignación de plaza y segun su nota se le asigna la primera opción o las demás. En el caso de asignar plaza en primera opción entra en el proceso de matricula de julio. Si se le asigna las plazas 2 a 8 entra en el proceso de matrícula de septiembre. Si no se le puede asignar plaza queda en situación de no admitido.
Los procesos de matrícula de julio y septiembre tienen dos etapas sucesivas: matricularse y pagar. Si un alumno se tiene que matricular y no lo hace (tiene de terminio hasta el 1 de agosto y el 1 de octubre, respectivamente) pasa a la situación de no admitido."
Realizad el diagrama de estados de alumno, utilizando un diagrama compuesto sin detallar para representar el proceso de matriculación y pago una vez se le asigna la plaza.
Mejorad el diagrama especificando detenidamente el diagrama de estados con los subestados incluidos el diagrama de estado compuesto.
5. Una empresa esta desarrollando un programario para la gestión de campañas publicitarias. Representa el diagrama de estados del objeto Campaña teniendo en cuenta:
Estamos considerando el funcionamiento de la clase campaña. Una campaña se inicia en el momento que se le asigna personal. En este momento se le asigna un director a la campaña y pasa a estar "comisionada". Cuando se da la autorización para parte de la empresa y el cliente firma el contrato, se activa la campaña. Si la campaña finaliza, queda marcada como completada y se realiza una declaración final. Sólo si el cliente paga toda la cantidad definida en el contrato de campaña pasa a estar pagada, y transcorridos 30 días se archiva y se desasigna el personal y el director asignados.
Cap comentari :
Publica un comentari a l'entrada