Está en la página 1de 5

Programacin Orientada a Componentes

*Blas Cabas, **Germn Nuez,***Arturo Caraves,****Fernando Javier Villordo. *U.T.N. Facultad Regional Resistencia, 2A, blasc147@gmail.com, ** U.T.N. Facultad Regional Resistencia, 2A, german.nz03@gmail.com, *** U.T.N. Facultad Regional Resistencia, 2A, arturocaraves@gmail.com, **** U.T.N. Facultad Regional Resistencia, 2A, villo_ela21@hotmail.com.
Resumen La programacin orientada a componentes es aquella que se basa en la implementacin de sistemas utilizando componentes, los cuales pueden tener diversos orgenes: ya desarrollados para uso genrico, comprados, o desarrollados a la medida. Su objetivo es construir un mercado global de componentes cuyos usuarios son los propios desarrolladores de aplicaciones que necesitan reutilizar componentes ya hechos y probados para construir aplicaciones de forma ms rpida y robusta o que quieren aadir funcionalidad dependiente de terceros. La reutilizacin de componentes permite ahorrar tiempo en el ciclo de desarrollo, menor inversin y aumento de la calidad del producto. La arquitectura de componentes comunes (CCA) fue lanzada para crear un modelo de componentes adaptado a las necesidades de la computacin cientfica de alto rendimiento; luego fue lanzado Fractal que ms tarde fue ampliado por GCM. La diferencia entre la POC y la programacin orientada a objetos (POO) es: la POC se centra en los mdulos de cdigo intercambiables que trabajan independientemente y no requiere que conozcamos su forma de trabajar interna. La POO se enfoca en las relaciones entre las clases que estn combinadas dentro de un programa en formato binario ejecutable.

1.

Introduccin

La complejidad de los sistemas computacionales actuales nos ha llevado a buscar la reutilizacin del software existente. El desarrollo del software basado en componentes permite reutilizar piezas de cdigo pre elaborado 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 [1]. En este trabajo se describir: lo que es el enfoque basado en componentes, caractersticas y ventajas del mismo. Luego se expone una descripcin de la arquitectura de componentes comunes, los fractales y GCM. Tambin se describe a los componentes, exponiendo sus ventajas, caractersticas y tipos. Luego se hace referencia al desarrollo del software basado en componentes. Finalmente concluimos con las diferencias entre la programacin orientada a componentes y la programacin orientada a objetos y la programacin convencional orientada a subrutinas. 2. Ingeniera de componentes. software basada en

control de la evolucin del software y de la correccin de errores, reutilizacin de partes de software entre programas que pertenecen al mismo o diferente dominio. Dentro de otros objetivos, busca reducir el tiempo de trabajo, el esfuerzo que requiere implementar una aplicacin y los costos del proyecto, y , de esta forma, incrementar el nivel de productividad de los grupos desarrolladores y minimizar los riesgos globales sin incurrir en gastos exorbitantes [8]. El paradigma orientado a componentes pertenece al paradigma de programacin de sistemas abiertos, los cuales son extensibles y tienen una interaccin con componentes heterogneos que ingresan o abandonan el sistema de forma dinmica, o sea, los componentes pueden ser reemplazados por otros independientemente de su arquitectura y desarrollo. La CBSE posee las siguientes ventajas: Reutilizacin de software: favorece un mayor nivel de reutilizacin del software. Simplifica pruebas: antes de probar el montaje de los componentes, permite realizar pruebas de ensayo a los componentes. Simplifica el mantenimiento y la modificacin del sistema: como cada componente est dbilmente acoplado, se los puede actualizar y/o agregar

La ingeniera de software basada en componentes (CBSE) se ocupa de los siguientes aspectos del software: trata la complejidad de la construccin del software, promover la modularidad, tener

componentes segn sea necesario sin afectar otras partes del sistema. Calidad superior: la calidad de una aplicacin basada en componentes mejorar con el tiempo si los componentes pueden ser construidos y mejorados continuamente por un experto u organizacin.

implementar fsicamente sobre la plataforma informtica? [2]. Desafortunadamente, los tres estndares de componentes ms utilizados (CORBA, COM/DCOM, Java Beans), no son apropiados para manejar cmputos cientficos de alto rendimiento debido a la falta de soporte para la comunicacin paralela en forma eficiente, abstracciones de datos cientficos insuficientes (por ej., nmeros complejos), y/o interoperabilidad entre lenguajes limitada. Adems de esto, muchas veces el software no corre sobre los sistemas que utilizan los cientficos, o simplemente corre demasiado lento para sus aplicaciones [2]. Para superar algunas de las limitaciones de los enfoques de software de componentes estndar para la computacin cientfica, se lanz la arquitectura de componentes comunes (CCA) para crear un modelo de componentes adaptado a las necesidades de la computacin cientfica de alto rendimiento (1997).

Al adoptar el enfoque orientado a componentes, se tendr la opcin de comprar componentes de terceros en lugar de desarrollar la misma funcionalidad en casa. La compra a terceros posee los siguientes beneficios: Acortar los ciclos de desarrollo: aadir una pieza dada de funcionalidad tomar das en lugar de meses o aos. Mayor retorno de la inversin (ROI): importante ahorro puede ser adquirido a travs de la compra de componentes de software. Funcionalidad mejorada: para utilizar un componente que contiene una determinada funcionalidad slo es necesario entender su naturaleza y no sus detalles internos o cmo se puede implementar como una pieza de software.[5]

3.

Arquitectura de componentes (CCA). Fractal/GCM.

comunes

Los componentes son bloques de construccin de software que encapsula un conjunto bien definido de las preocupaciones de software, proporcionan interfaces bien definidas para su composicin, se compilan e implementan por separado en una plataforma informtica, tienen ciclos de vida independientes, y estn sujetos a la composicin de terceros. Pueden ser sujetos a la reconfiguracin dinmica, ya sea por sustitucin de componentes o por modificacin de su composicin sin parar la computacin [2]. El rendimiento de las aplicaciones cientficas basadas en componentes depende tanto de la interaccin de las funciones de los componentes como de los recursos de clculo usados para la ejecucin del componente y la interoperacin. Como las operaciones de los componentes y las interacciones pueden ser complejas y dinmicas, y la disponibilidad de recursos puede estar sujeta a variaciones, la gestin de las composiciones de componentes a lo largo de su ejecucin se convierte en un elemento fundamental de su correcta implementacin y uso. El moderno diseo de una plataforma de componentes depende ntimamente de un modelo de componentes. Se publica como un documento estndar que especifica esencialmente: cul es el nivel de detalle de los componentes, cmo expresan sus dependencias e interfaces?, cules son las restricciones, la semntica y los protocolos de sus conexiones?, y cules son los mecanismos para

En el CCA, un componente se define como una coleccin de puertos, donde cada puerto representa un conjunto de funciones que estn disponibles pblicamente. Un puerto se describe utilizando el lenguaje SIDL, y existe alguna forma de envoltura en la aplicacin para asignar la interfaz SIDL a la interfaz del lenguaje de implementacin [3]. Desde el punto de vista de un componente, hay dos tipos de puertos, los puertos usa (dependencias) y puertos provee (servicios), que pueden esperar los enlaces entre sus puertos usa y puertos provee de otros componentes. Esta arquitectura apoya a la computacin paralela y distribuida, as como las conexiones de alto rendimiento entre los componentes locales de una manera independiente del lenguaje. El diseo coloca requisitos mnimos en los componentes entonces facilita la integracin de cdigo existente en el medio ambiente CCA [4]. La CCA se aplica dentro de una gama cada vez mayor de disciplinas, incluyendo la investigacin de combustin, la simulacin del clima global, y la qumica computacional. Fractal propuesto en el 2000, es un modelo de componentes jerrquico, donde los componentes son ya sea primitivos o de material compuesto, construidos por la composicin de los componentes internos. Los componentes de fractal tienen interfaces de cliente y servidor, de forma anloga a los puertos usa y provee de CCA, respectivamente. Tambin se dividen en un contenido y una membrana. El contenido incluye los componentes internos y sus enlaces, mientras

que la membrana proporciona un conjunto de controladores a travs de los cuales es posible consultar o modificar su contenido y el comportamiento [2]. GCM extiende fractal para desplegar componentes en plataformas de computacin en red, tambin adiciona mecanismos autonmicos para la adaptacin y reconfiguracin. 4. Componentes.

Un componente es un objeto de software que implementa cierta funcionalidad y tiene una interfaz bien definida que se ajusta a una arquitectura de componentes que define reglas sobre cmo conectar componentes y trabajar juntos. Los componentes interactan a travs de sus interfaces, y en base a estas, pueden ser integrados en las aplicaciones completas. Esto permite el uso de plug-and-play que es un enfoque de software para la creacin de aplicaciones complejas. Muchos de los componentes pueden proporcionar una funcionalidad que es til para diferentes aplicaciones. Componentes bien diseados pueden ser reutilizables a travs de mltiples aplicaciones con poca o ninguna modificacin. Tambin es posible que un nmero de diferentes componentes puedan exportar la misma interfaz y proporcionar la misma funcionalidad esencial, pero a travs de diferentes implementaciones, permitiendo de ese modo que estos componentes sean interoperables para ser intercambiados dentro de una aplicacin plug-and-play [4].

Existen dos tipos de componentes, componentes de caja blanca y componentes de caja negra. Los de caja blanca son los componentes que son cdigo fuente, ellos son legibles y modificables directamente por los programadores que los utilizan. Los de caja negra son componentes tpicamente en forma compilada o binaria, son componentes discretos que no se pueden cambiar directamente. Todo programador sabe acerca de ellos por la documentacin de los mismos que describen la funcionalidad y sus interfaces pblicas [6]. Los de caja negra extienden su funcionalidad mediante la creacin de un nuevo componente contenedor para ajustar y ampliar el componente existente. Esto evita que la funcionalidad original sea modificada por las actualizaciones, correcciones de errores, etc., realizados por el desarrollador. En los 90 aparecieron los componentes disponibles en el mercado que podran ser comprados (Componentes de Mercado Abierto). Estos componentes se basan en la arquitectura de componentes estndar, y se puede comprar estos componentes sin tener que comprar el apoyo, la integracin, u otros tipos de servicios. Estos son realmente los componentes plug-and-play.

4.1 Ventajas del uso de componentes Salida rpida al mercado: al desarrollarse las aplicaciones ms rpido, lleva un producto al mercado ms rpido y con un coste menor. Los desarrolladores pueden comprar componentes preconstruidos que han sido escritos por expertos en la materia. Encapsulacin de experiencia en el campo: los componentes de software permiten aprovechar la experiencia y tcnicas de negocios ajenos. Si el desarrollador trata de comprender el funcionamiento interno del componente, no ayudar al promotor a obtener all los objetivos de negocio. Medir retorno de la inversin (ROI): el ROI se puede medir con tcnicas mtricas precisas, una de las cuales es el anlisis de puntos de funcin. Esto mide la rapidez con que la funcionalidad se puede colocar en una aplicacin.[5]

4.3 Caractersticas de un componente Identificable: debe tener una identificacin que permita acceder fcilmente a sus servicios y que permita su clasificacin. Auto contenido: no debe requerir de la utilizacin de otros componentes para terminar la funcin para la cual fue diseado. Reemplazable por otro componente: se puede reemplazar por nuevas versiones u otro componente que lo reemplace y mejore. Con acceso solamente a travs de su interfaz: debe asegurar que estas no cambiaran a lo largo de su implementacin. Sus servicios no varan: las funcionalidades ofrecidas en su interfaz no deben variar, pero su implementacin s. Bien documentado: debe estar correctamente documentado para facilitar su bsqueda. Es genrico: sus servicios deben servir para varias aplicaciones. Reutilizado dinmicamente: puede ser cargado en tiempo de ejecucin en una aplicacin. Independiente de la plataforma: hardware, software, sistema operativo

4.2 Tipos de componentes

. 5. Desarrollo de componentes software basado en

definicin de interfaces a bajo nivel, que dificultan la reutilizacin comercial de objetos [9]. La tecnologa de componentes extiende los beneficios de los sistemas scripting y diseo orientado a objetos para apoyar la reutilizacin y la interoperabilidad de los componentes de software. La programacin orientada a componentes al igual que la programacin orientada a objetos, proporciona un modelo para la construccin de software de tal manera que las unidades de cdigo (componentes y objetos) exponen una interfaz pblica en el exterior al tiempo que oculta sus caractersticas internas de ejecucin. Componentes extienden el modelo de objetos al permitir que los componentes descubran y expongan dinmicamente informacin de la interfaz, algo que se determina estticamente en tiempo de compilacin en la mayora de los lenguajes orientados a objetos [3]. Con respecto a la programacin convencional basada en subrutinas, la POC ofrece muchas ventajas, y ellas son: Los componentes proporcionan una especificacin clara de las entradas necesarias a partir de otros componentes o elementos del sistema. Componentes bien diseados tienen el potencial para encapsular paralelismo mejor que las llamadas a procedimientos simples. Una aplicacin multi-componente permite la integracin de los componentes implementados en diferentes idiomas. Los componentes pueden tener estados. Los componentes pueden ser sustituidos, aadidos o eliminados de una aplicacin en tiempo de ejecucin a travs de la vinculacin dinmica. Los componentes se pueden personalizar en el momento que una aplicacin se construye a travs de los parmetros de configuracin o propiedades. Un componente puede tener varias interfaces diferentes. Un componente se puede mover fcilmente a una ubicacin remota sin recompilar otras partes de la aplicacin, en particular otros componentes que interactan con l directamente. Si la llamada no tiene valores de retorno, la programacin de componentes permita la multidifusin de este tipo de llamadas.

Fig.1 Desarrollo basado en componentes [7]. Este modelo es evolutivo por naturaleza y exige un enfoque iterativo para la creacin del software. Configura aplicaciones desde componentes preparados de software (llamados clases). La actividad de la ingeniera comienza con la identificacin de las clases candidatas; esto se lleva a cabo examinando los datos que se van a manejar por parte de la aplicacin y el algoritmo que se va a aplicar para conseguir tratamiento. Los datos y algoritmos se empaquetan en una clase. Las clases creadas se almacenan en una biblioteca de clases o diccionarios de datos. Una vez identificadas las clases candidatas, la biblioteca se examina para determinar si estas clases ya existen. Si existen, se extraen de la biblioteca y se vuelven a utilizar, si no se aplican mtodos orientados a objetos. As se compone la primera iteracin de la aplicacin a construirse, mediante las clases extradas de la biblioteca y las clases nuevas construidas para cumplir las necesidades nicas de la aplicacin. El flujo del proceso vuelve a la espiral y volver a introducir por ltimo la iteracin ensambladora de componentes a travs de la actividad de ingeniera [7]. 6. Programacin orientada a componentes (POC) vs programacin orientada a objetos (POO) y programacin convencional basado en subrutinas.

En la POO el software puede ser desarrollado de acuerdo a un modelo mental de un objeto real o imaginado, mientras que en la POC el software debe ser desarrollado a partir de componentes prefabricados. La POC es una extensin natural de la POO en los sistemas de aplicacin abiertos, que tiene como propsito contrarrestar las limitaciones de esta, como la falta de una unidad concreta de composicin independiente en las aplicaciones, y la 7.

Conclusiones

El modelo orientado a componentes es el desarrollo de software que permite ensamblar y escribir cdigo para hacer que los componentes funcionen adecuadamente. Este modelo es uno de

los muchos modelos de desarrollo que podemos encontrar en el diseo de sistemas, permitiendo la mejora continua del software, mediante la reutilizacin de componentes. El reutilizar trozos de experiencias, ideas y artefactos, no slo asegura no volver a cometer errores del pasado si no que se puede lograr construir cosas cada vez ms grandes y extraordinarias, con bases firmes y calidad incomparable. Las ventajas que podemos destacar de este modelo son: Reutilizacin de software. Mayor calidad. Funcionalidad mejorada. Simplificacin de pruebas. Simplificacin del mantenimiento sistema. Ciclos de desarrollo ms cortos.

del

Este modelo se convirti en el pilar de la Revolucin Industrial del Software y se proyecta hoy en da en diversas nuevas formas de hacer software de calidad con los costos ms bajos del mercado y en tiempos que antes eran impensables. Empresas como Microsoft entendieron el potencial de esta metodologa hace aos y hoy ofrecen nuevas iniciativas y herramientas que buscan llevar al proceso de construccin de software hacia lo ms alto. Bibliografa
[1] Casal Terreos, J. 2013 (Fecha de visita: 14/8/13).http://msdn.microsoft.com/es-es/library/bb972268.aspx [2] Heron, F, Arajo, C. A case study on expressiveness and performance of component-oriented parallel programing. Journal of Parallel anda Distribued Computing. Vol. 73(5). 2013. (Fecha de publicacin online:27/12/12). pp. 557-569. [3] Malony, A, Shende, S, Trebon, N, Ray, J, Armstrong, R, Rasmussen, and Sottile, M. 2004 (Fecha de visita: 1/9/2013). http://www.cs.uoregon.edu/research/paracomp/papers/cca_cpe0 4/html/node2.html#section:component [4] Bernholdt, D. 2008 (Fecha de visita: 1/9/2013) http://www.cs.indiana.edu/~febertra/pubs/bernholdtIJHPCA05.pdf [5] Dr. Fairfax, B. 1999 (Fecha de visita: 1/9/2013). http://webcabcomponents.com/componentization.shtml [6] Empresa ComponentSource. 1996 (Fecha de visita: 1/9/2013) http://www.componentsource.com/services/aboutus/components-es.html [7] Cango, J, Celdo, A, Chamba, M, Larreategui, G. 2009 (Fecha de visita: 14/8/13) http://matriarm.wordpress.com/desarrollo-basado-encomponentes/ [8] Rojas, M, Garca Molina, J. 2004 (Fecha de visita: 14/8/13). http://pegasus.javeriana.edu.co/~jcpymes/Docs/DSBC.pdf [9] Lpez Pacheco, Y. 2011 (Fecha de visita: 14/8/13). http://www.ecured.cu/index.php/Programaci%C3%B3n_orienta da_a_componentes