Como: Explorar el código con diagramas de secuencia

En Visual Studio Ultimate, puede generar un diagrama de secuencia que le permita visualizar y entender cómo el código implementa un método concreto. En un diagrama de secuencia se describe una interacción entre objetos como una serie de líneas de vida y mensajes. Las líneas de vida representan instancias de los objetos y los mensajes representan llamadas de métodos entre estos objetos. Puede generar diagramas de secuencias a partir de código de Visual C# .NET o código Visual Basic .NET. Para generar diagramas de secuencias de proyectos de sitio web ASP.NET, instale Visual Studio 2010 Paquete de características de modelado y visualización de Microsoft Visual Studio 2010.

Nota

Los elementos que aparecen en un diagrama de secuencia son similares a los de un diagrama de secuencia UML. Los diagramas de secuencias que se generan a partir del código no necesitan un modelo UML y se pueden agregar a cualquier proyecto .NET. En cambio, los diagramas de secuencias UML que se dibujan manualmente siempre forman parte del modelo en que se crean. Para obtener más información, vea Diagramas de secuencia UML: Referencia.

Para identificar y comunicar cambios que desee efectuar sin afectar al código, puede explorar y modificar un diagrama de secuencia generado. Por ejemplo, puede agregar nuevas líneas de vida, mensajes, usos de interacción y fragmentos.

Para crear y hacer un seguimiento de las tareas que necesita realizar en el código correspondiente, cree o vincule elementos de trabajo a elementos de diagramas. Para obtener más información, vea Cómo: Vincular elementos de trabajo con elementos de modelo.

En este tema

  • Generar un diagrama de secuencia a partir de código fuente

  • Analizar el código en diagramas de secuencia

  • Editar el diagrama para proponer cambios de diseño

  • Navegar desde el diagrama

  • Vincular elementos de interacción con elementos de trabajo

  • Relaciones con otros diagramas

  • Solución de problemas de diagramas de secuencias

Generar un diagrama de secuencia a partir de código fuente

Para generar un diagrama de secuencia desde el código

  1. En Visual Studio, abra el archivo de código que contiene la definición del método.

  2. Haga clic con el botón secundario en cualquier parte de la definición del método y, a continuación, haga clic en Generar diagrama de secuencia.

  3. En el cuadro de diálogo Generar diagrama de secuencia, en el cuadro Profundidad máxima de llamadas, especifique el nivel máximo de llamadas que desea ver.

    Por ejemplo, si solamente desea ver el primer nivel de llamadas, especifique un nivel máximo de profundidad de llamadas de 1. En el diagrama de secuencia, el segundo nivel de llamadas se representará mediante mensajes que no tienen líneas de vida de destino, que se denominan mensajes perdidos.

    Nota

    Después de generar el diagrama, puede expandir mensajes perdidos concretos.

  4. En Incluir llamadas en, elija un ámbito de la tabla siguiente:

    Para ver

    Haga clic en

    Llamadas a los elementos del proyecto inmediato

    Proyecto actual

    Llamadas a los elementos de la solución

    Solución actual (valor predeterminado)

    Llamadas a los elementos que se encuentran dentro y fuera de la solución

    Preferencias de la solución y externas

    Por ejemplo, puede comenzar con un diagrama de secuencia sencillo examinando exclusivamente las llamadas de método a los elementos del proyecto inmediato. Puede ampliar el ámbito del diagrama generando un nuevo diagrama en el que aparezcan las llamadas a los elementos que se realizan a través de la solución. Si desea ver las llamadas a los elementos que no están en la solución, debe generar un diagrama que incluya referencias externas.

  5. En Excluir llamadas de, puede simplificar más el diagrama omitiendo las llamadas a los elementos siguientes:

    Para omitir las llamadas a

    Select

    Propiedades y eventos

    Propiedades y eventos (predeterminado)

    Espacio de nombres System

    Espacio de nombres del sistema (predeterminado)

    Espacios de nombres concretos

    Otros espacios de nombres y, a continuación, escriba los espacios de nombres en el cuadro y sepárelos mediante una coma (,). No use caracteres comodín (*), ya que no se admiten.

    Para incluir las llamadas a estos elementos, desactive sus casillas correspondientes.

  6. Cuando termine, haga clic en Aceptar.

    Visual Studio genera un diagrama de secuencia y lo agrega al proyecto correspondiente. Para obtener información sobre problemas con diagramas de secuencias generados, vea Solución de problemas de diagramas de secuencias.

    Nota

    Las declaraciones de matrices no aparecen en los diagramas de secuencias generados.

Después de generar el diagrama, los cambios que realice en el diagrama no aparecerán en el código y los cambios que efectúe en el código no aparecerán en el diagrama. Para mostrar estos cambios, debe generar un nuevo diagrama de secuencia. Puede generar un nuevo diagrama de secuencia desde el mismo método tantas veces como desee.

Analizar el código en diagramas de secuencia

Un diagrama de secuencia puede ayudarle a analizar el código y a presentarlo a terceras personas. Para conseguir el diagrama que resulte más útil para estos propósitos, pruebe distintos ámbitos cuando genere el diagrama. También puede modificar el diagrama después de generarlo. Por ejemplo, puede eliminar mensajes que no resulten de interés a la hora de presentar y analizar el diseño.

Puede realizar los siguientes cambios en el diagrama de secuencia.

Para

Siga estos pasos

Mostrar el nivel de llamada siguiente

Haga clic con el botón secundario en un mensaje que no tenga líneas de vida de destino y, a continuación, haga clic en Expandir saliente.

Expandir un mensaje en un nuevo diagrama

Haga clic con el botón secundario en un mensaje y, a continuación, haga clic en Generar diagrama de secuencia.

El nuevo diagrama se agregará al proyecto actual.

Contraer un grupo de mensajes en una línea de vida

Seleccione las líneas de vida que desea agrupar, haga clic con el botón secundario en la selección y, a continuación, haga clic en Contraer.

Puede cambiar el nombre de un grupo, pero su nombre se perderá al expandirlo.

Para expandir el grupo, haga clic con el botón secundario en él y, a continuación, haga clic en Expandir.

Eliminar elementos

Haga clic con el botón secundario en la forma y, a continuación, haga clic en Eliminar.

Mejorar el diseño

Haga clic con el botón secundario en un espacio en blanco del diagrama y, a continuación, haga clic en Reorganizar diseño.

También puede revertir este comando.

Resaltar los elementos seleccionados

Haga clic con el botón secundario en un elemento y, a continuación, haga clic en Propiedades. En la ventana Propiedades, establezca el campo Color.

Anotar el diagrama

Haga clic en la herramienta Comentario, haga clic en el diagrama y, a continuación, escriba una nota en el comentario. Use la herramienta Comment Link para conectar el comentario a uno o varios puntos de las líneas de vida o fragmentos.

Editar el diagrama para proponer cambios de diseño

Puede modificar el diagrama agregando o eliminando elementos que le ayuden a considerar diseños alternativos. También puede copiar elementos del diagrama en un diagrama de secuencia UML que haya creado en un proyecto de modelado UML. De este modo, podrá asociar las líneas de vida con los tipos, componentes y actores del modelo UML.

En la tabla siguiente se resumen los cambios que resultan útiles para describir las propuestas de diseño. Para obtener más información, vea Diagramas de secuencia de UML: Instrucciones.

Para

Siga estos pasos

Resaltar líneas de vida, mensajes y otros elementos

Cambie la propiedad Color del elemento.

O bien

Vincule un comentario al elemento:

  1. En el Cuadro de herramientas, haga clic en Comment; a continuación, en el diagrama, haga clic junto al elemento.

  2. En el Cuadro de herramientas, haga clic en Comment Link; a continuación, en el diagrama, haga clic en el comentario y en el elemento.

Mover líneas de vida

Arrastre una línea de vida hasta un área del diagrama diferente.

Para mover un grupo de líneas de vida que han perdido o encontrado mensajes, siga estos pasos para seleccionarlas antes de moverlas:

  • Dibuje un rectángulo alrededor de las líneas de vida.

    O bien

    Presione y mantenga presionada la tecla CTRL mientras hace clic en cada línea.

    NotaNota
    Si usa Seleccionar todo o CTRL+A para seleccionar todas las líneas de vida y moverlas, los mensajes perdidos o encontrados que estén adjuntos a estas líneas de vida no se moverán.En este caso, podrá mover estos mensajes por separado.

Mover y reorganizar los mensajes

Arrastre un mensaje hacia arriba o hacia abajo en el diagrama.

  1. Seleccione un mensaje y a continuación:

  2. Para ajustar la posición del mensaje, use las teclas FLECHA ARRIBA y FLECHA ABAJO.

  3. Para cambiar la secuencia de mensajes, use las teclas CTRL+FLECHA ARRIBA y CTRL+FLECHA ABAJO.

Agregar una línea de vida

En el Cuadro de herramientas, haga clic en Lifeline y, a continuación, en el diagrama.

Agregar un mensaje

  1. En el Cuadro de herramientas, haga clic en un mensaje Synchronous o Asynchronous.

    Para agregar un mensaje encontrado o un mensaje perdido, use un mensaje Asynchronous. Un mensaje encontrado procede de un origen de eventos desconocido y un mensaje perdido se transmite a un destinatario desconocido.

  2. En el diagrama, haga clic en una línea de vida de origen.

  3. Haga clic en una línea de vida de destino.

    -O bien-

    Para crear un mensaje encontrado, haga clic en un espacio en blanco del diagrama que se encuentre detrás de la línea de vida; para crear un mensaje perdido, haga clic en un espacio en blanco del diagrama que se encuentre delante de la línea de vida.

  4. Especifique un nombre nuevo para el mensaje.

Realizar copias de las líneas de vida y los mensajes que tengan como origen o destino otros diagramas

Copie y pegue las líneas de vida.

Los mensajes que existan entre ellas también se copiarán automáticamente.

NotaNota
Cuando copie líneas de vida de un diagrama de secuencia UML de un proyecto de modelado a un diagrama de secuencia generado, es posible que solo aparezcan los encabezados de las líneas de vida o que tenga que ajustar su color.Para corregir este problema, seleccione las líneas de vida pegadas y establezca sus propiedades Color.

Insertar los mensajes en un fragmento combinado

  1. Seleccione uno o varios mensajes.

  2. Haga clic con el botón secundario en su selección, elija Rodear con y, a continuación, haga clic en un tipo de fragmento combinado.

Use fragmentos combinados para representar secuencias alternativas, bucles y otras composiciones de mensajes.

Mover un mensaje a un nuevo diagrama

Haga clic con el botón secundario en un mensaje y, a continuación, haga clic en Mover a diagrama.

Se crea un nuevo diagrama que contiene el mensaje y sus mensajes secundarios. En el diagrama original, el mensaje se sustituye por un Uso de interacción.

Copiar el diagrama

Copie el diagrama en el Explorador de soluciones o copie los archivos en el Explorador de Windows. Hay dos archivos asociados a cada diagrama.

Un diagrama de secuencia generado se puede editar mediante una instancia de Visual Studio Ultimate, y se puede leer mediante Visual Studio Ultimate o Visual Studio Premium.

No resaltar ciertos cambios manuales, como adiciones o cambios de nombre

  1. Haga clic con el botón secundario en la superficie del diagrama de secuencia y, a continuación, haga clic en Propiedades.

  2. Establezca la propiedad Show Manual Changes en False.

Para

Siga estos pasos

Navegar desde una línea de vida o mensaje hasta la definición de la clase o método, respectivamente

Haga clic con el botón secundario en la línea de vida o mensaje y, a continuación, haga clic en Ir a definición.

Buscar la clase o método en el Explorador de arquitectura

Haga clic con el botón secundario en una línea de vida o mensaje y, a continuación, haga clic en Mostrar en explorador de arquitectura.

Para obtener más información, vea Cómo: Generar gráficos de dependencia para código .NET.

Vincular un diagrama de secuencia a elementos de trabajo

Puede vincular elementos de cualquier tipo de diagrama de secuencia a elementos de trabajo de Team Foundation Server para facilitar la implementación de un cambio que planee realizar. Para obtener más información, vea Cómo: Vincular elementos de trabajo con elementos de modelo.

Para

Siga estos pasos

Vincular líneas de vida, mensajes u otros elementos a elementos de trabajo

  1. Haga clic con el botón secundario en uno o varios elementos y, a continuación, haga clic en Vincular a elementos de trabajo.

  2. En el cuadro de diálogo Vincular a elementos de trabajo, ejecute una consulta para encontrar un elemento de trabajo o escriba directamente su identificador. Puede seleccionar cualquier número de elementos de trabajo.

Posteriormente, podrá repetir este comando para agregar más vínculos de elementos de trabajo al mismo elemento del modelo.

Ver elementos de trabajo vinculados

Haga clic con el botón secundario en uno o varios elementos y, a continuación, haga clic en Ver elementos de trabajo.

Quitar vínculos a elementos de trabajo

  1. Haga clic con el botón secundario en un elemento y, a continuación, haga clic en Quitar elementos de trabajo.

  2. En el cuadro de diálogo Quitar vínculos a elementos de trabajo, haga clic en los vínculos de elementos de trabajo que desea quitar.

Los vínculos entre el elemento del modelo y los elementos de trabajo elegidos se eliminan. Los elementos de trabajo y los elementos del modelo no se quitan.

Instrucciones para usar diagramas de secuencia generados

Las instrucciones siguientes pueden resultarle útiles al analizar el código con los diagramas de secuencia generados.

Analizar el código

Genere diagramas de dependencia para obtener una perspectiva global de las principales agrupaciones y dependencias en un gran bloque de código. A continuación, genere los diagramas de secuencia para que pueda centrarse en los distintos elementos del diseño. Para obtener más información, vea Cómo: Generar gráficos de dependencia para código .NET.

Interpretar el diagrama

El algoritmo que crea el diagrama realiza una ejecución simbólica del código. Hay algunas situaciones en las que esta técnica no tiene cabida. Estas situaciones son, en concreto:

  • Dos o más líneas de vida pueden aparecer en el diagrama mientras el código en ejecución solo se ocupa de una instancia. Por lo general, se genera una línea de vida de destino distinta para cada mensaje.

  • El tipo de una línea de vida es el tipo declarado en el código del programa, aunque el código use siempre un subtipo.

Centrarse en un aspecto del diseño

  • Elija un aspecto del diseño en el que desee centrar su atención. Puede generar diagramas diferentes para concentrarse en distintos aspectos y realizar copias de los archivos del diagrama en cualquier fase del trabajo.

  • Para conseguir un diagrama útil en el que se exponga con claridad un aspecto del diseño, quizás necesite probar con los filtros de espacios de nombres y generar varias veces el diagrama.

  • Elimine los mensajes que no son pertinentes para el aspecto en el que desea centrarse y expanda los mensajes importantes para que se muestren más detalles.

  • Use el comando Contraer para agrupar líneas de vida que representan un grupo de objetos de colaboración, a menos que sus interacciones internas resulten interesantes para el aspecto en que se está concentrando.

Actualizar el diseño

  • Puede trabajar en colaboración con un diagrama mediante el control de versiones. Le recomendamos que bloquee un diagrama mientras lo edita para que solo una persona pueda modificarlo cada vez.

  • Con un diagrama de secuencia generado, puede identificar las características del código existente que normalmente resultan difíciles de cambiar o adaptar. Por ejemplo, quizás observe que una línea de vida envía todos los mensajes, pero que otras solo responden a los mensajes y no envían muchos de sus propios mensajes. Analice si el trabajo que realiza este objeto puede hacerse de manera más eficaz dividiéndolo entre los demás objetos. Cada clase de objeto debe tener una única tarea definida de forma clara. En general, esta directiva facilita la identificación de los elementos del programa que deben modificarse cuando varían las necesidades de los usuarios o para reorganizar los elementos de una variante diferente de la aplicación.

  • Cuando tenga un diagrama en que la atención se concentre en un aspecto concreto del diseño, realice copias y edítelas para crear propuestas de cambios alternativas.

  • Puede copiar elementos de un diagrama de secuencia generado en un diagrama de secuencia UML. Primero debe crear el diagrama de secuencia UML dentro de un proyecto de modelado UML. Allí, puede modelar vistas diferentes del diseño actualizado y puede vincular las líneas de vida a componentes o clases del modelo. También puede ampliar la interacción para incluir actores externos.

Solución de problemas de diagramas de secuencias

En la siguiente tabla se describen problemas que se podrían producir al generar diagramas de secuencias y las posibles soluciones:

Problema

Solución

No se puede generar el diagrama de secuencia.

Es posible que no se genere un diagrama de secuencia si se excluye el espacio de nombres System y el código contiene una llamada a un método COM que acepta parámetros out o ref y pasa un parámetro utilizando la palabra clave new. Para evitar este problema, cambie el código o, cuando genere el diagrama, incluya el espacio de nombres System.

Se genera un diagrama de secuencia en blanco una vez mostrado el siguiente mensaje:

"Referencia a objeto no establecida como instancia de un objeto".

Este problema se produce cuando un diagrama de secuencia se genera a partir de una implementación explícita de un método de interfaz y el diagrama no se agrega automáticamente al proyecto de origen. Una implementación explícita precede al nombre del método con el nombre de la interfaz y un punto (.).

Por ejemplo, este problema se produce al generar un diagrama de secuencia a partir de la firma siguiente y no agregarlo automáticamente al proyecto:

void ILinkedWorkItemExtension.OnWorkItemCreated( ) {}

Cuando sea posible, no incluya el nombre de la interfaz y el punto (.).

O bien

En el cuadro de diálogo de generación de diagramas de secuencia, asegúrese de agregar el diagrama al proyecto automáticamente.

La generación del diagrama de secuencia lleva mucho tiempo.

O bien

El diagrama de secuencia se bloquea cuando se vuelve a abrir.

Dependiendo de la configuración del equipo, el diagrama de secuencia podría ser demasiado grande para generarse con rapidez y causar que Visual Studio se ejecutara con memoria insuficiente, y se bloqueara al cerrar y volver a abrir el diagrama. Por ejemplo, un archivo con un diagrama de secuencia con 390 líneas de vida y 19.000 resultados de mensajes tiene más de 85 MB.

Reduzca el ámbito del diagrama disminuyendo el detalle de las llamadas, filtrando los espacios de nombres innecesarios, quitando propiedades y eventos, etc.

Vea también

Tareas

Cómo: Crear diagramas de capas desde artefactos

Referencia

Diagramas de secuencia UML: Referencia

Conceptos

Visualizar código

Cómo: Generar gráficos de dependencia para código .NET

Historial de cambios

Fecha

Historial

Motivo

Agosto de 2010

El Paquete de características de modelado y visualización de Microsoft Visual Studio 2010 es necesario para generar diagramas de secuencia para los proyectos de sitio web de ASP.NET.

Comentarios de los clientes.

1 de abril de 2011

Los caracteres comodín (*) no se admiten en el cuadro Otros espacios de nombres.

Comentarios de los clientes.