Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2006 Montilva Productos
2006 Montilva Productos
Contenidos
La idea bsica:
Ensamblaje de partes de software previamente elaboradas Inspirada en los procesos de produccin de sistemas fsicos
Produccin de aviones, vehculos, computadores, aparatos electrnicos, etc.
Antecedentes
Reutilizacin de software
La reutilizacin de software es el proceso de implementar o actualizar sistemas de software usando activos de software existentes (Sodhi & Sodhi, 1999)
"Reutilizacin de software es el proceso de crear sistemas de software a partir de software existente, en lugar de desarrollarlo desde el comienzo"
(Sametinger, 1997)
Antecedentes
Existen varias modalidades de reutilizacin utilizadas en empresas de software:
Individual Oportunista Gestionada:
Institucionalizada, sistemtica, planificada, mejorada
Antecedentes
Desarrollo de Software Basado en Componentes
Las aplicaciones se crean mediante la integracin de componentes nuevos, legados o de terceros (COTS)
<<componente de negocio>> Cliente
<<interfaz>>
<<interfaz>>
<<interfaz>>
Decisiones de Producto
Produccin
Activos de Software
Productos de Software
10
El proceso: Produccin
Entrada: Activos de Software
11
Beneficios
La entrega de productos de software de una manera
ms rpida, econmica y con una mejor calidad
Las LPS producen mejoras en: Tiempo de entrega del producto (time to market)
Costos de ingeniera Tamao del portafolio de productos Reduccin de las tasas de defectos Calidad de los productos
Desarrollo de Software basado en Lneas de Productos 12
Beneficios
Beneficios tcticos y estratgicos (Krueger, 2006): Beneficios tcticos de ingeniera:
Reduccin en el tiempo promedio de creacin y entrega de nuevos productos Reduccin en el nmero promedio de defectos por producto Reduccin en el esfuerzo promedio requerido para desarrollar y mantener los productos Reduccin en el costo promedio de produccin de los productos Incremento en el nmero total de productos que pueden ser efectivamente desplegados y mantenidos
13
Beneficios
Beneficios tcticos y estratgicos (cont.): Beneficios estratgicos de negocios
Reduccin en el tiempo de entrega (time-to-market) y el tiempo de retorno (time-to-revenue) de nuevos productos Mejoras en el valor competitivo del producto Mrgenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacin de la empresa Mayor escalabilidad del modelo de negocios en trminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos mercados Reduccin de riesgos en la entrega de productos
Algunas empresas han reportado mejoras que van en el rango de factores de 3 a 50 en los beneficios discutidos anteriormente
14
Aspectos fundamentales
El paradigma de desarrollo de software LPS requiere que las empresas que lo adopten consideren:
Aspectos conceptuales
Conceptos en los que las LPS se fundamentan
Aspectos tecnolgicos
Qu tecnologas son fundamentales para desarrollar y mantener activos y productos de software
Aspectos metodolgicos
Cmo desarrollar y mantener los activos y productos de software
Aspectos organizativos
Cmo debe la empresa organizarse internamente
Aspectos gerenciales
Cmo gestionar los proyectos de desarrollo de activos y productos
15
16
17
Reutilizacin de software
La reutilizacin de activos de software en LPS tiene varias caractersticas:
Es estratgica
Consolida lo comn entre la lnea de productos Maneja estratgicamente la variacin entre los productos de la lnea Elimina la duplicacin de esfuerzos de ingeniera
Es predictiva
La reutilizacin de activos se da en uno o ms productos sobre una lnea bien definida Se reutilizan arquitecturas de software, en lugar de reutilizar componentes de manera oportunista
Es gestionada
Es sistemtica, planificada, institucionalizada y mejorada
18
19
Puede ser liberado (desplegado e instanciado) independientemente de otros: Ofrece servicios a travs de sus interfaces Para utilizar su funcionalidad se emplean sus interfaces
20
21
Tipos de CSR
Segn su modificabilidad
Caja negra Caja blanca
Segn su granularidad
Componentes de uso especfico Componentes de negocio Marcos (frameworks) Componentes de aplicacin
Componentes OO
Clases
Componentes distribuidos
Componentes CORBA Componentes .NET Componentes J2EE Servicios web
Segn su fabricante
Componentes hechos en casa COTS Component Off The Shelf
22
Dominios y familias
Un dominio es un rea de aplicacin de productos de software que:
estn centradas en torno a un cuerpo de conocimientos tienen una economa de alcance asociada
Ocurre cuando construir un activo y usarlo en mltiples productos ocasiona ms beneficios que crear el activo para cada producto
Acueductos
Oloductos
23
Dominios y familias
Una familia de productos de software es un conjunto de productos de software asociados a un dominio determinado Los miembros de la familia comparten aspectos comunes tales como:
un diseo arquitectnico comn un conjunto componentes reutilizables capacidades y servicios comunes tecnologas comunes
24
Una familia de productos de software tiene: Aspectos comunes que son compartidos por todos sus productos
Aspectos variables que establecen diferencias entre los productos
Desarrollo de Software basado en Lneas de Productos 25
(Krueger, 2006)
Desarrollo de Software basado en Lneas de Productos 26
27
Arquitecturas de LPS
"Una arquitectura de software es la estructura o estructuras de un sistema que comprende los componentes del software, las propiedades visibles externamente de estos componentes, y las relaciones entre ellos" (Bass, 1998)
id Component Model
Componente 1
Componente 2
Componente 3
Componente 4
Componente 5
28
Arquitecturas de LPS
La arquitectura de una LPS es una arquitectura de software genrica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la lnea
29
Arquitecturas de LPS
Una arquitectura LPS es instanciada a travs de mecanismos de variabilidad:
Herencia
Ej. Suplantacin de un mtodo heredado de una clase en un componente
Puntos de extensin
Ej. Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacin
El comportamiento de un componente puede ser parametrizado a tiempo de diseo y definido a tiempo de implementacin Ej. macros o templates
Configuracin
Seleccin y "deseleccin" de los componentes de la arquitectura
30
Repositorios LPS
Las lneas de productos de software requieren almacenar sus activos de software en repositorios Un repositorio LPS es una base de datos especializada que:
almacena activos de software y facilita la recuperacin y el mantenimiento de los activos de software Su objetivo es asegurar la disponibilidad de activos para apoyar el desarrollo de productos de la LPS
Activos de Software
Desarrollo de Software basado en Lneas de Productos 31
Repositorios LPS
El repositorio mantiene informacin relevante de cada activo usado en la LPS:
Especificacin tcnica del activo Historia o registro de uso Clasificacin del activo Documentacin del activo
Activos de Software
32
Repositorios LPS
Tipos de Repositorios LPS
Segn su alcance
Locales
Son desarrollados y reusados internamente por una organizacin o empresa
Segn su propsito
De reuso
Permiten el almacenamiento y recuperacin de activos de software
De referencia
Facilitan la localizacin de activos en otros repositorios Ejemplo: UDDIs
Segn su aplicabilidad
De dominio especfico De dominio general
Desarrollo de Software basado en Lneas de Productos 33
34
35
reas de prctica de Gestin Tcnica Ejemplo: Planificacin de los proyectos de desarrollo de componentes de productos (aplicaciones)
36
Patrones LPS
Un patrn es una regla de tres partes, las cuales expresan una relacin entre un contexto, un problema y una solucin (Alexander, 1979) Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS Las soluciones son planteadas en trminos de las reas de prcticas y sus relaciones Un ejemplo: El patrn "Que Construir"
Desarrollo de Software basado en Lneas de Productos 37
El Problema:
Determinar que productos debern ser incluidos en la lnea de productos
La Solucin:
Para determinar que productos producir, se requiere informacin relacionada con:
El dominio de aplicacin, la tecnologa y el mercado La justificacin del negocio El proceso para describir el conjunto de productos que sern incluidos en la lnea de productos
38
40
41
Activos de software
od Procesos LPS
Ingeniera de Dominio
Ingeniera de Aplicaciones
Productos de software
Gestin Tecnolgica
Procesos de desarrollo
Gestin Organizacional
Organizacin de la empresa
42
Ingeniera de Dominio
La Ingeniera de Dominio (ID) captura informacin y representa el conocimiento sobre un dominio determinado, con el fin de:
crear activos de software reutilizables en el desarrollo de cualquier nuevo producto de una LPS
Productos de la ID:
Definiciones de dominios (descripciones del contexto) Modelos del dominio Modelos de requisitos del dominio Modelos arquitectnicos (arquitecturas de dominio) Ontologas del dominio Lenguajes del dominio Estndares del dominio
43
Ingeniera de Dominio
Actividades principales de la Ingeniera de Dominio
Anlisis de Aspectos:
Analiza la familia para determinar los requisitos que son comunes, opcionales y diferentes a todos sus miembros
44
Ingeniera de Aplicaciones
La Ingeniera de Aplicaciones (IA) se encarga del desarrollo de los productos de la LPS a travs de:
la reutilizacin de activos de software planes de produccin
La arquitectura de dominio es empleada como un modelo de referencia para disear los productos de la LPS El repositorio LPS provee los activos requeridos durante el desarrollo de cada nuevo producto de la LPS
45
46
Ingeniera de Componentes
Desarrollo de componentes Gestin del repositorio de comp.
Bsqueda de componentes
Integracin de componentes
Pruebas de la aplicacin
Ingeniera de Aplicaciones
Desarrollo de Software basado en Lneas de Productos 47
El Mtodo WATCH
Modelo propuesto en la Universidad de Los Andes (Venezuela) para el desarrollo de aplicaciones empresariales Consta de dos componentes metodolgicos:
Entrega de la Aplicacin Liberacin del Componente Especificacin del Componente Modelado de Negocios
Pruebas de la Aplicacin
Ingeniera de Requisitos
WATCH Application
Diseo Arquitectnico
Aprovisionamiento de Componentes
Especificacin de Componentes
El Mtodo WATCH-Component
Modelo de procesos para el desarrollo de componentes de software reutilizables
49
El mtodo WATCH-Application
Modelo de procesos para el desarrollo de aplicaciones empresariales (Montilva y Barrios, 2004)
Operacin y Mantenimiento Modelado del Negocio Entrega de la Aplicacin Ingeniera de Requisitos
Pruebas de la Aplicacin
Procesos Gerenciales
Diseo Arquitectnico
Diseo de Componentes
50
51
Salidas:
Alcance de la lnea Activos Plan de Produccin
52
Salida:
Productos acabados de la lnea
Desarrollo de Software basado en Lneas de Productos 53
Dividida en:
Gestin tcnica
Orientada a los grupos que desarrollan activos y productos
Gestin organizacional
Orientada a los aspectos organizacionales (estructura, relaciones, recursos, financiamiento, etc.)
Desarrollo de Software basado en Lneas de Productos
Organizational Management
54
El modelo SPLEP
SPLEP = Evolutionary Software Product Line Engineering Process (Gooma, 2004)
55
El modelo SPLEP
Fases de la Ingeniera de Lnea de Productos del mtodo SPLEP (Gooma, 2004)
56
El modelo SPLEP
Fases de la Ingeniera de Aplicaciones del mtodo SPLEP (Gooma, 2004)
57
58
Aspectos Organizacionales
59
60
61
Aspectos Gerenciales
Estn relacionados con la aplicacin de los procesos gerenciales en las actividades de Ingeniera de Dominio e Ingeniera de Aplicacin de una LPS
Planificacin de Proyectos Organizacin de Grupos de Trabajo
Grupos de Soporte
Administracin de Repositorios de Activos de Software Grupos de Mantenimiento de Aplicaciones
Grupos de Desarrollo
Grupos de desarrollo de componentes Grupos de desarrollo de aplicaciones
62
63
64
Conclusiones
Las Lneas de Productos de Software representan el estado del arte en Reutilizacin del Software La implantacin del paradigma LPS en una empresa es un proceso complejo Para manejar esta complejidad se requiere considerar diferentes aspectos:
Conceptuales Tecnolgicos Metodolgicos Organizacionales Gerenciales
65
66
jonas@ula.ve http://www.webdelprofesor.ula.ve/ingeniera/jonas
Jons Montilva, 2006
Desarrollo de Software basado en Lneas de Productos 67