Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
EXTENSIN CHONE
INGENIERIA EN SISTEMAS
5TO SEMESTRE A
GRUPO #8
AUTORES:
DOCENTE:
CHONE ECUADOR
Arquitectura basada en componentes
Introduccin
La complejidad de los sistemas computacionales actuales nos ha llevado a buscar la reutilizacin del
software existente. El desarrollo de software basado en componentes permite reutilizar piezas de cdigo
preelaborado que permiten realizar diversas tareas, conllevando a diversos beneficios como las mejoras a la
calidad, la reduccin del ciclo de desarrollo y el mayor retorno sobre la inversin. Al comparar la evolucin
del ambiente de IT con el crecimiento de las metrpolis actuales, podemos entender el origen de muchos
problemas que se han presentado histricamente en la construccin de software y vislumbrar las posibles y
probables soluciones que nos llevarn hacia la industrializacin del software moderno.
Si hay algo que ha aprendido el ser humano desde tiempos muy antiguos es a reutilizar el conocimiento
existente para sus cada vez ms ambiciosas empresas. En efecto, al reutilizar trozos de experiencias, ideas
y artefactos, no solo nos aseguramos de no cometer los mismos errores del pasado, sino que logramos
construir cosas cada vez ms grandes y maravillosas, con bases firmes y calidad incomparable. Este
concepto de la reutilizacin, uno de los primeros que se nos ensean a quienes entramos al mundo del
desarrollo de software, habremos de utilizarlo desde el mismo instante en que escribamos nuestra primera
lnea de cdigo.
Los sistemas de hoy en da son cada vez ms complejos, deben ser construidos en tiempo rcord y deben
cumplir con los estndares ms altos de calidad. Para hacer frente a esto, se concibi y perfeccion lo que
hoy conocemos como Ingeniera de Software Basada en Componentes (ISBC), la cual se centra en el diseo
y construccin de sistemas computacionales que utilizan componentes de software reutilizables. Esta ciencia
trabaja bajo la filosofa de "comprar, no construir", una idea que ya es comn en casi todas las industrias
existentes, pero relativamente nueva en lo que a la construccin de software se refiere.
Para este momento, ya muchos conocen las ventajas de este enfoque de desarrollo y, de la misma forma,
muchos se preguntan da a da el por qu son tan pocos los que realmente alcanzan el xito siguiendo esta
filosofa. En realidad, hasta ahora solo hemos tanteado un poco con las posibilidades del software basado
en componentes, y es justo hora, en la presente dcada, que la industria del software despegar y se
perfeccionar para estar a la par de cualquier otra industria del medio. Las analogas que nos han llevado a
estudiar a los sistemas comparndolos con las complejas metrpolis de la actualidad, as como las iniciativas
ms innovadoras como las Fbricas de Software de Microsoft, son la clara representacin de que estamos a
punto de presenciar un nuevo gran cambio en la forma como pensamos en software.
Beneficios del Desarrollo de Software basado en Componentes
En esencia, un componente es una pieza de cdigo preelaborado que encapsula alguna funcionalidad
expuesta a travs de interfaces estndar . Los componentes son los "ingredientes de las aplicaciones", que
se juntan y combinan para llevar a cabo una tarea . Es algo muy similar a lo que podemos observar en el
equipo de msica que tenemos en nuestra sala. Cada componente de aquel aparato ha sido diseado para
acoplarse perfectamente con sus pares, las conexiones son estndar y el protocolo de comunicacin est ya
preestablecido. Al unirse las partes, obtenemos msica para nuestros odos.
El paradigma de ensamblar componentes y escribir cdigo para hacer que estos componentes funcionen se
conoce como Desarrollo de Software Basado en Componentes. El uso de este paradigma posee algunas
ventajas:
1. Reutilizacin del software. Nos lleva a alcanzar un mayor nivel de reutilizacin de software.
2. Simplifica las pruebas. Permite que las pruebas sean ejecutadas probando cada uno de los
componentes antes de probar el conjunto completo de componentes ensamblados.
4. Mayor calidad. Dado que un componente puede ser construido y luego mejorado continuamente
por un experto u organizacin, la calidad de una aplicacin basada en componentes mejorar con el
paso del tiempo.
De la misma manera, el optar por comprar componentes de terceros en lugar de desarrollarlos, posee algunas
ventajas:
1. Ciclos de desarrollo ms cortos. La adicin de una pieza dada de funcionalidad tomar das en
lugar de meses aos.
2. Mejor ROI. Usando correctamente esta estrategia, el retorno sobre la inversin puede ser ms
favorable que desarrollando los componentes uno mismo.
3. Funcionalidad mejorada. Para usar un componente que contenga una pieza de funcionalidad, solo
se necesita entender su naturaleza, ms no sus detalles internos. As, una funcionalidad que sera
imprctica de implementar en la empresa, se vuelve ahora completamente asequible.
La arquitectura basada en componentes consiste en una rama de la Ingeniera de software en la cual se trata
con nfasis la descomposicin del software en componentes funcionales. Esta descomposicin permite
convertir componentes pre-existentes en piezas ms grandes de software.
Este proceso de construccin de una pieza de software con componentes ya existentes, da origen al principio
de reutilizacin del software, mediante el cual se promueve que los componentes sean implementados de
una forma que permita su utilizacin funcional sobre diferentes sistemas en el futuro.
Se debe entonces, para terminar de definir la arquitectura basada en componente, saber que es un
componente de software. Un componente de software se define tpicamente como algo que puede ser
utilizado como una caja negra, en donde se tiene de manera externa una especificacin general, la cual
es independiente de la especificacin interna.
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.
Los sistemas de software basados en componentes se basan en principios definidos por una ingeniera de
software especfica. En un principio, hacia 1994, se planteaba como una modalidad que extenda o superaba
la tecnologa de objetos, como en un famoso artculo de BYTE cuyo encabezado rezaba as:
ComponentWare La computacin Orientada a Objetos ha fracasado. Pero el software de componentes,
como los controles de Visual Basic, est teniendo xito. Aqu explicamos por qu (Mayo de 1994, pp. 46-
56). Con el paso de los aos el antagonismo se fue aplacando y las herramientas (orientadas a objeto o no)
fueron adaptadas para producir componentes. En la mayora de los casos, los componentes terminan siendo
formas especiales de DLLs que admiten late binding, que necesitan registracin y que no requieren que sea
expuesto el cdigo fuente de la clase.
Hay un buen nmero de definiciones de componentes, pero Clemens Alden Szyperski proporciona una que
es bastante operativa: un componente de software, dice, es una unidad de composicin con interfaces
especificadas contractualmente y dependencias del contexto explcitas. Que sea una unidad de composicin
y no de construccin quiere decir que no es preciso confeccionarla: se puede comprar hecha, o se puede
producir en casa para que otras aplicaciones de la empresa la utilicen en sus propias composiciones.
Una arquitectura basada en componentes describe una aproximacin de ingeniera de software al diseo y
desarrollo de un sistema. Esta arquitectura se enfoca en la descomposicin del diseo en componentes
funcionales o lgicos que expongan interfaces de comunicacin bien definidas. Esto provee un nivel de
abstraccin mayor que los principios de orientacin por objetos y no se enfoca en asuntos especficos de los
objetos como los protocolos de comunicacin y la forma como se comparte el estado.
De forma evidente se puede determinar que, el principal elemento de software dentro de un Arquitectura
basada en componentes son precisamente los componentes de software.
Existen 5 principios definidos por Clemens Szyperski and David Messerschmitt, que definen a un
componente de software como elemento de la arquitectura:
Mltiple uso: se refiere al hecho de que un componente es escrito dentro de un contexto que permita
que su funcionalidad sea til en la creacin de distintas piezas de software.
Contexto no especfico: en relacin con la orientacin conceptual de la especificacin de un
componente, debe estar planteada de una forma general que permita su adaptacin en distintos
sistemas, sin que el contexto tenga prioridad.
Encapsulacin: se refiere a la especificacin interna oculta o no investigable a travs 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 diseo de uno de los componentes.
Una unidad independiente de desarrollo con su propio control de versiones: este principio muy
relacionado con la encapsulacin, permite que un componente pueda ser desarrollado de manera
independiente, cambiando el diseo o agregando nuevas funcionalidades, sin afectar
significativamente el resto del sistema.
Adems de esto, de acuerdo con Felix Bachman, durante esta actividad existen dos procesos relacionados
con la certificacin de los componentes:
I. El establecimiento de hechos sobre el componente para verificar que las propiedades queel
componente posee son acordes con su especificacin pblica (documentada).
II. La validacin de que los hechos establecidos sobre el componente son ciertos.
La razn por la cual se realiza este proceso de certificacin es que existe un vnculo entre las propiedades
certificadas de un componente y las del sistema final, es decir, la certificacin es una herramienta para
garantizar que las propiedades de la pieza de software final sean vlidas.
Adaptacin de los componentes: dado que un componente es desarrollado para cumplir con
requerimientos especficos, es posible que est orientado en cierta medida hacia el contexto en el
que fue desarrollado. Por esta razn, se realiza un proceso de adaptacin con el objetivo de
minimizar la cantidad de conflictos. componente puede ser adaptado entonces de tres maneras:
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.3)
Ensamblaje de los componentes: es el proceso de integracin de los componentes a travs dela
estructura mediante la cual fueron definidos. Esto incluye el modelo de software por componentes
sobre el cual son escritos, por ejemplo: COM (Component Object Model), CORBA(Common
Object Request Broker Architectur), Enterprise JavaBeans y .NET.4)
Mantenimiento y evolucin del sistema: consiste en el proceso de actualizacin de componentes,
ya sea por requerimiento o por cambios de especificacin. Estos cambios pueden ser la reescritura
o sustitucin de un componente. Por tal razn un componente trabaja como una unidad (conectable
y desconectable) dentro de un sistema.
Reusabilidad
Esta es una de las caractersticas ms importantes en el desarrollo de sistemas bajo una arquitectura basada
en componentes. Un componente de software debe ser diseado de tal manera que pueda ser reutilizado en
otros sistemas.
Este principio de reutilizacin del componente, requiere un esfuerzo extra por el equipo de desarrollo que
se basa en:
Un componente es un objeto de software especficamente diseado para cumplir con cierto propsito. Los
principios fundamentales cuando se disea un componente es que estos deben ser:
Reusable. Los componentes son usualmente diseados para ser utilizados en escenarios diferentes por
diferentes aplicaciones, sin embargo, algunos componentes pueden ser diseados para tareas especficas.
Sin contexto especifico. Los componentes son diseados para operar en diferentes ambientes y contextos.
Informacin especfica como el estado de los datos deben ser pasadas al componente en vez de incluirlos o
permitir al componente acceder a ellos.
Extensible. Un componente puede ser extendido desde un componente existente para crear un nuevo
comportamiento.
Encapsulado. Los componentes exponen interfaces que permiten al programa usar su funcionalidad. Sin
revelar detalles internos, detalles del proceso o estado.
Independiente. Los Componentes estn diseados para tener una dependencia mnima de otros
componentes. Por lo tanto los componentes pueden ser instalados en el ambiente adecuado sin afectar otros
componentes o sistemas.
B E NE FIC IO S
Los siguientes son los principales beneficios del estilo de arquitectura basado en componentes:
Facilidad de Instalacin. Cuando una nueva versin est disponible, usted podr reemplazar la versin
existente sin impacto en otros componentes o el sistema como un todo.
Costos reducidos. El uso de componentes de terceros permite distribuir el costo del desarrollo y del
mantenimiento.
Facilidad de desarrollo. Los componentes implementan un interface bien definida para proveer la
funcionalidad definida permitiendo el desarrollo sin impactar otras partes del sistema.
Reusable. El uso de componentes reutilizables significa que ellos pueden ser usados para distribuir el
desarrollo y el mantenimiento entre mltiples aplicaciones y sistemas.
Mitigacin de complejidad tcnica. Los componentes mitigan la complejidad por medio del uso de
contenedores de componentes y sus servicios. Ejemplos de servicios de componentes incluyen activacin
de componentes, gestin de la vida de los componentes, gestin de colas de mensajes para mtodos del
componente y transacciones.
E J E M P LO S
Componentes de interfaz de usuario, como grillas, botones, etc., generalmente conocidos como
controles.
Componentes de ayuda que exponen un conjunto especfico de funciones usados por otros componentes.
Componentes que se no se usan con mucha frecuencia o son intensivos en recursos y deben ser actividades
usando una aproximacin de solo en el momento justo (Just in Time (JIT)). Estos son comunes en escenarios
de componentes distribuidos o en componentes remotos.
Componentes encolados, aquellos cuyos mtodos pueden ser ejecutados de forma asncrona usando colas
de mensajes del tipo almacenamiento, entrega.
BIBLIOGRAFA
http://cbs.colognet.org/overview.php
http://active.cput.ac.za/myconference/Gregory%20Booth%20-%20Component%20Software%20Development.pdf
https://es.scribd.com/doc/14704374/Arquitectura-Basada-en-Componentes
https://www.ecured.cu/Arquitectura_Software_(desarrollo_de_componentes)
https://msdn.microsoft.com/es-es/library/bb972268.aspx
https://geeks.ms/jkpelaez/2009/04/18/arquitectura-basada-en-componentes/#comment-53
GLOSARIO:
1. QU ES UN COMPONENTE?
En esencia, un componente es una pieza de cdigo pre elaborado que encapsula alguna funcionalidad
expuesta a travs de interfaces estndar
Permite que las pruebas sean ejecutadas probando cada uno de los componentes antes de probar el
conjunto completo de componentes ensamblados.
Cuando existe un dbil acoplamiento entre componentes, el desarrollador es libre de actualizar y/o
agregar componentes segn sea necesario, sin afectar otras partes del sistema.
La calidad de una aplicacin basada en componentes mejorar con el paso del tiempo.
La adicin de una pieza dada de funcionalidad tomar das en lugar de meses aos.
Usando correctamente esta estrategia, el retorno sobre la inversin puede ser ms favorable que
desarrollando los componentes uno mismo.
Para usar un componente que contenga una pieza de funcionalidad, solo se necesita entender su
naturaleza, ms no sus detalles internos. As, una funcionalidad que sera imprctica de implementar en
la empresa, se vuelve ahora completamente asequible.
Consiste en una rama de la Ingeniera de software en la cual se trata con nfasis la descomposicin del
software en componentes funcionales.
Es una pieza conformada como un artefacto del cual se espera que sea reutilizable
Mltiple uso
Contexto no especfico
Encapsulacin
Una unidad independiente de desarrollo con su propio control de versiones
Reusable.
Sin contexto especifico.
Extensible.
Encapsulado.
Independiente.
Facilidad de Instalacin
Costos reducidos
Facilidad de desarrollo
Reusable
Mitigacin de complejidad tcnica
El uso de componentes de terceros permite distribuir el costo del desarrollo y del mantenimiento.