模型版本管理工具LemonTree
LemonTree是一款对 模型文件进行版本管理的工具。
如下是它的界面:
在Lemon Tree界面上可以看到2个或者3个模型的对比:
差异的元素
差异的图
元素对比视图
图对比视图
属性对比视图
下面介绍一下Lemon Tree的功能。
LemonTree的功能
Lemon主要提供EA模型的2种差异对比:
2路差异对比:2个模型文件进行差异对比。
3路差异对比:2个模型文件具有同一个基础版本模型文件(BASE),2个模型文件在进行差异对比的同时,也分别进行各自和基础版本的对比。
2路模型比较
在Lemon Tree中可以进行2路比较,也就是比较2个模型文件,界面如下:
在2路模型文件比较模式下,对两个模型进行比较。从一个模型到另一个模型的更改会被突出显示,还可以合并这两个模型。然而,2路比较在能够检测到的更改类型方面是有限的,因为它只检查模型的当前状态。
2路模型比较适用于同一模型的不同时间的版本比较。可以比较出来2个模型文件之间有什么差异,然后把模型图和元素的差异显示出来,用户可以浏览具体的差异细节,并决定如何合并。
但是如果是同一个模型文件,为2个用户分别建立了各自的版本,2个用户同时进行各自的版本的修改,然后进行比较,则会出现问题。
例如,有一个模型文件Model,用户A和用户B分别复制为各自的模型文件Model-A和Model-B,然后在各自的模型文件上修改。(来自于同一模型文件的2个分支版本)上修改。
A用户将一个包“Package2”中的class2删除,
B用户将一个包“Package1”中的class1删除,
如果是采用2路比较,则不会考虑基本版本Model,而只是比较Mode-A和Model-B,则发现二者有如下不同:
Model-A 比Model-B 多了 Package1的Class1
Model-B 比Model-A多了 Package2的Class2
如果执行合并,则会把 Model 的内容合并为:
Package1,Class1
Package2,Class2
而实际上用户的本意是分别删除了各自负责的class:
A用户删除了Package2,Class2
B用户删除了 Package1,Class1
执行合并后的结果是全部删除后,Model的pakcage1和package2的内容都为空。
3路模型比较
Lemon Tree 中的3路模型比较,就是针对2路模型比较无法满足的情况:2个被比较的模型存在一个共同的基础版本。3路模型比较的界面截图如下:
3路比较可以比较两个模型,同时也比较2者的公共基础版本。可以检测对公共模型做了哪些更改。
还是上面的例子,因为3路比较的时候,不但比较2个用户版本Model-A和Model-B,还把2个用户版本和基础版本Model比较,这样就能够基于用户版本和基础版本的比较,对基础版本进行修改,实现用户的真实意图。
Lemon Tree 的界面说明
下面对Lemon Tree的界面进行详细说明。
模型浏览器(Tree Browsers)
模型浏览器用于显示模型及其更改,以及合并模型的预览。由于各种原因,只显示了模型的摘录:受影响的元素以及所有元素都需要在模型的原始树结构中正确显示。
元素是用颜色编码的,将鼠标悬停在元素上时,可以检查其状态。
如果更改了元素或图表,则标记为Change Type。此处描述了所有变更类型的说明:Change Types
图浏览器(Diagram Viewer)
在图查看器用于显示两个模型图。元素也被突出显示,且该图是交互式的-在图中选择一个元素会使模型浏览器选择该元素,以便可以快速查明模型中的更改。
属性浏览器(Property Viewer)
Property Viewer 显示出了选择的元素的属性。您可以查看元素的属性级别上的更改。您可以从“ A”或“ B”中获取单个属性并编辑一些属性。
有可能显示
所有属性
仅更改的属性
在 Property Viewer 页面上找到更多详细信息。
手动覆盖自动合并建议
在合并模式下,将显示一个合并预览。如前所述,这概要描述了结果模型。LemonTree将根据Diff&Merge Strategy中描述的合并规则预先选择元素。它将尽力保留本来的意图-即识别两个模型的变化并将这些变化保留在结果模型中。尽管如此,在某些情况下,您还是要覆盖这些决策,而优先选择一个元素的版本。
您可以使用带有尖括号的小按钮来完成此操作 在树浏览器中。使用这样的按钮可以指示LemonTree优先使用该版本。它还将尊重依赖关系和其他链接的元素,以便所选元素将在合并模型中完成。执行此操作后,用户决策与预选决策不同的元素将用一个小手形图标标记。
从LemonTree 2.2.0开始,您还可以在图查看器中做出决定。选择元素时,LemonTree现在提供按钮以将该版本带入合并预览。
合并
最后,您可以单击工具栏中的Start Merge按钮,指示LemonTree将模型导出到EAP文件。如果VCS Integration已启动LemonTree,则单击此按钮将立即开始将模型导出到预定义位置。在手动模式下,您现在可以选择合并模型的输出文件夹和文件名。
LemonTree使用 A(他们的)模型作为编写合并模型的模板。因此,不受支持的表(主要是维护表和配置)将从一个版本中保留下来。其他版本中不支持的表的更改将被放弃。
Lemon Tree支持哪些用例
Lemon Tree 可以有效地支持MBSE 中团队的建模的有关版本管理的工作,具体支持的场景如下:
场景1:对模型进行版本管理
场景2:构建管理-模型的持续集成
场景3:变更管理和模型审查
场景4:产品线开发中模型的发布管理
场景1:对模型进行版本管理
团队的建模工作需要能够处理模型的并行版本。
LemonTree的支持EA模型的不同版本的比较和合并。
LemonTree可以无缝集成到现有版本控制系统中。支持:SVN、Git、CVS、TFS或PTC。
场景2:构建管理-模型的持续集成
持续集成是软件开发中目有效的配置管理方法。源代码的每个已发布更改都将不断合并到存储库中,然后在构建服务器上自动进行检查,创建,测试和打包。这样可以确保开发的软件始终处于测试和可执行状态。LemonTree首次允许将连续累积方法用于建模领域。类似于传统的软件开发,团队成员可以以分布式和时移的方式在模型的不同区域上工作,并介绍他们的更改。然后, Automation在构建服务器上运行各个版本(例如,詹金斯(Jenkins)形成一个集成LemonTree模型版本,而无需任何用户交互。仅在复杂的冲突情况下,即在对同一模型元素进行矛盾的更改时,才会通知相关用户,并且必须使用LemonTree手动解决这些冲突。
场景3:变更管理和模型审查
诸如ISO26262之类的功能安全标准要求对所有与开发相关的工件进行配置和变更管理。使用 LemonTree,可以记录哪个用户做了更改什么更改,并可以随时查询这些更改。这对团队合作有帮助,而且在功能安全领域也是必不可少的。LemonTree还可以评估或“审查”这些更改。此外,LemonTree还能够保存审阅配置,包括要评估的模型版本和审阅的当前状态。还可以将评论注释透明地插入到分支中,以支持优化的评审过程。
场景4:产品线开发中模型的发布管理
产品线开发过程中,一般采用平台和组件的方式进行快速开发。这种情况下需要支持平台模型的主线和分支。LemonTree可以把平台模型建分支, 也可以合并分支到主线模型.
火龙果软件提供团队协同建模环境的咨询服务,可以帮助用户搭建完整的团队建模和MBSE解决方案,详细信息请见 http://tool.uml.com.cn/ToolsEA/service.asp
希望本文能够为MBSE的团队提供模型版本管理的启发与参考。
欢迎参考另外一篇团队建模协作的文章协同建模与版本管理(基于EA)
更多的有关EA建模资料如下:
视频:http://tool.uml.com.cn/ToolsEA/jswd-ysm.asp?partname=sp
文章: http://tool.uml.com.cn/ToolsEA/docea.asp?partname=wk
如果您希望了解更多信息:
本文使用的建模工具为EA,可以下载试用版http://tool.uml.com.cn/ToolsEA/download.asp
作者简介:
俎涛,火龙果软件工程创始人,2001年创立了火龙果软件工程,2004年创立了IBM Rational用户组。1998年,曾作为骨干参与国家重点研究课题《面向特定领域基于组件的软件复用》,有幸比较深入的学习和使用的UML进行领域建模、提炼可复用组件和架构。在后来的研发项目中,一直采用模型进行分析设计,积累了一些心得和经验。20年来一直专注于MBSE,熟悉 UML、Sys ML、ArchiMate、BPMN、UPDM、DataModel等建模语言和规范,在以往的经历中,最大的感触是汇聚了很多精英人才的软件工程和系统工程领域居然几十年都是一种凌乱迷蒙的状态,从自己的经历所得,觉得清晰的模型,才是拨开工程迷雾的关键所在,所以不断研究和应用各种建模技术,并从自己的工程实践中提炼经验,形成对于自己可持续的方法论,例如《MBSE 从方法到实践指南》 《基于模型的三维研发管理》 《基于模型的需求管理》 《模型驱动的架构设计》 《基于模型的质量管理》 《基于模型的人员能力管理》 《iProcess过程改进方法》,目前正在作为产品经理和架构师,进行MBSE(基于模型的系统工程)平台的研发,希望建立要给基于模型的工程解决方案,后续会不断写些文章,希望能给同行一些借鉴。 |
|