【IT168 技术文章】
随着软件产业的崛起,软件工程技术正吸引着越来越多关注的目光。作为软件工程的一个重要的领域,软件配置管理(Software Configuration Management)也日益受到人们的重视。在这里,笔者并不打算对软件配置管理的细节进行讨论,几乎任何一本关于软件工程的教材中都有专门的章节对此进行介绍,而是想从一个实践者的角度来阐述关于软件配置管理的一些想法。
一. 软件配置管理的目的
对于任何一个软件组织(企业)来说,开发出满足用户需求的、高质量的软件产品是其追求的目标。而要实现这一目标的关键是建立起一个稳定、可控、可重用的软件流程(Software Process)。因为某一软件产品的成败可能维系于关键技术的突破和创新;但对于软件组织而言,要想永葆竞争优势并不断取得成功,那就必须不断地改进它的软件流程。要进行软件流程改进(Software Process Improvement)就需要有明确的、量化的对现状的分析和对未来的预期,这些数据来源于对软件过程的度量,而进行度量的前提和基础就是软件配置管理。
与一般制造业相类似,软件流程就像是一条流水线,在它的各个环节上都会有“零部件”产生,它们就是我们所熟悉的程序、相关文档以及数据。这些正是软件配置管理的对象——(软件)配置项。它们不仅是大量人力物力投入的结晶,更是开发经验的积累,是软件组织最宝贵的财富。软件配置管理贯穿于软件开发活动的始终,覆盖了开发活动的各个环节,它的重要作用之一就是要全面的管理保存各个配置项,监控各配置项的状态,并向项目经理及相关的人员报告,从而实现对软件过程的控制。
那么我们对这些配置项进行管理只是为了保存这些信息吗?众所周知,人员的高流动性和知识和技术的快速更新是软件业的重要特点。应对这样的特点我们只有努力地把开发人员个人的成功经验转化为团队的以及整个组织的经验。在这样的一个转化过程中,软件配置管理也起着极其重要的作用。因为对于一个大型的软件企业来说,它的配置库有如一个巨大的图书馆,随着产品版本的不断演进,越来越多的配置项会充斥其间,以至于没有任何一个人能了解其中的全部内容。当我们需要在开发组织内部迅速的共享以往的成果时,配置管理就能发挥作用了。它就像常见的图书编目法那样,帮助图书管理员(配置管理员)迅速的找出所需的资料(配置项),而不必彻底了解其中的确切内容。这样工作效率大为提高,很多常见的容易引起混乱的问题都能尽量得以避免。
所以,我们在从事软件配置管理工作时应以整个软件流程的改进为目标,为软件项目管理和软件工程的其它领域打好基础,以便于稳步推进整个软件组织的能力成熟度。
二. 工具的选择
古语有云:“工欲善其事,必先利其器。”软件配置管理是一项十分繁琐的工作,同时又和整个软件的开发活动紧密地联系在一起,所以在实际工作中更需要有得力的工具辅助。目前常用的配置管理工具主要有MS SourceSafe、Rational ClearCase等,这些工具各有所长,因而只有根据项目的预算和开发组织的些实际情况出发来选择,正所谓“好用就好”。在这里,笔者提出一些个人的看法供大家参考。
首先,配置管理工具应该提供完善的版本管理的功能。在该工具的所管理的配置库中,所有的配置项都应清晰、完整的得到保存,相应的操作纪录完备,使得开发组织中的任何人员都能迅速的了解任一配置项的演进过程,并快捷的找到所需的资源。
其次,配置管理工具应具备一定的工作空间的管理功能。正如前文指出的那样,一个软件企业往往有多个项目同时进行着开发,为了最大程度的利用组织的经验、共享成果,我们有必要在一个共同的配置库里提供多视角的观察手段,在逻辑上按照不同的角色分工来组织信息的选取规则和显示方式,从而能根据需要,在开发人员间灵活的进行分工合作。
由于我们把配置管理工作立足于软件过程的改进,那么我们所选用的工具最好能具有一定的过程控制的能力,能利用它按照企业本身的开发流程来灵活的建立相应的电子流,并在此过程中记录用于过程度量的相关数据,整合软件过程管理的各个环节,以便于客观的发现问题,高效的解决问题。
另外,我们选取得工具一定要操作简便,不能给开发人员增加过多的负担,因为过多的形式化的约束往往带来人们的反感,使得大家不约而同的选择规避的措施,其结果只能是事倍功半,甚至和我们的目标南辕北辙。