Introducción al Software basado en Componentes Conceptos

Anuncio
Introducción al Software basado
en Componentes
Juan José Moreno Navarro
Curso de Doctorado LSIIS
(junto con L.A. Fredlund)
Conceptos fundamentales
• Sistemas con componentes software
– Interfaces.
– Interoperabilidad.
– Composicionalidad de componentes.
–Nuevas técnicas de Ingeniería de Software,
Programación, Validación, etc.
Conceptos fundamentales
• Componente software
Unidad de composición de aplicaciones 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.
• Sistema basado en componentes
Conjunto de mecanismos y herramientas que permiten la
creación e interconexión de componentes software, junto
con una colección de servicios para facilitar las labores de
los componentes que residen y se ejecutan en él.
1
Conceptos fundamentales
• Modelo de componentes
Definición de la forma de sus interfaces y los mecanismos
para interconectarlos (DCE, COM, JavaBeans, Corba,
.NET framework).
• Plataforma de componentes
Entorno de desarrollo y de ejecución de componentes que
permiten aislar la mayor parte de las dificultades
conceptuales y técnicas que conlleva la construcción de
aplicaciones basadas en las componentes de un modelo de
componentes concreto (Windows - COM, Orbix - Corba,
.NET).
Conceptos fundamentales
• Interfaz de un componente
Determina las operaciones que el componente implementa
como las que precisa utilizar de otros componentes durante
la ejecución.. Usualmente son los atributos y métodos
públicos que el componente implementa más los eventos que
emite.
• Eventos
Especifican la forma en la que el componente notifica al
exterior una respuesta a un estímulo externo o bien un
cambio en una condición interna. Se especifica la signatura
y la condición para que se produzca, pero no cómo tratarlo.
Conceptos fundamentales
• Interacción entre componentes
Para los métodos públicos se utiliza RPC.
Para los eventos: publish-and-suscribe:
Comunicación directa: Los receptores se registran en el
emisor que les envía los eventos cuando se producen.
Comunicación indirecta: Usan distribuidores que
notifican los eventos de otros emisores. O bien los
receptores se registran en los distribuidores o bien se
utiliza radiado total o parcial (broadcast - multicast)
2
Conceptos fundamentales
• Contenedores
Entidades software que permiten contener a otras entidades
proporcionando un entorno compartido de interacción.
Normalmente objetos y componentes visuales que a su vez
pueden contener otros componente visuales.
La relación se establece mediante eventos.
Ejemplos: Escritorio.
Conceptos fundamentales
• Meta-información
Información adicional de un componente que suele hacerse
pública. La idea es que con esta información un componente
puede saber cómo utilizar otro componente: Reflexión
– Información general
–Referencias externas
–Descriptor de tipo
–Interfaces
–Clases / atributos / métodos
Conceptos fundamentales
• Entornos de desarrollo integrados
IDE: Aplicación (visual) que permite la construcción de
aplicaciones a través de componentes. Incluyen editores,
browsers, ayudas, directorios de componentes,
compiladores, depuradores, herramientas de control de
configuración, etc.
Visual Studio (Microsoft), Visual Age (IBM), VisualCafe
3
Conceptos fundamentales
• Interoperabilidad
Capacidad de dos o más componentes para comunicarse y
cooperar de forma compatible entre sí.
– Interoperabilidad sintáctica:
sintáctica Signatura (tipos) de los
argumentos.
– Interoperabilidad a nivel de protocolos:
protocolos Ordenes relativos
de los mensajes recibidos y la sincronización entre ellos.
– Interoperabilidad semántica:
semántica Las anteriores y además la
funcionalidad de las operaciones.
• Estándares de interoperabilidad
Garantizan la interoperabilidad - Corba, JavaBeans
Características de los SBC
• Distribución
Los componentes residen en diversas máquinas integrantes de
una red.
• Heterogeneidad
Se ejecutan en diferentes plataformas, sistemas operativos,
escritos en diferentes lenguajes, diferentes desarrolladores.
• Independencia de la extensibilidad
Modificables y ampliables añadiendo nuevas componentes.
• Dinamismo
Sujetos a evolución por ampliación, desaparición, sustitución
de componentes o reconfigurando las relaciones entre ellos.
Variaciones de la noción de
componente
• Wallnau: Unidad de sw con funcionalidad y
complejidad significativa, considerada como caja negra
y de grano grueso.
• Nierstrasz y Meijler: Grano grueso o grano fino
(desde botones y ventanas de diálogo hasta hojas de
cálculo).
• Szyperski: Unidad binaria de composición carente de
estado caracterizado por su interfaz, que debe definir
tanto la funcionalidad como las dependencias del
contexto (funcionalidad del entorno, plataforma de
ejecución, etc.)
4
Variaciones de la noción de
componente
• Meyer: Noción fundamental: es sw orientado al
cliente: que permita se utilizado por otros elementos de
sw sin intervención de los autores. Implica una
completa especificación de su comportamiento y
funcionalidad.
Típica aplicación con
componentes
Servicio de
datos de venta
Sistema de
facturación
Servicios
internos de
la corporación
Servicio de
identificación
Servicio sw
de entrega
Servicio de
calendario
Servicio de
notificación
y mensajes
Servicios
del entorno de
desarrollo
Sistema de
almacén
Servicio de
directorio de
clientes y
búsqueda
Servicio
geográfico
de mapas
Servicio de
aceptación de
tarjetas de
crédito
Servicios web
de terceros
Programación Orientada a
Componentes
• Variante natural de la programación
orientada a objetos para los sistemas
abiertos.
• Nuevos elementos: los aspectos
composicionales distintos a los aspectos
computacionales:
– Los objetos no son unidades de composición
independientes de las aplicaciones.
– Los interfaces de los objetos son de muy bajo
nivel para la reutilización.
5
Programación Orientada a
Componentes
• 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 más rápida y robusta o que quieren
añadir funcionalidad dependiente de terceros.
PITAC: Señala las componentes y la creación de un repositorio
de componentes para todo EEUU como un área prioritaria.
Programación Orientada a
Componentes
• Entidades básicas: Componentes - cajas
negras que encapsulan cierta funcionalidad y
que son diseñadas para el MGC sin saber
quién las utilizará, ni cómo, ni cuándo.
– No se modifica su implementación
– Importante: Diseño y desarrollo de componentes nuevas técnicas.
Programación Orientada a
Componentes
Conceptos fundamentales
• Composición tardía:
Composición en un tiempo posterior al de la
compilación de la componente (montaje, carga o
ejecución) y por alguien ajeno a su desarrollo.
Solo se conoce su interfaz o contrato.
No se conocen detalles de la implementación.
No se conoce la forma en la que fue concebido para
ser usado.
6
Programación Orientada a
Componentes
• Entornos:
Conjunto de recursos y componentes que rodean a
un objeto o componente y que definen las
acciones que sobre él se solicitan así como su
comportamiento.
Entorno de ejecución: Ambiente para el que fue
construido y donde se ejecuta normalmente.
Entorno de diseño: Entorno restringido que se utiliza
para localizar, configurar, especializar y probar los
componentes que van a formar parte de una
aplicación.
Programación Orientada a
Componentes
• Eventos
Mecanismo de comunicación por el que se pueden
propagar las situaciones que ocurren en un sistema
de forma asíncrona.
Emitidos para avisar a los componentes de su
entorno de cambios en su estado o de otras
circunstancias especiales (excepciones).
Comunicación mediante publish-and-suscribe.
Programación Orientada a
Componentes
• Reutilización
Habilidad de un componente para ser utilizado en
contextos distintos a aquellos para los que fue
diseñado.
Reutilizar no significa utilizar más de una vez.
• Contratos
Especificación que se añade a la interfaz de un
componente y que establece las condiciones de uso
e implementación que ligan a los clientes y
proveedores del componente.
Cubren aspectos funcionales y no funcionales.
7
Programación Orientada a
Componentes
• Polimorfismo
Habilidad de un componente de mostrarse de diferentes
formas, dependiendo del contexto.
Usual: sobrecarga de operadores
genericidad de componentes
(monedas, almacenes)
– Reemplazabilidad o capacidad de un componente de
reeemplazar a otro sin violar los contratos.
– Polimorfismo acotado, para indicar restricciones sobre
los tipos sobre los que se puede parametrizar una
componente.
Programación Orientada a
Componentes
• Seguridad
Garantía que debe ofrecer un componente que respeta
sus interfaces y contratos.
– De tipos: Asegura que las invocaciones usan
parámetros adecuados (o supertipos) y que los valores
que devuelven son del tipo adecuado (o subtipos).
– De módulo: Asegura que solo se utilizan los servicios
ajenos al componente que se han declarado.
• Reflexión: Habilidad para conocer y modificar el
estado de un componente
8
Descargar