El Modelo de Componentes
Este artículo describe cómo modelar los componentes de software y hardware en UML. El modelo de componentes ilustra los componentes de software que se usarán para construir el sistema. Se pueden construir a partir del modelo de clases y escribir desde cero para el nuevo sistema o se pueden importar de otros proyectos y de productos de terceros. Los componentes son agregaciones de alto nivel de las piezas de software más pequeñas y proveen un enfoque de construcción de bloques de “caja negra” para la elaboración de software.
Notación de Componentes
Un componente puede ser algo como un control Actives; tanto un componente de la interfaz de usuario como un servidor de reglas de negocio. Los componentes se representan gráficamente como muestra la figura siguiente:
El diagrama de componentes
El diagrama de componentes muestra la relación entre componentes de software, sus dependencias, su comunicación su ubicación y otras condiciones.
Interfaces
Los componentes también pueden exponer
las interfaces. Estas son los puntos visibles
de entrada o los servicios que un componente está ofreciendo
y dejando disponibles a otros
componentes de software y clases. Típicamente,
un componente está compuesto por
numerosas clases y paquetes de clases internos.
También se puede crear a partir de una
colección de componentes más pequeños.
Componentes y Nodos
Un diagrama de despliegue muestra el despliegue
físico del sistema en un ambiente de
producción (o de prueba). Muestra dónde
se ubican los componentes, en qué servidores,
máquinas o hardware. Puede representar
los enlaces de redes, el ancho de banda de la
LAN, etc.
Requisitos
Los componentes pueden tener requisitos adjuntos
para indicar sus obligaciones
contractuales; esto es, qué servicios
proveen en el modelo. Los requisitos ayudan a
documentar el comportamiento funcional de los
elementos de software.
Restricciones
Los componentes pueden restricciones asignadas
que indican el entorno en el que operan.
Las pre-condiciones especifican lo que debe ser
verdadero antes de que un componente
pueda realizar alguna función; las post-condiciones
indican lo que debe ser verdadero
después de que un componente haya realizado
algún trabajo y los invariantes especifican
lo que debe permanecer verdadero durante la vida
del componente.
Escenarios
Los escenarios son descripciones
textuales y procedimentales de las acciones de
un objeto
a
lo largo del tiempo y describen la forma en la
que un componente trabaja. Se pueden crear
múltiples escenarios para describir tanto
el camino básico (una ejecución
perfecta) como las
excepciones, errores y otras condiciones.
Trazabilidad
Puede indicar la trazabilidad por medio de vínculos
de realización. Un componente puede
implementar otro elemento del modelo (por ejemplo
un caso de uso) o un componente
puede ser implementado por otro elemento (por
ejemplo un paquete de clases). Al emplear
las relaciones de realización desde y
hacia los componentes, se pueden seguir las
dependencias entre los elementos del modelo y
la trazabilidad desde los requisitos iniciales
hasta la implementación final.
Un ejemplo
El ejemplo siguiente
muestra cómo se pueden
relacionar los componentes para proveer una
vista conceptual/lógica de la construcción
de un sistema. Este ejemplo representa los
elementos del servidor y la seguridad de una
tienda de libros en línea. Se incluyen
elementos tales como el servidor WEB, el firewall,
las páginas ASP, etc.
Componentes del servidor
Este diagrama ilustra la organización
de los componentes del lado del servidor principal
que
se requerirá construir para una tienda
de libros en línea. Estos componentes
son una mezcla
de los ítems construidos a medida y adquiridos
que se ensamblarán para proveer la
funcionalidad requerida.
Componentes de seguridad
El diagrama de componentes de la seguridad muestra
cómo trabaja en conjunto el software
de seguridad, tal como la Autoridad Certificadora
(Certificate Authority), el navegador
(Browser), el servidor WEB y otros elementos
del modelo para asegurar la provisión
de la
seguridad en el sistema propuesto.