Desarrollo de software basado en lineas de productos
-
Upload
josephpc3000 -
Category
Education
-
view
2.264 -
download
1
description
Transcript of Desarrollo de software basado en lineas de productos
DESARROLLO DE SOFTWARE BASADO EN LIacuteNEA DE PRODUCTOS
Toacutepicos Avanzados de Ingenieriacutea de Software
Ing Moacutenica Esther Ospino Pinedo
La idea baacutesica
Ensamblaje de partes de software previamente elaboradas
Inspirada en los procesos de produccioacuten de sistemas fiacutesicos
Produccioacuten de aviones vehiacuteculos computadores aparatos electroacutenicos etc
Fundamentada en la Reutilizacioacuten de Software
Asume la existencia de una industria de partes
Antecedentes
Reutilizacioacuten de software
Desarrollo de software basado en componentes
Definicioacuten
se refieren a teacutecnicas de ingenieriacutea para crear un portafolio desistemas de software similares a partir de un conjunto compartidode activos de software usando un medio comuacuten de produccioacuten(Krueger 2006)
es un conjunto de sistemas de software que comparten unconjunto comuacuten y gestionado de aspectos que satisfacen lasnecesidades especiacuteficas de un segmento de mercado o misioacuten y queson desarrollados a partir de un conjunto comuacuten de activosfundamentales [de software] de una manera pre-escritalaquo (Clementsand Northrop 2002)
consiste de una familia de sistemas de software que tienen unafuncionalidad comuacuten y alguna funcionalidad variablelaquo (Gomma2004)
1048698 La funcionalidad comuacuten descansa en el uso recurrente de un conjuntocomuacuten de activos reutilizables (requisitos disentildeos componentesservicios web etc)
1048698Los activos son reutilizados por todos los miembros de la familia
Modelo Baacutesico de una LPS
Modelo Baacutesico de una LPS
La entrada Activos de Software Una coleccioacuten de partes de software (requisitos
disentildeos componentes casos de prueba etc) que se configuran y componen de una manera prescrita para producir los productos de la liacutenea
El Control Modelos de Decisioacuten y Decisiones de Productos Los Modelos de Decisiones describen los aspectos
variables y opcionales de los productos de la liacutenea
Cada producto de la liacutenea es definido por un conjunto de decisiones (decisiones del producto)
Modelo Baacutesico de una LPS
El proceso de produccioacuten
Establece los mecanismos o pasos para componer y configurar productos a partir de los activos de entrada
Las decisiones del producto se usan para determinar que activos de entrada utilizar y como configurar los puntos de variacioacuten de esos activos
La salida Productos de software
Conjunto de todos los productos que pueden o son producidos por la liacutenea de productos
Beneficios
La entrega de productos de software de una manera maacutes raacutepida
econoacutemica y
con una mejor calidad
Las LPS producen mejoras en Tiempo de entrega del producto (time to market)
Costos de ingenieriacutea
Tamantildeo del portafolio de productos
Reduccioacuten de las tasas de defectos
Calidad de los productos
Beneficios taacutecticos de ingenieriacutea
Reduccioacuten en el tiempo promedio de creacioacuten yentrega de nuevos productos
Reduccioacuten en el nuacutemero promedio de defectospor producto
Reduccioacuten en el esfuerzo promedio requeridopara desarrollar y mantener los productos
Reduccioacuten en el costo promedio de produccioacutende los productos
Incremento en el nuacutemero total de productos quepueden ser efectivamente desplegados ymantenidos
Beneficios estrateacutegicos de negocios
Reduccioacuten en el tiempo de entrega (time-to-market)y el tiempo de retorno (time-to-revenue) de nuevosproductos
Mejoras en el valor competitivo del producto Maacutergenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacioacuten de la empresa Mayor escalabilidad del modelo de negocios en
teacuterminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos
mercados Reduccioacuten de riesgos en la entrega de productos
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
La idea baacutesica
Ensamblaje de partes de software previamente elaboradas
Inspirada en los procesos de produccioacuten de sistemas fiacutesicos
Produccioacuten de aviones vehiacuteculos computadores aparatos electroacutenicos etc
Fundamentada en la Reutilizacioacuten de Software
Asume la existencia de una industria de partes
Antecedentes
Reutilizacioacuten de software
Desarrollo de software basado en componentes
Definicioacuten
se refieren a teacutecnicas de ingenieriacutea para crear un portafolio desistemas de software similares a partir de un conjunto compartidode activos de software usando un medio comuacuten de produccioacuten(Krueger 2006)
es un conjunto de sistemas de software que comparten unconjunto comuacuten y gestionado de aspectos que satisfacen lasnecesidades especiacuteficas de un segmento de mercado o misioacuten y queson desarrollados a partir de un conjunto comuacuten de activosfundamentales [de software] de una manera pre-escritalaquo (Clementsand Northrop 2002)
consiste de una familia de sistemas de software que tienen unafuncionalidad comuacuten y alguna funcionalidad variablelaquo (Gomma2004)
1048698 La funcionalidad comuacuten descansa en el uso recurrente de un conjuntocomuacuten de activos reutilizables (requisitos disentildeos componentesservicios web etc)
1048698Los activos son reutilizados por todos los miembros de la familia
Modelo Baacutesico de una LPS
Modelo Baacutesico de una LPS
La entrada Activos de Software Una coleccioacuten de partes de software (requisitos
disentildeos componentes casos de prueba etc) que se configuran y componen de una manera prescrita para producir los productos de la liacutenea
El Control Modelos de Decisioacuten y Decisiones de Productos Los Modelos de Decisiones describen los aspectos
variables y opcionales de los productos de la liacutenea
Cada producto de la liacutenea es definido por un conjunto de decisiones (decisiones del producto)
Modelo Baacutesico de una LPS
El proceso de produccioacuten
Establece los mecanismos o pasos para componer y configurar productos a partir de los activos de entrada
Las decisiones del producto se usan para determinar que activos de entrada utilizar y como configurar los puntos de variacioacuten de esos activos
La salida Productos de software
Conjunto de todos los productos que pueden o son producidos por la liacutenea de productos
Beneficios
La entrega de productos de software de una manera maacutes raacutepida
econoacutemica y
con una mejor calidad
Las LPS producen mejoras en Tiempo de entrega del producto (time to market)
Costos de ingenieriacutea
Tamantildeo del portafolio de productos
Reduccioacuten de las tasas de defectos
Calidad de los productos
Beneficios taacutecticos de ingenieriacutea
Reduccioacuten en el tiempo promedio de creacioacuten yentrega de nuevos productos
Reduccioacuten en el nuacutemero promedio de defectospor producto
Reduccioacuten en el esfuerzo promedio requeridopara desarrollar y mantener los productos
Reduccioacuten en el costo promedio de produccioacutende los productos
Incremento en el nuacutemero total de productos quepueden ser efectivamente desplegados ymantenidos
Beneficios estrateacutegicos de negocios
Reduccioacuten en el tiempo de entrega (time-to-market)y el tiempo de retorno (time-to-revenue) de nuevosproductos
Mejoras en el valor competitivo del producto Maacutergenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacioacuten de la empresa Mayor escalabilidad del modelo de negocios en
teacuterminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos
mercados Reduccioacuten de riesgos en la entrega de productos
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Antecedentes
Reutilizacioacuten de software
Desarrollo de software basado en componentes
Definicioacuten
se refieren a teacutecnicas de ingenieriacutea para crear un portafolio desistemas de software similares a partir de un conjunto compartidode activos de software usando un medio comuacuten de produccioacuten(Krueger 2006)
es un conjunto de sistemas de software que comparten unconjunto comuacuten y gestionado de aspectos que satisfacen lasnecesidades especiacuteficas de un segmento de mercado o misioacuten y queson desarrollados a partir de un conjunto comuacuten de activosfundamentales [de software] de una manera pre-escritalaquo (Clementsand Northrop 2002)
consiste de una familia de sistemas de software que tienen unafuncionalidad comuacuten y alguna funcionalidad variablelaquo (Gomma2004)
1048698 La funcionalidad comuacuten descansa en el uso recurrente de un conjuntocomuacuten de activos reutilizables (requisitos disentildeos componentesservicios web etc)
1048698Los activos son reutilizados por todos los miembros de la familia
Modelo Baacutesico de una LPS
Modelo Baacutesico de una LPS
La entrada Activos de Software Una coleccioacuten de partes de software (requisitos
disentildeos componentes casos de prueba etc) que se configuran y componen de una manera prescrita para producir los productos de la liacutenea
El Control Modelos de Decisioacuten y Decisiones de Productos Los Modelos de Decisiones describen los aspectos
variables y opcionales de los productos de la liacutenea
Cada producto de la liacutenea es definido por un conjunto de decisiones (decisiones del producto)
Modelo Baacutesico de una LPS
El proceso de produccioacuten
Establece los mecanismos o pasos para componer y configurar productos a partir de los activos de entrada
Las decisiones del producto se usan para determinar que activos de entrada utilizar y como configurar los puntos de variacioacuten de esos activos
La salida Productos de software
Conjunto de todos los productos que pueden o son producidos por la liacutenea de productos
Beneficios
La entrega de productos de software de una manera maacutes raacutepida
econoacutemica y
con una mejor calidad
Las LPS producen mejoras en Tiempo de entrega del producto (time to market)
Costos de ingenieriacutea
Tamantildeo del portafolio de productos
Reduccioacuten de las tasas de defectos
Calidad de los productos
Beneficios taacutecticos de ingenieriacutea
Reduccioacuten en el tiempo promedio de creacioacuten yentrega de nuevos productos
Reduccioacuten en el nuacutemero promedio de defectospor producto
Reduccioacuten en el esfuerzo promedio requeridopara desarrollar y mantener los productos
Reduccioacuten en el costo promedio de produccioacutende los productos
Incremento en el nuacutemero total de productos quepueden ser efectivamente desplegados ymantenidos
Beneficios estrateacutegicos de negocios
Reduccioacuten en el tiempo de entrega (time-to-market)y el tiempo de retorno (time-to-revenue) de nuevosproductos
Mejoras en el valor competitivo del producto Maacutergenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacioacuten de la empresa Mayor escalabilidad del modelo de negocios en
teacuterminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos
mercados Reduccioacuten de riesgos en la entrega de productos
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Definicioacuten
se refieren a teacutecnicas de ingenieriacutea para crear un portafolio desistemas de software similares a partir de un conjunto compartidode activos de software usando un medio comuacuten de produccioacuten(Krueger 2006)
es un conjunto de sistemas de software que comparten unconjunto comuacuten y gestionado de aspectos que satisfacen lasnecesidades especiacuteficas de un segmento de mercado o misioacuten y queson desarrollados a partir de un conjunto comuacuten de activosfundamentales [de software] de una manera pre-escritalaquo (Clementsand Northrop 2002)
consiste de una familia de sistemas de software que tienen unafuncionalidad comuacuten y alguna funcionalidad variablelaquo (Gomma2004)
1048698 La funcionalidad comuacuten descansa en el uso recurrente de un conjuntocomuacuten de activos reutilizables (requisitos disentildeos componentesservicios web etc)
1048698Los activos son reutilizados por todos los miembros de la familia
Modelo Baacutesico de una LPS
Modelo Baacutesico de una LPS
La entrada Activos de Software Una coleccioacuten de partes de software (requisitos
disentildeos componentes casos de prueba etc) que se configuran y componen de una manera prescrita para producir los productos de la liacutenea
El Control Modelos de Decisioacuten y Decisiones de Productos Los Modelos de Decisiones describen los aspectos
variables y opcionales de los productos de la liacutenea
Cada producto de la liacutenea es definido por un conjunto de decisiones (decisiones del producto)
Modelo Baacutesico de una LPS
El proceso de produccioacuten
Establece los mecanismos o pasos para componer y configurar productos a partir de los activos de entrada
Las decisiones del producto se usan para determinar que activos de entrada utilizar y como configurar los puntos de variacioacuten de esos activos
La salida Productos de software
Conjunto de todos los productos que pueden o son producidos por la liacutenea de productos
Beneficios
La entrega de productos de software de una manera maacutes raacutepida
econoacutemica y
con una mejor calidad
Las LPS producen mejoras en Tiempo de entrega del producto (time to market)
Costos de ingenieriacutea
Tamantildeo del portafolio de productos
Reduccioacuten de las tasas de defectos
Calidad de los productos
Beneficios taacutecticos de ingenieriacutea
Reduccioacuten en el tiempo promedio de creacioacuten yentrega de nuevos productos
Reduccioacuten en el nuacutemero promedio de defectospor producto
Reduccioacuten en el esfuerzo promedio requeridopara desarrollar y mantener los productos
Reduccioacuten en el costo promedio de produccioacutende los productos
Incremento en el nuacutemero total de productos quepueden ser efectivamente desplegados ymantenidos
Beneficios estrateacutegicos de negocios
Reduccioacuten en el tiempo de entrega (time-to-market)y el tiempo de retorno (time-to-revenue) de nuevosproductos
Mejoras en el valor competitivo del producto Maacutergenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacioacuten de la empresa Mayor escalabilidad del modelo de negocios en
teacuterminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos
mercados Reduccioacuten de riesgos en la entrega de productos
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Modelo Baacutesico de una LPS
Modelo Baacutesico de una LPS
La entrada Activos de Software Una coleccioacuten de partes de software (requisitos
disentildeos componentes casos de prueba etc) que se configuran y componen de una manera prescrita para producir los productos de la liacutenea
El Control Modelos de Decisioacuten y Decisiones de Productos Los Modelos de Decisiones describen los aspectos
variables y opcionales de los productos de la liacutenea
Cada producto de la liacutenea es definido por un conjunto de decisiones (decisiones del producto)
Modelo Baacutesico de una LPS
El proceso de produccioacuten
Establece los mecanismos o pasos para componer y configurar productos a partir de los activos de entrada
Las decisiones del producto se usan para determinar que activos de entrada utilizar y como configurar los puntos de variacioacuten de esos activos
La salida Productos de software
Conjunto de todos los productos que pueden o son producidos por la liacutenea de productos
Beneficios
La entrega de productos de software de una manera maacutes raacutepida
econoacutemica y
con una mejor calidad
Las LPS producen mejoras en Tiempo de entrega del producto (time to market)
Costos de ingenieriacutea
Tamantildeo del portafolio de productos
Reduccioacuten de las tasas de defectos
Calidad de los productos
Beneficios taacutecticos de ingenieriacutea
Reduccioacuten en el tiempo promedio de creacioacuten yentrega de nuevos productos
Reduccioacuten en el nuacutemero promedio de defectospor producto
Reduccioacuten en el esfuerzo promedio requeridopara desarrollar y mantener los productos
Reduccioacuten en el costo promedio de produccioacutende los productos
Incremento en el nuacutemero total de productos quepueden ser efectivamente desplegados ymantenidos
Beneficios estrateacutegicos de negocios
Reduccioacuten en el tiempo de entrega (time-to-market)y el tiempo de retorno (time-to-revenue) de nuevosproductos
Mejoras en el valor competitivo del producto Maacutergenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacioacuten de la empresa Mayor escalabilidad del modelo de negocios en
teacuterminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos
mercados Reduccioacuten de riesgos en la entrega de productos
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Modelo Baacutesico de una LPS
La entrada Activos de Software Una coleccioacuten de partes de software (requisitos
disentildeos componentes casos de prueba etc) que se configuran y componen de una manera prescrita para producir los productos de la liacutenea
El Control Modelos de Decisioacuten y Decisiones de Productos Los Modelos de Decisiones describen los aspectos
variables y opcionales de los productos de la liacutenea
Cada producto de la liacutenea es definido por un conjunto de decisiones (decisiones del producto)
Modelo Baacutesico de una LPS
El proceso de produccioacuten
Establece los mecanismos o pasos para componer y configurar productos a partir de los activos de entrada
Las decisiones del producto se usan para determinar que activos de entrada utilizar y como configurar los puntos de variacioacuten de esos activos
La salida Productos de software
Conjunto de todos los productos que pueden o son producidos por la liacutenea de productos
Beneficios
La entrega de productos de software de una manera maacutes raacutepida
econoacutemica y
con una mejor calidad
Las LPS producen mejoras en Tiempo de entrega del producto (time to market)
Costos de ingenieriacutea
Tamantildeo del portafolio de productos
Reduccioacuten de las tasas de defectos
Calidad de los productos
Beneficios taacutecticos de ingenieriacutea
Reduccioacuten en el tiempo promedio de creacioacuten yentrega de nuevos productos
Reduccioacuten en el nuacutemero promedio de defectospor producto
Reduccioacuten en el esfuerzo promedio requeridopara desarrollar y mantener los productos
Reduccioacuten en el costo promedio de produccioacutende los productos
Incremento en el nuacutemero total de productos quepueden ser efectivamente desplegados ymantenidos
Beneficios estrateacutegicos de negocios
Reduccioacuten en el tiempo de entrega (time-to-market)y el tiempo de retorno (time-to-revenue) de nuevosproductos
Mejoras en el valor competitivo del producto Maacutergenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacioacuten de la empresa Mayor escalabilidad del modelo de negocios en
teacuterminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos
mercados Reduccioacuten de riesgos en la entrega de productos
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Modelo Baacutesico de una LPS
El proceso de produccioacuten
Establece los mecanismos o pasos para componer y configurar productos a partir de los activos de entrada
Las decisiones del producto se usan para determinar que activos de entrada utilizar y como configurar los puntos de variacioacuten de esos activos
La salida Productos de software
Conjunto de todos los productos que pueden o son producidos por la liacutenea de productos
Beneficios
La entrega de productos de software de una manera maacutes raacutepida
econoacutemica y
con una mejor calidad
Las LPS producen mejoras en Tiempo de entrega del producto (time to market)
Costos de ingenieriacutea
Tamantildeo del portafolio de productos
Reduccioacuten de las tasas de defectos
Calidad de los productos
Beneficios taacutecticos de ingenieriacutea
Reduccioacuten en el tiempo promedio de creacioacuten yentrega de nuevos productos
Reduccioacuten en el nuacutemero promedio de defectospor producto
Reduccioacuten en el esfuerzo promedio requeridopara desarrollar y mantener los productos
Reduccioacuten en el costo promedio de produccioacutende los productos
Incremento en el nuacutemero total de productos quepueden ser efectivamente desplegados ymantenidos
Beneficios estrateacutegicos de negocios
Reduccioacuten en el tiempo de entrega (time-to-market)y el tiempo de retorno (time-to-revenue) de nuevosproductos
Mejoras en el valor competitivo del producto Maacutergenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacioacuten de la empresa Mayor escalabilidad del modelo de negocios en
teacuterminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos
mercados Reduccioacuten de riesgos en la entrega de productos
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Beneficios
La entrega de productos de software de una manera maacutes raacutepida
econoacutemica y
con una mejor calidad
Las LPS producen mejoras en Tiempo de entrega del producto (time to market)
Costos de ingenieriacutea
Tamantildeo del portafolio de productos
Reduccioacuten de las tasas de defectos
Calidad de los productos
Beneficios taacutecticos de ingenieriacutea
Reduccioacuten en el tiempo promedio de creacioacuten yentrega de nuevos productos
Reduccioacuten en el nuacutemero promedio de defectospor producto
Reduccioacuten en el esfuerzo promedio requeridopara desarrollar y mantener los productos
Reduccioacuten en el costo promedio de produccioacutende los productos
Incremento en el nuacutemero total de productos quepueden ser efectivamente desplegados ymantenidos
Beneficios estrateacutegicos de negocios
Reduccioacuten en el tiempo de entrega (time-to-market)y el tiempo de retorno (time-to-revenue) de nuevosproductos
Mejoras en el valor competitivo del producto Maacutergenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacioacuten de la empresa Mayor escalabilidad del modelo de negocios en
teacuterminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos
mercados Reduccioacuten de riesgos en la entrega de productos
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Beneficios taacutecticos de ingenieriacutea
Reduccioacuten en el tiempo promedio de creacioacuten yentrega de nuevos productos
Reduccioacuten en el nuacutemero promedio de defectospor producto
Reduccioacuten en el esfuerzo promedio requeridopara desarrollar y mantener los productos
Reduccioacuten en el costo promedio de produccioacutende los productos
Incremento en el nuacutemero total de productos quepueden ser efectivamente desplegados ymantenidos
Beneficios estrateacutegicos de negocios
Reduccioacuten en el tiempo de entrega (time-to-market)y el tiempo de retorno (time-to-revenue) de nuevosproductos
Mejoras en el valor competitivo del producto Maacutergenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacioacuten de la empresa Mayor escalabilidad del modelo de negocios en
teacuterminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos
mercados Reduccioacuten de riesgos en la entrega de productos
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Beneficios estrateacutegicos de negocios
Reduccioacuten en el tiempo de entrega (time-to-market)y el tiempo de retorno (time-to-revenue) de nuevosproductos
Mejoras en el valor competitivo del producto Maacutergenes mayores de ganancias Mejor calidad de los productos Mejoras en la reputacioacuten de la empresa Mayor escalabilidad del modelo de negocios en
teacuterminos de productos y mercados Mayor agilidad para expandir el negocio a nuevos
mercados Reduccioacuten de riesgos en la entrega de productos
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
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 tecnoloacutegicos Queacute tecnologiacuteas son fundamentales para desarrollar y mantener
activos y productos de software
Aspectos metodoloacutegicos Coacutemo desarrollar y mantener los activos y productos de software
Aspectos organizativos Coacutemo debe la empresa organizarse internamente
Aspectos gerenciales Coacutemo gestionar los proyectos de desarrollo de activos y productos
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Aspectos Conceptuales
Activos de Software
Componentes de Software Reutilizable
Dominios y
Familias
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Activos de Software Reutilizable
Es un producto de software disentildeado expresamente para ser utilizado muacuteltiples veces en el desarrollo de diferentes sistemas o aplicaciones
Puede ser
Un componente de software Una arquitectura de dominio
Una especificacioacuten de requisitos Un esquema de base de datos
Un modelo de negocios Una especificacioacuten de prueba
Una especificacioacuten de disentildeo La documentacioacuten de un sistema
Un algoritmo Un plan
Un patroacuten de disentildeo
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Componentes de Software Reutilizable
Un componente de software reutilizable es
ldquoUna pieza [de software] funcional que es liberada independientemente [de otras] y que proporciona acceso a sus servicios a traveacutes de sus interfacesrdquo [Brown 2000]
Puede ser liberado (desplegado e instanciado) independientemente de otros
Ofrece servicios a traveacutes de sus interfaces
Para utilizar su funcionalidad se emplean sus interfaces
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Dominios
Un dominio es un aacuterea de aplicacioacuten de productos de software que
estaacuten centradas en torno a un cuerpo de conocimientos
tienen una economiacutea de alcance asociada
Ocurre cuando construir un activo y usarlo en muacuteltiples productos ocasiona maacutes beneficios que crear el activo para cada producto
Pueden dividirse en subdominios
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
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 disentildeo arquitectoacutenico comuacuten
un conjunto componentes reutilizables
capacidades y servicios comunes
tecnologiacuteas comunes
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Liacuteneas de Productos Software
Una LPS es una familia de productos de software que tiene un conjunto de aspectos gestionados que son
comunes a todos los miembros de la familia
los productos de la liacutenea son desarrollados a partir de
un conjunto de activos de software reutilizables
Una familia de productos de software tiene Aspectos comunes que son compartidos por todos
sus productos
Aspectos variables que establecen diferencias entre los productos
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Objetivo Principal de una LPS
ldquoReducir el tiempo esfuerzo costo y complejidad de crear y mantener los productos de la liacutenea mediante La capitalizacioacuten de los aspectos comunes de la liacutenea
de productos
A traveacutes de la consolidacioacuten y reutilizacioacuten de los activos de entrada a la liacutenea
El manejo de los aspectos variables de los productos de la liacutenea A traveacutes de los puntos de variacioacuten de los activos y los
modelos de decisioacutenrdquo
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Desarrollo de Software Basado en LP
Arquitecturas de LPS
Repositorios de la LPS
Aacutereas de Praacutecticas y Patrones de LPS
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Arquitectura de una LPS
Es una arquitectura de software geneacuterica
Describe la estructura de toda la familia de productos y no solamente la de un producto particular
Captura los aspectos comunes y variables de una familia de productos de software
Los aspectos comunes de la arquitectura son capturados por los componentes de software que son comunes a toda la familia
Los aspectos variables de la arquitectura son capturados por los componentes de software que variacutean entre los miembros de la familia
Tambieacuten denominada arquitectura de dominio
La arquitectura LPS debe ser instanciada cada vez que se desarrolla un producto de la liacutenea
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Arquitectura de una LPS
Una arquitectura LPS es instanciada a traveacutes de mecanismos de variabilidad Herencia
Ej Suplantacioacuten de un meacutetodo heredado de una clase en un componente
Puntos de extensioacuten
Ej Se agrega nueva funcionalidad o comportamiento a un componente
Parametrizacioacuten
El comportamiento de un componente puede ser parametrizado a tiempo de disentildeo y definido a tiempo de implementacioacuten
Ej macros o templates
Configuracioacuten
Seleccioacuten y deseleccioacuten de los componentes de la arquitectura
Seleccioacuten a tiempo de compilacioacuten
La implementacioacuten de una funcionalidad es seleccionada entre varias posibles al momento de la compilacioacuten del componente o de la aplicacioacuten
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Respositorios LPS
Las liacuteneas 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 recuperacioacuten 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
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Respositorios LPS
El repositorio mantiene informacioacuten relevante de cada activo usado en la LPS
Especificacioacuten teacutecnica del activo
Historia o registro de uso
Clasificacioacuten del activo
Documentacioacuten del activo
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Tipos de Respositorios LPS
Seguacuten su alcance Locales Son desarrollados y reusados
internamente por una organizacioacuten o empresa
Globales o de uso comercial Disponibles a terceros bajo
adquisicioacuten o subscripcioacuten
Ejemplos COTS Servicios Web
Seguacuten su aplicabilidad De dominio especiacutefico
De dominio general
Seguacuten su propoacutesito
De reuso Permiten el
almacenamiento y recuperacioacuten de activos de software
De referencia Facilitan la localizacioacuten de
activos en otros repositorios
Ejemplo UDDIs
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Aacutereas de Praacutecticas y Patrones para LPS
La introduccioacuten del paradigma LPS en una empresa de software es un proceso complejo gradual y lleno de dificultades
Para obtener los beneficios que este paradigma ofrece una empresa debe tomar en consideracioacuten diferentes factores tecnoloacutegicos metodoloacutegicos organizacionales y gerenciales
Clements y Northrop (2002) definen un conjunto de aacutereas de praacutecticas y patrones Son esenciales considerar para asegurar el eacutexito de la
implantacioacuten del paradigma LPS en una empresa
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Aacutereas de Praacutectica de LPS
Un aacuterea de praacutectica es una coleccioacuten deactividades que una empresa debe ejecutar ydominar para implantar exitosamente unaLPS
Estas aacutereas de praacutectica describen actividadesque son normalmente recomendadas por elSEI para el desarrollo exitoso de software
Guardan una correspondencia estrecha conlas aacutereas de procesos definidas por el CMMI-SW
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Aacutereas de Praacutectica de LPS
Tres tipos de aacutereas de praacutecticas LPSrecomendadas por Clements y Northrop(2002)
Aacutereas de praacutectica de Ingenieriacutea de Software
Ejemplos Definicioacuten y evaluacioacuten de una arquitecturaLPS
Aacutereas de praacutectica de Gestioacuten Teacutecnica
Ejemplo Planificacioacuten de los proyectos de desarrollode componentes oacute de productos (aplicaciones)
Aacutereas de praacutectica de Gestioacuten Organizacional
Ejemplo Estructuracioacuten de la empresa
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Patrones LPS
Un patroacuten es una regla de tres partes las cuales expresan una relacioacuten entre un contexto un problema y una solucioacuten (Alexander 1979)
Los patrones LPS plantean soluciones a problemas recurrentes relacionados con las situaciones organizacionales de las LPS
Las soluciones son planteadas en teacuterminos de las aacutereas de praacutecticas y sus relaciones
Un ejemplo El patroacuten Que Construir
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Un ejemplo El patroacuten Que Construir
El Contexto Una empresa ha decidido crear una liacutenea de productos de
software y conoce bien el dominio de aplicacioacuten de los productos
El Problema Determinar que productos deberaacuten ser incluidos en la
liacutenea de productos
La Solucioacuten Para determinar que productos producir se requiere
informacioacuten relacionada con El dominio de aplicacioacuten la tecnologiacutea y el mercado La justificacioacuten del negocio El proceso para describir el conjunto de productos que
seraacuten incluidos en la liacutenea de productos
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Un ejemplo El patroacuten Que Construir
Las aacutereas de praacutectica requeridas por la solucioacuten Anaacutelisis del Mercado Ayuda a entender el mercado que tendraacute los productos de la liacutenea
queacute productos tienen mayor demanda cuaacutel es la competencia cuaacutel es el tamantildeo del mercado y cuales las oportunidades
Entendimiento de dominios relevantes Proporciona un modelo del dominio los requisitos del dominio y los
aspectos comunes y variables a todos los sistemas (aplicaciones) que forman el dominio
Proyeccioacuten tecnoloacutegica Permite predecir que productos que productos pueden llegar a ser
factibles en el futuro cercano
Construccioacuten de un caso de negocios Proporciona una justificacioacuten de la seleccioacuten de productos y del
enfoque se usaraacute para construirlos
Definicioacuten del alcance (scoping) Describe cuales productos seraacuten incluidos en la liacutenea de productos y
cuales no
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Aacutereas de Praacutectica de Ingenieriacutea de Software
Los aspectos metodoloacutegicos de las LPS involucran la aplicacioacuten de un conjunto de praacutecticas de ingenieriacutea
Definicioacuten de la arquitectura LPS
Evaluacioacuten de la arquitectura LPS
Desarrollo de componentes
Utilizacioacuten de COTS
Mineriacutea de activos existentes
Ingenieriacutea de Requisitos
Integracioacuten de sistemas de software
Pruebas
Entendimiento de dominios relevantes
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Procesos Baacutesicos de una LPS
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process
Modelos de Procesos para LPS
El Modelo TWIN
El meacutetodo WATCH
Modelo WATCH Component
Modelo WATCH Application
El modelo del Software Engineering Institute(SEI)
El modelo ESPLEP
Evolutionary Software Product Lines Engineering Process