配置管理工具是指支持完成配置项标识、版本控制、变化控制、审计和状态统计等任务的工具。
工具功能
(1)配置支持。配置是一组有共同目的的中间软件产品,其中每一个中间软件产品称为一个配置项。软件配置管理支持用户建立配置项之间的各种关系,并对这些关系加以维护,维护这些关系有助于完成某些特定任务(例如Build)和标识某一变化对整个系统开发的影响。
(2)版本控制。版本控制是软件配置管理的基本要求,它可以保证在任何时刻恢复任何一个版本、版本控制还记录每个配置项的发展历史,这样就保证了版本之间的可追踪性,也为查找错误提供了帮助,版本控制也是支持并行开发的基础。
(3)变更控制。变更控制是指在整个软件生存周期中对软件变更的控制。变更控制系统记录每次变更的相关信息(变更的原因、变更的实施者以及变更的内容等)。这些信息有助于追踪出现的各种问题。
(4)构造支持。软件系统往往由许多配置项构成,建立整个系统是个复杂和费时的过程,软件配置管理工具可以记录和追踪每个配置项信息,帮助用户自动和快速地建立系统,和版本控制结合在一起,可以有效地支持同时开发系统的多个版本。
(5)过程支持。过程详细描述了各种人员在整个软件生存周期中如何使用整个系统,过程控制可以保证每一步都按照正确的顺序由合适的人员实施。过程控制本来是软件开发环境中一个独立的部分,软件配置管理也开始提供这部分功能。软件配置管理工具对过程的支持还很不够,而且支持方式差别也很大,许多管理只是提供一个预先定义好的生存周期模型,并保证开发的每一步都按照这个模型规定进行。
(6)团队支持。团队支持是指多个开发人员同时开发一个软件系统。大多数软件系统都需要多个开发人员参与,有效的团队支持对开发人员是很有用的。团队支持主要包括工作区管理、并行开发管理和远程开发管理(某些软件配置管理工具还包括对开发人员支持)。
工作区管理是指为每个开发人员提供独立的工作区,开发人员可以互不干扰地进行工作,也可以选择某个时机向其他开发人员提供自己的最新修改结果或接受其他开发人员的修改结果。
并行管理是指多个开发人员同时进行的修改可以进行合并,并行开发管理可以尽可能地自动解决合并中可能出现的冲突。
远程开发管理是并行开发管理的特例,是指在广域网上并行开发的管理,许多适合于局域网的方法可能不适合广域网。
团队支持的基础是版本控制和版本合并。
(7)报告/查询。软件配置管理可以向用户提供配置库的各种查询信息,主要包括依赖关系报告、变化影响报告、Build报告、版本差异报告、历史报告、访问控制报告、冲突检测报告。实际上许多软件配置管理工具的此项功能是分散在各种相应的功能中的。
(8)审计控制。软件配置管理通过审计控制来验证软件配置管理过程,以保证配置库中所有配置项的完整性。简单的审计控制是记录软件配置管理工具执行的所有命令,复杂的审计控制还包括记录每个配置项的状态变化。
(9)其他功能。除了以上的主要功能外,软件配置管理还可以提供权限控制、人员管理和配置库管理等管理,这些功能主要是为软件配置管理实现以上功能提供保障。
工具选择
配置管理工具可以分为3个级别:
(1)版本控制工具,是入门级的工具,例如:CVS、VSS。
(2)项目级配置管理工具,适合管理中小型的项目,在版本管理的基础上增加变更控制、状态统计的功能,例如:ClearCase、PVCS。
(3)企业级配置管理工具,在实现传统意义的配置管理的基础上又具有比较强的过程管理功能,例如:ALLFUSIONHarvest。在建立自己的配置管理实施方案时,一定要根据自己的管理需要,选择适合自己的工具,从而搭建一个最适合自己的管理平台。如果我们的管理目标是建立组织级配置管理架构,并且要实现配置管理的所有功能,从而为以后的过程管理行为提供基础数据的话,那么我们建议选择专用的配置管理工具。
1.支持的操作系统
这几款工具都支持各种主流的操作系统,如Windows、LINUX、UNIX,都支持分布式开发。CVS、Harvest、VSS、ClearCase的Server都可以安装在Windows、LINUX、UNIX、AIX等操作系统上。
2.版本管理功能
CVS与Harvest、VSS、ClearCase都可以进行版本管理,都支持并行开发。在与开发工具的集成方面,CVS可以与各种Java开发工具集成,而Harvest支持SCC接口,可与VB、VC等集成,此外支持与IBM的WSAD集成。
3.变更控制功能
Harvest、ClearCase支持并提供了邮件通知、表单(类似任务说明书或变更通知)等手段来加强团队的信息沟通,而且提供审批、晋升等手段来方便管理项目。Harvest是基于过程的变更,可有效的进行变更控制,它在进行配置管理时更注重软件开发的过程与生命周期的概念;ClearCase相比HarVest则更强调赋予发人员更大的发挥空间,通过集成ClearQuest可以有效地进行变更的跟踪与监控。CVS是基于文件的变更处理,不能跟踪、监控项目的变更,但是结合开放源码的BugTrackI具也能进行变更管理。
4.状态统计功能
CVS、Harvest、ClearCase均提供了强大的统计信息功能。
5.数据的安全性
Harvest提供了全面的权限控制,所有的软件资产存放在
Oracle数据库中,利用Oracle的特性来保障数据的完整性与安全,并可以定时备份,在权限控制和安全性方面是这三个工具中是最好的;而CVS、ClearCase主要依赖操作系统的权限设置;但ClearCase采用自己的文件系统,在安全性方面也有严格的控制,而CVS的安全性与备份功能需要通过设置操作系统权限来实现。在配置管理的基本功能的实现上,CVS提供了版本管理和部分变更管理的功能,Harvest、ClearCase完成配置管理的功能的同时还可以帮助软件开发组织积累项目中的数据提升软件开发过程能力。
简单应用
应用软件的规模及复杂程度日趋大型化、复杂化,这就导致软件开发的方式也从早期的单兵作战式或手工作坊式渐渐转变为集团化、工厂流水线式的团队协作开发方式。在这种开发模式中会遇到一些问题,例如:
●需要将整个软件版本恢复到以前某一时间的状态;
●控制某一程序在同一时间内只能由一个开发人员进行修改;
●限制随意修改程序;
●对每个开发人员编写的程序质量进行评估。
如何解决上述问题,管理好项目的每一步运作,成为每一位项目主管需要解决的课题。许多配置管理工具能够与各种流行的开发软件进行无缝的连接,它们有机地结合在一起,能够完整地保存开发中对应用程序每一个源文件所有的修改记录,因此充分地利用配置管理工具能够对软件开发进行有效的管理,其具体表现有以下几个方面:
(1)随时将程序恢复到以前某一时间点。配置管理工具可以将某一程序恢复到以前某一时间的状态,甚至将整个软件版本恢复到以前某一时间的状态。它能比较程序的不同版本,方便地识别出被修改,删除或插入的具体行,可以将两个不同版本的修改合并到一个新文件中,如果一段重要的代码被删除了,它可以迅速恢复这段代码。
(2)实现代序的互序性修改。配置管理工具能够实现某一程序在同一时间只能由一个开发人员进行修改。其具体实现方式是:开发人员从源文件存放处检出(Cherk out)一个程序,这时其他开发人员就不可以再检出同一个程序了,只有当第一个开发人员修改测试完成后,将更新版本的代码做检入(Check in)操作,其他开发人员才能检出同一个程序-当然,有些配置管理工具也可以配置成允许多入修改,即同时检出同一个程序.最后可以将不同版本的修改合并到一个新程序中。
(3)对程序修改进行有效的管理。在配置管理工具中可以将用户分为管理员和程序员两种角色,只有管理员可以将程序冻结(Freeze)和解冻(Unfreeze),被冻结的程序是下允许修改的。修改程序的流程为:
①用户提交需求书,程序员提交程序设计说明书,项目主管审核通过后,配置管理员(CMO)将程序解冻;
②由程序员检出程序;
③程序员修改程序;
④修改完成后程序员提交测试请求给测试小组,测试小组进行测试,如果测试不通过,转向第③步;
⑤测试通过以后程序员填写本次修改记录,然后检入程序;
⑥配置管理员将程序冻结。
至此完成一次程序的修改。在软件开发后期或者软件正式投入使用时,这种方式对保证软件的稳定运行能起列非常重要的作用。
(4)将开发环境与测试环境、运行环境进行有效的隔离:比较大型的软件开发项目部有专门的测试小组;采用配置管理工具后,开发人员有自己单独的开发环境,测试人员有自己的测试环境-测试人员测试无误后才检入程序,可避免错误的程序影响其他人员使用和测试幢用系统;项目进行到一定阶段,可随时用配置管理工具生成一个新的版本,投入运行—生成运行版本时可以选择以前所有的修改记录。
(5)评估开发人员编写的程序质量,控制开发进度。配置管理工具完整地保存在开发中对应用程序的每一个源文件所有的修改汜录-这些记录包括完成修改程序的开发人员、修改的时间、所进行的具体修改以及对本次修改的解释。项目主管通过调阅这些记录,对程序修改的次数、修改原因和修改情况进行统计,就能够对每一个程序员编写的程序质量进行综合评估,这些记录还能使项目主管对整个项目的进度、程序的编写修改情况有一个整体的了解。
(6)管理文档。配置管理工具不仅为各种开发软件提供了存放对象的接口,还能存放任意类型的文件.这样可以在配置管理工具中建立专门的文件夹,用来仃放软件廾发过程中牛成的各种文档,对于每个文档可以存放它的多个版本,供随时查阅。
注意:配置管理软件的安全性一般,为确保软件开发过程中源代码与文档的安全,制定一个合理的系统备份策略是必要的。
总之,在一个项目小组开发环境中,配置管理工具的采用是非常必要的。它就好像建立一部软件开发的编年史,不仅仅对软件的版本进行了控制,还能够协调多个外发人员的工作,对整个软件的开发过程进行有效的管理,大大提高了软件开发的效率,收到事半功倍的效果。
使用要求
使用软件配置管理工具必须注意:
(1)始终保持每个软件配置管理项的正确性,即始终正确反映软件需求;
(2)确保每个软件配置管理项之间均“文实相符,文文一致”;
(3)确保每个软件配置管理项的安全。
工具评估
对工具的评估应侧重于功能的适用性,而不应一味强调功能的全面性;产品评估应了解如下问题:
●该产品的哪一方面功能可解决目标组织的当前问题,满足该组织在软件配置管理上的需求;
●该产品在目标机构的峰值负荷下的运行效率将如何;
●该产品对并发使用的支持情况如何;
●该产品与现有系统、工具、流程、环境的兼容性如何;
●该产品的成熟性和稳定性如何(选择成熟的产品是降低软件开发成本、提高软件可靠性的重要手段),应尽可能选择市场占有率高的工具;
●该产品是否易学易用;
●该产品的购买、安装、实施、维护费用是否可以接受。