Caracteristicas avanzadas UML



Utilizando solamente las características básicas de los estados y las transiciones se puede modelar la mayoría de los comportamientos de los objetos. Sin embargo, las máquinas de estados de UML tienen varias características avanzadas que pueden ayudar a modelar comportamientos complejos.

En UML los estados pueden incluir:

•    Acciones de entrada y salida: acciones atómicas que se ejecutan siempre que se entra o se sale del estado. Las acciones de entrada se etiquetan con el evento especial entry y las de salida con exit.

•    Transiciones internas: transiciones que se manejan sin cambiar de estado. Las transiciones internas son ligeramente diferentes de las autotransiciones. Una autotransición implica salir del estado y volver a entrar en él. Por lo tanto, primero se ejecuta la acción de salida del estado, después la acción de la transición y por último la acción de entrada al estado. En cambio, en una transición interna no se abandona el estado y sólo se ejecuta la acción asociada a la transición.

•    Actividades: conjunto de acciones que realiza el objeto mientras se encuentra en ese estado. Una acción no puede ser interrumpida por un evento, pero una actividad sí. A diferencia de las transiciones internas, las actividades no son disparadas por ningún evento externo. Se etiquetan con el evento especial do.


•    Eventos diferidos: lista de eventos que no se manejan en este estado, sino que se posponen y se añaden a una cola para ser manejados por el objeto en otro estado. Los eventos diferidos se etiquetan con la acción especial defer. Además, en UML los estados de una máquina pueden contener subestados o estados anidados. A un estado que contiene subestados se le llama estado compuesto. Los estados compuestos se representan igual que los simples, pero contienen en su interior una máquina de estados que describe el flujo de control entre los subestados.

Las transiciones de entrada a un estado compuesto pueden activar el propio estado compuesto o uno de sus subestados. Para activar el estado compuesto es necesario que la máquina de subestados tenga definido un estado inicial. En tal caso, cuando se dispara una transición de entrada al estado compuesto, se ejecuta la acción de entrada y el flujo de control pasa al subestado inicial. Si no se define un subestado inicial, las transiciones de entrada deben dirigirse a los subestados y no al estado compuesto. Cuando se dispara una transición de entrada a un subestado, primero se ejecuta la acción de entrada del estado compuesto, a continuación el flujo de control pasa al subestado y se ejecuta su acción de entrada.

Las transiciones de salida pueden tener como origen el estado compuesto o un subestado. Si el origen es un subestado, cuando se dispara la transición se ejecuta primero la acción de salida del subestado, a continuación la acción del estado compuesto y por último la acción asociada a la transición. Si el origen de la transición de salida es el estado compuesto, cuando se dispara la transición se interrumpe la ejecución de la máquina anidada; ejecutándose primero la acción de salida del subestado que tuviese el control en ese momento, después la del estado compuesto y por último la acción asociada a la transición.
Cada vez que se dispara una transición de entrada a un estado compuesto, la máquina de estados anidada comienza de nuevo su ejecución en el estado inicial. Sin embargo, en algunas ocasiones puede resultar útil que la máquina recuerde el último estado en el que se encontraba y comience su ejecución desde ese estado. Para modelar este tipo de comportamiento UML introduce los estados de historia. Un estado de historia se representa con un círculo con el símbolo H.

El estado de historia debe tener una única transición de salida hacia otro subestado. La primera vez que se activa el estado compuesto, aún no hay historia, y se ejecuta esta transición. Si se dispara una transición de salida, el estado de historia recordará el último estado que estaba ejecutándose en la máquina antes de salir del estado compuesto. A partir de ese momento ya hay historia. Cuando se produzca una nueva transición de entrada el control pasará al último estado activo. Los estados compuestos pueden contener subestados concurrentes. Si todos los subestados son secuenciales, el estado compuesto contendrá sólo una máquina anidada. Si existen subestados concurrentes, el estado compuesto contendrá varias máquinas, una por cada tado concurrente.

Cuando se activa un estado compuesto que contiene subestados concurrentes, el flujo de control se divide en tantos flujos como máquinas anidadas haya. Las máquinas se ejecutarán en paralelo mientras el estado compuesto esté activo. Si una de las máquinas llega a su estado final, espera en ese estado a que todas las demás acaben de ejecutarse. Cuando todas las máquinas han alcanzado su estado final, el control vuelve a unirse en un único flujo. Las máquinas de subestados concurrentes no pueden contener estados de historia. Gracias a Karen de la Rosa, Mexico, por colaborarnos este material.

Para citar este articulo en formato APA: Revista ARQHYS. 2011, 05. Caracteristicas avanzadas UML. Equipo de colaboradores y profesionales de la revista ARQHYS.com. Obtenido , de https://www.arqhys.com/general/caracteristicas-avanzadas-uml.html.





Canales.


Nosotros | Política de Privacidad | Contácto