2. Sistemas híbridos
Una tendencia moderna en la Ingeniería de Software
Construir sistemas integrando componentes de diversos tipos y
orígenes
Enfoque “oportunista”, orientado a la integración mas que al
desarrollo
Desarrollo
a la medida
?
??
??
3. Corrientes Originales
International Conference on COTS-Based Software Systems 2001
(ICBSS’01)
Component Based Software Engineering
SEI – ESI – NRC ESI – CBSE NET
COTS
$
OTS
COTS,
FOSS,
etc.
4. ¿Que es un Componente?
SAP
JDK
MS
Word
Lotus
Notes
My SQL
Windows
XP
Apache
SQL Server
5. Definición de componente COTS
Un componente COTS es un producto:
vendido, alquilado o licenciado al publico en general;
ofrecido por un vendedor que intenta obtener una
ganancia;
soportado y evolucionado por el vendedor, quien
mantiene los derechos intelectuales sobre el producto;
disponible en múltiples copias idénticas;
utilizado sin modificación interna por el consumidor.
B.C. Meyers, P. Oberndorf. Managing Software Acquisition, Addison-Wesley, 2001.
6. Beneficios esperados (Sistemas Basados en Compontentes)
Sistemas basados en componentes:
Reducción en el tiempo de puesta en producción
Menores costos y riesgos
Incremento en la Portabilidad
Organización dedicada al soporte
Mejora en el proceso de negocios
Actualizaciones continuas
Sistemas híbridos
Nivel adecuado de personalización
Generación de valor agregado
Control sobre la evolución de la funcionalidad critica para el
negocio
7. Desarrollo de Sistemas Basados en
componentes OTS
La noción de construir sistemas escribiendo código ha
sido remplazada por la idea de :
“Construir un sistema adaptando e integrando
componentes software existentes”
Enfoque en la integración en lugar de la implementación.
Integrabilidad es una consideración clave en la decisión
de adquirir, reutilizar o construir los componentes.
8. Tipos de Sistemas Basados en Componentes
Sistemas “llave en mano” Sistemas
intermedios
Sistemas Integrados
Construidos al rededor de una
suit de productos (ej. Office,
Netscape)
Construidos al rededor
de un componente (ej.
Oracle, SAP)
Construidos integrando
varios componentes
Solo se utiliza un componente El componente es la
mayor parte del
sistema
Todos los componentes
tienen un nivel de
importancia similar
Cartney. “Assembling Large Systems from COTS Components” SEI Monographs,1997
COTS Proceso
de
negocio
Enfoque Vendedor Mantenimiento
Sistema COTS
solución
1 producto
substancial
(suit)
Solución
genérica
Adaptación Uno Vendedor
Sistema COTS
intensivo
Muchos
integrados
Mas
flexible
Integración Muchos - Proyecto
- Vendedor
Wallnau, Cartney, Pollak. “How COTS Software Affects the Design of COTS Intensive Systems”
In SEI Interactive available at http://interactive.sei.cmu.edu/Features/1998.
9. Sistemas Basados en Componentes: Ejemplo
EOSDIS misión para el cambio global del clima (NASA)
Integración de 29 fuentes de información (naves
espaciales, aeronaves, superficiales)
Almacenes de datos muy grandes, procesamiento a largo termino
(hasta el 2015), sistemas distribuidos
Estudios interdisciplinarios, muchos perfiles generando requisitos
Sistema complejo:
Monto de datos: 3 TB (2002) 20 PB (2010) ... por día
Bases de datos geoespaciales muy grandes; datos distribuidos en
diferentes formatos
Algoritmos científicos complejos
Interfaz con 35 sistemas externos y productos
Sistema COTS agregado:
50 COTS equipos COTS dedicados
>40 actualizaciones por año (30 bajas, 10 medias, 1 alta)
Cerca de 400 parches por año
1.1 M de líneas de C++ y Java de código a la medida
periodo de desarrollo de 60 meses
10. Ventajas y desventajas en el uso de componentes
Plug and Play vs. Plug and Pray
Ventajas Componentes Desventajas Componentes
Disponibilidad inmediata; retorno de
inversión inmediato
Licencias, propiedad intelectual
Evita costos de desarrollo y
mantenimiento
• Costos de licenciamiento
• Costos de integración
• Costos de soporte
Funcionalidad muy rica • Demasiada funcionalidad compromete uso y
rendimiento
• Documentación limitada o no adecuada
Nuevas versiones continuamente • No existe control sobre las nuevas versiones
• Desarrollo desordenado
• Estándares poco difundidos
Organización dedicada al soporte • Dependencia del fabricante
• O de la buena voluntad de la comunidad
Independencia de Hw y Sw • La integración no es trivial
• Fabricantes no la garantizan
• Versiones limitadas a Hw y Sw
11. Sistemas Basados en Componentes OTS:
Impacto en el Ciclo de Vida
Requisitos
Diseño
Implementación
Arquitectura y Diseño
Mercado
Gestión del proyecto
Contexto del Sistema
Definiciones
y decisiones
simultaneas
•Albert & Brownsword. “Meeting the Challenges of COTS Products”
•1st ICCBSS 2002
12. ? ?
?
??
Selección Especificación de requisitos
Definición de criterios y prioridades
Que lenguaje de especificaciones?
Descripción y evaluación
Proceso iterativo e incremental
Dificultad para descubrir propiedades
(cajas negras)
De donde obtener información
Que métricas utilizar, como testear
Selección de los mejores
Desajustes entre requisitos y
características de los componentes
Comparación entre componentes
similares
Mercado de
Componentes
Componentes
Seleccionados
Sistemas Basados en Componentes: Ciclo de vida y retos
13. Componentes
Adaptados
Adaptación
COTS no son diseñados para conectarse con otros
Adaptación (Parametrización, scripting, afinamiento…), envolturas o
modificación del código son requeridas
Tares muy costosa en tiempo y recursos y difícil de lograr
Requiere dominio del sistema y de los componentes
? ?
?
??
Selección
Mercado de
Componentes
Componentes
Seleccionados
Sistemas Basados en Componentes: Ciclo de vida y retos
14. Parametrización / Adaptación
Tipos de parametrización
Personalización
Rendimiento
Simplemente poner el componente a trabajar
La mayoría de componentes requieren algún tipo de
parametrización:
MS-Office: un par de tardes
Sistemas ERP: varios meses
Algunas actividades típica:
Especificación de parámetros
Especificación de la interfaz grafica (GUI)
Plug-ins (para agregar funcionalidad)
15. Componentes
Ensamblados
Composición en la
arquitectura seleccionada
Interacción de arquitectura, infraestructura y elementos middleware
“Pegado” de componente para que trabajen juntos
Varias arquitecturas son posibles:
Bases de datos, bus de mensajes, intercambio de archivos, interfaces de
objetos
Componentes
Adaptados
Adaptación
? ?
?
??
Selección
Componentes
Seleccionados
Sistemas Basados en Componentes: Ciclo de vida y retos
16. Integración de Componentes
Parametrización /Adaptación (tailoring)
Acomodar el componente COTS para un dominio particular
Adherir (gluing)
Integración de un componente COTS con otro o en un sistema
Modificación
Integración de un componente COTS con otro o en un sistema
17. Generación de envoltorios (Wrappers)
Utilización de tecnologías MiddleWare (CORBA, COM, RMI, etc.)
Transferencia de archivos e información estructurada
(CSV, XML, TXT, etc.)
Integración con bases de datos (ODBC, OLE/DB, ADO, ETC)
Componente
1
Componente
2
Stub
Componente
1
OBJ
OBJOBJ
Sklt.
Componente
2
Componente
1
Componente
2
Componente
1
Componente
2
Integración de Componentes
18. Adherencia de componentes (1/2)
Algunas técnicas utilizadas para la interconexión de componentes
COTS son:
Envoltorios (Wrappers): Aíslan el componente del exterior
Agregar u ocultar funcionalidad (pero sin modificar el
componente COTS)
Proteger el componente de otros componentes COTS
Recuperación de errores
Reducir el impacto de los cambios en (ambos lados)
Utilización de estándares Middleware:
CORBA,
COM,
RMI
19. Adherencia de componentes (2/2)
Transferencia de archivos
Mejor si utiliza estándares abiertos (XML)
Problemas con la integración de datos, replicación, etc.
Mantenimiento: ¿Que pasa si el formato de los datos varia?
Filtros
Control de flujo de trabajo: Los componentes COTS son
invocados cuando se requieren
Integración de bases de datos:
Utilización del mismo esquema
Conectividad ODBC, ADO, OLE/DB
Combinación de las anteriores
20. Modificación (1/2)
Dos tipos:
Agregar
Mas fácil integrar que solicitar ayuda
Mejorada si existen librerías ej. APIs
Modificar / Eliminar
Quien ayudara cuando surjan los problemas?
21. Modificación (2/2)
Por que evitar la modificación:
Existen licencias, garantías y contratos de soporte de por medio
Incluso si el vendedor esta de acuerdo nuevas versiones del
producto saldrán al mercado
Puede romper con los estándares
Dificulta la evolución
El trabajo debe repetirse para cada versión
Puede imposibilitar el beneficios de nuevas versiones
Muchos autores no consideran la modificación una practica de la
ingeniería de software basada en componentes
De todas formas en la practica no se realiza
22. Componentes
Actualizados
Evolución a COTS
actualizados
Mercado en continua evolución:
Cientos de nuevos productos y actualizaciones
Nuevos productos no son idénticos a los anteriores
Reemplazo de componentes puede ser muy difícil
Reentrenamiento y testeo pueden ser requeridos
Componentes
Ensamblados
Componentes
Adaptados
Adaptación
? ?
?
??
Selección
Componentes
Seleccionados
Composición en la
arquitectura seleccionada
Sistemas Basados en Componentes: Ciclo de vida y retos
23. Verificación del Sistema
Que verificar:
Componentes COTS individuales
Cajas negras
Uso de modelos de calidad (-ilities)
No es fácil y requiere pericia y experiencia
Código de adherencia de componetes
Integración del sistema
Formato de datos, plataforma middleware, etc.
Análisis de sensibilidad -> “Que pasa si?”
-ilities del sistema, los componentes se pueden
comportar diferente cuando se juntan