Visualizar el código en diagramas de secuencia

Para ver cómo el código implementa un método concreto, cree un diagrama de secuencia desde un método en Visual Studio Ultimate. El diagrama de secuencia muestra la interacción entre los 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 secuencia desde código de Visual C# .NET o Visual Basic .NET, pero no desde proyectos que comparten código entre varias aplicaciones.

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, consulte Diagramas de secuencia UML: Referencia.

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

  • Explorar el código en diagramas de secuencia

  • Editar el diagrama para proponer cambios de diseño

  • Ir al código desde el diagrama

  • Vincular un diagrama de secuencia a elementos de trabajo

  • Relaciones con otros diagramas

  • Solucionar problemas de diagramas de secuencia

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

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

  2. Vaya a la definición del método, haga clic en el editor y elija Generar diagrama de secuencia.

  3. 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.

    Cuadro de diálogo Generar secuencia

    Nota

    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.Después de generar el diagrama, puede expandir mensajes perdidos concretos.Para obtener más información acerca de los mensajes perdidos, consulte Diagramas de secuencia UML: Referencia.

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

    Para ver

    Choose

    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

    Seleccionar

    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. Active la casilla si desea agregar el diagrama al proyecto actual.

  7. Cuando haya terminado, seleccione Aceptar para generar el diagrama de secuencia.

    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.

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, consulte Vincular elementos de modelo con elementos de trabajo.

Importante

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.

Explorar 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

Abra el menú contextual para un mensaje que no tenga línea de vida de destino y, a continuación elija Expandir saliente.

Expandir un mensaje en un nuevo diagrama

Abra el menú contextual de un mensaje y, a continuación elija 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, abra el menú contextual para la selección y, después, elija Contraer.

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

Para expandir el grupo, abra su menú contextual y, después, elija Expandir.

Eliminar elementos

Abra el menú contextual para la forma y, a continuación, elija Eliminar.

Mejorar el diseño

Abra el menú contextual para un área en blanco del diagrama y, a continuación, elija Reorganizar diseño.

También puede deshacer este comando.

Resaltar los elementos seleccionados

Abra el menú contextual de un elemento y, a continuación, elija Propiedades. En la ventana Propiedades, establezca el campo Color.

Anotar el diagrama

Elija 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, consulte 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, elija Comment; a continuación, en el diagrama, haga clic junto al elemento.

  2. En el Cuadro de herramientas, elija Comment Link; a continuación, en el diagrama, elija el comentario y 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 elige cada línea de vida.

    Nota

    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, elija Línea de vida y, a continuación, el diagrama.

Agregar un mensaje

Cómo crear mensajes
  1. En el Cuadro de herramientas, elija 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, elija una línea de vida de origen.

  3. Elija una línea de vida de destino.

    o bien

    Para crear un mensaje encontrado, elija 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.

Nota

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. Abra el menú contextual de la selección, elija Rodear con y, después, elija 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

Abra el menú contextual de un mensaje y, a continuación, elija 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. Abra el menú contextual de la superficie del diagrama de secuencia y, a continuación, elija Propiedades.

  2. Establezca la propiedad Show Manual Changes en False.

Ir al código desde el diagrama

Para

Siga estos pasos

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

Abra el menú contextual de la línea de vida o mensaje y, a continuación, elija Ir a definición.

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

Abra el menú contextual para una línea de vida o mensaje y, a continuación, elija Mostrar en Explorador de arquitectura.

Para obtener más información, consulte Asignar dependencias en el código mediante gráficos de dependencias.

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. Antes de empezar, asegúrese de que está conectado a Team Foundation Server. Para obtener más información, consulte Vincular elementos de modelo con elementos de trabajo.

Para

Siga estos pasos

Cree y vincule los elementos de trabajo nuevos a líneas de vida, mensajes u otros elementos.

  • Abra el menú contextual para uno o varios elementos, elija Crear elemento de trabajo y, a continuación, elija el tipo de elemento de trabajo que desea crear.

    Se abrirá un nuevo elemento de trabajo para que pueda completarlo.

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

  1. Abra el menú contextual para uno o varios elementos y, a continuación, elija Vincular a elemento 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

Abra el menú contextual para uno o varios elementos y, a continuación, elija Ver elementos de trabajo.

Quitar vínculos a elementos de trabajo

  1. Abra el menú contextual para un elemento y, a continuación, elija Quitar elementos de trabajo.

  2. En el cuadro de diálogo Quitar vínculos a elementos de trabajo, elija 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.

Explorar 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, consulte Asignar dependencias en el código mediante gráficos de dependencias.

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.

Solucionar problemas de diagramas de secuencia

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 ref o out 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

Referencia

Diagramas de secuencia UML: Referencia

Conceptos

Visualizar el código

Asignar dependencias en el código mediante gráficos de dependencias

Crear diagramas de capas a partir del código