Desarrollo de Líneas de Productos de Software Desarrollo de

Transcripción

Desarrollo de Líneas de Productos de Software Desarrollo de
Centro Experimental de Ingeniería de Software
Departamento de Ciencias de la Computación
Facultad de Ciencias Físicas y Matemáticas
Universidad de Chile
Desarrollo de Líneas de
Productos de Software
María Cecilia Bastarrica
María Cecilia Bastarrica
„ Ingeniero en Informática, Universidad Católica del
Uruguay, 1991.
„ Magister en Ciencias de la Ingeniería, PUC Chile,
1994.
„ Ph.D. Computer Science and Engineering, University of
Connecticut, 2000.
„ Profesora Asistente, DCC, Universidad de Chile desde
marzo de 2000.
Desarrollo de Líneas de Productos de Software
2
Agenda
„
„
„
„
„
„
„
„
Reutilización de Software
Líneas de Productos de Software
Costos y Beneficios
Organización
Arquitectura Base
Desarrollo de Componentes
Ejemplos
Conclusiones
Desarrollo de Líneas de Productos de Software
3
Desarrollo Tradicional de
Software
„ Se desarrolla un único producto o aplicación por vez.
„ Énfasis en productos entregables y plazos.
„ Mantenimiento y evolución no son parte del desarrollo
inicial.
„ Problemas típicos:
‹Desarrollos en tiempo y presupuesto desmedido.
‹Calidad del sistema inadecuada.
‹El costo de mantenimiento llega al 80% de todo el ciclo
de vida del producto.
‹La competitividad del producto va decreciendo con los
cambios.
Desarrollo de Líneas de Productos de Software
4
Reutilización de Software
„ ¡Reutilizar mejor que desarrollar!
„ Las aplicaciones se construyen componiendo piezas de
software ya desarrolladas, usadas y probadas.
„ Permite reducir drásticamente el costo de desarrollo y
mantenimiento.
„ Mejora la calidad del software.
„ Reduce los riesgos involucrados en todo desarrollo.
„ Es más fácil administrar los proyectos.
Es una estrategia muy promisoria.
Desarrollo de Líneas de Productos de Software
5
Ejemplos de Reutilización
„ “Hurgar” código (copiar &
pegar).
„ Sistemas operativos.
„ Compiladores.
„ Bibliotecas de clases.
„ Patrones de diseño.
„ Sistemas distribuidos, ej.
CORBA, COM, etc.
Desarrollo de Líneas de Productos de Software
„ Interfaces gráficas (GUI).
„ Reutilización de diseño
(expertise).
„ Frameworks orientadas a
objetos.
„ Sistemas administradores
de bases de datos (DBMS).
„ Generadores de
aplicaciones.
6
Enfoques de Reutilización
„ Oportunística: el ingeniero de software reutiliza piezas de
software que se ajustan al problema actual y las incorpora
en el nuevo software.
„ Planificada: la organización pone especial énfasis en el
desarrollo de artefactos reutilizables que proporcionan las
abstracciones apropiadas, con el nivel de variabilidad
apropiada y que encajan en una estructura de más alto
nivel.
La reutilización oportunística no funciona en la práctica.
Desarrollo de Líneas de Productos de Software
7
Enfoques de Reutilización
„ Bottom-up: las componentes reutilizables, una vez
desarrolladas o rehabilitadas, se agregan a una
colección de activos posiblemente muy grande. Los
ingenieros de software buscan entre estos activos para
encontrar las piezas más apropiadas.
„ Top-down: los activos se desarrollan y se presentan
como partes que encajan en una estructura de más alto
nivel. Los activos se ajustan a una interfaz predefinida
y exigida.
La reutilización bottom-up no funciona en la práctica.
Desarrollo de Líneas de Productos de Software
8
Líneas de Productos de
Software
„ Definición:
‹Una línea de productos de software es un conjunto de
aplicaciones construidas en forma planificada a partir de
un conjunto de activos comunes y que satisfacen las
necesidades de un segmento del mercado.
Desarrollo de Líneas de Productos de Software
9
Activos de Software
„ Son todos los artefactos producidos durante el
desarrollo del software y que son potencialmente
reutilizables.
„ Ejemplos:
‹arquitectura base,
‹patrones de diseño,
‹componentes de software,
‹manuales de usuario,
‹especificación de requisitos,
‹planes de producción,
‹planes de pruebas, etc.
Desarrollo de Líneas de Productos de Software
10
Arquitectura Base
„ Arquitectura de Software es la definición de las
componentes que forman el sistema, las propiedades
externamente visibles de esas componentes y las
relaciones entre las mismas.
„ Arquitectura Base de una LPS corresponde a la
definición de la arquitectura general que describe todos
los componentes que podrían potencialmente formar
parte de la línea de productos de software y su
interrelación. La arquitectura base define y limita el
alcance de la LPS.
Desarrollo de Líneas de Productos de Software
11
Concepción de
Arquitectura de Software
Academia
Industria
La arquitectura se define
explícitamente.
Comprensión conceptual de la
arquitectura. Pocas definiciones
formales.
La arquitectura se compone de
componentes y conectores como
elementos fundamentales.
Los conectores no son elementos
básicos. Se implementan con
código desarrollado ad hoc.
Definiciones formales con ADLs y La configuración total del sistema
generación automática de
se describe con lenguajes de
aplicaciones.
programación y de script.
Desarrollo de Líneas de Productos de Software
12
Desarrollo de Componentes
„ Las componentes de software son uno de los activos
más claramente reutilizable.
„ Existe una fuerte tendencia a desarrollar software
basado en componentes.
„ Las LPS dan un marco para el desarrollo y uso
planificado de las componentes de software.
„ Tecnologías de definición de componentes:
‹ActiveX, JavaBeans, CCM, etc.
„ Desafíos del desarrollo basado en componentes:
‹almacenamiento, clasificación y búsqueda.
Desarrollo de Líneas de Productos de Software
13
Formas de Reutilización
de Componentes
„ Reuso de componentes a lo largo de las distintas
versiones de una aplicación.
‹Esto sabemos hacerlo.
„ Reuso de componentes en varias versiones de un
software y en distintos productos.
‹Estamos trabajando en esto.
„ Reuso de componentes en varias versiones, diversos
productos de software y en distintas organizaciones.
‹Estamos lejos de este nivel de madurez.
Desarrollo de Líneas de Productos de Software
14
Enfoques de Componentes
Academia
Industria
Las componentes son cajas negras.
Las componentes son grandes subsistemas
sin un claro límite y sin encapsulamiento.
Las componentes tienen pequeñas
interfaces de acceso.
Las interfaces son las de las clases que
forman la componente.
Las variaciones posibles son
configurables al instalarlas.
Las variaciones se logran con distintas
implementaciones.
Las componentes implementan
interfaces estándar y se venden en
mercados de componentes.
Las componentes son desarrolladas
internamente. Los desarrollos externos
requieren mucho trabajo de adaptación.
Énfasis en la funcionalidad.
Otras cualidades son tanto o más importantes:
performance, confiabilidad, tamaño del código,
reusabilidad, mantenibilidad.
Desarrollo de Líneas de Productos de Software
15
Líneas de Productos de
Software
activos
externos
arquitectura
base
internos
...
producto 1
producto 2
Desarrollo de Líneas de Productos de Software
producto n
16
Beneficios de LPS
„ Productividad
‹Sistemas grandes y complejos pueden desarrollarse con
menor tiempo y esfuerzo.
‹Menor tiempo para tener un producto en el mercado.
„ Costos
‹Cada nuevo producto sólo requiere desarrollar unas
pocas partes nuevas.
‹Personal calificado y caro es pagado una única vez y su
trabajo se reutiliza.
Desarrollo de Líneas de Productos de Software
17
Más y Más Beneficios
„ Facilidad de Administración.
‹Reducción del riesgo.
‹Menor trabajo a ser planificado y controlado.
„ Calidad.
‹Activos probados dan garantías de calidad y buen
funcionamiento.
‹Familiaridad de los usuarios con interfaces, manuales,
mecanismos de interacción, facilitan el aprendizaje y
disminuyen los errores.
Desarrollo de Líneas de Productos de Software
18
Costos de LPS
„ Desarrollar activos genéricos, configurables, robustos,
documentados, portables y probados es más caro que
hacer un desarrollo ad hoc.
„ Antes de obtener los beneficios de la LPS uno debe
tener una base de activos con estas características.
„ Lograr el cambio de paradigma en las prácticas
profesionales es un gran reto:
‹mejores activos no aseguran un mejor producto (hoy),
‹mejores activos posibilitan la reutilización (mañana).
Desarrollo de Líneas de Productos de Software
19
Costos de Inicio de una LPS
„ ¿A quién se le asignan los costos de la puesta en
marcha de la LPS?
„ Datos empíricos:
Costo
‹Weiss: Payoff point:
2 a 3 productos.
‹Jacobson: Payoff
point 1,5 a 3,0 productos.
Con LPS
1
Desarrollo de Líneas de Productos de Software
Sin LPS
2
3
4
5
Proyecto
20
Organización
Requisitos
Patrones, Frameworks,
Estrategias de producción,
Activos pre-definidos
Ingeniería de Dominio
Requisitos
Activos
Alcance de la LPS
Plan de producción
Ingeniería de Aplicación
ACTIVOS
PRODUCTOS
Desarrollo de Activos
Alcance de la LPS
Planes de producción
Productos de la LPS
ADMINISTRACIÓN
Desarrollo de Líneas de Productos de Software
21
Desafíos para la
Ingeniería del Dominio
„ Cada componente debe tener una interfaz definida y
estándar independientemente de su implementación
interna.
„ Los resultados de usar una componente con una
implementación deben ser equivalentes a usar otra
implementación de la misma componente.
„ Definir claramente las interfaces y la funcionalidad de
cada una de las componentes anticipándonos a
posibles productos no previstos originalmente.
„ Documentar todas estas decisiones y cumplirlas.
Desarrollo de Líneas de Productos de Software
22
Desafíos de la
Ingeniería del Producto
„ Adaptar las necesidades de los clientes a las
posibilidades de la LPS.
„ Ser capaz de integrar productos útiles (casi)
exclusivamente con las componentes disponibles.
„ Ceñirse a la estructura de la arquitectura base para
todos los productos.
„ Realizar pruebas de integración y del sistema,
suponiendo que cada componente satisface su
especificación.
Desarrollo de Líneas de Productos de Software
23
Desafíos de la Administración
„ Decidir tempranamente la arquitectura base que
permita desarrollar la mayor cantidad de productos
distintos con mínimas restricciones.
„ Decidir qué productos vale la pena desarrollar primero.
‹Los primeros productos cargarán con los costos de
desarrollo de los activos.
„ Encontrar nichos de mercado que nos hagan obtener
un mayor beneficio a partir de los activos disponibles y
una mínima actividad de integración.
Desarrollo de Líneas de Productos de Software
24
Ejemplo: Generación y
Manejo de Mallas Geométricas
„ Estamos desarrollando una línea de productos para la
generación, manejo y refinamiento de mallas geométricas
tridimensionales, tanto de superficie como de volumen.
„ El manejo de mallas tridimencionales es complejo.
„ Desarrollar estas aplicaciones es muy caro porque
requiere:
‹sofisticados algoritmos y estructuras de datos,
‹personal altamente calificado,
‹procesos de integración y pruebas rigurosos.
Parece una buena idea usar LPS
Desarrollo de Líneas de Productos de Software
25
Arquitectura Base
CAD
Cargar Estructuras de Datos
Validar Malla de Superficie
Corregir Malla de Superficie
Estructuras
de Datos
Mejorar Malla de Superficie
Primera Malla de Volumen
“Limar” Malla de Volumen
Mejorar Malla de Volumen
Refinar Malla de Volumen
Generar Salida
FEM
Desarrollo de Líneas de Productos de Software
26
Algunos Productos Potenciales
„ Desde el punto de vista de la funcionalidad:
‹Módulo para que un producto CAD genere buenas
mallas de volumen.
‹Módulo para que un software FEM pueda
refinar/desrefinar una malla de volumen en forma
adaptiva o interactiva.
‹Software independiente para generar y mejorar mallas de
superficie.
‹Software independiente para refinar/desrefinar mallas de
volumen.
Desarrollo de Líneas de Productos de Software
27
Más Productos
„ Desde el punto de vista de la implementación:
‹Manejar los datos en estructuras de memoria o bien
manejarlos en una base de datos.
‹Implementar algoritmos secuenciales o paralelos de
generación o refinamiento de las mallas de volumen.
‹Generar mallas de volumen a partir de mallas de
superficie generadas por diferentes productos CAD.
Desarrollo de Líneas de Productos de Software
28
Producto 1
Módulo para mejorar mallas de superficie generadas por un CAD
particular.
„ Se manejan los datos en estructuras de memoria.
„ Solamente la componente de cargar
CAD
estructuras de datos es dependiente
del CAD.
Cargar Estructuras de Datos
„ Las estructuras de datos tienen una
interfaz conocida para las otras
componentes, pero
Validar Malla de Superficie
es indiferente su
Estructuras
implementación
de Datos en
Corregir Malla de Superficie
interna.
Memoria
Mejorar Malla de Superficie
Desarrollo de Líneas de Productos de Software
29
Producto 2
Módulo para generar mallas de volumen a partir de una gran malla
de superficie.
„ Se usa una base de datos con idéntica
interfaz que las estructuras de
memoria.
„ Se usan algoritmos paralelos
para corregir la malla de
superficie y para generar
la malla de volumen.
Base
de Datos
„ Las otras componentes
son idénticas a las
anteriores.
Desarrollo de Líneas de Productos de Software
CAD
Cargar Estructuras de Datos
Validar Malla de Superficie
Corregir Malla de Superficie
(paralelo)
Mejorar Malla de Superficie
Primera Malla de Volumen
(paralelo)
30
Producto 3
Refinar adaptivamente la malla de volumen de un
software FEM particular.
„ Se usan las estructuras de datos en memoria.
„ Luego de refinar la malla
Estructuras
deDatos
Datosen
de
se genera una salida en
enMemoria
Memoria
un formato apropiado para
ser tomado por el
software
Refinar Malla de Volumen
Generar Salida
(Adaptivo)
FEM.
FEM
Desarrollo de Líneas de Productos de Software
31
Producto 4
Generador de buenas
mallas de volumen
para ser usadas por
un software FEM.
Cargar
Cargar Estructuras
Estructuras de
de Datos
Datos
Estructuras
de Datos
„ El cliente puede ser
cualquier ingeniero que
trabaje con CAD y FEM y
quiera obtener resultados
de mejor calidad.
„ La implementación de cada
componente podría ser a gusto
del consumidor.
Desarrollo de Líneas de Productos de Software
CAD
Validar
Validar Malla
Malla de
de Superficie
Superficie
Corregir
Corregir Malla
Malla de
de Superficie
Superficie
Mejorar
Mejorar Malla
Malla de
de Superficie
Superficie
Primera Malla de Volumen
“Limar” Malla de Volumen
Mejorar Malla de Volumen
Generar
Generar Salida
Salida
FEM
32
Trabajo en Curso
„ La definición de la arquitectura base es un aspecto
crucial en el éxito de la línea de productos.
„ La forma de definir esta arquitectura no es estándar y
estamos definiéndola formalmente.
„ La especificación formal de cada una de las
componentes con sus interfaces aseguran la
intercambiabilidad necesaria para las líneas de
productos.
„ Aún faltan aspectos esenciales como el control de
configuración y la formalización de procedimientos de
prueba de integración.
Desarrollo de Líneas de Productos de Software
33
Conclusiones
„
„
„
„
„
Paradigma muy promisorio.
Marco metodológico para la reutilización.
“Fábrica de software”.
Exige políticas de más largo plazo.
Las ganancias son evidentes en productividad, calidad
y costos de los desarrollos.
Desarrollo de Líneas de Productos de Software
34
Referencias
„ Paul Clements & Linda Northrop. Software Product Lines:
Practices and Patterns. Addison Wesley, Agosto 2001.
„ Jan Bosch. Design and Use of Software Architectures. Adopting
and evolving a product-line approach. Addison Wesley, Mayo
2000.
„ Software Engineering Institute (SEI), Carnegie Mellon University. The
Product Line Practice Initiative, 2002, http://www.sei.cmu.edu/plp/.
„ M.López & M.C.Bastarrica. Business Case for a Product Line of
Legacy Application Data-Middleware. Reporte Técnico TR/DCC2002-3 y enviado a una conferencia recientemente.
„ M.C.Bastarrica. Arquitectura Base en una Línea de Productos de
Software. Enviado a una conferencia recientemente.
Desarrollo de Líneas de Productos de Software
35
Desarrollo de Líneas de Productos de Software
36

Documentos relacionados