Tweet about this on TwitterShare on FacebookBuffer this pageShare on RedditShare on LinkedInShare on Google+Email this to someone

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. En esta página intento listar todas las herramientas existentes (si conocéis más indicádmelo, de momento he añadido vuestro feedback en los comentarios del post original sobre este tema).

Por supuesto todas ellas se pueden usar para versionar modelos UML pero la mayoría es más genérica y permite versionar cualquier tipo de modelo.
Hay que decir también que varias herramientas adicionales permiten versionar modelos dibujados con esa misma herramienta pero en esta lista sólo incluyo herramientas genéricas (que como SVN, pueden versionar cualquier tipo de código fuente, no sólo el código fuente escrito con un determinado IDE)

Lista de Herramientas para el Versionado de Modelos

  • 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
  • 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.

  • La nueva versión del CDO model repository incluye soporte para el branching y merging de tus modelos
  • 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.
  • Los proyectos de investigación MetaRep (Metamodel Repository with Version Control) y MORSE (model-aware repository) se merecen también una mención aunque están en una fase de desarrollo muy preliminar en comparación con los anteriores
  • Model versioning también era un de los objetivos del proyecto ModelBus pero en ese caso el objetivo era más la integración de herramientas y servicios para modelos.
  • A nivel de metamodelo, Edapt proporciona soporte a la evolución de de metamodelos y a la migración automática de los modelos a la nueva versión del metamodelo. El código para Edapt vendrá de lo que es ahora el proyecto COPE . De forma similar, Epsilon Flock es un lenguaje para especificar cambios en los modelos en respuesta a cambios a nivel de metamodelo

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?.

Por supuesto, si escogéis una de las herramientas de modelado textuales (y os está bien seguir un enfoque puramente sintáctico para la comparación de los modelos) entonces los problemas anteriores desaparecen.

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.

Tweet about this on TwitterShare on FacebookBuffer this pageShare on RedditShare on LinkedInShare on Google+Email this to someone