Primera vez que veo una oferta en freelance.com para hacer la ingeniería inversa de un proyecto open source escrito en Java.

Más concretamente, el proyecto pide la creación de un diagrama de clases UML para Metawidget (Metawidget es un “smart User Interface widget that populates itself, at runtime, with UI components to match the properties of your business objects”). Y el presupuesto no está mal (hasta 250$), especialmente comparado con lo que ya vimos que algunos programadores se ofrecen a hacer por sólo 5$ 🙂

La mayor parte del trabajo se podría hacer con muchas de las herramientas de ingeniería inversa disponibles (como nuestro MoDisco framework ) pero el proyecto tiene algunos requisitos que requieren intervención manual, como:

  • Eliminar todas las clases “utils”
  • Eliminar todas las clases unit test/example
  • Colorear y juntar en packages las clases, dependiendo de su subdominio
  • Mostrarlas de forma visualmente atractiva (es decir, con un buen layout)

De hecho, algunos de estos requisitos podrían ser buenos “feature requests” para las nuevas versiones de cualquier herramienta de ingeniería inversa. Y es más, los tres primeros son parte de lo que yo creo que tendría que ser el próximo paso para este tipo de herramientas: proporcionar una visión conceptual del código y no sólo una vista a nivel de diseño. Para mí, una representación directa en UML de todas las clases JAva (i.e. es decir una relación uno a uno entre Java y UML) es demasiado detallada para ser útil en muchas escenarios ya que contiene todas las clases auxiliares añadidas durante la implementación (e.j. por motivos de eficiencia) y que no ayudan a entender el proyecto ni su delimitación.

Me gustaría ver las herramientas de ingeniería inversa ofreciendo un segundo nivel de “inversión” capaz de mostrar una visión a nivel conceptual/análisis del código donde todas las decisiones de diseño (i.e. normalizaciones, aplicación de patrones,…) hayan sido revertidas y donde sólo queden las clases que realmente representan conceptos del dominio. ¿Es mucho pedir?

Si te ha gustado esta entrada, puedes subscribirte a este Software Modeling blog y/o seguirme en twitter y/o a través de la lista de distribución del portal Y si realmente te ha gustado ayúdame a hacerlo llegar a otros utilizando los bookmarks que tienes a continuación:

Pin It on Pinterest

Share This