将Rational Software Architect与Rational Team Concert集成
系统和企业领域中的大多数软件开发组织都意识到了模型驱动开发(MDD)和统一建模语言(UML)的优势,并通过使用IBM®Rational®Software Architect产品家族来利用它们。 IBM®Rational Team Concert™是设计用于敏捷开发的下一代配置管理环境。 它基于IBM®Rational®Jazz™和Eclipse平台,通过整合最新的协作技术,软件开发计划,源代码控制和变更管理功能,为在全球分布的组织中取得成功提供了必要的资源。
双方都通过利用Eclipse Shell共享来提供Rational Software Architect和Rational Team Concert之间的集成。 可以将Rational Team Concert Eclipse客户端安装到Rational Software Architect Eclipse外壳程序中,该外壳程序将允许您使用Rational Team Concert功能,包括源代码控制,工作项管理以及Rational Software Architect中的管理。 在Rational Software Architect方面,您可以在源代码控制下对UML模型使用可视化的比较和合并功能,根据验证模型产生的问题创建工作项,并将UML资源跟踪到Rational Team Concert工作项。
以下各节详细说明了如何通过模仿两个用户之间的实际并行开发方案来进行集成。 当用户使用安装在其Rational Software Architect Eclipse Shell中的Rational Team Concert Client集成其工作时,这种并行工作将导致冲突的更改,需要进行处理。 这两个用户将在一个包含单个模型的UML项目中工作,然后他们将使用逻辑模型。
必备软件和知识
您需要对UML建模有基本的了解才能跟随本文并完成示例。 假定您对Rational Team Concert的配置管理有概念上和实践上的理解。 Rational Team Concert环境已配置好,可用于协作开发。
在这种情况下,两个假定的用户必须可以使用以下软件:
- WebSphere®7.5.5版或更高版本的Rational Software Architect
- 将Rational Team Concert版本2.0.0.2或更高版本安装到Rational Software Architect外壳中
连接到Rational Team Concert存储库
要完成集成,您将需要访问Rational Team Concert服务器上的项目区域。 在本示例中,两个Rational Team Concert用户User1和User2对项目区域具有适当的读/写访问权限。 有关如何设置Rational Team Concert的信息,请参阅信息中心中的“ 入门”部分。
- 在新的工作空间中启动Rational Software Architect for WebSphere。
- 从主菜单中,选择窗口>显示视图>其他 。
- 选择“ 团队”>“团队工件” ,然后单击“ 确定” 。
图1. Team Artifacts视图
- 单击“连接到项目区域”链接。
- 单击下一步创建一个新的存储库连接。
- 输入您的Rational Team Concert连接信息,以及您的Rational Team Concert服务器URI以及用户名和密码,如图2所示。
图2. Jazz存储库连接
- 单击下一步>按钮。
- 选择您的项目区域,然后单击完成按钮。
在Rational Software Architect中比较和合并UML模型
当使用诸如Rational Team Concert之类的配置管理工具时,由于并行开发,开发人员会在日常活动中比较和合并文件。 当团队使用更具协作性的敏捷开发方法时,这一点变得尤为重要,这通常要求开发人员将其工作与其他项目成员的工作不断集成。
与基于文本的文件(例如C ++和Java™代码)相比,对UML模型执行比较和合并操作要复杂得多。 Rational Software Architect对其模型使用基于XML的格式,以满足对其互连和语义的UML2.0要求。
Rational Software Architect中有两种类型的模型: single和逻辑 。 单个模型驻留在单个文件(.emx)中; 然而, 逻辑模型分为物理上分离但在逻辑上相关的子单元。 在Rational Software Architect中,子单元称为片段,并存储在主模型(* .emx)引用的* .efx文件中。 当使用Rational Team Concert源代码控制时,Rational Team Concert版本2.0.0.2或更高版本支持Rational Software Architect逻辑模型。
从Rational Software Architect导入样本UML项目
User1将从Rational Software Architect样本库中导入一个名为PiggyBank UML模型的样本项目。 稍后,示例项目将与Rational Team Concert源代码控制库共享。
- 在主菜单栏中,选择“ 帮助”>“帮助目录”。
- 打开示例> PiggyBank应用程序> PiggyBank UML模型。
- 单击导入样本链接。
- 单击“ 完成”按钮导入示例PiggyBank UML模型项目。 PiggyBank UML项目将出现在Project Explorer视图中,如图3所示。
图3. PiggyBank UML项目结构
在Rational Software Architect中与Rational Team Concert共享项目
现在您已经有了样本项目,User1首先将创建一个新的Rational Team Concert工作区,其中的服务器上带有一个组件。 该工作空间将用于与Rational Team Concert源代码控件共享上一部分中导入的项目。
- 右键单击项目,然后选择团队>共享项目 。
- 选择Jazz Source Control ,然后单击下一步按钮。
图4. Share Project窗口选项
- 选择创建一个名为的新存储库工作区 ,然后为您的存储库命名,例如
User1Respository
。 - 选择与现有流中的组件共享 。
- 在项目区域的流下选择组件。 如果没有组件,则可以单击“ 新建组件”以创建一个新组件 。
注:如果创建新组件,请确保您的用户具有适当的Rational Team Concert权限。 - 点击完成 。
- 在Pending Changes视图中,右键单击User1Workspace ,然后选择Deliver 。
注意: User1必须是目标团队和项目区域的成员,才能执行“传递”操作。
从Rational Team Concert导入项目
User1将PiggyBank UML模型项目交付到项目区域的流中,以便该项目可供其他团队成员使用。 在以下部分中,User1将项目从主流导入到他的Rational Team Concert工作空间中。
- 启动将由User2使用的Rational Software Architect的新实例。
- 按照与“ 连接到Rational Team Concert存储库”部分中相同的步骤,以
User2
身份登录到存储库。 - 从主菜单栏中选择显示视图>其他 。
- 选择团队>团队工件 ,然后单击确定按钮
- 在“ 团队工件”视图中,右键单击MyProjectArea>源代码管理> Team 1 Stream(Team1) ,然后选择新建>存储库工作区 。 根据您的配置选择项目区域和流名称。 本示例使用
MyProjectArea
作为项目区域名称,并使用Team 1 Stream
作为流名称。 - 为您的存储库工作区命名,例如
User2Workspace
。 - 单击完成。
- 选择“ 查找并加载Eclipse项目 ”,如图5所示,然后单击“ 完成”。
图5.加载存储库工作区
小费:
PiggyBank Models项目已加载到本地工作区中。
交付无冲突的变更
User2将对模型进行一些更改,并将其交付给主流。 由于User1尚未修改模型,因此更改不会冲突。 User2将传递到源代码控制存储库的更改还将创建模型验证问题。
- 右键单击模型,然后选择Refactor> Fragment All Sub-Packages ,为用例模型中的包创建片段。
- 单击确定按钮以更新引用。
- 现在,您将角色的名称从Customer更改为Client 。 右键客户端,并选择用例模型>帐户操作>客户 , 钕然后从下拉菜单中选择重构>重命名 。
- 在对话框中输入
Client
以替换客户,然后单击确定 。 - 现在,您将为项目创建一个新模型,该模型不会添加到Rational Team Concert存储库中。 右键单击并在Project Explorer视图中选择PiggyBank Models> Models ,然后从下拉菜单中选择Create Model 。
- 选择标准模板,然后单击下一步按钮。
- 通过选择需求类别和用例包模板来创建一个用例包模型,如图6所示。
图6.创建一个用例包模型
- 点击完成 。
您刚刚创建的需求模型会自动添加为候选对象,以检入Rational Team Concert源代码管理中。 现在,您将模型添加到“忽略”列表中,以使该模型不会被检入或交付给源代码控制存储库。
- 右键单击模型,然后选择团队>添加到忽略列表 。
- 保留以下默认选择:
- 忽略什么:具有选定名称的资源
- 忽略位置:仅忽略同一目录中的项目
- 在图7所示的对话框窗口中单击OK 。
图7.将UML模型添加到“要忽略的内容”列表中
- 右键单击模型,然后选择添加UML> Actor,将UML actor添加到创建的模型中。 将其命名为
ATM
。 - 从“ 用例模型”>“概述”打开“ 参与者概述”图。
- 将ATM actor拖到图上。
- 通过单击文件>全部保存来保存所有模型。
- 在Pending Changes视图中,展开存储库工作区组件,如图8所示。
图8.待更改视图
- 右键单击“ 未解决”文件夹,然后选择“ 签入并交付” 。
- 在“更改集注释”下输入相关注释,然后单击Finish ,如图9所示。
图9.签入和交付对话框窗口
接受无冲突的更改并通过模型验证创建工作项
现在,User1将其工作空间与主开发流同步。 现在,主要开发流包含User2在先前步骤中提供的模型更改。 User1将接受User2传递到其工作区的那些更改。 最后,User1将验证模型并根据模型验证错误创建Rational Team Concert工作项。
- 在User1的Rational Software Architect窗口中,打开Pending Changes视图,然后单击Refresh按钮。
- 扩展您的工作区/组件。 单击带有箭头的A图标,接受所有传入的更改 在“ 待更改”视图中。
- 在项目浏览器中打开PiggyBank模型>用例模型 。 您将看到一条错误消息,指出模型包含一个可能自动修复的损坏的参考。
- 单击忽略按钮。
- 通过在Project Explorer中选择模型并单击主菜单栏上的Modeling> Run Validation来验证用例模型 。
- 在“ 问题”视图中,选择验证引起的错误。 右键单击并选择创建工作项目 。
图10.创建一个工作项目
- 选择“ 缺陷”作为工作项类型,然后单击“ 完成”。
注意:
您的工作项类型列表可能与图10的列表不同,因为它取决于您的Rational Team Concert服务器的工作项模板配置。
- 在工作项编辑器中填写必填字段。
- 选择此工作项的所有者为User2 。 单击拥有者字段,然后选择更多 。
- 搜索User2,然后单击“ 确定”将用户设置为工作项所有者。
- 通过单击保存按钮保存工作项。
合并冲突的变更:非逻辑合并
您已经学习了如何比较和合并无冲突的更改。 在接下来的步骤中,您将学习如何使用Rational Software Architect的“比较并合并”功能来合并冲突的模型更改。
- 通过打开“ 团队工件”视图并选择MyArea>工作项目>共享查询>预定义>打开分配给我的工作,找到分配给User2的工作项目 。
- 在工作项视图中,如图11所示,双击工作项将其打开。
图11. Rational Team Concert查询结果
- 既然User2知道了问题,并在缺陷的描述中显示了该问题,您将向Rational Team Concert源代码控件中添加缺失的工件以对其进行修复。
- 通过在Project Explorer中右键单击模型,然后从下拉菜单中选择Team>从忽略列表中除去,从 Rational Team Concert“忽略”列表中除去用例模型 。
- 单击确定按钮。
注意:您可以单击描述中的模型资源链接,以在Project Explorer中浏览UML元素。
图12.工作项描述
- 通过将缺陷的状态和状态分别更改为Resolve和Fixed来解决缺陷。
- 保存工作项。
- 现在,更改PiggyBank设计模型 。 在项目浏览器视图中,展开PiggyBank设计模型> PiggyBankImplementationDesigns 。
- 右键单击该图,然后从下拉菜单中选择“ 重构”>“重命名” ,将PiggyBankImplementationDesignPackages重命名为PiggyBankUser2Design 。
交付变更
- 现在您可以交付更改了。 打开待处理的更改视图。 签入并交付未解决的更改。
- 将分配给User2的缺陷分配给先前创建的更改集。 当提示您提供有关更改集的注释时,单击“ 下一步” 。
- 选中显示已解决的复选框,这样将列出已解决的缺陷,如图13所示。
图13.签入并交付附加到工作项的变更集
- 单击完成按钮。
处理冲突
现在,我们将进行更改,以在UML模型中产生冲突。
- 使用User1的工作区启动Rational Software Architect。
- 重复步骤6和7,但是这次将图重命名为
PiggyBank User1 Design
。 这将与应手动合并的User1所做的更改产生冲突。 - 保存模型。
- 打开“ 待处理的更改”视图时,应该同时看到“未解决的更改”和“传入的更改”。 右键单击“ 未解决” ,然后从主菜单中选择“ 全部 签入”。
图14.带有传入和传出更改的Pending Changes视图
- 通过单击“ 尚待更改”视图中的全部接受,接受所有传入的更改。
- 单击自动解决按钮。
- 单击对话框上的“ 确定 ”,其中指出无法自动解决所有冲突。
- 现在需要手动合并模型以解决冲突。 双击Design model.emx(修改>修改)。
- 图15显示了比较并合并编辑器。 接受来自User1的更改。 User2的更改将被覆盖。
- 展开所有冲突。 右键单击适当的冲突,然后选择接受 。
- 单击“ 解析为合并”按钮。
- 转到“ 待处理的更改”视图,然后单击以输入对待处理更改集的注释。 将出现一个可编辑的文本框。
- 通过右键单击“ 传出的更改”并从下拉菜单中选择“交付”,将合并的模型交付到存储库。
图15.模型比较和合并编辑器视图
启用逻辑模型比较和合并
为了能够在Rational Software Architect中将UML模型与Rational Team Concert进行比较和合并,需要启用特殊选项。 完成以下步骤后,您将能够在Rational Team Concert中使用逻辑模型。
- 从主菜单栏中选择窗口>首选项 。
- 选择“ 团队”>“ Jazz Source Control”>“模型启用” 。
图16. Jazz源代码控制模型启用首选项
- 选中以下复选框:
- 允许建模工具(例如UML)在Accept期间参与文件内容 ,
- 逻辑模型
- com.ibm.xtools.model.ui.resources.modelProvider
- 单击“ 应用” ,然后单击“确定” 。
- 对两个用户的工作区重复这些步骤。
执行逻辑模型合并
接下来,User1和User2将在逻辑模型中创建冲突。 以后,这些冲突将得到解决。
- 以User1的身份,右键单击用例并选择Refactor> Rename,在用例模型>帐户操作包下重命名Cash Check用例。
- 为它重新命名为“
Deposit Check
,然后单击“ 确定”。 - 将尚未解决的更改传递到流。 重复“传递无冲突的更改”部分中的步骤16-18,以完成此操作。
- 以User2的身份重复上述步骤,从“检查允许...”到“选择重构>重命名”,但将用例命名为
Cash Check
(或Cash Cheque
) 。 这将在逻辑模型中产生冲突。 - 打开“ 待处理的更改”视图,并检入您在上一步中创建的所有未解决的更改。
- 接受来自User2的所有传入更改。
- 单击自动解决冲突的更改。
- 当出现“逻辑合并”对话框时(图17),双击“ 逻辑模型”>“ PiggyBank模型”>“ IBM Rational逻辑模型[根文件:Use Case Model.emx]”(完整上下文合并)。
图17.逻辑合并窗口
- 通过右键单击并在下拉菜单中选择“ 冲突”>“冲突的修改”>“接受” , 接受 User1创建的更改。
- 通过单击“ 提交合并”按钮保存合并的模型。
有关Rational Software Architect和Rational Team Concert的更多信息,请参见参考资料部分中的引用。