En ingeniería de software , un diagrama de secuencia [1] muestra interacciones de procesos organizadas en secuencia temporal. Este diagrama representa los procesos y objetos involucrados y la secuencia de mensajes intercambiados según sea necesario para llevar a cabo la funcionalidad. Los diagramas de secuencia suelen estar asociados con realizaciones de casos de uso en el modelo de vista arquitectónica 4+1 del sistema en desarrollo. Los diagramas de secuencia a veces se denominan diagramas de eventos o escenarios de eventos .
Para un escenario particular de un caso de uso , los diagramas muestran los eventos que generan los actores externos, su orden y los posibles eventos entre sistemas. [2] El diagrama enfatiza los eventos que cruzan el límite del sistema desde los actores hasta los sistemas. Se debe realizar un diagrama de secuencia del sistema para el escenario de éxito principal del caso de uso y escenarios alternativos frecuentes o complejos.
Hay dos tipos de diagramas de secuencia:
Un diagrama de secuencia muestra, como líneas verticales paralelas ( líneas de vida ), diferentes procesos u objetos que viven simultáneamente y, como flechas horizontales, los mensajes que se intercambian entre ellos en el orden en que ocurren. Esto permite la especificación gráfica de escenarios de ejecución sencillos.
Un diagrama de secuencia del sistema debe especificar y mostrar lo siguiente:
Los profesionales, al desarrollar un proyecto, suelen utilizar diagramas de secuencia de sistemas para ilustrar cómo se realizan determinadas tareas entre los usuarios y el sistema. Estas tareas pueden incluir tareas repetitivas, simples o complejas. El propósito es ilustrar el caso de uso en un formato visual. Es necesario estar familiarizado con el lenguaje de modelado unificado (UML) para construir un diagrama de secuencia de sistemas. Estos modelos muestran la lógica detrás de los actores (personas que afectan al sistema) y el sistema al realizar la tarea. La lectura de un diagrama de secuencia comienza en la parte superior con el actor o los actores o el sistema o los sistemas (que se encuentra en la parte superior de la página). Debajo de cada actor o sistema hay largas líneas de puntos, llamadas "líneas de vida", que están unidas a ellos. Las acciones se realizan con líneas que se extienden entre estas líneas de vida. La conexión entre una línea de acción y una línea de vida muestra la interacción entre el actor o el sistema. A menudo, los mensajes aparecerán en la parte superior o inferior de un diagrama de secuencia de sistemas para ilustrar la acción en detalle. Por ejemplo, una solicitud de un actor para iniciar sesión se representaría mediante el inicio de sesión (nombre de usuario, contraseña). Después de cada acción realizada, la respuesta o siguiente acción se ubica debajo de la anterior. Al leer las líneas, se puede ver en detalle cómo se realizan determinadas acciones en el modelo proporcionado y en qué orden.
Si la línea de vida es la de un objeto, demuestra un rol. Dejar el nombre de la instancia en blanco puede representar instancias anónimas y sin nombre. → Los mensajes, escritos con flechas horizontales con el nombre del mensaje escrito encima de ellas, muestran interacción. Las puntas de flecha sólidas representan llamadas sincrónicas, las puntas de flecha abiertas representan mensajes asincrónicos y las líneas discontinuas representan mensajes de respuesta. [3] Si un llamador envía un mensaje sincrónico, debe esperar hasta que el mensaje termine, como invocar una subrutina. Si un llamador envía un mensaje asincrónico, puede continuar el procesamiento y no necesita esperar una respuesta. Las llamadas asincrónicas están presentes en aplicaciones multiproceso, aplicaciones controladas por eventos y en middleware orientado a mensajes . Los cuadros de activación, o cuadros de llamada de método , son rectángulos opacos dibujados sobre las líneas de vida para representar que se están realizando procesos en respuesta al mensaje (ExecutionSpecifications en UML ).
Los objetos que invocan métodos sobre sí mismos utilizan mensajes y añaden nuevos cuadros de activación encima de los demás para indicar un nivel de procesamiento posterior . Si un objeto se destruye (se elimina de la memoria ), se dibuja una X debajo de la línea de vida y la línea discontinua deja de dibujarse debajo de ella. Debería ser el resultado de un mensaje, ya sea del propio objeto o de otro.
Un mensaje enviado desde fuera del diagrama puede representarse mediante un mensaje que se origina en un círculo relleno ( mensaje encontrado en UML) o en un borde del diagrama de secuencia ( puerta en UML).
UML ha introducido mejoras significativas en las capacidades de los diagramas de secuencia. La mayoría de estas mejoras se basan en la idea de fragmentos de interacción [4] que representan fragmentos más pequeños de una interacción envolvente. Múltiples fragmentos de interacción se combinan para crear una variedad de fragmentos combinados [5] , que luego se utilizan para modelar interacciones que incluyen paralelismo, ramas condicionales e interacciones opcionales.