El estudio de nuevas técnicas y métodos para fomentar el desarrollo de software basado en reuso ha tomado gran importancia en los últimos años dentro del área de la ingeniería de software, dando lugar a numerosos paradigmas, como el desarrollo orientado a servicios, desarrollo basado en componentes, desarrollo de Líneas de Productos de Software (LPS), entre otros. A diferencia de un desarrollo que realiza algún tipo de reutilización, todos estos paradigmas se basan en planear el reuso, de modo que los desarrollos futuros puedan hacer un uso efectivo de diferentes artefactos de software previamente desarrollados. En particular, la Ingeniería de Líneas de Productos de Software (ILPS) aplica un reuso orientado a dominios como mecanismo para lograr una estructura común de servicios (llamada similitudes), en la cual se basan todos los productos a ser desarrollados. A su vez, agrega una estructura variable (llamada variabilidad) que permite brindar mayor flexibilidad logrando crear productos con bases similares pero adaptados a las necesidades específicas de los diferentes usuarios u organizaciones pertenecientes a esos dominios.
En nuestro proyecto, nos basamos en la creación y aplicación de nuevas técnicas y recursos para lograr una mejora dentro de un proceso integral de desarrollo de LPSs. En particular nos enfocamos en la definición de técnicas que diseñan y aplican artefactos de software dentro de una jerarquía de dominios que comparten generalidades y particularidades en forma de servicios comunes y variables. A su vez, nos proponemos sentar las bases para el desarrollo de un ambiente inteligente que permita crear LPSs dentro de la misma jerarquía mediante la selección y composición de componentes reusables.