Fundamentos de Ingeniería de Software Marcello Visconti y Hernán Astudillo Departamento de Informática Universidad Técnica Federico Santa María {visconti,hernan} en inf.utfsm.cl Fundamentos de Ingeniería de SW 1 Diagramas de componentes Diagramas de despliegue Codificación - Resumen Fundamentos de Ingeniería de SW 2 1
Diagrama de Componentes Los diagramas de componentes describen los elementos físicos y sus realizaciones en el entorno. Muestran las opciones de realización. Fundamentos de Ingeniería de SW 3 Diagrama de Componentes : módulos Los módulos representan todos los tipos de elementos físicos que entran en la fabricación de aplicaciones informáticas. Pueden ser simples archivos, paquetes de Ada, bibliotecas cargadas dinámicamente, etc. Cada clase del modelo lógico se realiza en dos componentes: la especificación y el cuerpo. La especificación contiene el interfaz de la clase mientras que el cuerpo contiene la realización de la clase. La especificación puede ser genérica en el caso de las clases parametrizables. Fundamentos de Ingeniería de SW 4 2
Diagrama de Componentes : módulos La representación gráfica es la siguiente: Especificación Cuerpo Genérico Package specification Package body Generic package Fundamentos de Ingeniería de SW 5 Diagrama de Componentes: módulos En C++ una especificación corresponde a un archivo con un sufijo.h y un cuerpo a un archivo con un sufijo.cpp En Ada la noción de módulo existe directamente en el lenguaje con el nombre del paquete. Fundamentos de Ingeniería de SW 6 3
Diagrama de Componentes: dependencias Las relaciones de dependencia se utilizan en los diagramas de componentes para indicar que un componente se refiere a los servicios ofrecidos por otro componente. NewPackageSpec NewPackageSpec2 Dependencia entre dos componentes Fundamentos de Ingeniería de SW 7 Diagrama de Componentes: dependencias La relación de dependencia puede especializarse con un estereotipo para precisar la naturaleza de las opciones de realización que entraña la relación de dependencia. p.ej., una <<instanciación>>, etc. Las dependencias entre componentes implican dependencias de compilación. El orden de la compilación viene dado por el orden del grafo de precedencia diseñado. Fundamentos de Ingeniería de SW 8 4
Diagrama de Componentes: dependencias Ejemplo de orden de compilación: NewPackageBody3 NewPackageBody2 NewPackageSpec3 NewPackageSpec2 Fundamentos de Ingeniería de SW 9 Diagrama de Componentes: procesos y tareas Las tareas son componentes que poseen su propio flujo de control (thread). Las tareas pueden estar contenidas en otros componentes. UML define los estereotipos <<proceso>> y <<flujo>> donde varios flujos pueden compartir el mismo espacio de direccionamiento dentro de un proceso. Fundamentos de Ingeniería de SW 10 5
Diagrama de Componentes: procesos y tareas Ejemplo de especificación y cuerpo de una tarea: NewTaskSpec2 NewTaskBody Fundamentos de Ingeniería de SW 11 Diagrama de Componentes: programas principales Los puntos de entrada de las aplicaciones se especifican con el siguiente icono: NewMainSubprog2 Fundamentos de Ingeniería de SW 12 6
Diagrama de Componentes: programas principales En C++ la función libre se llama main()almacenada en un archivo.cpp El nombre del programa principal es utilizado a menudo por el enlazador para dar nombre al programa ejcutable correspondiente a la aplicación. Fundamentos de Ingeniería de SW 13 Diagrama de Componentes: subprogramas Los subprogramas agrupan los procedimientos y funciones que no pertenencen a ninguna clase. Existen dos representaciones gráficas: Especificación Subprograma Realización del subprograma Fundamentos de Ingeniería de SW 14 7
Diagrama de Componentes: subsistemas Los distintos componentes pueden agruparse en paquetes según un criterio lógico y con vistas a simplificar la implementación. Son paquetes estereotipados en <<subsistemas>> para incorporar la noción de biblioteca de compilación y de gestión de configuración. <<subsistema>> NewPackage4 Fundamentos de Ingeniería de SW 15 Diagrama de Componentes: subsistemas Los subsistemas organizan la vista de realización de un sistema. Cada subsistema puede contener componentes y otros subsistemas. La descomposición en subsistemas NO es una descomposición funcional. La relación entre paquetes y clases en el nivel lógico es el que existe entre subsistemas y módulos en el nivel físico. Los subsistemas poseen una parte pública y una parte privada. Por defecto, los módulos de los subsistemas son visibles desde el exterior. Fundamentos de Ingeniería de SW 16 8
Diagrama de Componentes: subsistemas Ejemplo de un subsistema que depende de un componente: Subsistema Espec. Subprograma NewPackage2 NewPackage6 Fundamentos de Ingeniería de SW 17 Diagrama de Componentes: subsistemas Ejemplo de un componente que depende de un subsistema: Subsistema Programa Principal NewPackage2 NewPackage6 Fundamentos de Ingeniería de SW 18 9
Diagrama de Componentes: integración Cada subsistema de materializa por un directorio que contiene archivos correspondientes a los distintos componentes del subsistema. El subsistema contendrá además los archivos necesarios para la compilación, documentación y prueba de componentes. La integración con los sistemas de compilación permite asociar la noción de biblioteca de programas a la de subsistema. Fundamentos de Ingeniería de SW 19 Diagrama de Despliegue [1] Los diagramas de despliegue muestran la disposición física de los distintos nodos que entran en la composición de un sistema y el reparto de los programas ejecutables sobre estos nodos Nodo Fundamentos de Ingeniería de SW 20 10
Diagrama de Despliegue [2] Todo sistema se describe con uno o más diagramas de despliegue. Los estereotipos permiten precisar la naturaleza del equipo: Dispositivos Procesadores Memoria Los nodos se interconectan mediante soportes bidireccionales (en principio) que pueden a su vez estereotiparse. Fundamentos de Ingeniería de SW 21 Diagrama de Despliegue [3] Ejemplo de conexión entre nodos: <<Procesador> Nodo <<<<TCP/IP>>>> conexión1 <<dispositivo>> nodo2 conexión7 <<RDSI>> dispositivo En Rational Rose podemos distinguir entre el dispositivo por estereotipado y el dispositivo con su propio símbolo Fundamentos de Ingeniería de SW 22 11
Quiz Cuál es el propósito de diagramas de componentes? Cuál es el propósito de diagramas de despliegue? Cómo se construyen? Fundamentos de Ingeniería de SW 23 12