Escolar Documentos
Profissional Documentos
Cultura Documentos
Integrantes:
Fontn, Emmanuel
Contenido:
Introduccin....................................................................................................................................... 3 Por qu surge est metodologa?................................................................................................. 4 Conceptos Bsicos:......................................................................................................................... 4 Un acercamiento al concepto de Componente.................................................................................. 5 Diferencia entre componentes y clases de objetos: ....................................................................... 6 Componentes COTS (Commercial-Off-The-Shelf)........................................................................... 6 Ingeniera de Software Basada en Componentes (ISBC).................................................................... 7 Fase de Construccin y adaptacin de la Ingeniera....................................................................... 8 Programacin Orientada a Componentes.......................................................................................... 9 Conceptos bsicos de la POC.......................................................................................................... 9 Problemas tpicos de la POC......................................................................................................... 10 Tecnologas de Implementacin....................................................................................................... 12 CORBA.......................................................................................................................................... 12 Middleware (capa de software intermedia)................................................................................. 12 Frameworks.................................................................................................................................. 13 JavaBeans..................................................................................................................................... 13 Conclusiones y Trabajo Futuro......................................................................................................... 15 Referencias....................................................................................................................................... 16
2010
2|Pgina
Introduccin
El presente trabajo trata de explicar los lineamientos generales y los conceptos bsicos que presenta el Desarrollo de Software Basado en Componentes (DSBC) reutilizables y distribuidos, y los procesos de ingeniera que sugiere este modelo. Est metodologa es una disciplina muy reciente, que surge como una extensin del paradigma de desarrollo Orientado a Objetos1 para arquitecturas de desarrollo donde los sistemas de aplicaciones son distribuidos y abiertos, y que presentan una complejidad inherente al sistema relativamente alta, donde este ltimo modelo se ve seriamente limitado , como por ejemplo los sistemas de informacin distribuidos bajo Web o las Telecomunicaciones. As tambin, se basa y extiende el modelo de objetos, y mantiene muchas de sus caractersticas principales, agregando la filosofa del ensamblaje de componentes de software independientes y previamente construidos y testeados, y extendiendo ms an el concepto de reutilizacin del software dentro de las aplicaciones. Como es una disciplina joven y aunque ha tenido un gran impulso en lo que es la vanguardia del desarrollo de software de hoy en da, an se encuentra en continuo desarrollo y evolucin; sin embargo, podemos destacar algunos de los conceptos que son pilares fundamentales y sientan las bases de esta metodologa. El objetivo del presente trabajo es justamente tratar de describir de manera breve dichos conceptos sobre los que se apoya el desarrollo de aplicaciones software basado en componentes reutilizables. En particular, nos centraremos en el proceso de Ingeniera de Desarrollo Basado en Componentes y en un vistazo a las plataformas presentes hoy en da para implementar aplicaciones creadas con dicha ingeniera, sin profundizar demasiado en conceptos tales como reutilizacin de software o aspectos de calidad y marketing de componentes comerciales (COTS), que creemos daran pie para otro trabajo mucho ms extenso. En primer lugar, se ofrece una introduccin a los conceptos bsicos necesarios para comprender las definiciones ms avanzadas que se muestran a lo largo del trabajo. Despus se presenta un acercamiento al concepto de componente de software, y al de Ingeniera de Desarrollo Basada en Componentes, y a los procesos que propone para construir aplicaciones en estos nuevos ambientes. Luego, se explicar la Programacin Orientada a Componentes (POC), un paradigma que ofrece herramientas prcticas de programacin para la construccin y utilizacin de componentes reusables, con el objetivo de lograr un mercado global de software. Finalmente, haremos un acercamiento a las tecnologas y plataformas actuales de desarrollo y de ejecucin de componentes que permite aislar la mayor parte de las dificultades conceptuales y tcnicas que conlleva la construccin de aplicaciones de este tipo.
2010
Conceptos Bsicos
POR QU SURGE EST METODOLOGA ? La metodologa de software basada en Componentes surgi a finales de los 90's como una aproximacin basada en la reutilizacin al desarrollo de sistemas de software. Est metodologa fue motivada por la frustracin de los desarrolladores de que el modelo orientados a objetos no aplicaba una reutilizacin extensiva, tal como sta sugera originalmente, debido a que la utilizacin de clases implica el conocimiento detallado de ellas, lo cual significa que se deba tener acceso al cdigo fuente lo que imposibilitaba el marketing de clases para su reutilizacin. CONCEPTOS BSICOS: Segn [Vallecillo, Troya, & Fuentes, 2001], en este contexto entenderemos por sistema de aplicacin a un conjunto de herramientas que permiten la creacin e interconexin de componentes software, junto con una coleccin de servicios para facilitar las labores de los componentes que residen y se ejecutan en l. Un sistema se denomina independientemente extensible si puede ser dinmicamente extendido, y en donde pueden combinarse extensiones independientemente desarrolladas por distintas partes o entidades, sin conocimiento unas de otras. Diremos que un sistema es abierto si es concurrente, independientemente extensible, y permite a componentes heterogneos ingresar o abandonar el sistema de forma dinmica. Estas condiciones implican que los sistemas abiertos son inherentemente evolutivos, y que la vida de sus componentes es ms larga corta que la del propio sistema. As, la Programacin Orientada a Objetos (POO) ha sido el sustento de la ingeniera del software para los sistemas cerrados. Sin embargo, se ha mostrado insuficiente al tratar de aplicar sus tcnicas para el desarrollo de aplicaciones en entornos abiertos. Sin embargo, disponer de componentes no es suficiente tampoco, a menos que seamos capaces de reutilizarlos. Y reutilizar un componente no significa usarlo ms de una vez, sino que implica la capacidad del componente de ser utilizado en contextos distintos a aquellos para los que fue diseado. En este sentido, la reutilizacin es un concepto ms abarcativo que solo limitarse a la reutilizacin de cdigo fuente: ella involucra el uso de otros elementos de software, tales como arquitecturas de software y soluciones diseos estructurales que han probado su utilidad en situaciones similares ( patrones de diseo), e incluso partes enteras de programas se pueden reutilizar adaptndolas al proyecto especifico que estamos desarrollando.
2010
4|Pgina
esta disponible, por lo que el componente no tiene que ser compilado antes de que sea usado por otros componentes del sistema. 2- Los servicios ofrecidos por componentes estn disponibles a travs de una interfaz, y todas las interacciones son a travs de esa interfaz. La interfaz del componente se expresa en trminos de operaciones parametrizadas y su estado interno nunca se muestra. Interfaces: Los componentes se definen por sus interfaces y puede considerarse que tienen dos interfaces relacionadas. 1- Interfaz que proporciona: Define los servicios que proporciona el componente, lo que se conoce como el API del componente. Define los mtodos que pueden ser llamados por el usuario del componente. 2- Interfaz que requiere: Especifica que servicios son necesarios para que el componente funcione, estos son requeridos de otros componentes del sistema. Esto no altera la independencia del componente, debido a que los servicios que se requieren no son solicitados a un componente especifico.
2010
5|Pgina
Define los servicios que utiliza de los componentes del entorno ponentes del entorno
Componente
DIFERENCIA ENTRE COMPONENTES Y CLASES DE OBJETOS: Los componentes se desarrollan normalmente de forma similar a los objetos pero difieren en varios aspectos:
1- Los componentes son entidades desplegables: No son compilados, se instalan
23-
4-
5-
directamente en una plataforma de ejecucin. Los mtodos y atributos definidos en sus interfaces pueden ser accedidos por otros componentes. Los componentes no definen tipos: Las clases definen un tipo de dato abstracto y los objetos son instancias de ese tipo. Un componente ya es una instancia. Las implementaciones de los componentes son opacas: La implementacin de componentes esta oculta para los usuarios. Los componentes se suelen entregar como unidades binarias de este modo el que lo adquiere no tiene acceso a la implementacin. Los componentes son independientes del lenguaje: Las clases de objetos tienen que seguir las reglas de los lenguajes orientados a objetos, y generalmente solo pueden con otras clases escritas en el mismo lenguaje. Los componentes suelen implementarse en lenguajes orientados a objetos pero tambin pueden implementarse en lenguajes no orientados a objetos. Los componentes estn estandarizados: Esto significa que los componentes deben ajustarse a un modelo que restringe su implementacin, a diferencia de las clases de objetos que pueden implementarse de cualquier forma.
COMPONENTES COTS (COMMERCIAL -OFF-THE-SHELF) La mayora de de las metodologas de reutilizacin actuales no contemplan el uso de componentes comerciales ya existentes para el desarrollo de aplicaciones software. A estos tipos de software se los conoce con el nombre de comerciales fuera de la plataforma o componente COTS. El termino COTS hace referencia al software comercial desarrollado previamente por terceras partes, fuera de las estrategias de desarrollo y aplicadas durante todo el ciclo de vida del producto a desarrollar en base a productos comerciales. Esta clase de componente software generalmente es adquirido en formato binario, sin posibilidad de tener acceso al cdigo fuente y sin informacin adicional que ayude a los integradores en la seleccin correcta de los mismos. Esto impide pensar en tareas para la automatizacin de procesos [Iribarne & Vallecillo].
2010
6|Pgina
comunicacin con el cliente- las tareas requeridas para establecer comunicacin entre el desarrollador y el cliente. planificacin- las tareas requeridas para definir recursos, el tiempo y otra informacin relacionadas con el proyecto. anlisis de riesgos- las tareas requeridas para evaluar riesgos tcnicos y de gestin. construccin y adaptacin de la Ingeniera evaluacin del cliente- las tareas requeridas para obtener la reaccin del cliente segn la evaluacin de las representaciones del software creadas durante la etapa de ingeniera e implementada durante la etapa de instalacin.
Evoluciona con el tiempo, se crean versiones cada vez ms completas del producto . 7|Pgina
2010
FASE DE CONSTRUCCIN Y ADAPTACIN DE LA INGENIERA La actividad comienza con la identificacin de 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 el tratamiento. Los datos y los algoritmos correspondientes se empaquetan en una clase. Las clases creadas en los proyectos de ingeniera de software anteriores, se almacenan en una biblioteca de clases o diccionario de datos (repositorio). Una vez identificadas las clases candidatas, la biblioteca de clases se examina 3 para determinar si estas clases ya existen. En caso de que as fuera, se extraen de la biblioteca y se vuelven a utilizar. Si una clase candidata no reside en la biblioteca, se aplican los mtodos orientados a objetos para desarrollarla y se la agrega a la biblioteca para tenerla disponible en futuras iteraciones o futuras aplicaciones. Se crea una o ms representaciones (entregables) de la aplicacin, mediante las clases extradas de la biblioteca y las clases nuevas construidas para cumplir las necesidades nicas del proyecto, y se pasa a la fase de evaluacin del cliente. Se compone as la primera iteracin de la aplicacin , y el flujo del proceso vuelve a la espiral, para continuar iterando el proyecto para perfeccionarlo. El modelo de desarrollo basado en componentes conduce a la reutilizacin del software, y la reutilizacin proporciona beneficios a los ingenieros de software. Reduce en gran medida el tiempo del ciclo de desarrollo y el coste del proyecto, y aumenta la productividad 4. [Pressman, 2002]
3 4
Esto se conoce comnmente como trading Estos resultados estn en funcin directa de la robustez de la biblioteca de componentes. 8|Pgina
2010
de la interfaz) como no funcionales (calidad de servicio, prestaciones, fiabilidad o seguridad). Polimorfismo: Habilidad de un mismo componente de mostrarse de diferentes formas, dependiendo del contexto; o bien la capacidad de distintos componentes de mostrar un mismo comportamiento en un contexto dado. En POC muestra tres nuevas posibilidades: La reemplazabilidad (Inclusin), o capacidad de un componente de reemplazar a otro en una aplicacin, sin romper los contratos con sus clientes. El polimorfismo paramtrico, o implementacin genrica de un componente. Este no se resuelve en tiempo de compilacin (generando la tpica explosin de cdigo) sino en tiempo de ejecucin. Por ltimo, el polimorfismo acotado, para indicar restricciones sobre los tipos sobre los que se puede parametrizar un componente. Seguridad: Garanta que debe ofrecer un componente de respetar sus interfaces y contratos. -Seguridad a nivel de tipos: Asegura que las invocaciones usen los parmetros adecuados (o supertipos) y que los valores que devuelven son del tipo adecuado (o subtipos). -Seguridad a nivel de mdulo: Asegura que solo se utilizan los servicios ajenos al componente que se han declarado. Reflexin: Habilidad para conocer y modificar el estado de un componente. PROBLEMAS TPICOS DE LA POC POC es una disciplina muy joven y por tanto en la que los resultados obtenidos hasta ahora se centran ms en la identificacin de los problemas que en la resolucin de los mismos. Algunos de retos y problemas con los que se enfrenta actualmente son: 1. Clarividencia. Se refiere a la dificultad con la que se encuentra el diseador de un componente al realizar su diseo, pues no conoce ni quin lo utilizar, ni cmo, ni en qu entorno, ni para qu aplicacin. Este problema est muy ligado a la composicin tarda y reusabilidad de los componentes. 2. Evolucin de los componentes. La gestin de la evolucin es un problema serio, pues en los sistemas grandes han de poder coexistir varias versiones de un mismo componente. 3. Percepcin del entorno. Habilidad de un componente de descubrir tanto el tipo de entorno en donde se est ejecutando (de diseo o de ejecucin), como los servicios y recursos disponibles en el.
2010
10 | P g i n a
4. Particularizacin. Cmo particularizar los servicios que ofrece un componente para adaptarlo a las necesidades y requisitos concretos de nuestra aplicacin, sin poder manipular su implementacin. 5. Falta de soporte formal. La POC tambin se encuentra con otro reto aadido, como es la dificultad que encuentran los mtodos formales para trabajar con sus peculiaridades, como puede ser la composicin tarda, el polimorfismo o la evolucin de los componentes. 6. El problema de la clase base frgil (FBCP). Este problema ocurre cuando la superclase de una clase sufre modificaciones. El FBCP existe a dos niveles, sintctico y semntico. A nivel sintctico ocurre cuando las modificaciones de la superclase son puramente a este nivel. A nivel semntico ocurre cuando lo que se altera es la implementacin de los mtodos de la superclase. 7. Asincrona y carreras de eventos. Problema que se presenta por los tiempos de comunicacin en los sistemas abiertos (no se pueden despreciar retrasos). Es muy difcil garantizar el orden relativo en el que se distribuyen los eventos. El proceso de difusin de eventos es complicado cuando los emisores y receptores pueden cambiar con el tiempo. 8. Interoperabilidad. Actualmente, los contratos de los componentes se reducen a la definicin de sus interfaces a nivel sintctico, y la interoperabilidad se reduce a la comprobacin de los nombres y perfiles de los mtodos. Sin embargo, es necesario ser capaces de referirnos y buscar los servicios que necesitamos por algo ms que sus nombres, y poder utilizar los mtodos ofrecidos en una interfaz en el orden adecuado.
Quiz sea POC la disciplina de la programacin con mayor proyeccin a corto y medio plazo por el planteamiento tan apropiado que realiza de la construccin de aplicaciones para sistemas abiertos, a partir de esto se busca cubrir las necesidades de la industria. Actualmente es uno de los campos de investigacin ms activos de la comunidad software.
2010
11 | P g i n a
Tecnologas de Implementacin
CORBA 5 CORBA es un estndar que establece una plataforma de desarrollo de sistemas distribuidos facilitando la invocacin de mtodos remotos (componentes) bajo un paradigma orientado a objetos. Este estndar define las APIs, el protocolo de comunicaciones y los mecanismos necesarios para permitir la compatibilidad entre diferentes aplicaciones que se escriben en lenguajes distintos y se corren en distintas plataformas, por lo que se asemeja a la computacin distribuida. Este estndar consta en encerrar el cdigo escrito en otro lenguaje, en un paquete que contiene adems alguna informacin sobre el cdigo que encierra y sobre cmo llamar y utilizar sus mtodos (que son las interfaces). Los objetos que resultan de este empaquetamiento, pueden entonces ser invocados desde otro programa (u objeto CORBA) desde la red. El estndar utiliza un lenguaje de definicin de interfaces (IDL) para especificar la forma en que deben ser llamados los mtodos que contiene un objeto CORBA (liberando al programador de conocer la implementacin de estos mtodos). Se puede especificar a partir de este IDL, la interfaz para utilizar el objeto CORBA en cualquier lenguaje. Implementaciones estndar existen para Ada, C, C++, Smalltalk, Java, Python, Perl y Tcl. Cuando se compila una interfaz en IDL se genera cdigo para el cliente y el servidor (el implementador del objeto). El cdigo del cliente sirve para poder realizar las llamadas a mtodos remotos, e incluye un proxy (representante) del objeto remoto en el lado del cliente. El cdigo generado para el servidor consiste en un esqueleto (o una estructura) y el desarrollador tiene que codificar para implementar los mtodos del objeto. El estndar, ms que ser una especificacin multiplataforma, tambin define servicios fundamentales de seguridad y de transacciones. MIDDLEWARE (CAPA DE SOFTWARE
INTERMEDIA )
Consiste en un software que proporciona interoperabilidad entre servicios de aplicaciones y organiza todos los recursos en una grid (nueva forma de computacin distribuida), en la cual los recursos pueden ser heterogneos, es decir, poseer diferentes arquitecturas, supercomputadores, clusters, etctera, y se encuentran conectados mediante redes de rea extensa, la ms clsica es Internet).
5
2010
12 | P g i n a
Este software una ver funcionando automatiza todas las interacciones mquina a mquina (llamada tambin M2M) y crea una nica grid computacional. Funcionamiento: El middleware negocia de manera automtica el intercambio de recursos. La negociacin consiste en cmo se va a realizar la transaccin de los recursos desde el proveedor de recursos de grid hacia el usuario de la grid. Existen dos tipos de middleware en estas negociaciones:
1. Los que presentan metadatos (datos acerca de los datos) que describen datos y
recursos.
2. Y los que se encargan de las negociaciones M2M (Mquina a Mquina), requeridas
para la autenticacin y la autorizacin que debe tener cada usuario para utilizar un recurso. Luego se constituyen acuerdos para acceder a los datos y recursos solicitados por el cliente. Pero no termina ah: una vez que se establece el acuerdo, el middleware supervisa la transferencia de los recursos y optimiza el enrutamientos de la red. FRAMEWORKS Un framework es una estructura conceptual y tecnolgica compuesta por mdulos de software concretos, que sirven de base para organizar y desarrollar nuevos proyectos de software. Los frameworks incluyen soporte para programas, bibliotecas y distintos programas para ayudar a desarrollar y unir los distintos componentes de un proyecto. Los frameworks fueron creados para facilitar la tarea de desarrollo de software, permitindoles a los diseadores y programadores pasar ms tiempo estableciendo correctamente los requerimientos de un software y pasar menos tiempo en los detalles de implementacin para proveer un sistema funcional. Sin embargo, en los ltimos tiempos surgieron muchas quejas sobre los framework ya que segn dicen aade cdigo innecesario y por la falta de un framework de calidad y simplicidad, el tiempo que antes haba que pasar programando ahora hay que pasarlo aprendiendo a usar un framework.
JAVABEANS6 Los JavaBeans son un modelo de componentes creado por Sun Microsystems para la implementacin de componentes reutilizables en el lenguaje Java.
6
2010
13 | P g i n a
Se usan para encapsular varios objetos en un nico objeto, para hacer uso de un slo objeto en lugar de varios ms simples. La especificacin de JavaBeans de Sun Microsystems los define como componentes de software reutilizables que se puedan manipular visualmente en una herramienta de construccin. Para funcionar como una clase JavaBean, una clase debe obedecer ciertas convenciones sobre nomenclatura (nombre, tipo numero y orden de los parmetros de entrada) de los mtodos, construccin, y comportamiento. Estas convenciones permiten tener herramientas que puedan utilizar, reutilizar, sustituir, y conectar JavaBeans. Las convenciones requeridas son:
Debe tener un constructor sin argumentos (constructor ciego). Debe poderse instanciar: no se puede convertir una interfaz o una clase abstracta en un Bean. Sus propiedades deben ser accesibles mediante mtodos get() y set(), que siguen una convencin de nomenclatura estndar. Debe ser serializable: Debe implementar la interfaz Serializable o la interfaz Externalizable, que permiten que se copie como una serie de bytes en un flujo, para guardar su estado y restaurarlo posteriormente (persistencia).
2010
14 | P g i n a
2010
15 | P g i n a
Referencias
[Pressman, 2002] Ingeniera del Software, Un enfoque prctico , Roger S. Pressman, 2002, 5ta Edicin McGRAW-HILL [Somerville, 2005] Ingeniera del Software, Ian Somerville, 2005, 7ma Edicin Pearson Educacin [Iribarne, 2003] Un Modelo de Mediacin para el Desarrollo de Software Basado en Componentes COTS, Luis F. Iribarne Martnez, Tesis Doctoral, Universidad de Almera, Espaa [Vallecillo, Troya, & Fuentes, 2001] Desarrollo de Software Basado en Componentes, Lidia Fuentes, Jos M. Troya y Antonio Vallecillo, 2001, Universidad de Mlaga [Iribarne & Vallecillo] Elaboracin de aplicaciones software a partir de Componentes COTS, Luis Iribarne y Antonio Vallecillo [Bertoa, Troya, & Vallecillo, 2002], Aspectos de Calidad en el Desarrollo de Software Basado en Componentes, Manuel F. Bertoa, Jos M. Troya y Antonio Vallecillo
2010
16 | P g i n a