PROGRAMACION GENERATIVA

La programación generativa (GP, Generative Programming) es un paradigma de ingeniería del Software basado en el desarrollo de familias de sistemas[1]. El producto final de la GP es un  modelo generativo capaz de sintetizar todos los programas[2] de una familia a partir de especificaciones de alto nivel de abstracción.
Los componentes básicos de un modelo generativo, que son:
·         El espacio del problema. Es el ámbito de actuación del ingeniero de aplicaciones.  Consiste en uno o varios DSLs que facilitan la especificación abstracta de programas.
·         El espacio de la solución. Es el conjunto de marcos de trabajo y componentes que se reutilizan en la generación de los programas objeto.
·         El espacio de configuración. Es el compilador que convierte las especificaciones DSL en programas objeto.
Apoyándose en la ingeniería de dominio, K. Czarnecki y U. Eisenecker proponen un proceso de desarrollo de modelos generativos organizado en las siguientes etapas:
1. Análisis del dominio del modelo.                                   
1.1. Determinación del alcance del dominio.
1.2. Análisis de los aspectos comunes y variables del dominio. Modelado del dominio.
2. Diseño del dominio.
2.1. Diseño de una arquitectura común para los programas de la familia.
Identificación de los componentes del espacio de la solución.
2.2. Diseño de los DSLs del espacio del problema.
2.3. Diseño del conocimiento de configuración.
3. Implementación del dominio.
3.1. Implementación de los componentes del espacio de la solución.
3.2. Implementación de los DSLs del espacio del problema.
3.3. Implementación del conocimiento de configuración.
Los autores recomiendan aplicar este proceso de forma incremental e iterativa. Por ejemplo, el conocimiento de configuración se debería automatizar gradualmente: antes de utilizar generadores, los componentes del espacio de la solución se parametrizarían y ensamblarían manualmente.
El análisis del dominio de un modelo generativo es una actividad crítica que debe evitar:
·         La omisión de puntos de variación relevantes, que dificultaría el mantenimiento del modelo.
·         La inclusión de puntos de variación innecesarios, que complicarían e incrementarían el coste del modelo.
Existen varias metodologías para analizar dominios: FAST (Family-Oriented Abstraction, Specification and Translation) [WL99], ODM (Organization Domain Modeling), FODA (Feature-Oriented Domain Analysis)[3].

 

Czarnecki, K. (5 de Febrero de 2007). UNED. Obtenido de UNED: http://www.issi.uned.es/doctorado/generative/Bibliografia/TesisCzarnecki.pdf
Gil, R. H. (22 de Febrero de 2007). UNED. Obtenido de UNDE: http://www.issi.uned.es/doctorado/generative/Bibliografia/TesisRHeradio.pdf





[1] “Generative Programming (GP) is a software engineering paradigm based on modeling software system families such that,
given a particular requirements specification, a highly customized and optimized intermediate or end-product can be automatically
manufactured on demand from elementary, reusable implementation components by means of configuration knowledge.” [CE00]
[2] El resultado de un modelo generativo no tiene por qué ser un programa completo. Puede ser un programa
parcial, un componente de otros programas [JS00, WLKL04] o cualquier artefacto software: documentación,
juegos de pruebas… En esta tesis, se seguirá la tendencia más difundida de utilizar el término “familia de
programas” para designar de forma general familias de todo tipo de artefactos software.

No hay comentarios:

Publicar un comentario