23
Desarrollo de Software Basado en Componentes Ulises Cruz Miranda

Desarrollo de software basado en componentes

Embed Size (px)

DESCRIPTION

Una visión general sobre desarrollo de software basado en componentes

Citation preview

Page 1: Desarrollo de software basado en componentes

Desarrollo de Software Basado en Componentes

Ulises Cruz Miranda

Page 2: Desarrollo de software basado en componentes

Introducción

Los continuos avances en la Informática y lasTelecomunicaciones están haciendo cambiar la formaen la que se desarrollan actualmente las aplicacionessoftware

• Aumento de la potencia de los ordenadores• Abaratamiento de los costos del hardware• Redes de datos de cobertura global• Modelos de programación existentes desbordados

• Nuevos paradigmas de programación

Page 3: Desarrollo de software basado en componentes

Los desarrollos tradicionales de aplicaciones incurrenen altos costos y en una inversión de tiempo extensa.

El DSBC busca, dentro de otros objetivos, reducir eltiempo de trabajo, el esfuerzo que requiereimplementar una aplicación y los costos delproyecto, y, de esta forma, incrementar el nivel deproductividad de los grupos desarrolladores yminimizar los riesgos globales.

Desarrollo de Software Basado en Componentes

Page 4: Desarrollo de software basado en componentes

• Ensamblaje de partes de software previamente elaboradas

• Inspirada en los procesos de producción de sistemas físicos:

Producción de aviones, vehículos, computadores, aparatos electrónicos, etc.

• Fundamentada en la Reutilización de Software

• Orientar esfuerzos hacia una industria de partes

Desarrollo de Software Basado en Componentes

Page 5: Desarrollo de software basado en componentes

Componente

“Un componente es una unidad decomposición de aplicaciones software, queposee un conjunto de interfaces y un conjuntode requisitos, y que ha de poder serdesarrollado, adquirido, incorporado alsistema y compuesto con otros componentesde forma independiente, en tiempo y espacio”[Szyperski, 1998].

Page 6: Desarrollo de software basado en componentes

Definición de los 7 criterios [Meyer,1999]:

• Puede ser usado por otros elementos de SW• Puede ser usado por los clientes sin la necesidad de la

intervención del desarrollador.• Incluye las especificaciones de todas las dependencias.• Incluye documentación de las funcionalidades que

ofrece• Se puede entender su funcionamiento en base a las

especificaciones.• Se puede acoplar a otros componentes• Puede ser incorporado a un sistema de manera suave y

rápida

Page 7: Desarrollo de software basado en componentes

Modelo del Ciclo de vida de DSBC

Page 8: Desarrollo de software basado en componentes

Arquitecturas Software y Marcos de Trabajo

• El disponer de componentes software no essuficiente para desarrollar aplicaciones, yaprovengan éstos de un mercado global o seandesarrollados a medida para la aplicación. Unaspecto crítico a la hora de construir sistemascomplejos es el diseño de la estructura delsistema.

Page 9: Desarrollo de software basado en componentes

Arquitectura Software

• Entendemos por ArquitecturaSoftware la representación dealto nivel de la estructura deun sistema o aplicación, quedescribe las partes que laintegran, las interaccionesentre ellas, los patrones quesupervisan su composición, ylas restricciones a la hora deaplicar esos patrones.

Page 10: Desarrollo de software basado en componentes

En general, la arquitectura software nace como unaherramienta de alto nivel para cubrir distintosobjetivos:

1. Comprender y manejar la estructura de lasaplicaciones complejas.

2. Reutilizar dicha estructura (o partes de ella) pararesolver problemas similares.

3. Planificar la evolución de la aplicación, identificandosus partes mutables e inmutables, así como los costesde los posibles cambios.

4. Analizar la corrección de la aplicación, y su grado decumplimiento respecto a los requisitos iniciales

5. Permitir el estudio de alguna propiedad específica deldominio.

Page 11: Desarrollo de software basado en componentes

Marcos de Trabajo

• La reutilización de arquitecturas software sedefine dentro un marco de trabajo(framework, o abreviadamente MT). Engeneral, un MT se suele definir de la siguienteforma: “Un MT es el esqueleto de unaaplicación que debe ser adaptado anecesidades concretas por el programador dela aplicación”

Page 12: Desarrollo de software basado en componentes

• Un MT encapsula el patrón de la arquitecturasoftware de un sistema o de alguna de sus partes.

• Las principales ventajas que ofrecen los MT son lareducción del coste de los procesos de desarrollode aplicaciones software para dominiosespecíficos, y la mejora de la calidad del productofinal. Sin embargo, la utilización de MT presentaactualmente ciertas dificultades, aunque sesuelen englobar todas en el problema de ladocumentación de un MT

Page 13: Desarrollo de software basado en componentes

Paradigmas de Programación para Sistemas Abiertos

• Al principio sólo existía la programaciónsecuencial, pues cada programa sólo seejecutaba en una maquina monoprocesador yaislada. Posteriormente aparecieron lasmáquinas multiprocesador y los sistemasoperativos multitarea, por lo que nacieronnuevos paradigmas y mecanismos deprogramación. (Programación concurrente yprogramación distribuida)

Page 14: Desarrollo de software basado en componentes

Programación Orientada a Componentes (POC)

• La POC nace con el objetivo de construir unmercado global de componentes software,cuyos usuarios son los propios desarrolladoresde aplicaciones que necesitan reutilizarcomponentes ya hechos y probados paraconstruir sus aplicaciones de forma másrápida y robusta.

Page 15: Desarrollo de software basado en componentes

Tendencias actuales de la POC

• La adecuación de los lenguajes deprogramación

• Diseño de nuevos lenguajes y modelos decomponentes

• La construcción de herramientas de desarrolloy marcos de trabajo para componentes

• La aplicación de técnicas formales pararazonar sobre las aplicaciones desarrolladas abase de componentes.

Page 16: Desarrollo de software basado en componentes

• En cuanto a los lenguajes de programación,sólo hay unos pocos que realmenteincorporen conceptos suficientes para realizaruna programación orientada a componentes:Oberón, Java, Ada95, Modula-3 y ComponentPascal.

Page 17: Desarrollo de software basado en componentes

Tecnologías de componentes estandarizadas

• CORBA (Common Object Request BrokerArchitecture — arquitectura común deintermediarios en peticiones a objetos): Esun estándar que establece una plataforma dedesarrollo de sistemas distribuidos facilitandola invocación de métodos remotos bajo unparadigma orientado a objetos.

Page 18: Desarrollo de software basado en componentes

• DCOM (Distributed Component Object Model-Modelo de Objetos de Componentes Distribuidos):Es una tecnología propietaria de Microsoft paradesarrollar componentes software distribuidossobre varios ordenadores y que se comunicanentre sí.

• .NET es un framework de Microsoft que hace unénfasis en la transparencia de redes, conindependencia de plataforma de hardware y quepermita un rápido desarrollo de aplicaciones.

Page 19: Desarrollo de software basado en componentes

• Enterprise JavaBeans: Modelo decomponentes basado en arquitectura clienteservidor. Esta plataforma ofrece una soluciónmultiplataforma, de fácil reutilización,integración universal con otros componentesademás de la maquina virtual de java.

La tecnología java a estado a la vanguardia delDSBC y constituye una referencia clave en estetema.

Page 20: Desarrollo de software basado en componentes

• La programación de aplicaciones distribuidas sebasa en un conjunto de servicios queproporcionan a los componentes el acceso a losrecursos compartidos de una forma segura yeficiente. Estos servicios suelen englobarse en lassiguientes categorías básicas:

• Comunicaciones Remotas

• Servicios de Directorio

• Seguridad

• Transacciones

• Gestión

Page 21: Desarrollo de software basado en componentes

Problemas típicos de la POC

• Clarividencia: dificultad con la que seencuentra el diseñador de un componente alrealizar su diseño, pues no conoce ni quien loutilizará, ni cómo, ni en qué entorno, ni paraqué aplicación

• Evolución de los componentes. La gestión de laevolución es un problema serio, pues en lossistemas grandes han de poder coexistir variasversiones de un mismo componente

Page 22: Desarrollo de software basado en componentes

• Particularización. Cómo particularizar losservicios que ofrece un componente paraadaptarlo a las necesidades y requisitos concretosde nuestra aplicación, sin poder manipular suimplementación.

• Falta de soporte formal. Por otro lado, la POCtambién se encuentra con otro reto añadido,como es la dificultad que encuentran los métodosformales para trabajar con sus peculiaridades

Page 23: Desarrollo de software basado en componentes

Puntos a considerar sobre un Mercado global de software

• Componentes COTS (commercial off-the-shelf).

• Búsqueda y reconocimiento de loscomponentes que se necesitan, su posibleadaptación, o la resolución de solapamientosentre las funciones y servicios que ofrecen.

• Estándares que garanticen la interoperabilidadde los componentes a la hora de construiraplicaciones