以知识为核心的ALM之变更管理篇

变更管理作为贯穿于软件开发应用生命周期各个阶段的关键要素,旨在准确地记录软件产品的演化过程,帮助开发人员在ALM各个阶段得 到不同版本的产品配置。其中,在任务和缺陷跟踪及版本控制过程中,通过变更管理系统,开发人员需要记录和查找源码和文档变更的原因、时间以及影响,并反映 其工作的效率及进度;开发经理需要保证所有代码的可靠性,并约束团队成员执行变更的权限;有时,开发项目的甲方还需要查看与产品特性或缺陷对应关联的源码 文件。

很多公司通过版本控制系统来管理源码及各类文档的变更,却往往忽略了与任务跟踪和项目管理过程真正意义上的集成,致使变更管理和开发 过程一定程度上的脱节。本文将介绍一种新型的变更管理模型。该模型将很大程度地提高软件开发中变更管理的效率。

开发过程中的两类变更

在软件开发过程中,变更主要体现为以下两种方式:第一类是不需要变更代码就能完成,如设计、测试和各种与文档相关的任务等;另外一类 则与源代码相关的开发任务,包括新缺陷、新功能等。一个好的模型应该能实现对这两类变更的集中统一管理(如图1所示)。本节将分别就这两类变更,阐述这一 新型的变更模型的管理策略。

基于智能化知识库的文档变更管理

软件开发应用生命周期的各阶段涉及多类与源码无关的文档,包含需求分析、数据库设计、测试文档等面向客户的文档,也包含供项目成员使 用的内部文档,如模块开发卷宗、数据存储规则等。一个智能化的完整知识库将帮助项目开发团队及时共享所有的文档,并支持版本管理,从而提供一个体现以往经 验和产品需求的平台。

虽然文档的一致性问题并不是非常突出,多人同时修改一个文档的情况也不多见。然而,如果只在本地保留文档的当前版本,而将不同版本的 集中管理交给知识库自动完成,将会减少冗余,还便于随时随地查看不同时期文档的内容,相互比对。

TechExcel以知识为核心的ALM解决方案中的KnowledgeWise不仅支持普通意义上的文档版本管理,还从更高的层面 实现了知识历史的跟踪和记录。知识条目作为知识库管理的基本单元,通过自身属性描述和所附文档完整呈现相关知识内容。而知识条目和所附文档的任何变更,将 会自动触发版本控制机制。因此,知识库得以保留所有历史版本的知识,并能提供分类搜索和查找。

集成任务跟踪与版本控制的源代码变更模型

源代码的变更管理对软件开发的成败尤为重要。传集成任务跟踪与版本控制的源代码变更模型 统的版本控制集成往往将项目开发中的任务或问题与源码文件直接关联。这种方式在应对任 务与源码文件间的复杂关系时,常常显得力不从心。

集成任务跟踪与版本控制的变更模型旨在使软件开发中的版本管理和任务跟踪乃至项目规划实现真正意义上的一体化,进而优化软件开发的过 程。在此模型中,变更(Change)取代源码文件成为基本单元。首先,通过Change将源代码文件封装,这就使得项目颗粒度变大,抽象性更强;经过封 装后的源代码文件,再通过Change与开发任务关联。实质上,Change在任务跟踪和版本控制之间建立了桥梁(如图2)。通过提交Change,就能 轻松更新源代码,并记录引起源代码修改的任务。依据实际情况,开发任务和Change的关联分为以下三种情况:

“一对一”关联,即提交一个Change完成一个工作任务,这和传统的源代码文件与工作任务“一对一”关系是不同的。例如,开发人员通过修 改多个源代码文件才能修复一个bug,但开发人员只需提交一个Change就能完成该任务。

“多对一”关联,即通过修改提交一个Change,可以完成多个任务;或者完成一个任务需要提交多个Change。对于后一种情况, 能够帮助开发人员规划自己的工作,也使得其工作可见并量化。例如,程序员认为完成一个任务需要5个工作日,如果在5天以后才提交源代码,可能会影响团队其 他成员的工作。他可以选择每天以提交单个Change的方式记录自己的工作进展,版本库中的源代码文件会自动更新,直至最终完成这个任务。

“多对多”关联,即多个工作任务与多个Change相关。例如,测试人员提交的6个bug被分配给2个程序员修复,他们可以通过新建 不同的Change,将自己要修改的源文件和相关bug关联起来,实现协同工作。

集成变更模型的功能及优势

为了在可控制的工作流环境下实现多种管理功能,如工作项管理、任务跟踪和缺陷跟踪等,上述集成变更模型系统至少应具备以下功能:

因此,面向软件规范化、工程化、自动化的需要,运用科学有效的集成变更模型,将给企业带来一系列益处。

缩短开发周期。开发团队之间的问题跟踪及消息发布,加强了人员沟通。版本库的严密管理,可最大限 度地共享代码。开发人员不用跳转系统就能一次性完成源码的关联和检入,并且提交一次Change就能检入多个文件,还能利用Change对工作进行规划和 总结,这些都将提高他们的开发效率。

有利于知识库的建立。对版本的有序管理,有利于企业建立代码、文档和业务经验知识库。如果能够结 合项目规划、测试等其它应用,更能建立完整的企业级知识库,为企业的可持续发展做重要的知识积累。

规范管理。对项目成员的工作量进行量化的统计,使员工考核更加规范;强制执行源文件与开发任务的 关联,使开发习惯更加规范;项目成员遵循预定的工作流程进行设计、开发和测试,使开发过程更加规范;项目成员间加强了沟通,有问题能及时发现、分配并解 决,且不增加额外的工作量,使项目管理更加规范。

集成变更模型应用示例—DevTrack与Subversion集成

Subversion是一个免费、开源的版本控制系统,可用来管理任何类型的文件。任务跟踪工具DevTrack可以通过 VersionLink变更模块与Subversion有效集成。通过VersionLink插件,Subversion用户可以在IDE(如 Visual Studio)或SVN客户端(如RapidSVN、TortoiseSVN)界面直接将提交操作与DevTrack开发任务关联起来。另外,独立的 VersionLink客户端也为开发人员提供了更灵活的变更管理。

无缝集成。当在系统中创建新的变更任务被创建或已建立的变更任务被选择时,开发人员可以在 DevTrack中选择与变更相关的文件。VersionLink用户能够直接操作他们所负责的DevTrack任务,并将所有变更的数据都保存在 DevTrack数据库中。同时,用户在VersionLink 中还能查看并检索DevTrack子项目树。

智能变更管理。VersionLink会在Change被提交时自动执行源文件检入操作。如果失 败,VersionLink则不会更新DevTrack开发任务或Subversion版本库。此外,DevTrack智能化的工作流机制也在 VersionLink中体现。

报表分析。管理团队和开发团队可以浏览DevTrack中的工作进展。通过DevTrack中的 Subversion页面就可以显示出所有的变更、源码文件以及相关的开发任务。DevTrack报表将呈现某一特定产品版本的所有变更文件、为修复一个 或多个bug而新建的文件以及其他重要的数据元素。