Combinando Modelos de Procesos y Activos Reutilizables en una Transición poco Invasiva hacia las Líneas de Producto de Software Orlando Avila-García, Antonio Estévez García, E. Victor Sánchez Rebull José Luis Roda García Open Canarias, S.L. Santa Cruz de Tenerife España orlando,aestevez,[email protected] http://www.opencanarias.com Universidad de La Laguna Santa Cruz de Tenerife España [email protected] http://www.taro.ull.es Resumen diseño, producción, precio, y servicios asociados al software. En el debate abierto sobre la Existen tres modelos de adopción/creación de producción de software surgieron dos ideas re- líneas de producto de software: proactivo, ex- veladores: la propuesta por R. W. Bremer, so- tractivo y reactivo. Mientras los dos primeros bre la necesidad de utilizar entornos de pro- pueden implicar costes y tiempo de adopción ducción controlados por maquinaria, lo que fue prohibitivos, el tercero plantea una alternati- llamado por primera vez factoría de software va con menos costes de adopción, lo que se [4], y la presentada por M. D. McIlroy, sobre denomina una transición poco invasica hacia las grandes ventajas que ofrece la creación y la ingeniería basada en líneas de producto. En ensamblaje de componentes reutilizables [18]. este artículo proponemos un método reactivo, Estas ideas son el exponente de dos impor- basado en la combinación de activos reutiliza- tantes principios de factoría: automatización bles y procesos de software. Nuestro método y reutilización, respectivamente. Es importan- permite la automatización progresiva y distri- te considerar que desde el principio se tuvo en buida de las tareas de un proceso de software cuenta que, en el caso del software, no usamos hasta llegar a su completa automatización. estos principios para producir en masa réplicas exactas de un mismo producto (problema que 1. Introducción La celebración en 1968 de la conferencia NA- no existe en el caso del software), sino productos similares o variantes de un mismo producto a bajo coste y en menos tiempo [18]. TO sobre Ingeniería del Software marca el na- Numerosas aproximaciones han venido ofre- cimiento de dicha disciplina [19]. La principal ciendo aportaciones sobre estos y otros princi- motivación para su celebración fue la crecien- pios complementarios de factoría aplicados al te necesidad de producir sistemas de software software [8]. Uno de las aproximaciones más más grandes, complejos y ables, de una ma- importantes lleva el nombre de Líneas de Pro- nera más controlada y eciente. Con ello se ducto de Software [7], paradigma enriquecido afrontaba lo que se denominó entonces la cri- en los últimos años por la Ingeniería Dirigida sis del software, la imposibilidad de las tecno- por Modelos [24]. Esta aproximación se basa logías de software de aquella época para satis- en la idea de producir familias (o variantes si- facer las demandas de la industria. milares) de productos de software a partir de En dicha conferencia se trataron temas de un conjunto de activos reutilizables (denomi- assets ) de una forma prescrita. Desarro- do los correspondientes activos. Bajo deman- llar un producto de la línea es más una cues- da signica que incluiremos nuevos productos tión de ensamblaje y conguración de activos a medida que aparezca la necesidad de produ- que de creación. Para cada línea de produc- cirlos. La creación de activos es por tanto más to debe haber una guía predenida o plan de incremental y progresiva que con los modelos producción que especica el proceso exacto de de adopción anteriores (ver un ejemplo en [5]). nados obtención de cada producto. Esta aproxima- Este tipo de modelo de adopción permite ción ofrece así tecnologías para llevar a cabo una transición poco invasiva desde una inge- reutilización y automatización en los procesos niería de software convencional, centrada en de software. un único producto, a una ingeniería basada en La dicotomía entre ingeniería de dominio e líneas de producto, centrada en la producción ingeniería de aplicación es esencial en la apro- de variantes de productos. Estas transiciones ximación de Líneas de Producto de Softwa- poco invasivas ofrecen dos ventajas principales re [7]; es más, es la base de cualquier intento [15]: la rápida consecución del ROI ( de reutilización y automatización en procesos Return-ofInvestment ); y la posibilidad de seguir con los de software [10]. Mientras en la ingeniería de procesos de desarrollo normales de la empresa. dominio creamos un conjunto de activos pa- En este artículo proponemos un método re- ra reutilizar y automatizar en un dominio de activo para realizar una transición poco in- aplicación especíco, en la ingeniería de aplica- vasiva hacia la ingeniería basada en líneas de ción los usamos para producir, en dicho domi- producto de software. Esta aproximación está nio, productos de software de mayor calidad, pensada para aquellas empresas que quieran empleando menos coste y tiempo. automatizar sus procesos de desarrollo, en do- En 2002, Krueger propuso la distinción en- minios de aplicación especícos, a través de la tre tres modelos de adopción/creación de lí- creación de líneas de producto de software. Pa- neas de producto de software [6]: proactivo, ra ello, ofrecemos una solución basada en un extractivo y reactivo. desarrollo iterativo y desacoplado de activos, El modelo proactivo es el más clásico; propone un gran esfuerzo e inversión iniciales en una ingeniería de dominio exhaustiva, donde se establece el dominio (o ámbito) exacto de los productos que pertenecerán a la línea, para luego crear los activos a partir de los cuales producirlos. Este modelo, aunque más exhaustivo, puede requerir tiempos y costes de adopción prohibitivos para una empresa; es la llamada barrera de adopción [6, 15]. Un modelo de adopción extractivo plantea la utilización, durante la ingeniería de dominio, de ingeniería inversa de los productos ya existentes en el dominio para obtener conocimiento más preciso sobre éste más rápidamente. Esta aproximación resulta en una reducción considerable de coste y tiempo en el desarrollo de activos (ver un ejemplo en [26]). La tercera alternativa es el modelo de adopción reactivo, en el que no establecemos desde un principio el dominio de la línea de producto, sino que iremos ampliando bajo demanda el ámbito de los productos de la misma, crean- que permite automatizar, progresivamente, las tareas a lo largo del ciclo de desarrollo. En otras palabras, este método permite automatizar la toma de decisiones en los procesos de software a medida que se establece la invarianza de las mismas en el dominio de aplicación en cuestión. Nuestro método se basa en la utilización Object Management Reusable Asset Specication ) de dos estándares OMG ( Group )1 : RAS ( [21], Especicación de Activos Reutilizables, que permite identicar, describir y empaque- Sof- tar activos de manera estándar; y SPEM ( tware Process Engineering Metamodel ) [22], Metamodelo de Ingeniería de Procesos de Software, que dene un lenguaje estándar de modelado de procesos de software. Esta línea de investigación tuvo su origen en un estudio que exploraba las sinergias entre Líneas de Producto de Software, Ingeniería 1 OMG es la misma organización que da soporte a MDA (Model-Driven Architecture) [20], su aproximación a la Ingeniería Dirigida por Modelos [24] (ver sección 2.1) Dirigida por Modelos e Ingeniería de Procesos la gestión del conocimiento; y exibilidad, pa- de Software [2]. En aquel estudio, establecimos ra producir variantes de los productos. Todas que las líneas de producto de software apli- éstas son facetas de la aplicación de ideas de cadas al mantenimiento de familias de mode- factoría a la producción de software [8]. los facilitan enormemente la Ingeniería Dirigi- Aunque estas técnicas no son mutuamente da por Modelos. El presente estudio muestra excluyentes, no fue hasta nales del siglo XX cómo esta clase de líneas de producto puede que se desarrollaron sus sinergias y las tec- ser encapsulada en activos reutilizables, has- nologías necesarias para combinarlarlas efec- ta que consiguen automatizar completamente tivamente. Se realizaron importantes estudios una tarea de desarrollo. sobre los cambios organizativos necesarios pa- En la Sección 2 explicamos la base concep- ra una ecaz implantación de un programa de tual de nuestro método. A continuación pre- reutilización [25]. Se estableció que estos cam- sentamos un caso de estudio (Sección 3) del bios pasan por la creación de un nuevo rol, el método. Finalizamos con un repaso a trabajos analista o ingeniero de dominio, encargado de relacionados (Seccion 4) y con las conclusiones identicar, capturar, empaquetar y organizar, (Seccion 5). para su posterior reutilización, conocimiento sobre cómo se llevan a cabo las distintas ta- 2. reas de producción en dominios de aplicación Antecedentes especícos [23]. Los trabajos en metaprograA continuación ofrecemos un repaso a algunas mación empezaron a ofrecer sus frutos apor- tecnologías en las que se basa nuestro método, tando nuevas técnicas para crear generadores en concreto la especicación de activos reutili- de aplicaciones y capturar en ellos los secre- zables (RAS) y el metamodelo de procesos de tos de la producción de software en dominios software (SPEM). Sin embargo, antes que na- especícos [10]. Se llega así a reveladores es- da, ofrecemos una perspectiva histórica de la tudios sobre reutilización que concluyen que sinergia entre reutilización y automatización, la identicación, conguración (o especializa- en la que se basa nuestro método. ción) e integración de artefactos reutilizables requiere de herramientas de automatización, 2.1. como generadores de aplicaciones o sistemas Perspectiva Histórica En esta sección repasamos cómo las ideas de reutilización y automatización en los procesos de softare han ido convergiendo a lo largo de la historia hasta llegar a su sinergia en las líneas de producto de software. Esta descripción no trata de ser exhaustiva; sólo trata de ofrecer una introducción a la combinación de activos reutilizables y procesos de software 2 . Desde 1968 [19], el término factoría de software ha sido usado para hacer hincapié en diferentes técnicas de factoría [12]: aspectos organizativos, como división del trabajo en roles y especialización; métricas y procesos de software rigurosos y altamente maduros; reutilización, en diferentes etapas de la producción; entornos y herramientas de automatización; entrenamiento y aprendizaje, a través de 2 Para un estudio más en profundidad sobre el con- cepto de reutilización referirse a [13, 25]; sobre el concepto de automatización ver [8, 10] de transformación, y del uso de lenguajes de muy alto nivel de abstracción [13, 12]. A nales del siglo XX aparece el concepto de Líneas de Producto de Software [7], formalizando la sinergia entre las diferentes técnicas de fábrica de software. Este paradigma propone la producción de familias (variantes similares) de productos a partir de un con- assets ) junto de activos ( siguiendo planes de producción predenidos. Los activos reutilizables son artefactos con puntos de variabilidad así como (meta)información y/o procesos asociados que describen cómo especializarlos para diferentes contextos de uso [17]. Por otro lago, se apunta a la importancia de que los planes de producción o procesos de desarrollo altamente precisos, preferiblemente automáticos, tengan tiempos y costes de ejecución predecibles. Más recientemente, da por Modelos ( la Ingeniería Dirigi- Model-Driven Engineering, MDE) [24] ha venido a ofrecer una prometedora técnica para implementar planes de producción más automáticos y exibles. MDE propone la denición de todo artefacto producido y/o (re)utilizado durante el proceso de desarrollo como un modelo formal, facilitando su manipulación a través de transformaciones. No sólo MDE da soporte a las Líneas de Producto de Software, sino que lo contrario es también cierto. Recientemente han sido presentados estudios sobre las ventajas de utilizar líneas de producto de software para mantener familias de modelos [9, 2, 3] Para nalizar decir que, en la actualidad, de- asset ) nimos un activo reutilizable ( como la Figura 1: Ejemplo de modelo SPEM, donde un rol A ejecuta una tarea, consumiendo (in) el artefacto 1 y produciento (out) el artefacto 2. La tarea tiene asociado un elemento de guía para asistir al rol en su ejecución. solución a un problema recurrente en el desarrollo de software. Debe tener, preferiblemente, puntos de variabilidad que deben ser con- La (meta)información que describe el activo gurados por el consumidor del activo con el es un modelo que conforma con el metamodelo n de congurarlo o especializarlo para un con- RAS. Este modelo se empaqueta junto al resto texto de uso determinado. Para una reutiliza- de artefactos, dentro del chero comprimido ción efectiva, la (meta)información de congu- que representa al activo. Este modelo contiene ración del activo debe ser precisa, normalmen- la identicación y clasicación del activo, la te en forma de especicación de proceso o se- descripción de sus artefactos, sus puntos de cuencia de pasos que pueda ser ejecutada de variabilidad y cómo congurarlos. manera, preferiblemente, automática. 2.3. 2.2. Modelado de Activos Reutilizables La especicación de activos reutilizables ( sable Asset Specication, Reu- RAS) [21] permite Modelado de Procesos de Software Los procesos de desarrollo de software se han vuelto tan complejos que es necesario el uso de lenguajes formales para modelarlos [11]. de manera estándar, cumpliendo los requisitos Software Process Engineering Metamodel ) [22] es un lenguaje de modelado están- para una reutilización efectiva descritos en la dar que permite describir tales procesos. identicar, describir y empaquetar un activo SPEM ( sección anterior. Con RAS, un activo es una El metamodelo de SPEM es muy extenso, colección cohesiva de artefactos; de hecho, se permitiendo el modelado de muchos aspec- almacena como un chero comprimido que em- tos y problemas del proceso de desarrollo. Sin paqueta un conjunto de cheros, cada uno re- embargo, en este estudio nos centraremos en presentando uno de estos artefactos. el modelado de tareas, sin ni siquiera utili- Un artefacto es cualquier producto de tra- zar relaciones de secuencia o prioridad entre bajo creado durante un proceso de desarrollo, las mismas. Las tareas, ejecutadas por roles, como casos de uso, diagramas de clases, có- consumen artefactos de entrada y producen digo fuente, cheros de conguración XML, artefactos de salida (ver Figura 1). Ejemplos etc., que resuelven problemas recurrentes en de artefactos son modelos de casos de uso, dia- el desarrollo de software. Estos artefactos, por gramas de clases, código fuente, cheros de lo general, aceptarán cierta variabilidad, por conguración XML, etc. Una tarea puede te- lo que contarán con puntos de variabilidad o ner asociado elementos de guía que ayuden al extensión que podrán ser congurados para rol a desempeñarla. Estos elementos pueden ir adaptarlos a las características del problema desde ejemplos y guías hasta plantillas y acti- concreto (contexto) donde aplicarlos. vos reutilizables [22, p.126]. Figura 2: Ejemplo de modelo SPEM que describe la fase de análisis de un proceso de software en una empresa X. El analista A es el encargado de estudiar las actas de reunión con el cliente, y crear el diagrama de casos de uso del sistema que cumple con los requerimientos del mismo. El analista B recibe los casos de uso y, según su experiencia, crea el diagrama de clases del sistema. 3. Caso de Estudio Supongamos una empresa X que desarrolla software para la administración electrónica. Supongamos que tiene un proceso desarrollo estándar para todos sus proyectos, un extracto (fase de análisis) del cual vemos en la Figura 2 modelado con SPEM. La empresa desea adoptar una aproximación de líneas de producto de software en sus desarrollos, con el n de potenciar la reutilización y automatización en sus procesos de software. En este caso de estudio mostraremos cómo, haciendo uso de nuestro método, la empresa podrá abordar una transición poco invasiva hacia las líneas de producto de software, es decir, sin perturbar la ejecución de sus proyectos de desarrollo. Para facilitar la comprensión del caso de estudio, mostraremos un ejemplo centrado en la fase de análisis (Figura 2). En este ejemplo, el analista A identica y organiza progresivamente en forma de activo RAS el conocimiento sobre la creación de casos de uso en un dominio especíco, para facilitar su reutilización efectiva, hasta llegar a una completa automatización de la tarea. Figura 3: El proceso stándar de la empresa ha sido mejorado mediante la inclusión de un elemento de guía para que se asista en la tarea de creación de casos de uso. uso en un dominio especíco (ver Figura 3). A medida que el analista A va encontrando similitudes entre los modelos de casos de uso que va creando en los diferentes proyectos, deberá ir empaquetándolas en el activo. La familia de modelos (o variantes) será organizada en forma de línea de producto de software 3 . Para ello, el creador del activo describirá el proceso de conguración del activo como el plan de producción de una línea de producto de software. Téngase en cuenta que el analista A no estará abordando la creación directa de la línea de productos de software de su empresa, sino la creación de una línea de productos para generar la familia de modelos creados habitualmente al desempeñar esa tarea. El procedimiento será el siguiene. Cuando el analista A deba crear un modelo de casos de uso, inspeccionará el activo en busca de un modelo que cubra sus requerimientos. Para ello hará uso de la línea de productos para modelos contenida en el activo. Si ninguno de los miembros de la línea satisface sus necesidades, deberá crear un modelo por su cuenta, a partir del miembro que más se adecúe a ellas. Cuando termine la tarea de creación del modelo, deberá realizar ingeniería de dominio para incluir la nueva variante en la línea de producto, y 3.1. Creación del Activo El proceso de software de la Figura 2 es actualizado para contener un elemento de guía, en concreto un activo, que representa el paquete de conocimiento que el analista A va desarrollando sobre la creación de modelos de casos de capturarla así a partir de entonces dentro del activo. A partir de ese momento, el proceso 3 Para más detalles sobre cómo crear líneas de producto de software para mantener familias de modelos ver [3]; para una descripción más completa sobre la implementación de la línea de producto para modelos de casos de uso ver [1]. Figura 4: El ingeniero de dominio, que crea la línea de producto para casos de uso, debe especicar el modelo de cracterísticas de los miembros de la línea, una plantilla de modelos a partir de la cual generarlos, y una transformación de modelos que realice automáticamente tal especialización. Figura 5: Plan de producción de la línea de producto para modelos de casos de uso. El analista tiene que seleccionar una serie de características del modelo de características, en lo que se llama conguración de características. Esta conguración es la entrada de una transformación de modelos que especializa la plantilla para obtener el modelo de casos de uso. a cabo ingeniería de dominio para crear los activos y plan de producción de la línea de pro- de conguración del activo permitirá generar ductos para modelos de casos de uso. La Figu- la nueva variante de modelos de casos de uso, ra 4 muestra en SPEM el proceso a seguir. Por para ser aplicada siempre que se repitan las un lado crea el modelo de características que condiciones que originaron su aparición. caracteriza la familia de modelos de casos de Es importante tener en cuenta que, como uso, y una plantilla de modelos a partir de la toda línea de productos, ésta que crea el ana- cual generarlos. Asimismo, crea una transfor- lista debe tener un dominio. En caso contrario, mación de modelos para especializar automáti- sería muy dicil establecer similitudes entre camente la plantilla cuando queramos obtener las variantes de modelos que se desea agrupar, un miembro concreto de la línea. esencial para producirlos a partir de un mismo La Figura 5 muestra el plan de producción conjunto de activos. En este caso suponemos de la línea de producto para modelos de casos que el analista A lleva analizando aplicacio- de uso en el dominio RMS. Cuando un analis- nes en el dominio de los sistemas de gestión de ta de casos de uso la quiere ejecutar, sólo tiene solicitudes (en adelante referidos como RMS: que seleccionar una serie de características op- Request Management Systems ) en la adminis- cionales y alternativas del modelo de caracte- tración electrónica. Ha establecido que muchos rísticas (que dene la familia de modelos), en de los modelos de casos de uso que sirven para lo que se llama conguración de características describirlos siguen unos patrones y comparten del producto a generar. Esta conguración es similitudes. Es por ello que decide automati- la entrada de una transformación de modelos zar la creación de estos modelos en el dominio que automáticamente especializa una plantilla RMS. de modelos para obtener el modelo de casos de Creación del Proceso de Conguración uso concreto deseado. El analista A deberá ir acomodando las variantes de modelos casos de uso que va creando dentro del activo 4 . Para ello deberá llevar 4 No tiene por qué ser el propio creador del produc- Es preciso notar que este plan de producción será el proceso de conguración del activo de to el que tenga que acomodarlo en el activo. Para ello la organización podría designar un analista de dominio, más experto en la creación de líneas de producto de software [25, 16]. Figura 6: Editor de modelos RAS de nuestro plugin de Eclipse para la manipulación de activos RAS. En la sección solución (solution ) se encuentra modelada la descripción de los artefactos contenidos en el activo. En la sección uso (usage ) se mantiene la información de las actividades o procesos de conguración del activo para diferentes contextos. En este caso, sólo hay modelada una actividad; en concreto, el plan de producción (modelado en SPEM) de la línea de producto para modelos de casos de uso. casos de uso que está siendo desarrollado. Empaquetado del Activo Siguiendo la especicación RAS, para empaquetar el activo necesitamos realizar varias acciones. En primer lugar, deberemos modelar la (meta)información del activo, incluidos los procesos de conguración que un consumidor del mismo debe ejecutar para obtener soluciones para contextos diferentes. La Figura 6 muestra dicho modelo, que conforma con el metamodelo RAS; este modelo es serializado en un chero con el nombre de manifest.rmd y empaquetado junto al resto de cheros/artefactos del activo. Figura 7: Vista de navegación de proyectos ras de nuestro plugin de Eclipse para la manipulación de activos RAS. El proyecto es un chero comprimido con una serie de cheros que representan artefactos del activo. El primer artefacto es un directorio, que contiene el resto de artefactos necesarios para ejecutar la línea de producto de modelos de casos de uso: tres artefactos de entrada al proceso (rms.cbfm, rmsCBFM2UML.atc, rmsUML_template.uml) más la denición en SPEM del proceso en sí (SPLCasosUsoRMS.spem, Figura 5). El activo también contiene el modelo del activo (manifest.rmd), conteniendo su (meta)información, y el metamodelo de RAS (ras.ecore). rol puede hacer o no uso de él cuando ejecuta la tarea. Esto le da la libertad al primero de decidir si alguna de las variantes del activo satisface sus necesidades, es decir, si alguno de los contextos para los que el activo dispone de conguración se asemeja lo suciente a su problema. La gran ventaja de tener los procesos de conguración del activo descritos con SPEM es que podemos sacarlos y ensamblarlos con planes de producción más amplio. Por ejemplo, la Figura 8 nos muestra cómo el proceso de conguración del activo, que es en realidad el plan de producción de una línea de producto para modelos de casos de uso, ha sido desempaquetado del mismo e integrado en el proceso Figura 8: Ejemplo de modelo SPEM que describe la nueva fase de análisis del proceso de la empresa de desarrollo de software objeto de nuestro estudio. La libertad del analista A ha sido restringida, ya que sólo puede seleccionar un miembro de la línea de producto para modelos de casos de uso. La tarea queda así restringida a la mera selección de características que identican el problema que el analista quiere solucionar. La segunda parte del análisis permanece inalterada, con el analista B recibiendo el modelo de casos de uso producido por el analista A. de software de la empresa. De esta manera, la etapa de creación de casos de uso ha sido sustituida por un plan de producción automático y obligatorio. En esta situación, hemos eliminado la libertad del analista A de decidir si usar o no alguna de las variantes ofrecidas por el activo reutilizable, sino que le obligamos a utilizar una de ellas. Ahora, el analista no puede crear cualquier modelo de casos de uso, sino que únicamente puede seleccionar una de las variantes de la línea seleccionando las características que lo identican. Fíjese que el rol que crea los En segundo lugar debemos empaquetar los tres artefactos creados durante la ingeniería de dominio de la Figura 4, junto con la especica- casos de uso es ahora denominado Analista RMS (ver Figura 8); esto enfatiza el cambio de responsabilidades del analista. ción del proceso de conguración, que en este Con ello ganamos dos cosas: obligar a seguir caso es el modelo SPEM de la Figura 5. Den- patrones y buenas prácticas de modelado que tro del activo, junto a estos cuatro artefactos, los analistas realizando esa tarea han ido esta- empaquetaremos también el modelo del activo bleciendo progresivamente (mientras se creaba (manifest.rmd) así como el metamodelo RAS el activo); y centralizar el conocimiento para (ras.ecore). Este último no es necesario, pero ayudar a nuevos analistas a aprender a realizar es una buena práctica que aumenta la compa- dicha tarea. tibilidad entre herramentas RAS. La Figura 6 muestra el contenido del activo RAS. 3.2. Automatización de la Tarea 4. Traba jos relacionados Una aproximación poco invasiva a la creación de líneas de producto de software es presen- Hasta ahora, el proceso de desarrollo de la em- tada en [14, 5]. Aunque plantea una incorpo- presa se ha visto modicado únicamente por ración incremental de productos a la línea, no la inclusión de un elemento de guía, en este plantea la automatización incremental del pro- caso un activo reutilizable. Al ser modelado ceso de desarrollo, ni abordar la reutilización como elemento de guía es opcional, es decir, el y automatización de tareas de manera desaco- plada. En esta aproximación, la incorporación Referencias de productos a una línea de producto de software es incremental, pero su automatización [1] O. Avila-García and M. D. D. Fabro. no lo es; la incorporación de un nuevo producto AMW use case: Mapping features to mo- se aborda creando toda infraestructura nece- dels. Technical Report MST-9, Open Ca- saria para su generación automática desde el narias, S.L., Apr 2007. principio. El Desarrollo Basado en Activos ( Asset Ba- sed Development ), en cambio, sí que plantea la creación desacoplada de activos [16]. Sin embargo, hasta la fecha, la combinación de estos activos para automatizar un proceso de software no ha sido aclarada convenientemente. [2] O. Avila-García, A. E. García, V. S. Rebull, and J. L. R. García. Integrando modelos de procesos y activos reutilizables JISBD 2006: Proceedings of the XI Jornadas de Ingeniería del Software y Bases de Datos, paen una herramienta mda. In ges 483488, Barcelona, Spain, Oct 2006. CIMNE. 5. Conclusiones [3] O. Avila-García, A. E. García, V. S. Rebull, and J. L. R. García. Using software product lines to manage model fami- producto de software. Esta aproximación está SAC 2007: Proceedings of the 2007 ACM Symposium on Applied Computing, track on Model Transformation, pages 10061011. pensada para aquellas empresas que quieran ACM Press, Mar 2007. En este artículo proponemos un método reactivo para llevar a cabo transiciones poco invasivas hacia la ingeniería basada en líneas de lies in model-driven engineering. In automatizar sus procesos de desarrollo, en dominios de aplicación especícos, a través de la creación de líneas de productos de software. El método se basa en un desarrollo iterativo y desacoplado de activos que permite automatizar, progresivamente, las tareas a lo largo del ciclo de desarrollo. Estos activos van capturando el conocimiento de los roles sobre la resolución de problemas en diferentes etapas del desarrollo. Con ello, a la larga se automatiza la toma de decisiones en los procesos de software, a medida que se establece que las mismas son invariantes en dominios de aplicación especícos. Nuestro método se basa en la combinación de RAS ( Reusable Asset Specication ) [4] R. W. Bremer. Machine-controlled pro- duction environment. In P. Naur and Software Engineering: Report on a conference sponsored by the NATO Science Committee, Garmish, Germany, 7th to 11th October 1968, paB. Randell, editors, ges 9495. Scientic Aairs Division, NATO, 1969. [5] R. Buhrdorf, D. Churchett, and C. W. Krueger. Salion's experience with a re- active software product line approach. PFE 2003: Software Product-Family Engineering, 5th International Workshop, volume 3014 of LNCS, pages 317322. In Springer, Nov 2003. [21], especicación de activos reutilizables y Software Process Engineering Metamodel ) [22], metamodelo de ingeniería de proSPEM ( [6] P. Clements and C. W. Krueger. IEEE Software, pages 2831, cesos de software. Mediante un ejemplo hemos tion barrier. mostrado cómo la combinación del empaque- July/August 2002. tado de activos con RAS y el modelado de pro- Being proactive pays o / eliminating the adop- tización progresiva de las tareas en el proceso Software Product Lines: Practices and Patterns. de desarrollo de la empresa. Addison Wesley, Aug 2001. cesos con SPEM puede llevar a una automa- [7] P. Clements and L. Northrop. [8] M. A. Cusumano. The software factory: A historical interpretation. IEEE Software, 6(2):2330, 1989. [9] K. Czarnecki and M. Antkiewicz. Map- ping features to models: A template approach based on superimposed variants. In Proceedings of GPCE 2005, volume LNCS, pages 422437. Springer- 3676 of Verlag, 2005. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000. [10] K. Czarnecki and U. Eisenecker. [11] J.-C. Dermiane and F. Oquendo. Key issues and new challenges in software pro- UPGRADE: The European Journal for the Informatics Professional, V(5):1116, Oct 2004. cess technology. [12] M. L. Griss. Software reuse: from li- IBM Systems Journal, brary to factory. 32(4):548566, 1993. [13] C. W. Krueger. Software reuse. ACM Comput. Surv., 24(2):131183, 1992. [14] C. W. Krueger. Easing the transition PFE '01: Revised Papers from the 4th International Workshop on Software ProductFamily Engineering, pages 282293, Lon- to software mass customization. In don, UK, 2002. Springer-Verlag. [15] C. W. Krueger. New methods behind a 138152. Scientic Aairs Division, NATO, 1969. Software Engineering: Report on a conference sponsored by the NATO Science Committee, Garmish, Germany, 7th to 11th October 1968. Scientic Aairs Division, [19] P. Naur and B. Randell, editors. NATO, 1969. [20] OMG. 01, IBM Systems Journal, [17] J. D. McGregor. 3(10):89 98, Nov/Dec 2004 2004. Mass produced softwa- re components. In P. Naur and B. Ran- Software Engineering: Report on a conference sponsored by the NATO Science Committee, Garmish, Germany, 7th to 11th October 1968, pages dell, editors, at asset Technical 06-06, Jun Report 2004. specicaptc/04- Available at http://www.omg.org/docs/ptc/0406-06.pdf. [22] OMG. Software ring Meta-model port ad/06-04-05, Process 2.0. Apr Enginee- Technical 2006. Re- Availa- ble at http://www.omg.org/docs/ad/0604-05.pdf. [23] R. Prieto-Díaz. Domain analysis: an introduction. SIGSOFT Softw. Eng. Notes, 15(2):4754, 1990. [24] D. C. Schmidt. Model-Driven Enginee- IEEE Computer, 39(2):4147, Feb Confessions of a Used Program Salesman: Institutionalizing Software Reuse. Addison Wesley, Reading, Mas- [25] W. Tracz. sachusetts, USA, 1995. Product production. Journal of Object Technology, [18] M. D. McIlroy. Available Reusable tion. 2006. sets and reuse. 1.0.1. omg/2003-06- 2003. [21] OMG. successes. Technical Report #200602261, 45(3), 2006. Jun version 06-01.pdf. new generation of software product line [16] G. Larsen. Model-driven development, as- guide Report http://www.omg.org/docs/omg/03- ring. BigLever Software, Inc., Feb 2006. MDA Technical [26] S. Trujillo, D. Batory, and O. Díaz. Feature refactoring a multi-representation pro- GPCE 2006: Proceedings of the 5th International Conference on Generative Programming and Component Engineering, pages 191200, gram into a product line. In New York, NY, USA, Oct 2006. ACM Press.