La aplicación de técnicas de reversee engineering para programas escritos en Java (o en cualquier otro lenguaje de programación mínimamente popular) no es nueva. Muchas herramientas CASE ofrecen algun tipo de funcionalidad al respecto, básicamente la opción de generar diagramas de clase UML que representen la estructura de la aplicación Java.
De todas formas, la tendéncia actual es utilizar model-driven reverse engineering techiques como MoDisco o JaMoPP . La diferencia es que estas técnicas, en lugar de hacer un parsing del código Java para generar una representación visual conreta, lo que proponen es definir un metamodelo para Java. Este metamodelo se usa como puente entre el código y cualquier tipo de representación “model-based” que se quiera utilizar.
La idea es utilizar el parser que han desarrollado para representar el código Java como instancia del metamodelo de Java. A partir de ahí, se pueden utilizar todas las técnicas de transformación model-to-model y model-to-text se para manipular el modelo Java. Por ejemplo, se puede escribir una transformación modelo a modelo que genere un diagrama de clases UML que represente el modelo Java (cosa que ya hacen las herramientas actuales) pero ahora, esto es sólo una de las muchas posibilidades que hay. Una vez hecho lo más difícil (metamodelo + parser), el uso que le podemos dar sólo depende de nuestra imaginación.
Si te ha gustado esta entrada, puedes subscribirte a este Software Modeling blog y/o seguirme en twitter . Y si realmente te ha gustado ayúdame a hacerlo llegar a otros utilizando los bookmarks que tienes a continuación: