建模项目困境
在我们公司,我们已经开始使用 VS 2010 在所谓的建模项目中对我们的系统进行建模。这些都受 TFS2010 源代码控制。
这对于单个用户来说一切都很好,但是当我们向整个架构团队引入这个工具时,我们就遇到了一个主要问题:它对多个用户的处理非常糟糕!让我向您介绍一个简单的场景。
- 架构师 1 检查现有图表并对其进行工作一段时间
- 架构师 2 添加一个新图表并对其进行一段时间处理
- 架构师 2 检查他的新图表
- 架构师 1 检查对建模项目的更改
- 架构师 2 再次打开他的图表,却发现里面的元素全都不见了!
据我了解,问题在于架构项目基于多个 xml 文件,特别是一个名为 ModelDefinition/Architecure.uml 的重要的一大块 xml。它包含了很多关于建模项目中的图表的知识。当多人同时对此文件进行多次更改时,工具(TFS、VS)不会自动处理所需的合并,并且我们会遇到巨大的并发问题。
因此,在我的场景中,由于架构师 1 签入的 Architecture.uml 对架构师 2 添加的元素一无所知,因此这些元素会被覆盖或以其他方式损坏。
我们希望避免将项目拆分为几个较小的项目,因为这意味着我们必须多次重新定义建模组件(类、参与者、用例、组件等)。通过使用单一解决方案,我们可以在一个地方定义这些元素,并在每个其他图中重复使用它们。
因此,我们当前的“解决方案”是使用独占检查。所以一次只能有一名建筑师工作!
我希望有人能对此提出更好的解决方案,使我们能够更有效地工作。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试除法征服:每个建筑师是否有可能在她个人的分支和分支上工作?然后所有内容都合并到“主干”中?
在这些合并过程中,冲突应该变得明显。
编辑
您可以使用特定于 XML 的工具,例如 此处提供的工具。
而不是使用单步 TFS 合并
Try divide & conquer: Is it possible that each architect works on her personal branch & then everything is merged into a 'Trunk'?
Conflicts should get visible during these merges.
EDIT
You could employ an XML-specific tool, like the ones presented here.
By doing so, you should keep the branching-per-architect approach, BUT instead of using a single-step TFS-merge you could: