Diagramas de componentes de UML: Instrucciones

En Visual Studio Ultimate, puede dibujar un diagrama de componentes para mostrar la estructura de un sistema de software.Si desea una demostración en vídeo, vea Designing the Physical Structure by using Component Diagrams.

Para crear un diagrama de componentes UML, en el menú Arquitectura, haga clic en Nuevo diagrama.

Un componente es una unidad modular que puede reemplazarse en su propio entorno.Sus elementos internos quedan ocultos, pero tiene una o varias interfaces proporcionadas bien definidas a través de las cuales se puede obtener acceso a sus funciones.Un componente también puede tener interfaces necesarias.En una interfaz necesaria, se definen las funciones o servicios de otros componentes que son necesarios.Mediante la conexión de las interfaces proporcionadas y las interfaces necesarias de distintos componentes, puede construirse un componente mayor.Un sistema de software completo se puede concebir como un componente.

El uso de diagramas de componentes tiene algunas ventajas:

  • Concebir el diseño atendiendo a los bloques principales ayuda al equipo de desarrollo a entender un diseño existente y a crear uno nuevo.

  • Al pensar en el sistema como una colección de componentes con interfaces proporcionadas y necesarias bien definidas, se mejora la separación entre los componentes.Esto, a su vez, facilita la comprensión y los cambios cuando se modifican los requisitos.

Puede utilizar un diagrama de componentes para representar el diseño con independencia del lenguaje o plataforma que el diseño utiliza o va a utilizar.

En este tema

Relación con otros diagramas

Pasos básicos para dibujar diagramas de componentes

Mostrar los elementos internos de un componente

Diseñar el componente

[!NOTA]

Para obtener información de referencia sobre los elementos de los diagramas de componentes, vea Diagramas de componentes de UML: Referencia.

Relación con otros diagramas

Puede utilizar un diagrama de componentes junto con otros diagramas.

Otro diagrama

Ayuda a debatir y transmitir los siguientes aspectos del diseño

Diagrama de secuencia de UML

  • Interacciones entre los componentes de un sistema.

  • Interacciones entre los elementos que contiene un componente.

Para obtener más información, vea Diagramas de secuencia de UML: Instrucciones.

Diagrama de clases de UML

  • Las interfaces de un componente y las clases que forman los elementos del componente.

  • Los datos enviados en los parámetros a través de las interfaces de los componentes.

Para obtener más información, vea Diagramas de clases de UML: Instrucciones.

Diagramas de actividades

  • El procesamiento interno efectuado por un componente en respuesta a los mensajes entrantes.

Para obtener más información, vea Diagramas de actividades UML: Instrucciones.

Diagramas de capas

  • Los niveles arquitectónicos lógicos de los componentes.

Para obtener más información, vea Diagramas de capas: Referencia.

Pasos básicos para dibujar diagramas de componentes

Para obtener información de referencia sobre los elementos de los diagramas de componentes, vea Diagramas de componentes de UML: Referencia.

Para obtener más información acerca de cómo se utilizan los diagramas de componentes en el proceso de diseño, vea Modelar la arquitectura de un sistema de Software.

[!NOTA]

En Cómo: Modificar diagramas y modelos UML se describen en detalle los pasos para crear diagramas de modelado.

Para crear un diagrama de componentes

  1. En el menú Arquitectura, haga clic en Nuevo diagrama.

  2. En Plantillas, haga clic en Diagrama de componentes UML.

  3. Especifique un nombre para el diagrama.

  4. En Agregar a proyecto de modelado, seleccione un proyecto de modelado existente de la solución o Crear nuevo proyecto de modelado y, a continuación, haga clic en Aceptar.

    Aparece un nuevo diagrama de componentes con el cuadro de herramientas Diagrama de componentes de UML.El cuadro de herramientas contiene las relaciones y elementos necesarios.

Dd409393.collapse_all(es-es,VS.110).gifDibujar componentes

Componentes con interfaces

Cree un componente (1) para cada unidad funcional principal del sistema o aplicación.

Algunos ejemplos pueden ser una aplicación, un dispositivo de hardware, un servicio Web, un ensamblado .NET, una clase o un grupo de clases de programa o cualquier segmento de un programa que se pueda separar.

Para crear componentes

  1. En el cuadro de herramientas, haga clic en Componente y, a continuación, haga clic en una parte en blanco del diagrama.

    -O bien-

    Copie y pegue un componente existente.

    1. Busque un componente existente en un diagrama o en el Explorador de modelos UML.

    2. Haga clic con el botón secundario del mouse en el componente y, a continuación, haga clic en Copiar.

    3. Abra el diagrama en el que desea que aparezca el componente copiado.

    4. Haga clic con el botón secundario del mouse en una parte en blanco del diagrama y, a continuación, haga clic en Pegar.

      Aparece una copia del componente con un nombre nuevo.

  2. Haga clic en el nombre del componente para cambiarlo.

  3. Haga clic en el botón de contenido adicional 5) si desea ver exclusivamente el encabezado del componente.

Dd409393.collapse_all(es-es,VS.110).gifMostrar los puertos de un componente

Un puerto (2, 3) representa un grupo de mensajes o llamadas de operaciones que tienen como origen o destino un componente.El grupo se describe mediante una interfaz, que define el tipo de puerto.Un puerto puede proporcionar o necesitar una interfaz.

Un puerto con una interfaz proporcionada (2) suministra operaciones que se implementan en el componente y que otros componentes pueden utilizar.

Algunos ejemplos serían una interfaz de usuario, un servicio Web, una interfaz de .NET o una colección de funciones de cualquier lenguaje de programación.

Un puerto con una interfaz necesaria (3) representa el requisito de un componente de que un grupo de operaciones o servicios sea a probado por otros componentes o sistemas externos.

Por ejemplo, un explorador web necesita servidores web o un complemento de la aplicación necesita los servicios de la aplicación.

Un componente puede tener cualquier número de puertos.

Para agregar puertos a un componente

  1. En el cuadro de herramientas, haga clic en Provided Interface o Required Interface.

  2. Haga clic en el componente al que desea agregar los puertos.

    Aparecerá un puerto en el límite del componente.

    Se crea una nueva interfaz como el tipo del puerto.Esta interfaz aparece en el Explorador de modelos UML.

  3. Arrastre el puerto situado en torno al límite del componente hasta situarlo donde desee.

  4. Arrastre la etiqueta del puerto hasta ajustar su posición.

  5. Haga clic en la etiqueta para cambiarla.En la etiqueta se muestra el nombre de la interfaz.Si la modifica, cambiará el nombre de la interfaz.

Dd409393.collapse_all(es-es,VS.110).gifEstablecer vínculos entre componentes

Utilice una dependencia 4) para mostrar que el requisito de un componente puede satisfacerse a través de las operaciones o servicios proporcionados por otro componente.

Para mostrar que una interfaz proporcionada puede satisfacer una interfaz necesaria

  1. En el cuadro de herramientas, haga clic en Dependency.

  2. Haga clic en el puerto con la interfaz necesaria de un componente y, a continuación, haga clic en el puerto con la interfaz proporcionada de otro componente.

En la fase de diseño, intente evitar los bucles de dependencia en los que todos los componentes de un grupo dependen de todos los demás componentes.

Para agregar un puerto de una interfaz existente a un componente

  • Busque la interfaz en el Explorador de modelos UML y arrástrela hasta el componente.

    O bien

  • Copie y pegue una referencia a una interfaz desde un diagrama.

    1. En un diagrama de clases o componentes, haga clic con el botón secundario del mouse en la interfaz y, a continuación, haga clic en Copiar.

    2. En el diagrama de componentes, haga clic con el botón secundario del mouse en el componente y, a continuación, haga clic en Pegar referencia.

      En el componente aparece una interfaz proporcionada.Cerca de ella aparece una etiqueta de acción.

      [!NOTA]

      Si utiliza Pegar en lugar de Pegar referencia, se creará una nueva interfaz con un nuevo nombre.

    3. Si desea crear una interfaz necesaria, haga clic en la etiqueta de acción y, a continuación, en Convertir en Required Interface.

Mostrar los elementos internos de un componente

Diagrama de componentes mostrando elementos internos

Puede incluir elementos (3) en un componente (1) para mostrar que está formado de componentes más pequeños que interactúan entre sí.

En el diagrama de la ilustración se muestra que todas las instancias del servicio Web Cenar ahora contienen una instancia del Servidor de cliente y una instancia del Servidor de cocina.

Un elemento es una propiedad de su componente primario, al igual que un atributo pertenece a una clase ordinaria.Los elementos tienen su propio tipo, que suele ser también un componente.La etiqueta del elemento tiene el mismo formato que un atributo ordinario:

+ partName : TypeName

Dentro del componente primario, en cada elemento se muestran las interfaces proporcionadas y necesarias que se definieron para su tipo (4, 5).Las operaciones o servicios que necesita un elemento puede proporcionárselos otro.Puede utilizar los conectores de Part Assembly para mostrar cómo se conectan los elementos entre sí (6).

También puede mostrar que una interfaz del componente primario es una interfaz que uno de sus elementos proporciona o necesita.Puede conectar un puerto del componente primario a un puerto de un elemento interno mediante una relación Delegation (9).Los dos puertos tienen que ser del mismo tipo (proporcionados o necesarios) y sus tipos de interfaz tienen que ser compatibles.

Puede crear un nuevo elemento con un nuevo tipo o a partir de un tipo existente.

Para agregar elementos a un componente

  1. Cree un elemento para cada unidad funcional principal que cree que forma parte del componente primario.

    1. En el cuadro de herramientas, haga clic en Componente y, a continuación, haga clic en el interior del componente primario (1).

      Aparece un nuevo elemento (3) dentro del componente primario.

      En el Explorador de modelos UML se crea un nuevo componente.Este es el nuevo tipo del elemento.

      -O bien-

      Arrastre un componente existente del Explorador de modelos UML al componente primario.

      Aparece un nuevo elemento (3) dentro del componente primario.Su tipo es el componente que arrastró desde el Explorador de modelos UML.

      -O bien-

      Haga clic con el botón secundario del mouse en un componente de un diagrama o del Explorador de modelos UML y, a continuación, haga clic en Copiar.

      Haga clic con el botón secundario del mouse en el componente primario y, a continuación, haga clic en Pegar referencia.

      Aparece un nuevo elemento (3) dentro del componente primario.Su tipo es el componente que copió.

    2. Haga clic en el nombre del nuevo componente para cambiarlo.Su tipo no se puede modificar.

    3. Puede agregar interfaces proporcionadas y necesarias (4, 5) al nuevo elemento.Haga clic en la herramienta Provided Interface o Required Interface y, a continuación, en el elemento.

      -O bien-

      Arrastre una interfaz existente del Explorador de modelos UML al elemento.

      Las interfaces se agregan al tipo del elemento y aparecen en el propio elemento.El componente primario ajusta su tamaño, si es necesario.

  2. Conecte los elementos entre sí.

    • Utilice la herramienta Dependency para conectar los puertos de distintos elementos (6).
  3. Conecte los puertos a los puertos del componente primario:

    1. Cree uno o varios puertos (7) en el componente primario.En el cuadro de herramientas, haga clic en Required Interface o Provided Interface y, a continuación, en el componente primario.

    2. Cree delegados (9) del puerto en uno o varios elementos.Haga clic en la herramienta Delegation, en un puerto del componente primario y, a continuación, en un puerto de un elemento.A través de este mismo mecanismo, puede conectar puertos que proporcionan o necesitan interfaces.

Dd409393.collapse_all(es-es,VS.110).gifMostrar los elementos que conforman un elemento

Después de descomponer un componente en elementos, puede descomponer cada uno de los tipos de elementos en sus propios elementos internos.

Resulta más fácil representar cada nivel de la descomposición en un diagrama de componentes diferente.Primero debe buscar el tipo del elemento.Por ejemplo, en la ilustración, uno de los elementos se denomina DNCustomerServer y su tipo es un componente que se denomina CustomerServer.Puede buscar este tipo en el Explorador de modelos UML y situarlo en otro diagrama.A continuación, puede crear sus propios elementos internos.

Para situar un tipo de elemento en un diagrama

  1. Especifique el nombre completo del tipo de elemento.

    Haga clic con el botón secundario del mouse en el elemento y, a continuación, haga clic en Propiedades.

    El nombre del tipo aparece en el campo Type de la ventana Propiedades.

  2. Busque el tipo del elemento en el Explorador de modelos UML.

    Haga clic en Ver, elija Otras ventanas y, a continuación, haga clic en Explorador de modelos UML.

    Expanda el proyecto y, si es necesario, los paquetes a los que pertenece el tipo.

    El tipo aparecerá como un componente.

    Si lo desea, puede cambiar su nombre aquí.

  3. Abra o cree otro diagrama de componentes.

  4. Arrastre el tipo del Explorador de modelo UML al diagrama.

    En el diagrama aparece una vista del tipo como componente.

    Tiene las mismas interfaces que las que definió para el elemento.

    Ahora puede agregar otros elementos.

Diseñar el componente

Dd409393.collapse_all(es-es,VS.110).gifDescribir cómo colaboran los elementos

Puede dibujar un diagrama de secuencia para mostrar el modo en que los elementos trabajan juntos en respuesta a un mensaje que llega al componente primario.

Puede utilizar estos diagramas para explicar un componente existente o diseñar uno nuevo.

Si todavía está diseñando el componente, puede dibujar diagramas de secuencia antes de decidir qué elementos contendrá.Puede utilizar los diagramas de secuencia para experimentar con distintos elementos, interfaces necesarias y secuencias de mensajes.Dibuje diagramas de secuencia para los mensajes entrantes más frecuentes y más importantes.Puede crear elementos en el componente que se correspondan con las líneas de vida que haya decidido.

Utilice los diagramas de secuencia para valorar el modo en que los diferentes componentes comparten el trabajo del sistema.

  • Si la carga de trabajo es muy grande en un elemento, probablemente resultará más complicado actualizar la aplicación que si el trabajo se distribuye uniformemente.

  • Si la carga de trabajo es demasiado escasa y se distribuye en muchas interacciones, el sistema podría tener un mal rendimiento y podría resultar difícil de entender.

Diagrama de secuencia mostrando elementos en colaboración

Para dibujar un diagrama de secuencia en el que se muestre la colaboración entre los elementos

  1. Cree un nuevo diagrama de secuencia.

    Para obtener más información, vea Diagramas de secuencia de UML: Instrucciones.

  2. Cree una línea de vida en un componente externo, usuario, dispositivo u otro actor (1) que envíe mensajes a este componente.

    Puede establecer la propiedad Actor de esta línea de vida en true para indicar que es externa al componente en cuestión.Sobre la línea de vida aparece un dibujo esquemático.

  3. Cree una línea de vida en la interfaz proporcionada (2) de este componente al que el actor seleccionado envía mensajes.

  4. Cree una línea de vida en cada elemento (3) del componente.

  5. Cree una línea de vida en cada interfaz necesaria (4) del componente.

  6. Dibuje mensajes procedentes del actor externo (5).Muestre cómo se pasa el mensaje a los elementos y cómo estos elementos colaboran para responder al mensaje.

  7. Siempre que sea necesario, muestre los mensajes enviados a una interfaz necesaria (6).No muestre los detalles de la ejecución del mensaje.

Dd409393.collapse_all(es-es,VS.110).gif¿Es el componente mayor que la suma de sus partes?

En algunos casos, un componente no es más que un nombre que se asigna a una colección de elementos.Los elementos realizan todo el trabajo y no hay ningún código ni ningún otro artefacto en tiempo de ejecución que represente al componente.

Esto puede indicarse en el modelo estableciendo la propiedad Is Indirectly Instantiated del componente.En este caso, todas las interfaces del componente deben estar en los puertos, con delegaciones en los elementos internos.

Dd409393.collapse_all(es-es,VS.110).gifDescribir el proceso que tiene lugar en cada elemento

Puede utilizar diagramas de actividades para mostrar cómo un componente procesa cada mensaje entrante.Para obtener más información, vea Diagramas de actividades UML: Instrucciones.

Diagrama de actividades con búfer de datos

Utilice una acción de evento de aceptación (1) para mostrar que un mensaje entrante inicia un nuevo subproceso.

Utilice nodos de objeto y pins de entrada y salida para mostrar el flujo de información y dónde se almacena la información.En el ejemplo, se utiliza un nodo de objeto (2) para mostrar los elementos que se están almacenando en búfer entre un subproceso y otro.

Dd409393.collapse_all(es-es,VS.110).gifDefinir datos y clases

Puede utilizar un diagrama de clases de UML para describir en detalle el contenido de:

  • Las interfaces de los componentes.

  • Los datos que se pasan en los parámetros de las operaciones de las interfaces.

  • Los datos almacenados en los componentes, por ejemplo, tal y como se muestran en los flujos de objetos de los diagramas de actividades.

Dd409393.collapse_all(es-es,VS.110).gifDependencias generales entre componentes

Puede utilizar un diagrama de componentes para mostrar exclusivamente los elementos principales del diseño y sus interdependencias.

Dependencia entre componentes

Utilice la herramienta Dependency para dibujar una dependencia.Así indicará que el diseño de un componente se basa en otro.

Entre los tipos habituales de dependencia se incluyen los siguientes:

  • Un componente llama al código en otro.

  • Un componente crea una instancia de una clase que se define en otra clase.

  • Un componente usa información creada por otro componente.

Puede utilizar el nombre de la flecha de dependencia para dar cuenta de un tipo de uso concreto.Para establecer el nombre, haga clic con el botón secundario del mouse en la flecha; a continuación, haga clic en Propiedades y establezca el campo Name de la ventana Propiedades.

Vea también

Referencia

Diagramas de secuencia UML: Referencia

Conceptos

Cómo: Modificar diagramas y modelos UML

Diagramas de componentes de UML: Referencia

Diagramas de casos de uso de UML: Referencia

Diagramas de clases de UML: Referencia

Diagramas de componentes de UML: Referencia

Otros recursos

Video: Designing the Physical Structure by using Component Diagrams