敏捷软件开发方法适合小型团队进行软件开发,其配置管理(Agile SCM)解决方案强调支持快速开发的简单化和自动化。该软件配置管理的目标是它的实践和过程能体现敏捷的价值,保证敏捷开发的原则和特征。目前的软件配置管理工具,如IBM Rational SCM产品,变得更加灵活和容易扩展,能够支持敏捷项目的配置管理。
1 UCM模型
软件配置管理是一种标识、组织和控制修改的技术,目的是协调软件开发,使混乱减到最小,使错误达到最小并最有效地提高生产效率。软件配置管理用来:标识变化;控制变化;保证变化被适当的发现;以及向其他可能有兴趣的人员报告变化。所以,必须为软件配置管理活动设计一个能够融合于现有的软件开发流程的管理过程。敏捷软件配置管理即“Agile SCM”,是轻型SCM,可以实践敏捷开发方法。
UCM(Unified Change Management)模型是Rational管理软件开发中变更管理的一种方法,是使用CC(ClearCase)来进行版本控制和配置管理的一种模式。核心是基于活动和流的变更及配置管理,为开发者提供独立的工作空间,更加有利于并行开发模式,任务清晰,方便项目整合,易于追踪变更记录。
如图1所示,UCM的工作过程是,首先在集成流上建立初始化基线,开发人员更新工作区,在开发流上进行基于活动的开发,完成开发任务后,将任务提交到集成流,在集成流上进行集成工作,到一定程度进行基线提升,并通知相关人员。开发人员再次更新工作区获得其他人员的变更,从而进入新一轮的操作过程。
图1 UCM工作流程
2 基于UCM的SCM在敏捷项目的应用
2.1 敏捷项目的特征
开发方法的特征是配置管理的重要考虑因素,敏捷开发的核心原则和特征见表1所列。
表1 敏捷软件开发的核心原则和特征
配置管理活动贯穿于项目的整个生命周期,敏捷开发过程与SCM活动的映射如图2所示。
图2 敏捷开发过程与SCM活动的映射
2.2 Agile SCM解决方案的特征
传统的软件配置管理使开发人员处于受控状态,而Agile SCM试图了解开发者的感受而接受需求的变更。Agile SCM的特征如下:①代码的无摩擦集成:自由修改私有工作空问中的代码;离线可以工作,使用工具可以方便快速的重连工作区;私有工作区可以轻松、快速地与仓库同步代码;轻松、快速地分支合并。②支持重构。③持续集成。④自动化构建。⑤简单且有弹性。
敏捷项目强调迭代开发,需经常修改计划,因此需要过程和工具来支持计划的变动。随着项目的进行,允许重新定义目录、文件等,这正是灵活性的要求。Agile SCM解决方案要求提供架构的可追溯性,这样尽管元素被重命名,删除或添加,元素仍可回到原来的状态。同时要求配置管理工具提供较低的约束而不是强制性的过程限制。
3 CC与CQ结合实施Agile SCM
CQMIS(淮北煤质管理信息平台)和HBEMIS(淮北环境管理信息平台),是合肥工业大学计算机与信息学院软件工程实验室为淮北矿业集团公司开发的2套应用软件。两系统同步开发,均采用迭代开发与测试驱动开发相结合的思想。在软件配置管理过程中引入了敏捷的思想,保证了项目按时按质交付。项目开发中实施敏捷软件配置管理的过程,如图3所示。
图3 敏捷软件配置管理实施过程
3.1 SCM需求分析
对目标项目进行评估,考虑开发环境、开发人员的水平及SCM实施经验等因素,结合软件开发方法过程,确定SCM实施策略。
总结煤矿安全管理信息系统实施SCM的经验和教训,由于CVS功能单一,不能很好地控制元素的正确提交,所以考虑使用功能强大的IBM Rational SCM工具集。这2个软件规模较小,团队成员工作在同一地理位置,交流方便,因此计划使用Agile SCM控制整个开发过程,为项目组成员提供一个公共的工作框架。在SCM分析的基础上,制定适合项目的软件配置管理计划。
3.2 流程的定制与实现
目前的配置管理工具没有现成的敏捷SCM配置,因此本项目利用IBM Rational SCM工具集找到满足本项目需求的配置,类似项目可依据项目的特点在以下几个方面进行调整:
(1)结合项目特点,确定分支策略。采用UCM和CQ(Clear Quest)市H结合的方式,通过流来实现简单的分支策略,使用一个开发流和一个集成流。在开发流上进行所有开发活动,在集成流上进行构建、发布、基线管理等活动。
(2)划分Component和组织目录结构。Component通过标识一个根目录来定义,根据项目的大小和功能性可划分不同的组件。为每个项目分别建立一个组件,分别为CQMIS_eomponent和HBEMIS_component。
敏捷项目的编码实施、持续集成、构建等活动相互间的依赖关系复杂,使得合理的目录组织结构变得极为重要。目录组织结构需要满足不同角色在各阶段对不同类型元素进行访问的多种场景需求。本项目中的目录组织结构,如图4所示。
图4 CQMIS项目中的目录组织结构
(3)依据并行开发的特点,划分project。项目第一次验收时产生Versionl,下一步需要同时在2个版本上进行工作:进一步完成用户的新需求,要在版本1上工作;为了把Versionl提升为一个版本产品,在不增加新功能的前提下,对项目进行改进和优化。为了达到这两项工作并行进行的目的,建立了2个开发分支。
(4)依据开发团队的情况,划分权限。本团队成员共12人,考虑到中开发人员要拥有高度的自由和权利来实现变更,通过操作系统的域为每个开发者设置较高的操作权限。注意CQ中的用户要和配置管理组的域用户保持一致。
3.3 搭建UCM CC与CQ集成环境
软件配置管理是整个团队的责任,建立软件配置管理环境支持开发过程,目标是响应变化,使软件整个生命周期活动有序进行,最后生成状态报告等提供给管理者参考。而整个流程借助有效的配置管理工具,可以使工作流程更加自动化。
CC管理软件是过程生成的所有工件,而CQ则管理项目的任务、缺陷和增强请求等活动,并提供图表工具来追踪项目的进展情况。在实施UCM时,CC的UCM项目和CQ的用户数据库关联一体,并将CC的活动与CQ的变更请求记录一一映射。
(1)在CC方面。创建Project VOB、Cornponent、开发流集成流及加入项目创建工作区。
(2)在CQ方面。使用CQ Maintenance Tool创建repository schema、使用CQ Designer,选择要设计的计划库,进行设计。
(3)UCM CC与CQ集成方面。在UCM CC中,通过设置项目属性页来确定交互方式。
3.4 在UCM CC与CQ集成环境下开发
开发者在配置管理环境下进行开发的流程,如图5所示。在此环境下,开发者首先建立自己的工作空间,通过查看活动、邮件等方式获得自己的任务,在开发流上进行工作,待完成测试后,提交相对正确的文件到集成流。
图5 敏捷配置管理环境下进行开发的流程
通过工具的集成,进行开发时流程更加自动化,在CC中进行的活动会自动与CQ关联,如图6所示。活动若与缺陷有关时,会出现如图7所示的对话框,同样进行基本配置管理活动时,会通过“BaseCMActivity”关联。
图6 CC中的活动
图7 缺陷跟踪面板
(1)敏捷过程管理。在传统的配置管理过程中,需要开发人员人为地遵守制定的配置管理制度来保证开发正确有序地进行,也可以在CC UCM中通过简单设置来实现交付制度,如“Do Not Allow Deliever to Proceed with Check-Outs in the Development Stream”。该制度控制的是当活动的变更集中的文件仍处于检出状态时,开发人员是否能交付变更内容。通过这些制度的简单设置,即可实现开发过程的管理。
CC提供了触发器机制,一个事前触发器可以在版本的review-status属性没有置为“passed” 时不允许执行“检入”操作。
(2)敏捷变更控制。CQ可以在自动化获取、划分优先级及变更请求和特性储备的分配上占有地位,因此根据敏捷项目特点,在项目中实现轻量级的、可定制的变更请求工作流,在如图8所示的操作界面中进行变更活动。
图8 在CQ中进行的变更操作
4 结束语
本文讨论了Agile SCM的特征及如何利用Rational SCM工具集,来实现敏捷项目的最佳实践。详细分析了在CQMIS和HBEMIS项目中实施一个重于支持的Agile SCM过程,Agile SCM的特点和关键问题ET],提出把CC UCM和CQ结合制定适合本敏捷项目的自动化配置管理流程。
实践证明,Agile SCM达到了保证软件按时按质交付的目标。反馈也是敏捷开发的一个重要方法,SCM支持反馈机制是通过自动化的构建和部署。同时,为了使配置管理活动更敏捷,考虑了引入模式思想。
网址引用: 思谋案例组. 基于UCM模型实施敏捷SCM研究. 思谋网. //www.zilicai.com/view/826.