Este contenido se ha ampliado y movido a la nueva página sobre Herramientas de control de versiones para modelos. Sigue la discusión allí.


Los programadores no pueden vivir sin utilizar un control de versiones pero los modeladores hemos tenido que vivir sin ellos hasta ahora.

Por suerte la situación está empezando a cambiar. No tenemos todavía la herramienta de control de versiones para modelos pero estan apareciendo algunos proyectos interesantes. Empezando, por el que es seguramente el más visible de todos, el nuevo proyecto Eclipse EMF Store recientemente aprobado. EMF Store es un repositorio de modelos que mantiene el control de las versiones de cada modelo en el repositorio. EMFStore funciona de forma similar a SVN o CVS y ofrece una interfaz interactiva al usuario para resolver los conflictos durante la fase de merging. Como funcionalidad añadida también permite migrar modelos después de cambios en su metamodelo correspondiente. El código del proyecto se encuentra actualmente en Google code en emfstore.org

Otros proyectos interesantes en esta área son:

  • Los proyectos ModelCVS y AMOR (Adaptable Model Versioning) que proporcionar métodos y técnicas para un control de versiones “semántico” (que por ejemplo, aprende de las manera en que el usuario resuelve conflictos para proponer mejores estrategias de resolución en el futuro, también basadas en la semántica de los elementos a fusionar). Tengo que decir que las demos que he visto de estas herramientas han sido impresionantes.
  • EMF Compare , un proyecto Eclipse que implementa un método de comparación de modelos en dos fases. Durante la primera fase (matching) se intentan inferir las correspondencias entre los elementos de la versión “nueva” y “antigua” del modelo. Durante la segunda fase (differencing) esta información se utiliza para calcular la lista de diferencias entre las dos versiones del modelo (o los dos modelos).
  • Epsilon Merging Language , un lenguaje basado en reglas para el merging de modelos. Las correspondencias entre modelos a usar durante su fusión se pueden calcular usando el lenguaje Epsilon Comparison Language parte de la misma familia de lenguajes.

Fijaros que todos estos proyectos se centran en versionar la información del modelo pero no su representación gráfica (e.j. el layout) que se pierde durante el versionado. El problema principal es que todavía no está claro que se tendría que considerar como cambio o conflicto en este caso (e.j. ¿mover una clase dos centímetros a la derecha es un cambio? ¿entra esto en conflicto con un usuario que ha movido la clase un centímetro hacia abajo?.

Para los lectores interesados, la “Bibliography on Comparison and Versioning of Software Models” contiene links a (todas?) las publicaciones de investigación en estos temas.

Como siempre, se agradecen referencias a otros proyectos similares que no haya mencionado aquí.

Si te ha gustado esta entrada, puedes subscribirte a este Software Modeling blog, a la lista de distribución del portal , seguirme en twitter y/o leer los posts más poopulares . 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