Compartir a través de


Visualizar código generando 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.

[!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.

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. Abrir el menú contextual en cualquier parte de la definición del método y, a continuación Generar diagrama de secuencia.

    Cuadro de diálogo Generar 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.

    [!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 sobre los mensajes perdidos, vea 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

    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, elija 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.

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

Nota importanteImportante

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

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

Expandir un mensaje en un nuevo diagrama

Abrir el menú contextual para un mensaje y, a continuación 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 el menú contextual para él y después elija Expandir.

Eliminar elementos

Abrir el menú contextual de la forma y después elija Eliminar.

Mejorar el diseño

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

También puede deshacer este comando.

Resaltar los elementos seleccionados

Abrir el menú contextual para un elemento y después elija Propiedades.En la ventana Propiedades, establezca el campo Color.

Anotar el diagrama

Elija la herramienta de Comentario , haga clic en el diagrama, y 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 Cuadro de herramientas, elija Comentarioy, en el diagrama, haga clic en junto al elemento.

  2. En Cuadro de herramientas, elija C&omment Linky, en el diagrama, elija el comentario, y después elija 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

    Mantenga presionada la tecla de Ctrl mientras que elija 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

Elija Línea de vida en Cuadro de herramientas, y elija el diagrama.

Agregar un mensaje

Cómo crear mensajes
  1. En Cuadro de herramientas, elija un mensaje de Sincrónico o de Asincrónico .

    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 un mensaje perdido, elija un área en blanco del diagrama detrás de la línea de vida de origen o delante de ella, respectivamente.

  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. Abrir el menú contextual para la selección, elija Envolver con, y después elige 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

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

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

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

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

Para obtener más información, vea Visualizar dependencias de código en 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, vea Vincular elementos de modelo con elementos de trabajo.

Para

Siga estos pasos

Crear y vincular elementos de trabajo a las líneas de vida, los mensajes, u otros elementos

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

    Un elemento de trabajo se abre para que pueda completarlo.

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

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

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

Quitar vínculos a elementos de trabajo

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

  2. En el cuadro de diálogo de 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.

Ee317485.collapse_all(es-es,VS.110).gifAnalizar 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 Visualizar dependencias de código en gráficos de dependencias.

Ee317485.collapse_all(es-es,VS.110).gifInterpretar 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.

Ee317485.collapse_all(es-es,VS.110).gifCentrarse 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.

Ee317485.collapse_all(es-es,VS.110).gifActualizar 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

Referencia

Diagramas de secuencia UML: Referencia

Conceptos

Visualizar y entender el código

Visualizar dependencias de código en gráficos de dependencias

Crear diagramas de capas a partir del código