Está en la página 1de 54

PROGRAMACION BASADA EN COMPONENTES

Dr. Pedro Mejia Alvarez Claudia P. Garcia Zamora Samuel Garrido Daniel

Parte 1

Introduccin

Captulo 1: Introduccin
La programacin basada en componentes es aquella que est basada en la implementacin de sistemas utilizando componentes previamente programados y probados. Los componentes estn bien definidos en todas las dems disciplinas de la ingeniera, sin embargo, debido a la propia naturaleza del software, en sta disciplina aun no est todo completamente definido.

Los componentes son para composicin


La composicin habilita cosas prefabricadas para ser reusadas posteriormente en nuevas composiciones cualesquiera. Para convertir un elemento en reusable, no es suficiente iniciar con un diseo monoltico de una solucin completa y entonces particionarla en fragmentos. Las descripciones de los componentes deben estar generalizadas cuidadosamente para permitir la reusabilidad en un nmero suficiente de diferentes contextos.

Los componentes son para composicin (ii)


Los componentes de software son unidades ejecutables de adquisicin, implementacin y produccin independiente que pueden formar parte de un sistema funcional. El requerimiento de la independencia y la forma ejecutable elimina muchas abstracciones del software; tales como declaraciones de tipo, macros de C plantillas de C++. Otras abstracciones, como procedimientos, clases, mdulos, o an aplicaciones enteras, pueden formar componentes, mientras estn en una forma ejecutable que sea integrable. (Motivo)

Hechos a la medida VS Software Estndar


El desarrollo tradicional de software se divide en dos partes: 1. Un proyecto desarrollado en su totalidad lnea por lnea con solo la ayuda de herramientas de programacin y libreras. 2. Se compra software estndar y se parametriza para proporcionar una solucin que est muy cerca de ser lo que requiere el cliente.

Ventajas y desventajas de:


(Si funciona) Puede ser adaptado al modelo del negocio del cliente.
La produccin este tipo de software es una empresa muy costosa (mantenimiento). La mayora de los proyectos grandes fallan parcialmente o totalmente, conduciendo a un riesgo sustancial (interoperabilidad con otros sistemas locales). En un mundo de rpidos y continuos cambios en los requerimientos de los negocios, este tipo de software es usualmente muy lento para ser productivo antes de convertirse en obsoleto.

Ventajas y desventajas de (ii):


Disminuye el riesgo. El vendedor de sw estndar busca disminuir los problemas del mantenimiento, de la evolucin del producto, y de la interoperabilidad. Parametrizacin y configuracin detallada entre las versiones (inevitable en un mundo de cte. cambio). Implica una reorganizacin del proceso del negocio en cuestin. Debido a que no est bajo control local, no es suficientemente apto para adaptarse rpidamente a cambios, en los requerimientos, que pudieran surgir.

El papel de los componentes


El concepto de componente de software representa una posible solucin. Aunque cada componente comprado es un producto estandarizado, con todas las ventajas adjuntas, el proceso de ensamblar componentes ofrece la oportunidad de ser una actividad muy atractiva para el cliente.
En la solucin basada en componentes, la evolucin reemplaza la revolucin, y la actualizacin individual de componentes que se requiera permite operaciones ms suaves. Obviamente, se requiere un camino diferente para administrar los servicios, pero los beneficios potenciales son inmensos.

Los componentes son inevitables


Gran aceptacin en su uso si ofrecen suficiente variedad y calidad.
Una vez satisfaciendo las necesidades de los clientes, el uso de componentes se vuelve inevitable. Componentes no disponibles provoca la reinvencin de nuevas soluciones. Justifidas solo si la solucin creada es superior a la alternativa que se puede comprar.

Un producto que utiliza los beneficios de los componentes hace uso de una combinacin de productividad e innovacin de todos los vendedores de componentes.

Naturaleza del SW e implementacin de entidades


Inicialmente los componentes de sw fueron considerados similares a los componentes de hw, como los CI (CI de software). Tambin en Mecnica e ingeniera civil. Sin embargo, el software es diferente a los productos de todas las dems disciplinas de ingeniera. Es importante distinguir entre el software y sus instancias para as diferenciar entre modelos y productos (plano-edif.) Los planos pueden ser parametrizados, aplicados recursivamente, escalados, e inicializados cualquier nmero de veces. Actividades no aplicables a instancias. El SW es un metaproducto genrico que puede ser usado para crear familias enteras de instancias.

Componentes: Unidades de Implementacin


La unidad de implementacin es algo ms esttico que un obj.; como una clase, o un conjunto de clases, compilado y enlazado en algn paquete. Y debido a que los objetos casi nunca se compran o venden, stos no constituyen unidades de implementacin. La definicin de objetos es puramente tcnica la encapsulacin del estado y el comportamiento, el polimorfismo, y la herencia. Esta definicin no incluye nociones de independencia o composicin posterior. Un componente debe tener un nmero considerable de usos y de clientes, para que sea viable. El uso repetido est detrs del concepto de reusabilidad.

Lecciones Aprendidas
Visual Basic de Microsoft. Java. Enterprise JavaBeans (EJB). COM+. Todos los sistemas operativos modernos. Recientemente, las arquitecturas plugin. Arquitecturas en la web basadas en ASPs Arquitecturas en la web basadas en JSPs Integracin de servidores alrededor de J2EE y COM+ / .NET

Lecciones Aprendidas (ii)


Mltiples componentes de diferentes fuentes pueden coexistir en la mima instalacin. Los componentes existen en un nivel de abstraccin en el que significan algo directamente para el cliente (Visual Basic). La mayora de los objetos no tienen significado para los clientes que no son programadores. Configurar e integrar un objeto individual dentro de algn sistema dado no es posible normalmente, as que los objetos no pueden ser vendidos independientemente como los componentes.

Captulo 2: El mercado VS la teconologa


Los componentes son activos reutilizables. Resolver un problema general en lugar de uno especfico implica ms trabajo. Los componentes son viables slo si la inversin en su desarrollo regresa como un resultado de su venta. Tecnologa imperfecta en un mercado de trabajo es sostenible Tecnologa perfecta sin ningn mercado ser vana

Crear un Mercado
Un nuevo producto puede crear un mercado solo si su llegada ya se estaba esperando. Un camino elegante es el que evita crear mercados y se expande cuidadosamente en mercados ya establecidos. (estrategia de Microsoft con su V. Basic en Internet). La produccin de componentes debe ser menos costosa que la produccin de soluciones completas. Adems, el empaquetarlos o ligarlos con componentes relacionados ayuda a disminuir los costos de distribucin; pues algunos componentes no son capaces de sostener, solos, los precios que los podran hacer viables.

Propiedades fundamentales de la Tecnologa de Componentes


El establecimiento de mercados de componentes descansa en la factibilidad tecnolgica. En un mercado abierto de desarrolladores de componentes independientes, el conjunto de posibles combinaciones (en el uso de componentes) no es conocido por ninguna de las partes involucradas. Los componentes necesitan estar construidos de tal manera que permitan una comprobacin modular. La seguridad (si hay fallas no se debe colapsar el Sist.) La funcionalidad. El rendimiento.

El desarrollo de un mercado
ComponentSource ocupa un de los lugares ms amplios dentro del mercado de componentes de software y desarrollo de herramientas. Preferencia por COM (ActiveX).
Tabla 2.1 Productos ofrecidos en ComponentSource

Distribucin de los componentes ofrecidos ComponentSource

Figura 2.1: Mercado compartido en ComponentSource.

Flashline es otra compaa importante en el mercado de componentes de SW. Comparada con ComponentSource, se enfoca en el desarrollo de componentes para el servidor y tiene preferencia por las tecnologas basadas en Java.

Captulo 3: Estndares
Los estndares son tiles para establecer acuerdos entre los modelos comunes, habilitando en un principio la interoperabilidad.

Los estndares tambin pueden ser usados para crear acuerdos en especificaciones concretas de interfaces, habilitando una composicin efectiva.

Extrema importancia de los (cuasi) estndares


Para que un componente encuentre un razonable nmero de clientes, necesita tener requerimientos que puedan ser ampliamente soportados.

Tambin necesita proporcionar servicios que puedan ser ampliamente solicitados.


Un componente necesita sostener una porcin significativa de un mercado especfico en su dominio.

Extrema importancia de los (cuasi) estndares(ii)


Si un componente cubre las necesidades de un nmero pequeo de clientes, el vendedor conocer exactamente las necesidades individuales de los clientes (el caso extremo es el desarrollo de componentes para solo un propsito y slo para un cliente). Como el nmero de usos potenciales y de clientes potenciales crece, es improbable que que cualquier componente pueda cubrir todas las necesidades mientras es implementado. El punto medio inevitable en el que clientes y vendedores necesitan posicionarse es el que est basado en los estndares.

Dnde est la tecnologa de componentes hoy en da?


Es claro que los componentes de un dominio general se convertirn en los ms provechosos de todos y esos mercados substanciales sern creados.

Sin embargo, los estndares de dominio especficos plantean hoy la mayora de las preguntas. Deben los estndares venir antes de los productos y de los mercados, o viceversa? Ni los productos ni los bosquejos de estndares han alcanzado un nivel de madurez o de impacto que permita a cualquier prediccin hoy en da.

Parte 2

Fundamentacin

Captulo 4 Qu es un componente y qu no lo es?


Los trminos componente y objeto son a menudo usados de forma intercambiable.

La programacin orientada a componentes se apoya de conceptos que fundamentan este paradigma, as como modelos de diseo, metodologas, estndares e incluso problemas.

Componente
Unidad de composicin de aplicaciones de software, que posee un conjunto de interfaces y un conjunto de requisitos, y que ha de poder ser desarrollado, adquirido, incorporado al sistema y compuesto con otros componentes de forma independiente, en tiempo y espacio.

Las propiedades caractersticas de un componente son:


Es una unidad de implementacin independiente. Es una unidad compuesta por terceras partes. No cuenta con un estado observable desde el exterior.

Componente(ii)
Las terceras partes no pueden acceder a los detalles de construccin del componente.
Debe ser suficientemente autocontenido. Especificaciones claras de lo que requiere y de lo que proporciona. Interacciona con su entorno a travs de interfaces bien definidas. No tener estados observables desde el exterior excepto atributos no funcionales como el nmero de serie.

Componente(iii)
Son unidades de peso pesado, existe solo una copia.
Por tanto, en un proceso se puede decir si hay o no un componente, pero no varias instancias del mismo. Propsito de rehso bien definido. No puede ser parcialmente implementada

Objeto
Un objeto es una unidad de instanciacin con una identidad nica, un estado y un conjunto de operaciones. El estado esta representado por el conjunto de valores que toman las propiedades en un instante de tiempo, el cual vara dinmicamente como resultado de la ejecucin de sus operaciones.
En contraste con las propiedades caractersticas de un componente, las propiedades caractersticas de un objeto son las siguientes: Es una unidad de instanciacin, tiene una nica identidad. Puede tener estados y estos pueden ser observables externamente. Encapsula su estado y comportamiento.

Objeto(ii)
No puede ser parcialmente instanciada.
Como los objetos son instanciados necesitan tener un plan de construccin que describa el espacio del estado, el estado inicial y el comportamiento del nuevo objeto. La clase es la plantilla genrica que define el espacio de estados posibles del objeto y a partir de la cual se pueden instanciar los objetos.

Componentes y Objetos
No hay necesidad para que un componente contenga clases nicamente. Un componente puede contener:
Procedimientos tradicionales, y siempre tener variables globales. Puede ser realizado en su totalidad utilizando programacin funcional. Cualquier otro enfoque.

Dependencias del contexto


Interfaces requeridas
Entorno de componentes para el cul esta preparado (COM, CORBA, .NET, J2EE). Plataforma (Hardware/Software)

Interfaces
Determinan las operaciones que el componente implementa como las que precisa utilizar de otros componentes durante la ejecucin. Usualmente son los atributos y mtodos pblicos que el componente implementa ms los eventos que emite.
La especificacin de las interfaces es un contrato. El respeto de este contrato por parte del cliente y componente asegura el xito de la interaccin

Contratos de Especificacin
Un contrato de especificacin establece las condiciones de uso e implementacin que ligan a los clientes y proveedores del componente. Los contratos cubren aspectos tanto funcionales (semntica de las operaciones de la interfaz) como no funcionales (calidad de servicio, prestaciones, fiabilidad o seguridad).

Estados y Contratos del Componente


En su estado final el componente representa una unidad de ejecucin o utilizacin que opera en un modelo de componentes (CORBA, .NET, J2EE, etc.),

Estados y Contratos del Componente(ii)


Especificacin del Componente. Esta fase
especifica el componente de manera independiente a la plataforma en la que va a ser construido. La especificacin del componente se alcanza a travs de la especificacin de las interfaces que lo conforman.

Estados y Contratos del Componente(iii)


Implementacin del Componente. En esta
fase se realiza o traduce la especificacin ya definida a un entorno de implementacin concreto, utilizando un lenguaje de programacin determinando y respetando los reglas que establece un modelo de componentes.

Estados y Contratos del Componente(iv)


Instalacin del componente. Se ejecutan las
acciones necesarias para dar disponibilidad del componente en la plataforma especfica, para ser utilizado por las diferentes aplicaciones.

Estados y Contratos del Componente(v)


Objeto Componente. Instancia de un componente
ya instalado en el momento cuando este va a ser invocado para su utilizacin.

Estados y Contratos del Componente(vi)


Se distinguen dos tipos de contrato:
El contrato de uso que establece un acuerdo entre la interface del objeto componente y sus clientes El contrato de realizacin que establece un acuerdo entre la especificacin del componente y sus implementaciones.

Capitulo 5 Programacin Orientada a Componentes


La programacin basada en componentes(PBC) es aquella que se basa en la implementacin de sistemas utilizando componentes previamente programados y probados. La construccin de esos componentes se realiza mediante la programacin orientada a componentes.

Capitulo 5 Programacin Orientada a Componentes


Variante natural de la programacin orientada a objetos para los sistemas abiertos.

Objetivo: Construir un mercado global de componentes (MGC) cuyos usuarios son los propios desarrolladores de aplicaciones que necesitan reutilizar componentes ya hechos y probados para construir sus aplicaciones de forma ms rpida y robusta o que quieren aadir funcionalidad dependiente de terceros.

Programacin Orientada a Componentes(ii)

Entidades bsicas: Componentes - cajas negras que


encapsulan cierta funcionalidad y que son diseadas para el Mercado Global de Componentes sin saber quin las utilizar, ni cmo, ni cundo.

POC frente a la POO


Una diferencia entre las dos metodologas es la manera en la cul visualizan la aplicacin final.
La POO se enfoca en las relaciones entre las clases que estan combinadas dentro de un programa en formato binario ejectuable.
La POC se enfoca en los mdulos de cdigo intercambiables que trabajan independientemente y no requieren que nosotros estemos familiarizados con su forma de trabajar interna.

POC frente a la POO


Si alguna clase sufre cambios: Re-enlazamiento masivo de la aplicacin completa Realizar nuevamente las pruebas Re-implementacin de posiblemente todas las dems clases.
Si es necesario modificar un componente: Los cambios son contenidos solo en el componente. No existiendo la necesidad de re-compilacin o reimplementacin. Pueden ser actualizados aunque la aplicacin este corriendo, mientras el componente no se encuentre en uso.

Beneficios que proporciona la POC


Una aplicacin orientada a componentes es fcil de extender. Cuando se tienen nuevos requerimientos a implementar, se pueden proveer nuevos componentes, sin tocar los componentes existentes, no afectndolos as por los nuevos requerimientos.
Esos factores permiten a la programacin orientada a componentes reducir el costo a lo largo de la etapa de mantenimiento, esto es un factor esencial en la mayora de los negocios, en los cuales s esta extendiendo el uso de la tecnologa de componentes.

Otros conceptos bsicos de POC


Componentes COTS Composicin tarda Entornos Eventos Polimorfismo Reflexin

Tendencias de la POC
Lenguajes de programacin
Java, Component Pascal, Oberon, Mdula 3 y ADA 95

Modelos de desarrollo Aspectos de calidad en componentes

Problemas de la POC
Clarividencia Percepcin del entorno Falta de soporte formal Interoperabilidad

Diseo Basado en Componentes


En el DSBC, pueden identificarse varias tareas especficas para la construccin de aplicaciones utilizando componentes COTS:
(1) La bsqueda (trading) de componentes que satisfagan los requisitos impuestos tanto por el cliente como por la arquitectura de la aplicacin (2) La evaluacin de los componentes candidatos para seleccionar los ms idneos; (3) La adaptacin y/o extensin de los componentes seleccionados para que se ajusten a los requisitos anteriores. (4) La integracin, configuracin e interconexin de dichos componentes para construir la aplicacin final.

Diseo Basado en Componentes


Un factor imprescindible en todas esas tareas es la documentacin de los componentes. Lenguajes de descripcin de interfaces (IDLs)
Documentar requerimientos no funcionales

Ingeniera de Software Basada en Componentes


En la Ingeniera de Software Basada en componentes (Component Based Software Engineering CBSE) el desarrollo de una solucin software se percibe como un trabajo de adaptacin y composicin a partir de componentes, los cuales pueden tener diversos orgenes: ya desarrollados para uso genrico, comprados, o desarrollados a la medida.

Ingeniera de Software Basada en Componentes(ii)


Objetivos
(1) Desarrollar sistemas a partir de componentes ya construidos. (2) Desarrollar componentes como entidades reusables.

(3) Mantener y evolucionar el sistema a partir de la adaptacin y reemplazo de sus componentes.

PREGUNTAS?