Desarrollo de software basado en lineas de productos

33
DESARROLLO DE SOFTWARE BASADO EN LÍNEA DE PRODUCTOS Tópicos Avanzados de Ingeniería de Software Ing. Mónica Esther Ospino Pinedo

description

Nothing

Transcript of Desarrollo de software basado en lineas de productos

Page 1: 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

Page 2: Desarrollo de software basado en lineas de productos

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

Page 3: Desarrollo de software basado en lineas de productos

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

Page 4: Desarrollo de software basado en lineas de productos

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

Page 5: Desarrollo de software basado en lineas de productos

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

Page 6: Desarrollo de software basado en lineas de productos

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

Page 7: Desarrollo de software basado en lineas de productos

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

Page 8: Desarrollo de software basado en lineas 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

Page 9: Desarrollo de software basado en lineas de 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

Page 10: Desarrollo de software basado en lineas de productos

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

Page 11: Desarrollo de software basado en lineas 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

Page 12: Desarrollo de software basado en lineas de 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

Page 13: Desarrollo de software basado en lineas de productos

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

Page 14: Desarrollo de software basado en lineas de productos

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

Page 15: Desarrollo de software basado en lineas de productos

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

Page 16: Desarrollo de software basado en lineas de productos

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

Page 17: Desarrollo de software basado en lineas de productos

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

Page 18: Desarrollo de software basado en lineas de 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

Page 19: Desarrollo de software basado en lineas de productos

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

Page 20: Desarrollo de software basado en lineas de productos

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

Page 21: Desarrollo de software basado en lineas de productos

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

Page 22: Desarrollo de software basado en lineas de productos

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

Page 23: Desarrollo de software basado en lineas de productos

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

Page 24: Desarrollo de software basado en lineas de productos

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

Page 25: Desarrollo de software basado en lineas de productos

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

Page 26: Desarrollo de software basado en lineas de productos

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

Page 27: Desarrollo de software basado en lineas de productos

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

Page 28: Desarrollo de software basado en lineas de productos

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

Page 29: Desarrollo de software basado en lineas de productos

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

Page 30: Desarrollo de software basado en lineas 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

Page 31: Desarrollo de software basado en lineas de productos

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

Page 32: Desarrollo de software basado en lineas de productos

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

Page 33: Desarrollo de software basado en lineas de productos

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