Arquitecturas de componentes
La práctica de desarrollar y utilizar arquitecturas de componentes ayuda a gestionar la complejidad y potencia la reutilización porque las arquitecturas de componentes se basan en componentes modulares, sustituibles e independientes.
Relaciones
Elementos relacionados
Descripción principal

Imagen de arquitecturas de componentes

Arquitectura basada en componentes con capas

¿Qué significa arquitectura de componentes?

Una arquitectura de componentes es una arquitectura basada en componentes sustituibles, como se describe en Concepto: Componente. Como las arquitecturas de componentes se basan en componentes modulares, sustituibles e independientes, facilitan la gestión de la complejidad y potencian la reutilización .

Énfasis en la arquitectura

Los guiones de uso conducen Rational Unified Process (RUP) de principio a fin en todo el ciclo vital, pero las actividades de diseño se centran en la noción de arquitectura de sistema y, en el caso de sistemas de software intensivo, en arquitectura de software. El objetivo principal de las primeras iteraciones del proceso, sobre todo en la fase de la elaboración, es producir y validar una arquitectura de software, que en el ciclo de desarrollo inicial adopta la forma de un prototipo de arquitectura ejecutable que evoluciona gradualmente hasta convertirse en el sistema final en las últimas iteraciones.

Una arquitectura ejecutable quiere decir una implementación parcial del sistema construido para demostrar funciones y propiedades seleccionadas del sistema, en concreto las que satisfacen requisitos no funcionales. El objetivo de una arquitectura ejecutable es mitigar riesgos relacionados con el rendimiento, el resultado, la capacidad, la fiabilidad y otros, de modo que todas las posibilidades funcionales del sistema se vayan añadiendo en la fase de construcción con una base sólida, sin miedo a que se produzcan rupturas.

Si desea una introducción a la noción de arquitectura, y sobre todo arquitectura de software, y una explicación de por qué es crucial esta noción, consulte Concepto: Arquitectura de software.

RUP proporciona un modo sistemático y metódico para diseñar, desarrollar y validar una arquitectura. Se ofrecen plantillas para la descripción de arquitectura en cuanto a conceptos de varias vistas de la arquitectura, y para la captura de estilos de arquitectura, reglas de diseño y restricciones. La disciplina de análisis y diseño contiene actividades específicas con el objetivo de identificar restricciones de arquitectura y elementos significativos en arquitectura, además de directrices sobre cómo realizar elecciones de arquitectura. El proceso de gestión muestra cómo la planificación de las primeras iteraciones toma en cuenta el diseño de una arquitectura y la resolución de los riesgos técnicos más importantes. Consulte la disciplina de gestión de proyectos y todas las actividades relacionadas con el Rol: Arquitecto de software para obtener más información.

La arquitectura es importante por diversos motivos:

  • Le permite obtener y retener control intelectual sobre el proyecto para gestionar su complejidad y conservar la integridad del sistema.

Un sistema complejo es más que la suma de sus partes, más que una sucesión de pequeñas decisiones tácticas independientes. Debe tener una estructura coherente, unificadora que organice dichas partes sistemáticamente y debe proporcionar reglas precisas sobre cómo ampliar el sistema sin que su complejidad escape al entendimiento humano.

La arquitectura establece los medios para conseguir una comunicación y una compresión mejoradas en todo el proyecto al establecer un conjunto común de referencias, un vocabulario común con el que debatir problemas de diseño.

  • Es una base eficaz para la reutilización a gran escala.

Al definir con claridad los componentes principales y las interfaces importantes entre ellos, una arquitectura permite reflexionar acerca de la reutilización, tanto la reutilización interna (que es la identificación de partes comunes) como la reutilización externa (que es la incorporación de componentes estándar, ya fabricados). No obstante, también permite la reutilización a mayor escala: la reutilización de la arquitectura en el contexto de una línea de productos que trata diferentes funciones en un dominio común.

  • Proporciona una base para la gestión de proyectos.

La planificación y los asuntos de personal se organizan siguiendo las líneas de los componentes principales. Un equipo de arquitectura unido y pequeño es el que toma las decisiones estructurales fundamentales, no se distribuyen. El desarrollo, en cambio, sí se reparte en un conjunto de pequeños equipos, cada uno responsable de una o varias partes del sistema.

Desarrollo basado en componentes

El desarrollo basado en componentes es una variación del desarrollo general de aplicaciones en el que:

  • La aplicación se construye a partir de componentes ejecutables discretos que se desarrollan de forma relativamente independiente, potencialmente por equipos diferentes. En RUP éstos se denominan "componentes de ensamblaje". Consulte Concepto: Componente para obtener una definición más detallada.
  • La aplicación se puede actualizar en incrementos más pequeños mediante la actualización de únicamente los componentes de ensamblaje que componen la aplicación.
  • Los componentes de ensamblaje se pueden compartir entre aplicaciones mediante la creación de oportunidades de reutilización, y también mediante la creación de dependencias entre proyectos.
  • Aunque no está estrictamente relacionado con el hecho de estar basado en componentes, las aplicaciones basadas en componentes suelen ser distribuidas.

Los componentes de ensamblaje se derivan de lo siguiente:

  • Al definir una arquitectura modular, está definiendo, aislando, diseñando, desarrollando y probando componentes bien formados. Estos componentes pueden probarse de forma individual e integrarse gradualmente para conformar el sistema completo.
  • Además, algunos de estos componentes pueden desarrollarse para ser reutilizados, sobre todo los componentes que proporcionan soluciones comunes a una amplia gama de problemas comunes. Estos componentes reutilizables, que pueden ser más que una simple recopilación de programas de utilidades o bibliotecas de clases, forman la base de la reutilización dentro de una empresa, aumentando la productividad y la calidad globales de software.
  • Más recientemente, el gran éxito comercial de infraestructuras de componentes, como CORBA, Internet, ActiveX, JavaBeans, .NET y J2EE, ha desencadenado toda una industria de componentes ya preparados para diversos dominios, lo que le permite comprar e integrar componentes en lugar que tener que desarrollarlos todos en la empresa.

El primer punto en la lista anterior explota los viejos conceptos de modularidad y encapsulación, lo que lleva un paso más allá los conceptos de la tecnología orientada a objetos. Los últimos dos puntos de la lista cambian el desarrollo de software desde la programación de línea a línea a la composición del software mediante el ensamblado de componentes.

RUP admite el desarrollo basado en componentes de las siguientes maneras:

  • El enfoque iterativo permite identificar componentes de forma progresiva y decidir cuáles desarrollar, cuáles reutilizar y cuáles comprar.
  • La arquitectura de software de RUP permite definir la estructura (los componentes y las formas de integración) que incluye los mecanismos fundamentales y los patrones de interacción. Esto a su vez admite los aspectos de planificación de la gestión de proyectos, ya que las dependencias de los componentes pueden ayudar a determinar qué componentes pueden desarrollarse de forma concurrente y cuáles de forma secuencial.
  • Conceptos como paquetes, subsistemas y capas se utilizan durante el análisis y el diseño para organizar componentes y especificar interfaces.
  • La realización de pruebas se organiza a partir de conceptos y poco a poco a partir de conjuntos mayores de componentes integrados.

Para obtener más información sobre los componentes, consulte Concepto: Componente.