In our company we have started using VS 2010 to model our systems, in so called modeling projects. These are kept under TFS2010 source control.
It's all good for a single user, but as soon as we introduced this tool to our entire architecture team we ran into a major problem: It handles multiple users extremely badly! Let me run you through a simple scenario.
- Architect 1 checks out an existing diagram and works on it for a while
- Architect 2 adds a new diagram and works on it for a while
- Architect 2 checks in his new diagram
- Architect 1 checks in his changes to the modeling project
- Architect 2 opens his diagram again, only to find that all the elements in it are missing!
As I have understood this, the problem is that the architecture project is based on several xml files, and in particular one important huge chunk of xml called ModelDefinition/Architecure.uml. It contains a lot of knowledge about the diagrams in the modeling project. When multiple people do multiple changes to this file simultaneously, the tools (TFS, VS) does not handle the required merging automatically, and we're left with huge concurrency issues.
So in my scenario, because the Architecture.uml that architect 1 checked in does not know anything about the elements that architect 2 added, these elements are overwritten or otherwise ruined.
We want to avoid splitting the project into several smaller ones, because that would mean that we'd have to re-define our modeling components (classes, actors, use cases, components, etc) multiple times. By using a single solution, we can define such elements in one place, and re-use them in every other diagram.
So, our current 'solution' is to work using exclusive check outs. So only one architect can work at a time!
I was hoping that someone had come up with a better solution to this, which allows us to work more effectively.