Diagrama de Secuencia

**Es una forma de diagrama de interacción que muestra los objetos como líneas de vida a lo largo de la página y con sus interacciones en el tiempo representadas como mensajes dibujados como flechas desde la línea de vida origen hasta la línea de vida destino.** Los diagramas de secuencia son buenos para mostrar qué objetos se comunican con qué otros objetos y qué mensajes disparan esas comunicaciones. Los diagramas de secuencia no están pensados para mostrar lógicas de procedimientos complejos.

* **Línea de Vida:** representa un participante individual en un diagrama, algunas veces un diagrama de secuencia tendrá una línea de vida con un símbolo del elemento actor en la parte superior. Este usualmente sería el caso si un diagrama de secuencia es contenido por un caso de uso. Los elementos entidad, control y límite de los diagramas de robustez también pueden contener líneas de vida.

* **Mensajes:** Se muestran como flechas. Los mensajes pueden ser completos, perdidos o encontrados; síncronos o asíncronos: llamadas o señales.

* **Mensaje “self”:** Puede representar una llamada recursiva de una operación, o un método llamando a otro método perteneciente al mismo objeto.

* **Mensajes Perdidos/Encontrados:** Son aquellos que han sido enviados pero que no han llegado al destino esperado, o que han llegado a un destino que no se muestra en el diagrama actual. Los mensajes encontrados son aquellos que llegan de un remitente no conocido, o de un remitente no conocido en el diagrama actual.

* **Inicio/Final de Línea de Vida:** Una línea de vida se puede crear o destruir durante la escala de tiempo representada por un diagrama de secuencia. En el último caso, la línea de vida se termina por un símbolo de detención, representado como una cruz.

* **Puerta:** Punto de conexión para conectar un mensaje dentro de un fragmento con un mensaje fuera del fragmento.

* **Descomposición en Parte:** Un objeto puede tener más de una línea de vida que viene de ésta. Esto permite mensajes de entre e intra objetos para que se muestren en el mismo diagrama.

* **Continuaciones/Invariantes de Estado:** Una invariante de estado es una restricción ubicada en una línea de vida que debe ser verdadera en el tiempo de ejecución.

Un **fragmento combinado** es una o más secuencias de procesos incluidas en un marco y ejecutadas bajo circunstancias nombradas específicas. Los fragmentos disponibles son:

* El **fragmento Alternative (denotado “alt”)** modela estructuras if…then…else.
* El **fragmento Option (denotado “opt”)** modela estructuras switch.
* El **fragmento Break** modela una secuencia alternativa de eventos que se procesa en lugar de todo del resto del diagrama.
* El **fragmento Parallel (denotado “par”)** modela procesos concurrentes.
* El **fragmento de secuenciado Weak (denotado “seq”)** incluye un número de secuencias para las cuales todos los mensajes se deben procesar en un segmento anterior, antes de que el siguiente segmento pueda comenzar, pero que no impone ningún secuenciado en los mensajes que no comparten una línea de vida.
* El **fragmento de secuenciado Strict (denotado “strict”)** incluye una serie de mensajes que se deben procesar en el orden proporcionado.
* El **fragmento Negative (denotado “neg”)** incluye una serie de mensajes inválidos.
* El **fragmento Critical** incluye una sección crítica.
* El **fragmento Ignore** declara un mensaje o mensajes que no son de ningún interés si este aparece en el contexto actual.
* El **fragmento Consider** es el opuesto del fragmento Ignore: cualquier mensaje que no se incluya en el fragmento Consider se debería ignorar.
* El **fragmento Assertion (denotado “assert”)** designa que cualquier secuencia que no se muestra como un operando de la aserción es inválida.
* El **fragmento Loop** incluye una serie de mensajes que están repetidos.