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
En Visual Studio, abra el archivo de código que contiene la definición del método.
Abrir el menú contextual en cualquier parte de la definición del método y, a continuación Generar diagrama de secuencia.
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.
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.
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.
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.
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. |
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:
|
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:
|
Mover y reorganizar los mensajes |
Arrastre un mensaje hacia arriba o hacia abajo en el diagrama.
|
Agregar una línea de vida |
Elija Línea de vida en Cuadro de herramientas, y elija el diagrama. |
Agregar un 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 |
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 |
|
Navegar 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 |
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 |
|
Vincular líneas de vida, mensajes, u otros elementos a 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 |
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 Visualizar dependencias de código en 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.
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:
|
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