Professional Documents
Culture Documents
Definición
La arquitectura basada en componentes consiste en una rama de la Ingeniería de software
en la cual se trata con énfasis la descomposición del software en componentes funcionales. Esta
descomposición permite convertir componentes pre-existentes en piezas más grandes de
software.
• Interior del componente: es una pieza de software que cumple con un conjunto de
propiedades y que se encuentra conformada como un artefacto del cual se espera que sea
reutilizable.
• Exterior del componente: es una interface que cumple con un conjunto de propiedades y
provee un servicio a los agentes humanos u otros artefactos de software.
• Relación interior-exterior: es la que define el proceso de relación entre el interior y
exterior el componente, a través de conceptos como especificación, implementación y
encapsulación.
Existen 5 principios definidos por Clemens Szyperski and David Messerschmitt 2, que
definen a un componente de software como elemento de la arquitectura:
1
Component-Based Development
http://www.users.globalnet.co.uk/~rxv/CBDmain/cbdfaq.htm#Component-Based%20Development
2
Component-based software engineering. http://en.wikipedia.org/wiki/Software_componentry
1
• Múltiple uso: se refiere al hecho de que un componente es escrito dentro de un
contexto que permita que su funcionalidad sea útil en la creación de distintas
piezas de software.
• Contexto no específico: en relación con la orientación conceptual de la
especificación de un componente, debe estar planteada de una forma general que
permita su adaptación en distintos sistemas, sin que el contexto tenga prioridad.
• Encapsulación: se refiere a la especificación interna oculta o no investigable a
través de la interface. Así se protege que el resto de componentes y piezas de
software dentro de un sistema, no se vean afectados por cambios en el diseño de
uno de los componentes.
• Una unidad independiente de desarrollo con su propio control de versiones:
este principio muy relacionado con la encapsulación, permite que un componente
pueda ser desarrollado de manera independiente, cambiando el diseño o
agregando nuevas funcionalidades, sin afectar significativamente el resto del
sistema.
2
Además de esto, de acuerdo con Felix Bachman 3, durante esta actividad existen dos procesos
relacionados con la certificación de los componentes:
I. El establecimiento de hechos sobre el componente para verificar que las propiedades que
el componente posee son acordes con su especificación pública (documentada).
II. La validación de que los hechos establecidos sobre el componente son ciertos.
La razón por la cual se realiza este proceso de certificación es que existe un vínculo entre las
propiedades certificadas de un componente y las del sistema final, es decir, la certificación es una
herramienta para garantizar que las propiedades de la pieza de software final sean válidas.
2) Adaptación de los componentes: dado que un componente es desarrollado para cumplir con
requerimientos específicos, es posible que esté orientado en cierta medida hacia el contexto
en el que fue desarrollado. Por esta razón, se realiza un proceso de adaptación con el objetivo
de minimizar la cantidad de conflictos.
I. White-Box: cuando el componente debe ser reescrito para operar en conjunto con el resto
de componentes del sistema.
II. Grey-Box: cuando el componente incorpora su propio API (Application Programming
Interface).
III. Black-Box: cuando el componente no posee un API. Una interfaz completamente
independiente es construida para acceder a los servicios del componente.
Reusabilidad
Esta es una de las características más importantes en el desarrollo de sistemas bajo una
arquitectura basada en componentes. Un componente de software debe ser diseñado de tal
madera que pueda ser reutilizado en otros sistemas.
3
Technical Concepts of Component-Based Software Engineering, T.R. CMU/SEI-2000.
3
Este principio de reutilización del componente, requiere un esfuerzo extra por el equipo de
desarrollo que se basa en:
4
Referencias Bibliográficas
http://cbs.colognet.org/overview.php
http://active.cput.ac.za/myconference/Gregory%20Booth%20-
%20Component%20Software%20Development.pdf