Está en la página 1de 13

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/26522746

Administración de Variabilidad en una Línea de Producto de Software basada en


Modelos.

Article · January 2007


Source: DOAJ

CITATIONS READS
6 6,691

5 authors, including:

Kelly Garcés Carlos Parra

39 PUBLICATIONS   389 CITATIONS   
National Institute for Research in Computer Science and Control
21 PUBLICATIONS   363 CITATIONS   
SEE PROFILE
SEE PROFILE

Hugo Arboleda Andrés Yie


ICESI University Los Andes University (Colombia)
68 PUBLICATIONS   264 CITATIONS    10 PUBLICATIONS   106 CITATIONS   

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Change management project in Business - IT View project

cloud architectures View project

All content following this page was uploaded by Andrés Yie on 29 May 2014.

The user has requested enhancement of the downloaded file.


Administración de Variabilidad en una línea de producto
basada en modelos
Kelly Garcés Carlos Parra Hugo Arboleda Andres Yie Rubby Casallas
Universidad de los Universidad de los Universidad de los Universidad de los Universidad de los
Andes, Bogotá Andes, Bogotá Andes, Bogotá Andes, Bogotá Andes, Bogotá
k-garces c-parra1 hf.arboleda34 a-yie rcasalla
@uniandes.edu.co @uniandes.edu.co @uniandes.edu.co @uniandes.edu.co @uniandes.edu.co

RESUMEN depósito común. Los enfoques generativos intentan la


La administración de variabilidad en una línea de producto tiene construcción de sistemas a partir de la reutilización de procesos y
dos retos fundamentales: (1) la expresión de las características de componentes de generación.
comunes y variables de la línea, y (2) la construcción de Lograr construir aplicaciones reutilizando componentes requiere
aplicaciones que incluyan las características comunes, y un un enfoque de desarrollo de familias de productos para un
subconjunto de las características variables. En este artículo dominio específico, en lugar de un enfoque de construcción de
presentamos una propuesta para administrar la variabilidad aplicaciones independientes [12]. Una familia de productos de
durante el proceso de construcción de SPLs usando un enfoque de software (SPL) se define como “un conjunto de sistemas de
construcción de líneas de producto basado en modelos (MD- software que satisfacen necesidades específicas de un segmento
SPL). Para esto separamos conceptos relacionados con SPLs en del mercado” [26]. En un enfoque de desarrollo de SPLs, nuevos
diferentes dominios y construimos como activos de la línea productos de la línea son creados reutilizando un conjunto de
modelos de rasgos, metamodelos y tres tipos de reglas de componentes llamados activos. El principal activo es la
transformación para transformar modelos de un dominio origen a arquitectura de los productos, y otros activos adicionales pueden
diferentes (variables) modelos en un dominio destino. Las reglas ser especificaciones de requerimientos, modelos de diseño, o
nos permiten generar incrementalmente las aplicaciones de componentes de software, entre otros. La creación de activos se
acuerdo con una selección de rasgos realizada para cada dominio realiza en el proceso de ingeniería de dominio. La creación de
destino. Así, logramos ampliar el alcance de las SPLs, separar los aplicaciones reutilizando los activos se lleva a cabo durante el
dominios de manera que se disminuya la complejidad de crear proceso de ingeniería de aplicación [10, 22].
aplicaciones con características variables, y generar aplicaciones Aún cuando los productos de una línea satisfacen necesidades
automáticamente usando reglas de transformación. Para ilustrar la específicas de un dominio determinado, ellos difieren entre si en
solución construimos una MD-SPL donde los productos el conjunto de funcionalidades implementadas en cada uno. Así,
corresponden a ejercicios pedagógicos para la enseñanza de todos los productos de una SPL proveen un conjunto de
programación de computadores. funcionalidades comunes, pero cada producto difiere de los demás
en el conjunto de funcionalidades opcionales (variables) que
Categories and Subject Descriptors implementa. A la diferencia funcional entre productos de una
D.2.13 [Reusable Software]. Reuse models. I.6.5 [Model línea se le conoce como la variabilidad de una SPL [22].
Development]. La administración de variabilidad en una SPL puede ser definida
como el conjunto de actividades y artefactos necesarios para: (1)
General Terms expresar las características comunes y variables de una SPL, y (2)
Design, Languages. construir (componer y/o generar) aplicaciones que incluyan las
características comunes, y un subconjunto de las posibles
características variables. En una SPL, las características de los
Keywords productos se relacionan directamente con la funcionalidad que
Model Driven Architecture, Variability, Software Product Lines, éstos proveen.
and Model Transformation.
Actualmente, los modelos de rasgos son un estándar de facto
usado como mecanismo para apoyar la administración de la
1. INTRODUCCION variabilidad. Los modelos de rasgos son artefactos para expresar
El rápido avance tecnológico y el cambio constante en los las características comunes y variables de una familia de
requerimientos del negocio hacen del desarrollo de software una productos. En los modelos de rasgos la variabilidad se modela
tarea compleja. Encarar esta realidad ha sido motivación de como rasgos de los productos que pueden ser seleccionados de
múltiples propuestas que buscan aumentar tanto la calidad del manera particular para cada producto [18]. Así, a partir de la
software, como la productividad de los equipos de desarrollo. El selección de un conjunto de rasgos, usando los activos necesarios,
principio de dichas propuestas es la reutilización del software a se construyen aplicaciones que incluyen las características
partir de enfoques composicionales y/o generativos [24]. Los comunes, y un subconjunto de las posibles características
enfoques composicionales pretenden la construcción sistemas a variables.
partir de la relación de componentes que se encuentran en un
Por otro lado, un enfoque de reutilización generativa es la creadas a nivel de los metamodelos, lo que implica que en una
arquitectura basada en modelos (MDA) [19]. MDA utiliza los transformación aplicada al mismo modelo de origen se obtiene un
modelos como elementos de primera clase en el desarrollo de único modelo destino asociado, sin embargo para crear
aplicaciones, a diferencia de otros paradigmas que los utilizan aplicaciones con características variables es necesario que un
únicamente como elementos de representación, documentación y mismo modelo pueda ser transformado en modelos destino
comunicación. diferentes según las características variables seleccionadas.
La idea central de MDA es construir modelos del dominio del Para guiar la generación de modelos variables, definimos tres
problema, independientes de las características inherentes a las tipos de reglas de transformación: (1) reglas base, (2) reglas de
plataformas tecnológicas que se puedan utilizar para implementar control, y (3) reglas específicas. Utilizamos las reglas base para
aplicaciones. Un modelo del dominio del problema se transforma generar las características comunes de las SPLs. Las reglas de
de forma automática en un nuevo modelo que incluye control se encargan de escoger qué reglas específicas se deben
características de una plataforma tecnológica específica haciendo ejecutar según las características esperadas en el modelo destino
uso de reglas de transformación que permiten la generación de de la transformación. Las reglas específicas las usamos para
estos nuevos modelos. generar las diferentes características variables. Por medio de las
Los modelos son creados usando los conceptos definidos en un reglas específicas generamos aplicaciones de una misma familia
metamodelo. Un metamodelo se crea con base en los conceptos de con funcionalidad diferente según la selección de rasgos sobre el
un dominio, sus relaciones y semántica. Por esta razón los modelo destino realizada por el usuario en el proceso de creación
metamodelos son llamados también modelos de dominio [15]. La de aplicaciones (ingeniería de aplicación) de la SPL. De esta
relación entre un modelo y su metamodelo se define como una forma, utilizando metamodelos, reglas de transformación, y
relación de conformidad. Así, se dice que un modelo es conforme modelos de rasgos, logramos ampliar el alcance de una SPL, y
a su metamodelo [9]. separar los dominios de manera que se disminuya la complejidad
de crear aplicaciones con características variables en cada
Las reglas de transformación son definidas a nivel de los dominio. Sin embargo, las aplicaciones que generamos no son del
conceptos del metamodelo. Una regla de transformación típica todo completas. Ya que algunos requerimientos funcionales no se
toma los elementos de un modelo origen, conformes a un generan como parte de los procesos automáticos de
concepto del metamodelo origen, y los transforma en elementos transformación, nosotros complementamos las aplicaciones
de un modelo destino, conformes a conceptos del metamodelo manualmente como parte del proceso de ingeniería de aplicación.
destino [21]. Ilustramos esta propuesta con una SPL para el proyecto Cupi2
El propósito principal de MDA no es la creación de familias de [11]. Para el proceso de construcción nosotros utilizamos GMF
productos. Sin embargo, la separación de dominios y la naturaleza [6] como ambiente de modelado, AMW [2] como herramienta
generativa, hacen de MDA un enfoque de gran utilidad para la para hacer entrelazado de modelos, y ATL [3] como lenguaje de
creación de SPLs. Esto se logra partiendo de un modelo inicial, y transformación de modelos.
utilizando varios mecanismos de transformación automáticos para El artículo está organizado de la siguiente manera. La sección 2
obtener las diferentes aplicaciones miembros de una familia de presenta el contexto de aplicación que nos permitirá ilustrar la
productos. propuesta sobre un ejemplo concreto. La sección 3 y 4 presenta el
Resultados de recientes investigaciones muestran cómo el uso de problema de administrar variabilidad en una MD-SPL y la
MDA y SPLs (MD-SPL) resulta en un enfoque mixto solución propuesta para resolverlo, ilustrados con una línea de
(composicional y generativo) que permite definir procesos de producto. En la sección 5 explicamos brevemente la
creación de SPLs [15, 25]. Sin embargo, la administración de implementación realizada. La sección 6 presenta una comparación
variabilidad en un enfoque MD-SPL es un área actual de de nuestro trabajo con algunos trabajos relacionados y por último
investigación. presentamos las conclusiones y esbozamos los trabajos futuros.
En este artículo presentamos una propuesta para administrar la 2. CONTEXTO DE APLICACIÓN
variabilidad durante el proceso de construcción de SPLs usando Como escenario de ilustración creamos una SPL para el proyecto
un enfoque MD-SPL. Para esto, nosotros separamos conceptos Cupi2 [11]. Este es un proyecto del grupo de construcción de
relacionados con una línea de productos en diferentes dominios. software de la Universidad de los Andes, que propone una nueva
Estos dominios son el dominio de la lógica del negocio, el forma de enseñar la programación de computadores.
dominio de arquitectura, y el dominio de la plataforma
tecnológica. Esta separación nos permite administrar la La estrategia seguida para la enseñanza de programación se basa
variabilidad de las líneas de producto de manera separada para en que los estudiantes utilicen ejemplos y ejercicios de
cada dominio. aplicaciones completas, en lugar de solo construir secciones de
código. Una aplicación completa incluye la descripción del
Con el objetivo de expresar las características comunes y variables problema, los requerimientos funcionales, los requerimientos de
de las SPLs creamos modelos de rasgos para cada dominio. Para interfaz usuario, el diseño, las pruebas unitarias, y el código que
construir aplicaciones definimos metamodelos para cada uno de implementa la solución. Las aplicaciones utilizadas como ejemplo
los dominios presentados. Estos metamodelos son utilizados para para los ejercicios de aprendizaje están clasificadas por niveles.
construir un amplio conjunto de modelos variables en cada Para cada nivel se selecciona los conceptos que se quiere enseñar.
dominio, y de esta forma podemos expresar la variabilidad de un Estos conceptos están alineados con uno o varios ejes temáticos.
dominio específico. Por ejemplo, el nivel 7 incluye, entre otras temáticas, la enseñanza
Siguiendo el enfoque MDA, además de los metamodelos, creamos de algoritmos para manejo de colecciones como búsquedas y
reglas de transformación. Las reglas de transformación típicas son ordenamientos. Así, el objetivo de una aplicación de nivel 7 es
facilitar el aprendizaje de manejo de este tipo de estructuras de cada elemento del mundo es responsable de hacer persistir su
datos. Una característica importante es que el código utilizado información.
para resolver un problema de un nivel sólo incluye las temáticas
de los niveles anteriores y las propias del mismo nivel.
El proyecto Cupi2 necesita la construcción semestral de varias
aplicaciones ejemplo por cada nivel. Dado que en total son 18
niveles, la complejidad de la tarea es bastante alta y, además,
durante la construcción manual de los programas, es posible
inyectar defectos que se reflejan en el código fuente que manipula
el estudiante, lo cual puede causar inconvenientes en el proyecto,
dado que se debe garantizar la más alta calidad en estas
aplicaciones.
2.1 Identificación de características comunes
de los ejemplos Cupi2
El proyecto Cupi2 abarca diferentes temáticas de cursos de
programación. Las temáticas están organizadas en niveles, y cada
nivel tiene asociados ejemplos y ejercicios para facilitar la Figura 1. Modelos de los ejemplos de la Tienda de Discos y la
enseñanza/aprendizaje de dichas temáticas. En adelante Exposición de Automóviles.
trabajaremos sobre los ejemplos de Cupi2.
2.1.2 Características comunes del componente de
Todos los ejemplos tienen en común que son aplicaciones interfaz de usuario
monousuario sin requerimientos no funcionales complejos. Todos Las interfaces gráficas de usuario manejan la funcionalidad de
los ejemplos son desarrollados usando la misma plataforma paneles, listas, listas desplegables, etiquetas, cuadros de texto,
tecnológica, en este caso Java. Todos los ejemplos se estructuran botones, imágenes, botones de radio y cajas de chequeo. Todos
por tres componentes: el mundo, la interfaz de usuario, y las los elementos gráficos de la interfaz de usuario se agrupan en
pruebas. El componente del mundo implementa los conceptos de vistas de diferente tipo, cada una con responsabilidades
la lógica del negocio, sus atributos y relaciones. El componente de claramente definidas.
la interfaz de usuario implementa la visualización de la
información y la interacción entre el usuario y el componente del Hay dos tipos de vistas que son obligatorias para cualquier
mundo. El componente de las pruebas implementa las pruebas aplicación de ejemplo de Cupi2: (1) la vista principal, y (2) la
unitarias de la funcionalidad ofrecida por el componente del vista de extensión. La vista principal comunica el componente del
mundo. mundo con las demás vistas y agrupa todas las demás vistas de la
En nuestra línea de producto hemos dejado de lado el componente interfaz gráfica. La vista de extensión contiene botones que el
de pruebas unitarias y hemos limitado el posible conjunto de estudiante puede usar para acceder a nuevas funcionalidades que
aplicaciones que queremos desarrollar, con el fin de identificar un se agreguen como parte de la aplicación de ejemplo.
número manejable de características comunes y variables.
2.2 Identificación de características variables
2.1.1 Características comunes del componente del en los ejemplos Cupi2
mundo De la misma forma que se identifican características comunes a
Los conceptos del mundo y sus relaciones pueden ser todos los ejemplos, existen otras que varían para cada ejemplo
representados y manipulados funcionalmente por medio de particular. Las características variables de los ejemplos Cupi2
estructuras de datos de tipo agrupación. Las agrupaciones siempre están relacionadas básicamente con la organización de las vistas
tienen un elemento principal, que agrupa los demás elementos del incluidas en las interfaces de usuario y los algoritmos utilizados
mundo. Las figuras 1a y 1b presentan dos ejemplos de modelos en para administrar las agrupaciones.
el dominio de la lógica de negocio donde sus elementos están
relacionados por medio de agrupaciones. 2.2.1 Características variables del componente del
mundo
En el primer caso se presenta un modelo para una aplicación de
En el componente del mundo se encuentran elementos variables
una tienda de discos virtual que maneja canciones en formato
relacionados con los tipos de estructuras de datos, los algoritmos
mp3. En este modelo, se tienen elementos como Discotienda y
que las manipulan y los servicios utilizados para hacer persistir las
Disco. Las relaciones de agrupación muestran que el elemento
diferentes agrupaciones.
Discotienda contiene un grupo de Discos, y cada Disco a su vez
contiene un grupo de Canciones. En el segundo caso se presenta Las estructuras de datos que representan las agrupaciones pueden
un modelo para una aplicación de una exposición de automóviles. ser contenedores de tamaño fijo, contenedores de tamaño
En este ejemplo, se tiene el elemento ExposicionAutomoviles que variables o estructuras lineales como listas simples o doblemente
agrupa elementos Automóvil. enlazadas. Cada tipo de estructura de datos puede ser manipulada
usando diferentes algoritmos. Por ejemplo, es posible manipular
Todos los elementos del mundo tienen un conjunto de atributos, y
una estructura de datos con algoritmos diferentes para hacer
se relacionan con otros elementos del mundo. Finalmente, de
recorridos, inserción, búsqueda y ordenamiento, entre otros
manera común en todas las aplicaciones de la línea de producto
servicios.
Por otra parte, para hacer persistir la información de los elementos 2.2.2.6 Vista de Agregación
del mundo se pueden implementar diferentes funcionalidades para Este tipo de vista se utiliza para ingresar información particular
administrar archivos planos, o estructuras soportadas por las asociada a los atributos de nuevos elementos del mundo del
diferentes plataformas tecnológicas como las estructuras creadas problema. Sus componentes son similares a los de la vista de
al serializar objetos de Java. información, pero ésta utiliza cuadros de texto y botones de
Por ejemplo, en el caso de la exposición de automóviles, se puede confirmación para recopilar la información ingresada por el
crear un archivo plano donde se escriben los datos de cada uno de usuario de la aplicación.
los automóviles que existan en la estructura de datos agrupación En la Figura 2 se muestra un ejemplo de una posible interfaz de
residente en memoria. También es posible serializar cada objeto usuario para el ejemplo de la tienda de discos. Sobre esta interfaz
utilizando métodos propios de Java. La selección de un método o se pueden ver cuatro tipos de vistas diferentes: dos vistas de
el otro depende del nivel del ejemplo y los temas asociados que se información para mostrar los datos de los discos y de las
deseen enseñar. canciones, una vista de extensión con botones para agregar nuevas
funcionalidades al ejemplo, una vista de agregación para
2.2.2 Características variables del componente de introducir los datos de una canción nueva y finalmente una vista
interfaz de usuario principal que agrupa a todas las vistas.
No existe una forma única de representar los elementos del mundo
en términos de componentes gráficos. El usuario puede
seleccionar uno o varios tipos de vistas para representar la
información de un elemento del mundo. Con propósitos
pedagógicos, cada uno de los tipos de vistas posibles que se
utilizan en los ejemplos tiene definido un conjunto de
responsabilidades particulares que el desarrollador puede utilizar
para representar su mundo particular. Las responsabilidades de
cada tipo de vista se presentan a continuación:

2.2.2.1 Vista Principal


Este tipo de vista agrupa a las demás vistas. A través una vista
principal se realiza la comunicación entre el componente del
mundo y el componente de la interfaz de usuario.

2.2.2.2 Vista de Extensión Figura 2. Ejemplo de interfaz de usuario para el ejemplo de la


Este tipo de vista se utiliza para agregar funcionalidad a las tienda de discos
aplicaciones. Las vistas de extensión tienen un conjunto de
botones, y funcionalidades asociados a cada botón. Sin embargo, 3. PROCESO DE INGENIERÍA DE
en un principio las funcionalidades sólo son responsables de DOMINIO
desplegar un mensaje de notificación. Las nuevas funcionalidades El proceso de ingeniería de dominio es el responsable de la
o extensiones que se hagan a las funcionalidades existentes se creación de activos necesarios para el desarrollo de SPLs. Los
realizan manualmente por el estudiante a partir de las activos de una línea son los componentes que conforman la
instrucciones del profesor como parte de los ejercicios de arquitectura de la línea, especificaciones de requerimientos,
enseñanza de programación. modelos de diseño ó componentes de software, entre otros [10,
22]. En esta sección presentamos el conjunto de activos
2.2.2.3 Vista de Conjunto necesarios para ilustrar nuestra propuesta de administración de
Este tipo de vista se encarga de presentar un conjunto de variabilidad en SPLs usando MDA, en el contexto de aplicaciones
elementos de agrupaciones por medio del uso de componentes ejemplo para el proyecto Cupi2. Estos activos son: (1) modelos de
como listas o tablas. Adicionalmente puede ofrecer servicios que rasgos, (2) metamodelos, y (3) reglas de transformación.
manipulen el orden de presentación de los elementos dentro de la
agrupación. Para la creación de activos de la línea, separamos conceptos
relacionados con una SPL en diferentes dominios. Estos dominios
2.2.2.4 Vista de Búsqueda son el dominio de la lógica del negocio, el dominio de la
Este tipo de vista se utiliza para ingresar parámetros a partir de los arquitectura que incluye la interfaz gráfica de usuario (GUI) y el
cuales se realizan búsquedas sobre una agrupación de elementos. dominio de la plataforma tecnológica. Está separación nos permite
Típicamente contiene un cuadro de texto para introducir el administrar la variabilidad de las líneas de producto de manera
parámetro usado para realizar la búsqueda, y un botón de aislada para cada dominio. Es decir, podemos expresar las
confirmación. características comunes y variables de cada dominio, para luego
construir aplicaciones con características variables en cada uno de
2.2.2.5 Vista de Información los dominios permitiéndonos una mayor flexibilidad y
Este tipo de vista se utiliza para mostrar la información particular simplicidad.
asociada a los atributos de un elemento del mundo del problema.
Nuestra estrategia general para la creación de diferentes
Además de información alfanumérica, esta vista también puede
aplicaciones de la línea, de acuerdo con el enfoque MDA, se basa
mostrar imágenes asociadas a los elementos.
en la transformación automática de modelos hasta obtener
aplicaciones. Así, partimos de un modelo origen en el dominio de
la lógica de negocio, y lo transformamos en un modelo destino en opcionales. Un nodo solitario es obligatorio cuando representa un
el dominio de la arquitectura; luego, partimos del modelo rasgo común a todos los productos, mientras que un nodo solitario
generado en el dominio de la arquitectura, y lo transformamos en es opcional cuando representa un rasgo relevante a por lo menos
un modelo destino en el dominio de la plataforma tecnológica; un producto. Un nodo conjunto puede agrupar nodos obligatorios,
finalmente, transformamos a código fuente el modelo de y opcionales, o nodos alternativos. Cuando los nodos son
plataforma tecnológica que ya incluye las características de lógica alternativos sólo uno de ellos puede ser seleccionado.
de negocio y de arquitectura. Definimos modelos de rasgos para expresar las características
Para poder desarrollar aplicaciones siguiendo esta estrategia, comunes y variables de las diferentes aplicaciones de las SPLs.
definimos modelos de rasgos para expresar las características Sin embargo, cada modelo de rasgos se concentra en expresar
comunes y variables de cada dominio destino. Así, creamos características propias de las aplicaciones en un dominio
modelos de rasgos para el dominio de la arquitectura, y el particular. Para esto, en nuestra propuesta construimos modelos
dominio de la plataforma tecnológica. Cada modelo de rasgos se de rasgos para representar las características comunes y variables
concentra en expresar características propias del dominio de los modelos destino de una transformación en un dominio
particular. La Figura 3 presenta de manera general el proceso de determinado. En la SPL de las aplicaciones ejemplo del proyecto
ingeniería de dominio. Cupi2 existen dos dominios que en el proceso de generación de
aplicaciones se convierten en dominios destino, uno es el dominio
de la arquitectura, y el otro es el dominio de la plataforma
tecnológica.
La notación que utilizamos para representar los modelos de rasgos
es la definida en [12]. La figura 4 presenta un subconjunto del
modelo de rasgos para el dominio de la arquitectura. Estos rasgos
están relacionados con las características comunes y variables de
la interfaz de usuario identificadas en la sección 2. Este modelo
contiene el nodo Interfaz, un nodo solitario obligatorio y a la vez
un nodo conjunto. Como nodo conjunto, el nodo Interfaz agrupa
el nodo obligatorio Vista Principal y los nodos opcionales Vista
Conjunto, Vista Agregación y Vista Información.

Figura 3. Proceso de Ingeniería de Dominio


Como parte de los activos de la línea, para la generación de
aplicaciones, creamos metamodelos para cada uno de los
dominios presentados, y tres tipos de reglas de transformación
para transformar modelos en cada dominio origen, a modelos en
su respectivo domino destino. Como se dijo antes, estos tipos de
reglas son: (1) reglas base, (2) reglas de control, y (3) reglas
específicas. Las primeras reglas corresponden a reglas de
transformación escritas de forma declarativa, y son utilizadas para
generar las características comunes de las SPLs. Las reglas de
control se implementan de forma mixta (declarativa e imperativa),
y se encargan de escoger qué reglas específicas se deben ejecutar.
Las reglas de transformación específicas se implementan de forma
imperativa y son las encargadas de generar los elementos
Figura 4. Modelo de rasgos para el dominio de arquitectura
necesarios de acuerdo con las características esperadas en el
Cupi2
modelo destino de la transformación.
De manera complementaria la figura 5 presenta un subconjunto
3.1 Modelos de rasgos del modelo de rasgos para el dominio de la plataforma tecnológica
Un modelo de rasgos expresa características de los productos de (Java). En las figuras 4 y 5 se puede ver el nodo raíz de los
una línea y es utilizado para representar las similitudes y diagrama de rasgos, que para este caso se ha nombrado como el
diferencias entre ellos. Los rasgos pueden ser obligatorios, nombre del proyecto: Cupi2. Este modelo contiene el nodo
opcionales o alternativos. Los rasgos obligatorios son Contenedora, un nodo solitario obligatorio que a la vez es
características comunes a todos los productos, y los rasgos conjunto. Como nodo conjunto, el nodo Contenedora agrupa los
opcionales y alternativos varían entre uno y otro producto [16]. nodos alternativos ArrayList y Vector, que al ser nodos
Un diagrama de rasgos es un árbol cuyos nodos representan alternativos significa que el usuario sólo puede seleccionar uno de
rasgos. Los nodos pueden ser de tres tipos: nodo raíz, nodo ellos.
conjunto o nodo solitario. El nodo raíz es el nodo principal del
diagrama y siempre está presente. Un nodo conjunto agrupa otros
nodos y un nodo solitario es aquel que por definición no está
agrupado. Los nodos solitarios pueden ser obligatorios u
Para la creación de la SPL para el proyecto Cupi2 definimos como
activos tres metamodelos: el metamodelo de la lógica del negocio,
de la arquitectura y de la plataforma tecnológica. Cada
metamodelo incluye conceptos abstractos de un dominio diferente
de la SPL. Así, el metamodelo de la lógica del negocio sólo
incluye los conceptos esenciales del mundo del problema en los
ejemplos Cupi2; el metamodelo de la arquitectura incluye los
conceptos del metamodelo de lógica del negocio transformados,
junto con los conceptos de la arquitectura incluida la interfaz de
usuario; finalmente, el metamodelo de la plataforma tecnológica
incluye los conceptos del metamodelo de arquitectura ya
transformados junto con los conceptos propios del lenguaje como
por ejemplo paquetes, clases, métodos y atributos.
De acuerdo con las características comunes y variables
Figura 5. Modelo de rasgos para el dominio de la plataforma identificadas en la sección precedente, en las siguientes secciones
tecnológica Cupi2 presentamos los metamodelos de la lógica del negocio y de la
arquitectura.
La figura 6 presenta la relación que existe entre los dos modelos
de rasgos. Estas relaciones implican que los nodos que el usuario 3.2.1 Metamodelo de la lógica del negocio
puede seleccionar en el modelo de rasgos indican características El metamodelo de la lógica del negocio presentado en la Figura 7
funcionales de cada aplicación de la SPL, algunas de ellas incluye conceptos abstractos para los niveles 7 y 8 de los ejemplos
asociadas directamente con la selección de estructuras de datos de Cupi2. En términos generales, estos ejemplos describen un
particulares por implementar. Este es el caso de seleccionar un conjunto de elementos relacionados entre sí a través de estructuras
rasgo que implique el uso de un Vector o de un Arraylist. de agrupamiento. Por ejemplo, si se habla de un problema para
una exposición de automóviles, se dice que un elemento
Exposición agrupa a un conjunto de Automóviles. Además cada
elemento puede tener un conjunto de atributos que lo caractericen.
Por ejemplo, es posible que el elemento Automóvil tenga un
atributo que represente el año de fabricación, este atributo puede
usarse para construir un servicio de ordenamiento por año de
fabricación.

Figura 6. Modelo de rasgos para el dominio de arquitectura y


de plataforma tecnológica para la SPL del proyecto Cupi2
Esta relación permite ver cómo de manera complementaria la
variabilidad de una SPL se puede representar por diferentes
modelos de rasgos relacionados.

3.2 Metamodelos Figura 7. Metamodelo de la lógica del negocio


Un metamodelo se crea con base en los conceptos de un dominio,
En la Figura 7 se presentan los conceptos Agrupador y Elemento,
sus relaciones y semántica.
y la relación de agregación entre ellos. También se presenta el
Así como los modelos de rasgos permiten expresar características concepto AtributoCupi2 y los atributos que caracterizaran este
comunes y variables de un conjunto de aplicaciones, los concepto del mundo de acuerdo con los requerimientos
metamodelos permiten expresar características comunes y particulares de las aplicaciones que se construirán. Por ejemplo,
variables de un dominio. Esto se logra abstrayendo los conceptos se presenta el atributo esComparable que una vez instanciado,
de un dominio, sus propiedades, y sus relaciones. Los modelos indica que el AtributoCupi2 que posee la propiedad de ser
creados conformes a un metamodelo representan una instancia comparable tiene un tratamiento especial en el momento de
particular del dominio, con un conjunto de características construir los algoritmos de búsqueda o de ordenamiento que sobre
específicas. él se realicen.
presenta el concepto de Vista, una Vista a la vez puede tener un
conjunto de Componentes y un conjunto de Servicios. Los
Componentes se especializan en dos tipos, Componentes de
Interacción y de Visualización. Los Componentes de Interacción
son Componentes visuales mediante los cuales el usuario puede
invocar algún tipo de funcionalidad. Algunos ejemplos de
Componentes de Interacción pueden ser botones, listas o listas
desplegables. Por otro lado, los Componentes de Visualización se
usan para mostrar la información propia del ejemplo al usuario.
Algunos ejemplos de estos Componentes son las etiquetas, los
cuadros de texto o los cuadros de mensajes.

Figura 8. Modelo e instancia de un elemento del modelo para


el ejemplo Exposición de Automóviles
Los modelos conformes al metamodelo de la lógica del negocio,
utilizan sus conceptos para expresar las características propias de
una instancia del dominio que representan. En la figura 8a se
presenta el ejemplo de un modelo para construir la aplicación de Figura 9. Metamodelo de Interfaz
exposición de automóviles. En este modelo se utiliza el
estereotipo Agrupador, Simple, Atributo y AtributoCupi2 para La Figura 10 presenta un modelo conforme al metamodelo de
indicar la relación de conformidad entre elementos del modelo y interfaz de usuario de la arquitectura. De la misma manera que en
del metamodelo. El elemento ExposicionAutomoviles es conforme la figura 8, utilizamos estereotipos para mostrar la relación de
al elemento Agrupador que fue definido en el metamodelo. De conformidad de los elementos del modelo con el metamodelo.
acuerdo con la definición del elemento Agrupador, un concepto
de este tipo debe agrupar un conjunto de otros elementos. En el
caso del ejemplo, estos elementos son Automóvil. Cada Automóvil
a su vez contiene un conjunto de Atributo y de AtributoCupi2. En
la Figura 8b, se presentan un ejemplo de datos específicos que
puede tomar una instancia del modelo para el elemento imagen de
tipo AtributoCupi2.

3.2.2 Metamodelo de Arquitectura


El metamodelo de arquitectura esta relacionado con conceptos de
diseño de los ejemplos Cupi2, este metamodelo no incluye
decisiones de implementación sobre una plataforma tecnológica
específica. Para facilitar la representación, definimos un
metamodelo de arquitectura para los conceptos relacionados con
la lógica del negocio y otro con los conceptos de la interfaz
usuario.
El metamodelo de arquitectura de la lógica del negocio introduce
el concepto de Servicio. Los servicios son necesarios para
manipular las estructuras de datos del ejemplo. Por otro lado, la
interfaz de usuario incluye los conceptos de elementos gráficos y Figura 10. Modelo para el ejemplo Exposición de Automóviles
de interacción que serán parte de la interfaz gráfica de usuario de conforme al metamodelo de arquitectura de interfaz de
la aplicación generada. De esta manera, un modelo conforme al usuario
metamodelo de arquitectura, posee todos los elementos En este caso se tienen cuatro elementos diferentes conformes al
estructurales y gráficos a partir de los cuales se puede proceder elemento Vista del metamodelo. Cada Vista a su vez tiene un
con la especificación de la plataforma tecnológica y la generación conjunto de componentes específicos de acuerdo con sus
del código fuente. La Figura 9 presenta un subconjunto del responsabilidades específicas. El elemento PrincipalExposición es
metamodelo de interfaz de usuario. Este metamodelo busca la la Vista principal y contiene a las demás Vistas. La Vista
generalización de los conceptos encontrados en los distintos tipos ConjuntoAutomoviles se encarga de mostrar al grupo de
de vistas descritos en la sección 2. Como elemento principal se automóviles contenidos por la estructura de datos de la aplicación
ejemplo. Esta Vista tiene un componente de interacción de tipo puede transformar en cualquiera de las tres vistas. Para estos
Lista para mostrar el conjunto de automóviles. El Botón enlaces creamos otra regla de control y tres reglas específica más.
ordenarPorModelo está asociado con los servicios de
ordenamiento sobre la lista de automóviles. La Vista
BusquedaAutomóvil brinda al usuario la posibilidad de buscar un
automóvil en específico a partir del nombre. Por último, la Vista
InformaciónAutómovil, tiene un conjunto de Etiquetas para
visualizar cada uno de los atributos del Automóvil.
3.3 Modelos de entrelazado y reglas de
Transformación
Nuestra estrategia general, para la creación de aplicaciones de la
línea, se basa en la transformación de modelos hasta obtener
aplicaciones. Así, partimos de un modelo origen en el dominio de
la lógica de negocio, y lo transformamos hasta obtener código
fuente que incluye características de lógica de negocio, de
plataforma tecnológica y de arquitectura.
Las reglas de transformación típicas son definidas a nivel de los Figura 11. Modelo de entrelazado entre el metamodelo de
conceptos de los metamodelos. Una regla de transformación toma lógica de negocio y el modelo de rasgos de la arquitectura
los elementos de un modelo origen, conformes a un concepto del Nosotros implementamos las reglas base de forma declarativa, y
metamodelo origen, y los transforma en elementos de un modelo las reglas específicas de forma imperativa. Las reglas imperativas
destino, conformes a un concepto del metamodelo destino. Esto pueden ser ejecutadas muchas veces en un proceso de
implica que en una transformación todo modelo tiene un único transformación con parámetros diferentes.
modelo destino asociado. Sin embargo, para crear aplicaciones
con características variables es necesario que un mismo modelo Las reglas de control son implementadas de forma mixta, es decir,
pueda ser transformado en modelos destino diferentes. tienen una parte declarativa y una parte imperativa. Las reglas de
control determinan qué reglas específicas deben ejecutarse según
Para la generación de aplicaciones de la SPL definimos tres tipos las características variables deseadas para el modelo destino de la
de reglas de transformación, las cuales transforman modelos de transformación.
los dominios origen, en modelos del domino destino, permitiendo
generar diferentes modelos destino a partir de un mismo modelo En el Listado 1 presentamos un ejemplo de reglas base, de control
de origen según la funcionalidad deseada. Estos tipos de reglas y específicas. La regla vistaPrincipal es una regla base. El patrón
son: (1) reglas base, (2) reglas de control, y (3) reglas específicas. origen se define en las líneas (2-3) y el patrón destino en las líneas
Para diseñar estas reglas de transformación creamos modelos de (4-6). La regla vistaPrincipal consulta el modelo de la lógica de
entrelazado que permiten relacionar elementos de varios modelos negocio en busca de los elementos conformes al concepto
[14]. Agrupador (línea 3) de encontrarse alguno, se crea una Vista
Principal (línea 5). Siguiendo con nuestro ejemplo de la tienda de
Los modelos de entrelazado que creamos como parte del proceso discos, se crea una Vistaprincipal a partir del elemento
de ingeniería de dominio incluyen todas las relaciones entre los Discotienda. Para el ejemplo de una Exposición de vehículos, se
elementos de cada metamodelo origen y su respectivo modelo de crea una Vista principal asociada a ExposiciónVehículo.
rasgos destino. Así identificamos los elementos del metamodelo
origen que se transforman siempre en los mismos elementos del La regla vistaConjunto es una regla de control. En las líneas 7-14
metamodelo destino, para los cuales creamos reglas base, y los se define la parte declarativa y en las líneas 15-18 la parte
que pueden ser transformados de forma diferente (variable), para imperativa. La regla vistaConjunto busca en el modelo de
los que creamos reglas de control y reglas específicas. De esta entrelazado aquellos enlaces que tenga como rasgo Vista
forma construimos reglas base para generar las características Conjunto (línea 9). De acuerdo con el modelo de entrelazado
comunes de la línea, y reglas de control y específicas para generar presentado en la figura 9, la regla encuentra que existe un enlace
las características variables. entre Disco y VistaConjunto, entonces se recupera el elemento
Disco del modelo de la lógica de negocio (línea 11), crea una
La Figura 11 ilustra un modelo de entrelazado entre un Vista (línea 14) e invoca la regla imperativa addComponente
metamodelo de lógica de negocio y los rasgos de la arquitectura. (16).
En la figura el enlace entre Agrupador y el rasgo obligatorio
VistaPrincipal indica que para un elemento de tipo Agrupador La regla addComponente es una regla especifica. En la línea 19 se
siempre se crea una Vista Conjunto. Para este enlace creamos una aprecia el nombre de la regla y sus parámetros, en las líneas 20-23
regla base. Los enlaces entre Agrupador y los rasgos alternativos se aprecia el patrón destino y en las líneas 24-26 se aprecian
Serializacion y Archivos, indican que un elemento de tipo sentencias imperativas. Cuando ésta regla es invocada desde la
Agrupador puede implementar su persistencia de las dos regla de control se crea un componente de tipo Visualizacion
diferentes formas. Para estos enlaces creamos una regla de control (línea 21), se le asigna al componente el tipo del parámetro, en
y dos reglas específica. Los enlaces entre el elemento Simple y los este caso lista (línea 22), y se agrega el componente a la Vista
rasgos opcionales VistaInformacion, VistaConjunto y creada (línea 25).
VistaAgregacion, indican que un elemento de tipo Simple se
lógica de negocio. Los modelos conformes al metamodelo de la
lógica del negocio utilizan sus conceptos para expresar las
características propias de una instancia del dominio que
representan. Un ejemplo de este modelo es el presentado
previamente en la Figura 8a.

4.2 Modelo de entrelazado entre modelos


origen y rasgos del dominio destino
Para la generación de modelos con rasgos particulares en el
dominio destino es necesario hacer la selección de rasgos
deseados. Para esto creamos modelos de entrelazado entre los
elementos de modelos conformes a un metamodelo origen y los
elementos del modelo de rasgos destino. La selección de rasgos
sobre el modelo de entrelazado nos permite determinar el
conjunto de reglas de transformación necesarias para generar el
modelo destino deseado.
En estos modelos de entrelazado las relaciones están restringidas
por el entrelazado realizado en el proceso de ingeniería de
dominio. Por ejemplo, en el modelo de entrelazado del proceso de
ingeniería de dominio se puede ver que es posible transformar los
elementos conformes al elemento Agrupador del metamodelo
origen, en una Vista de Información o en una Vista Conjunto. Así,
en el modelo de entrelazado del proceso de ingeniería de
Listado 1. Reglas de transformación base, de control e aplicación, cada elemento conforme al elemento Agrupador se
imperativas entrelaza con uno de los dos posibles destinos: Vista de
Información o Vista Conjunto. En la Figura 13 se presenta un
4. INGENIERÍA DE APLICACIÓN modelo de entrelazado para este ejemplo.
El proceso de ingeniería de aplicación es el responsable de la
creación de productos de la SPL usando los activos construidos en
el proceso de ingeniería de dominio [10, 22].
Como presentamos antes, nuestra estrategia general para la
creación de aplicaciones de la línea se basa en la transformación
de modelos hasta obtener aplicaciones. Así, nosotros partimos de
un modelo fuente en el dominio de la lógica de negocio, y lo
transformamos hasta obtener código fuente con características de
la lógica de negocio, de arquitectura, y de plataforma tecnológica.
El proceso general de ingeniería de aplicación es presentado en la
Figura 12.

Figura 13. Modelo de entrelazado entre un modelo de lógica de


negocio y el modelo de rasgos de arquitectura
La figura 13 presenta enlaces que tienen como origen elementos
del modelo de la lógica de negocio y como destino rasgos de
arquitectura. En la figura se puede ver la relación entre el
elemento Discotienda y el rasgo Vista información, y el enlace
entre el elemento Disco y el rasgo Vista conjunto. Esta selección
de rasgos y asociación con elementos del modelo de la lógica de
negocio genera una interfaz de usuario con una Vista información,
la cual contiene etiquetas y cuadros de texto asociados a los
Figura 12. Proceso de Ingeniería de Aplicación atributos de Discotienda, y una Vista Conjunto que agrupa los
nombre de los Discos en una lista. Por otro lado el enlace entre
4.1 Modelo de lógica de negocio Discotienda y el rasgo Serialización, impide que haya un enlace
Como se puede ver en la figura 12, la primera actividad de este
proceso es la creación de un modelo conforme al metamodelo de
entre Discotienda y Archivos, pues Serialización y Archivos son • Un manejador de metamodelos y modelos: esta herramienta
rasgos alternativos. debe permitir definir metamodelos y modelos, que sean
Para la SPL de Cupi2 nosotros realizamos dos operaciones de serializados en formato XMI y seguir los estándares de MOF
entrelazado. En la primera se entrelazan modelos de la lógica de propuestos por la OMG. Para esto se escogió a EMF [5].
negocio con los rasgos de arquitectura, y en la segunda se EMF implementa EMOF (Essential MOF), el cual es el
entrelazan modelos de arquitectura con los rasgos de plataforma subconjunto básico de MOF.
tecnológica. • Una herramienta gráfica de modelado: Debido a la
complejidad en la expresión de los metamodelos se requiere
4.3 Configuración y ejecución de reglas de de una herramienta que permita modelar gráficamente. Se
escogió GMF como herramienta de modelado. Esta
transformación herramienta permite definir metamodelos gráficamente y
Cuando la selección de rasgos ha sido realizada para un proceso generar un plug-in que permite crear los modelos conformes
de transformación entre modelos, un conjunto de reglas de a dicho metamodelo [6].
transformación son ejecutadas. Este conjunto de reglas de • Un lenguaje de transformación de modelo a modelo: Un
transformación incluye reglas base, reglas de control, y reglas lenguaje que permita definir transformaciones entre los
específicas. metamodelos de dos dominios. Se seleccionó ATL como
Cada proceso de transformación tiene como entradas un modelo lenguaje de transformación por ser un lenguaje mixto
origen, el conjunto de reglas de transformación, y el modelo de (declarativo e imperativo) compatible con modelos
entrelazado entre modelos origen y rasgos del dominio destino; y expresados con EMF [3]. Aun cuando ATL no es una
como salida un modelo destino. implementación de QVT (Query, View, Transformations), el
estándar propuesto por la OMG para hacer consultas y
Al ejecutarse la transformación se recorren todos los elementos transformaciones sobre los modelos y metamodelos, tiene
del modelo origen, aplicando las reglas base o de control una implementación consistente.
asociadas a cada uno según sea el caso. Si un elemento esta • Una herramienta de entrelazado entre modelos: Una
asociado a una regla base, ésta se ejecuta generando los elementos herramienta que permita mapear o relacionar elementos de
definidos en la regla. Si un elemento está asociado a una regla de dos modelos diferentes, y genere un modelo con la
control, se analizan las propiedades del elemento y los rasgos que información de estos entrelazados para ser utilizada por las
tiene asociados en el modelo de entrelazado. Según esto se decide transformaciones automáticas, y que sea compatible con
qué regla especifica debe ejecutarse. Las reglas especificas reciben modelos expresados con EMF. Esta herramienta es AMW[2].
como parámetro el elemento y algunos parámetros que permiten • Un lenguaje de transformación de modelo a código: Se
producir los elementos deseados para cumplir con la requiere un lenguaje de transformación que se especialice en
funcionalidad representada por el rasgo. la generación de archivos de texto (código, XML,
documentación) a partir de modelos. Usamos Acceleo [1]
5. IMPLEMENTACIÓN DE LA SOLUCIÓN debido a que podemos recibir modelos expresados con EMF,
En el proceso de ingeniería de dominio para desarrollar la SPL utilizar plantillas para la generación, manejar adecuadamente
donde creamos aplicaciones específicas de ejemplo como la de la código no generado.
Tienda de Discos, la Exposición de Vehículos, y otras han
servido como validación de esta propuesta, se construyeron como 6. TRABAJOS RELACIONADOS
activos de la línea modelos de rasgos, metamodelos, y reglas de Propuestas para la administración de la variabilidad en SPL
transformación. Se construyeron modelos de rasgos para el plantean principalmente estrategias que se enfocan en administrar
dominio de la arquitectura y de la plataforma tecnológica. Se la funcionalidad variable de los miembros de las familias de
construyeron metamodelos de la lógica del negocio, de la productos. La diferencia entre estas propuestas radica en los
arquitectura, y de la plataforma tecnológica. Finalmente, se activos utilizados para expresar la variabilidad, y para crear
construyeron reglas de transformación base, de control y aplicaciones (variables) de la SPL en el proceso de ingeniería de
especificas. Estas reglas de transformación transforman modelos aplicación. En esta sección se presenta un consolidado de
de la lógica del negocio a modelos de arquitectura, y modelos de propuestas para administrar la variabilidad en SPLs. Sin embargo,
arquitectura a modelos de la plataforma tecnológica. el objetivo de esta sección no es presentar todo el estado del arte
del tema. Algunos trabajos pueden no encontrarse aquí
De manera consolidada el proceso de creación de la aplicación es referenciados.
el siguiente. El desarrollador crea un modelo de la lógica del
negocio. Este modelo se entrelaza con el modelo de rasgos de la El método FODA [16] fue introducido como una estrategia para
arquitectura y se aplica la transformación necesaria para obtener expresar funcionalidad variable en el proceso de ingeniería de
un modelo de arquitectura. El modelo de arquitectura generado se requerimientos a través del uso de modelos de rasgos. La
entrelaza con el modelo de rasgos de la plataforma tecnológica y propuesta de FORM [17] complementa la propuesta de FODA
se aplica la transformación necesaria para obtener un modelo de para expresar funcionalidad variable en el proceso de diseño de
plataforma tecnológica. Finalmente, se aplica una transformación aplicaciones, y prescribe cómo los modelos de rasgos pueden ser
basada en plantillas para generar el código fuente (ver Figura 12). usados como base para desarrollar arquitecturas de dominio y
componentes para reutilización. En FORM los autores proponen
Para la implementación de nuestra solución seleccionamos una categorizar los rasgos de acuerdo con requerimientos no
suite de herramientas plug-ins de Eclipse [4]. Estas se describen a funcionales, y usan componentes orientados a objetos como
continuación: activos para crear aplicaciones de la SPL.
En AHEAD [8] se propone un modelo de arquitectura para variabilidad de la línea en cada dominio específico. De manera
programación orientada a modelos, y una base para programación complementaria a los modelos de rasgos, usamos metamodelos
composicional a gran escala. En AHEAD (Algebraic Hierarchical para expresar la variabilidad de los diferentes dominios,
Equations for Application Design) los modelos de rasgos son ampliando así el alcance de una SPL.
usados para expresar variabilidad. Los activos para crear
Para la creación de aplicaciones usamos una estrategia
aplicaciones de la SPL son fragmentos de clases y métodos. Los
principalmente generativa. Nosotros generamos automáticamente
rasgos se asocian con estos activos, y se componen por medio de
las aplicaciones con características variables de una SPL usando
ecuaciones algebraicas para crear aplicaciones de la SPL.
reglas de transformación aplicadas sobre modelos. En cada
En [7] se presenta una propuesta que tiene como activos clases y proceso de transformación permitimos tomar decisiones de los
aspectos. Para la expresión de la variabilidad, los autores rasgos seleccionados. Así, dividimos la toma de decisiones sobre
proponen la elaboración de modelos de rasgos. Para la creación de los modelo de rasgos, aplazando hasta el último momento las
aplicaciones de la SPL se propone: (1) el diseño de una decisiones referentes a plataforma tecnológica.
arquitectura flexible aplicando patrones, (2) el diseño de los
aspectos correspondientes a los rasgos variables, y (3) la 7. CONCLUSIONES
composición entre los aspectos y las clases de negocio. En este artículo hemos presentado una propuesta para administrar
la variabilidad durante el proceso de construcción de SPLs usando
Como se puede ver en los trabajos citados, los modelos de rasgos
un enfoque MD-SPL. Para la creación de activos de la línea,
son un estándar de facto para modelar la variabilidad de las SPLs.
hemos separado conceptos relacionados con una SPL en
Sin embargo, existen otras propuestas de modelos que apuntan a
diferentes dominios. Esta separación permite ampliar el alcance de
la expresión de esta variabilidad. En [23] se propone un modelado
la SPL administrando la variabilidad a nivel de conceptos de cada
ortogonal de la variabilidad (OVM) para reducir la complejidad
dominio de forma independiente, al tiempo que se sigue
de los modelos de rasgos. Los modelos de variabilidad son
administrando la variabilidad de las aplicaciones de la línea sobre
construidos conformes a un metamodelo general que define los
un conjunto bien definido de características funcionales.
conceptos de variabilidad. A su vez, en [20] se presenta un
proceso basado en UML para la expresión de la variabilidad y la La estrategia que hemos utilizado para la creación de diferentes
definición de mecanismos que permitan la implementación de aplicaciones de la línea se basa en la transformación automática
ésta, es decir, la construcción de aplicaciones de la SPL. de un modelo inicial de lógica de negocio en un modelo destino
de arquitectura; luego, partimos del modelo de arquitectura, y lo
Recientes trabajos presentan cómo la Ingeniería Dirigida por
transformamos en un modelo destino de plataforma tecnológica;
Modelos (MDE) es útil en el proceso de administración de la
finalmente, transformamos a código fuente el modelo de
variabilidad en SPLs. En [12] el autor presenta desde una
plataforma tecnológica que ya incluye las características de lógica
perspectiva global los conceptos básicos del enfoque de
de negocio y de arquitectura. De esta forma, solo construimos
Desarrollo de Software Generativo (GSD). Este enfoque apunta a
manualmente el modelo inicial de la lógica del negocio usando
desarrollar familias de productos automatizando la creación de
conceptos con un alto nivel de abstracción. Posteriormente
miembros de la familia a partir de especificaciones escritas en
generamos de forma automática otros modelos por medio de
lenguajes de dominio específico. Estos lenguajes pueden ser
reglas de transformación hasta obtener aplicaciones. Así
definidos por medio de metamodelado.
construimos y usamos reglas de trasformación más sencillas y
En [13] se presentan MDA como un mecanismo para expresión de flexibles que las necesarias para transformar en un solo paso un
variabilidad que permite aplazar la toma de decisiones sobre el modelo de lógica de negocio en una aplicación. Dado que las
modelo de rasgos. En [25] se utilizan los diferentes niveles de aplicaciones que generamos no son del todo completas al no
abstracción de MDA como mecanismo para expresar la incluir todos los requerimientos funcionales, parte del trabajo
variabilidad de manera separada para cada dominio que futuro incluye el modelado de todos los requerimientos
corresponde a una abstracción. Las aplicaciones de la SPL son funcionales como parte de los modelos de lógica de negocio, y la
creadas componiendo elementos de un framework común. En [15] trasformación de los modelos de los requerimientos hasta
se plantea la reutilización de activos y la ampliación de alcance incluirlos en las aplicaciones completas generadas.
del manejo de la variabilidad, por medio de el uso de
Para guiar la generación de aplicaciones con características
metamodelos en diferentes niveles de abstracción. La
diferentes (variables) en cada dominio, nosotros creamos
composición de las aplicaciones se hace por medio de mapeos
metamodelos, modelos de rasgos, modelos de entrelazado y tres
entre los conceptos abstractos del negocio y los componentes de
tipos diferentes de reglas de transformación: (1) base, (2) de
bajo nivel. Estas propuestas MD-SPL no utilizan
control y (3) específicas. Los modelos de rasgos permiten
transformaciones como mecanismo para la generación de las
expresar y seleccionar las características deseadas de una
diferentes aplicaciones de la SPL
aplicación en un dominio destino específico. Los metamodelos
En nuestra propuesta nosotros usamos como activos para permiten crear un amplio conjunto de modelos (variables) en un
administrar la variabilidad: (1) modelos de rasgos, (2) dominio particular ampliando el alcance de la SPL. Los modelos
metamodelos, y (3) reglas de transformación. Al igual que en de entrelazado entre metamodelos y modelos de rasgos permiten
algunas de las propuestas anteriores, usamos modelos de rasgos identificar las reglas de transformación necesarias para generar
para expresar la variabilidad de las aplicaciones que hacen parte características comunes y variables de las aplicaciones de la línea.
de la SPL. Sin embargo, de acuerdo con nuestra estrategia de Las reglas de transformación base permiten crear aplicaciones con
generación de aplicaciones de una SPL, nosotros creamos las características comunes de la línea. Las reglas de control y
diferentes modelos de rasgos para expresar de manera separada la específicas permiten crear aplicaciones con las características
variables de la línea. Finalmente, los modelos de entrelazado entre [10] P. Clements y L. Northrop Software Product Lines:
modelos origen de una transformación y modelos de rasgos del Practices and Patterns. Addison Wesley Professional,
dominio destino de la transformación permiten la ejecución 2001.
automática de reglas para generar modelos de aplicaciones [11] Cupi2. Proyecto CUPI2.http:cupi2.uniandes.edu.co. En
variables en cada dominio. Así, usando estos diferentes activos se Línea, Ultima visita Diciembre 2006
puede administrar la variabilidad de SPLs no solo a nivel de [12] K. Czarnecki, Overview of Generative Software
aplicación, sino a nivel de dominio. Esto significa que podemos Development. en Unconventional Programming Paradigms
generar aplicaciones que varían no solo en funcionalidades (UPP'04), Mont Saint-Michel, France, 2004, LNCS 313–
concretas a nivel de aplicaciones de la línea, sino en conceptos de 328.
los diferentes dominios identificados. [13] S. Deelstra, M. Sinnema, J.v. Gurp y J. Bosch, Model Driven
Architecture as Approach to Manage Variability in Software
Actualmente nuestra propuesta se encuentra en validación
Product Families. en Workshop on Model Driven
generando diferentes aplicaciones de la línea. Como futuro trabajo
Architecture: Foundations and Applications (MDAFA'03),
se espera crear SPLs para otros niveles de Cupi2 de manera que se
Enschede, The Netherlands, 2003.
pueda validar los conceptos de esta propuesta en dominios donde
[14] M. Didonet Del Fabro, J. Bézivin, F. Jouault, E. Breton y G.
la lógica de negocio maneje un número más elevado de conceptos.
Gueltas, AMW: a generic model weaver. en Journées sur
La construcción de un Plug-in para eclipse que permite la l'Ingénierie Dirigée par les Modèles (IDM'05), Paris, France,
creación de los modelos de entrelazados, la selección de rasgos en 2005.
cada dominio, y la generación automática de aplicaciones hace [15] J. Estublier y G. Vega. Reuse and variability in large
parte del trabajo actual como parte de la propuesta. software applications 13th ACM SIGSOFT ACM Press
Lisbon, Portugal 2005.
Aun cuando los resultados hasta ahora obtenidos como parte de la [16] K. Kang, S. Cohen, J. Hess, W. Novak y A. Peterson.
implementación de la propuesta son motivadores, existe un Feature-Oriented Domain Analysis (FODA) Feasibility
amplio número de puntos para trabajar. Algunos de ellos se Study. CMU/SEI-90-TR-021, T.R. ed., Software Engineering
presentan a continuación. Es necesario profundizar en el tema de Institute, Carnegie Mellon University, Pittsburgh, Estados
separación de dominios, explorando alternativas para separar Unidos 1990.
dominios y para modelar conceptos de cada dominio particular. [17] K.C. Kang, S. Kim, J. Lee, K. Kim, E. Shin y M. Huh
Como parte del trabajo sobre la expresión conceptual de los FORM: A feature-oriented reuse method with domain-
diferentes dominios, es necesario trabajar sobre la expresión y specific reference architectures. Annals of Software
transformación de conceptos relativos a requerimientos Engineering 5. 143 - 168. 1998.
funcionales de las aplicaciones que se construyen. También es [18] J. Lee y D. Muthig Feature-oriented variability management
necesario trabajar sobre la construcción de reglas de control y in product line engineering. Communications of the ACM, 49
reglas específicas más modulares con base en patrones de (12). 55 - 59. 2006.
transformación mejor definidos. Como parte complementaria a los [19] J. Mukerji y J. Miller. MDA Guide, 2003.
procesos de transformación, y en general a los procesos de [20] E.A.d. Oliveira, I.M.S. Gimenes, E.H.M. Huzita y J.C.
generación de aplicaciones, en esta propuesta la administración de Maldonado, A variability management process for software
la trazabilidad es un campo completo por explorar. product lines. en Conference of the Centre for Advanced
Studies on Collaborative research Toronto, Ontario, Canada
8. REFERENCES 2005, 225 - 241
[1] Acceleo. En Línea: http://www.acceleo.org, Ultima visita [21] O.M.G. OMG. MOF 2.0 Query/Views/Transformations RFP,
2006 2002.
[2] AMW Home Page. En Línea: [22] K. Pohl, G. Böckle y F.J.v.d. Linden Software Product Line
http://www.eclipse.org/gmt/amw/, Ultima visita 2006 Engineering: Foundations, Principles and Techniques.
[3] ATL Home Page. En Línea: http://www.eclipse.org/gmt/atl/, Springer, 2005.
Ultima visita 2006 [23] K. Pohl, F. van der Linden y A. Metzger Software Product
[4] Eclipse. En Línea: http://www.eclipse.org/, Ultima visita 2006 Line Variability Management. International Software
[5] Eclipse Modeling Framework. En Línea: Product Line Conference. 2006.
http://www.eclipse.org/emf/, Ultima visita 2006 [24] J. Sametinger Software engineering with reusable
[6] Graphical Modeling Framework En Línea: components. Springer, New York, 1997.
http://www.eclipse.org/gmf/, Ultima visita 2006 [25] A.L. Santos, A. Lopes y K. Koskimies, An MDA Approach
[7] V. Alves, A. Dantas y P. Borba. AOP-Driven Variability in to Variability Management in Product-Line Engineering en
Product Lines of Pervasive Computing Applications Second Nordic Workshop on UML and Software Modeling
International GenerativeProgramming and Component (NWUML'06), Grimstad, Norway, 2006.
Engineering Conference (GPCE'03), Erfurt, Germany, [26] S.E.I. SEI. Software Product Lines. En Línea:
2003. http://www.sei.cmu.edu/productlines/, Ultima visita
[8] D. Batory, Feature-oriented programming and the AHEAD Diciembre 2006
tool suite. en International Conference on Software
Engineering (ICSE'04), Edinburg, Scotland, 2004.
[9] J. Bézivin On the Unification Power of Models. Software and
Systems Modeling, 4 (2). 171-188. 2005.

View publication stats

También podría gustarte