MAESTRIA EN INGENIERÍA DE SOFTWARE

MISO – 4204 FABRICAS DE SOFTWARE Y LINEAS DE
PRODUCTO

INGENIERÍA INVERSA

El objetivo de este taller es realizar un proceso de ingeniería inversa, para obtener un
arbol de variabilidad a partir de un programa existente.

Preparación

Para este taller es necesario tener Java (JDK) y Eclipse instalados en su máquina.

Instrucciones

1. Para este taller, utilice como base uno de los ejercicios de Cupi2 (Sistema de
Biblioteca o Número MVC) que se encuentran en:
http://cupi2.uniandes.edu.co/sitio/index.php/cursos/estructuras-de-datos/nivel-15
2. Descargue y descomprima el archivo Processor.zip adjunto a este taller que contiene
un proyecto eclipse.
3. Revise el esquema featureide.xsd, así como el código (generado con la herramienta
XJC del JDK) necesario para crear y escribir archivos XML. El esquema se encuentra
en la ruta /resources mientras que el código se encuentra en el paquete generated
del esqueleto del proyecto.
4. Defina una o varias anotaciones que le sirvan para indicar puntos dentro del programa
que quiera representar en el árbol de variabilidad. Utilice como ejemplo la la anotación
MyAnnotation.java que se encuentra en el paquete annotation del esqueleto del
proyecto.
5. Utilice las anotaciones que haya creado para, de forma manual, anotar los puntos
específicos del programa de Cupi2. Tome como ejemplo la clase TestClass.java que
se encuentra en el paquete code del esqueleto del proyecto.
6. Escriba uno o más procesadores de código en Spoon que utilice como entrada el
código Java de la aplicación de Cupi2 anotado con sus anotaciones, y arroje como
resultado un diagrama de características para FeatureIDE (model.xml). Utilice como
ejemplo el procesador incluido en el paquete processor del esqueleto del proyecto.
Finalmente, para escribir el archivo XML puede usar el método jaxbWriter(Object,
String, String) incluido en la clase JaxbWriterReader.java.