2011-11-08 16 views
6

En nuestra compañía, hemos comenzado a usar VS 2010 para modelar nuestros sistemas, en los llamados proyectos de modelado. Estos se mantienen bajo control de fuente TFS2010.Problemas del proyecto de modelado

Todo está bien para un solo usuario, pero tan pronto como presentamos esta herramienta a todo nuestro equipo de arquitectura, nos encontramos con un gran problema: maneja a múltiples usuarios extremadamente mal! Déjame guiarte por un escenario simple.

  1. Arquitecto 1 comprueba fuera un diagrama existente y trabaja en él durante un tiempo
  2. Arquitecto 2 añade un nuevo diagrama y trabaja en él durante un tiempo
  3. Architect 2 comprueba en su nuevo esquema de
  4. Arquitecto 1 comprueba sus cambios en el proyecto de modelado
  5. El arquitecto 2 abre su diagrama nuevamente, ¡solo para descubrir que faltan todos los elementos!

Como he entendido esto, el problema es que el proyecto de arquitectura se basa en varios archivos xml y, en particular, una gran parte importante de xml llamada ModelDefinition/Architecure.uml. Contiene muchos conocimientos sobre los diagramas en el proyecto de modelado. Cuando varias personas hacen múltiples cambios en este archivo simultáneamente, las herramientas (TFS, VS) no manejan la combinación requerida automáticamente, y nos quedan grandes problemas de concurrencia.

Por lo tanto, en mi caso, dado que Architecture.uml que el arquitecto 1 facturado no sabe nada sobre los elementos agregados por el arquitecto 2, estos elementos se sobrescriben o se arruinan.

Queremos evitar dividir el proyecto en varios más pequeños, porque eso significaría que tendríamos que volver a definir nuestros componentes de modelado (clases, actores, casos de uso, componentes, etc.) varias veces. Al usar una sola solución, podemos definir dichos elementos en un solo lugar y reutilizarlos en cualquier otro diagrama.

Por lo tanto, nuestra 'solución' actual es trabajar con exclusiones exclusivas. Entonces, ¡solo un arquitecto puede trabajar a la vez!

Tenía la esperanza de que alguien hubiera encontrado una mejor solución para esto, lo que nos permite trabajar de manera más efectiva.

Respuesta

2

Pruebe dividir & conquistar: ¿Es posible que cada arquitecto trabaje en su rama personal & y luego todo se fusiona en un 'Tronco'?
Los conflictos deberían hacerse visibles durante estas fusiones.


EDITAR
Se podría emplear una herramienta XML específico, como los que se presentan here.
Al hacerlo, se debe mantener el enfoque de ramificación-per-arquitecto, pero en lugar de utilizar un solo paso TFS-combinación que podría:

  • realizar una comparación de directorios entre la carpeta de 'rama' & su ' carpeta del tronco Cada archivo encontrado está sujeto a la fusión que sigue.
  • Fusiona cada archivo encontrado en tu carpeta 'branch', usando una de las herramientas presentadas en el artículo. He usado Altova DiffDog, es muy bueno, pero tiene un gran premio.
  • Comprueba que todo esté bien, luego confirma en 'branch'.
  • Ahora fusiona con TFS-merge en 'trunk', que ahora debería ser una fusión trivial.
+0

Gracias por responder. Garantizará que no se pierdan elementos sin que nadie se dé cuenta. Sin embargo, esperaba evitar tener que fusionar manualmente el archivo, ya que es un archivo xml. Según mi experiencia, la herramienta de fusión predeterminada que viene con TFS 2010 está mal equipada para manejar archivos xml, p. un elemento movido podría identificarse como un coflicto, aunque en realidad no lo es; es solo posición intercambiada en una lista no ordenada. Sin embargo, aprecio la entrada y la llevaré a mi equipo para que la considere. Esperaré a aceptarlo por ahora, para ver si alguien más ha encontrado y solucionado esta pesadilla :) – havardhu

+0

Estoy absolutamente de acuerdo con su "esperanza de evitar tener que combinar manualmente XML". Espere una mejor manera :) – pantelif

+0

Gracias por su edición, creo que esto podría mejorar un poco el proceso. Forward integrando el trunk usando una herramienta adecuada de fusión XML debería ser un paso en la dirección correcta :) – havardhu