解析本土化软件配置管理

软件工程犹如一座大迷宫,道路曲折,但是却隐藏有无数的珍宝。每个探险迷宫的人在找到捷径和珠宝后,都会有对于迷宫的独特感悟。为了更好的指引有心的探险人,编辑部将从迷宫各个不同的入口,请来那些已经发掘过迷宫的先行者们,和他们一道感悟这座迷宫。如果您已经找到了迷宫的珠宝或者即将向迷宫探险,都可以和我们联系。

版本控制,是软件开发中一项必不可少的管理手段,也是软件配置管理(Software Configuration ManagementSCM)的一个部分。而软件配置管理,在软件开发过程中占据着非常重要的地位,并且是CMM 2级的一个关键域。

迅速发展的软件配置管理

配置管理的概念源于美国空军,为了规范设备的设计与制造,美国空军1962年制定并发布了第一个配置管理的标准“AFSCM375-1CM During the Development & Acquisition Phases”
   
而软件配置管理概念的提出则在20世纪60年代末70年代初。当时加利福利亚大学圣巴巴拉分校的Leon Presser教授在承担美国海军的航空发动机研制合同期间,撰写了一篇名为“Change and Configuration Control”的论文,提出控制变更和配置的概念,这篇论文同时也是他在管理该项目(这个过程进行过近一千四百万次修改)的一个经验总结。
    Leon Presser
1975年成立了一家名为SoftTool的公司,开发了配置管理工具:Change and Configuration ControlCCC),这是最早的配置管理工具之一。
   
随着软件工程的发展,软件配置管理越来越成熟,从最初的仅仅实现版本控制,发展到现在的提供工作空间管理、并行开发支持、过程管理、权限控制、变更管理等一系列全面的管理能力,已经形成了一个完整的理论体系。同时在软件配置管理的工具方面,也出现了大批的产品,如:最著名的ClearCase;开源产品CVS;入门级工具Microsoft VSS;新秀Hansky Firefly
   
在国外已经有30多年历史的软件配置管理,但在国内的发展却是在21世纪这几年的事。但是通过专家们的介绍,我们感受到,国内的软件配置管理已经取得了迅速发展,并得到了软件公司的普遍认可。
   
刘晓:1997年,开始在国内从事配置管理。那个时候如果和客户讲解配置管理,先要讲配置管理是干什么的,能对企业起到什么作用。到了2002年,就可以直接介绍软件配置管理的策略和使用。现在很多公司都能够自主的向工具厂商咨询,确实是已经意识到配置管理的重要性了。

思维加速是一家致力于业务架构平台研发的软件公司,有20多人的专业开发队伍。对于这样一种规模的软件公司,在国内应该是最为普遍的。也许它实施配置管理的过程就是国内企业实施配置管理的一个典范。让我们看看思维加速公司的总工宋兴烈是如何描述的。
   
宋兴烈:思维加速一直在从事较大规模的复杂软件开发,需要对代码、文档进行版本控制,早期采用了最简单的VSSVisual Source Safe)进行版本控制。随着开发的深入,版本控制已经远远不能满足需要了,分支管理、权限管理的需求就出来了。但是VSS却不能满足这些要求,因此我们对VSS进行了二次开发。现在在VSS上能够基本实现分支管理、权限控制、版本发布构建管理了。但随着软件规模的增长,我们正准备用CVS等开源软件作为我们产品新版本的版本控制和管理工具。
   
这时,思维加速对于配置管理的理解上也有了一个较大的变化。配置管理已经不仅仅是对软件代码、文档的版本管理,而应该是需求变更、缺陷管理等的一个整合体。对于需求变更、缺陷管理,最简单的传统处理方式是采用文档记录的形式,比如用Word文档进行控制。对于一个逐渐成熟的开发团队而言,这样的传统方法已经完全不能适用。对于商业性的成熟配置管理工具,由于相对昂贵的价格,也没有采用。因此思维加速的办法是:自己进行开发,建立一个适用的管理系统。

 

配置管理的三大误区

国内软件公司实施配置管理,已经取得了很多进步,也提高了软件的质量。但是对于软件配置管理,有很多公司对它的理解比较模糊,或者在真正的配置管理实施过程中存在着误区。从专家们的讨论中,我们了解到国内的软?渲霉芾碇饕??龇矫娴奈笄??/P>

误区一:版本控制=软件配置管理

也许很多人不承认自己对于软件配置管理的理解局限在版本控制上,但在具体实施配置管理的过程中,就只见版本控制,而不见真正的配置管理。其实版本控制只是配置管理最基本的层次和功能。当然只有进行了版本控制,其他的功能才可能会逐渐提升。就是一个基本的版本控制,在部分软件公司中也并不是一个非常正规和完善的过程。

这种问题,归根到底在于软件公司对软件开发流程的管理在意识上不够重视。国内软件企业的开发管理不是很规范,即使在大的软件公司里面,项目组对于开发管理的关注也是有限的。另外一个原因是由于开发管理中资源的不足,比如:资金的缺乏(导致不能购买功能齐全、价格昂贵的商业产品)、人力资源(不能招聘专业的配置管理人员),因此不能在公司内部实施体系化的配置管理。

误区二:编码水平最差=配置管理员

配置管理人员是配置管理具体实施的人。可以说公司制定了配置管理的流程和规章只是配置管理实施的基础,而真正配置管理能否实施,能否有效,关键在于从事配置管理的人员。但国内的一个误区是:在选择配置管理人员的时候,是寻找开发团队中编码水平最差的人。比如张三写代码不行,测试也不行,那就只好去从事配置管理工作了。

谷炼对此深有体会。谷炼有在日本Rational和国内在配置管理领域工作的经历。相比国内低水平的配置管理人员,国外公司一般都由有丰富编程经验的人担任软件配置管理人员,有的时候配置管理部分的工作职责直接由开发经理担任。配置管理人员的级别也相当高,被认为是项目经理的左右手,拿的是双薪。

其实一个SCM人员的责任相当重大,一个团队所有的代码、文档都由其负责,国内好像是处于一个相当尴尬的境地,认为一个什么都不懂的人担任,才能保证这些代码文档的安全。

当然国内也不泛重视配置管理的公司。据传说华为就非常重视软件配置管理,除了设置CTOCEO,好像还设置了一个CMOConfiguration Management Officer,或者叫配置经理)。

误区三:采用配置管理工具=有效的配置管理

配置管理工具在软件配置管理中起着不可替代的作用。没有工具的支持,实施一个完整合格的配置管理是不可想象的。也许正是因为工具的重要,造成了很多软件公司对于工具的迷信,以为只要部署了配置管理工具,尤其是一个专业的商业工具,就自以为建立了配置管理体系。

使用好的工具并不能代表就能实施好配置管理。因为工具就是工具,工具不能代替管理。否则为什么总是说配置管理而不单单说配置工具呢?一个成功的配置管理工具实施,需要两个方面的条件:一是规范的软件开发流程;二是合格的配置管理参与人员,这里的配置管理参与人员包括了配置管理员、开发人员、项目经理等。

对此,邓小年认为:无论怎么样,没有流程和规范地使用工具,那么再强的工具也没有灵魂。比如简单的一个check in操作,不同的人用起来可不一样。有人修改后,进行build,然后check in;有人修改后,进行build,并简单的测试再check in,也有人修改后马上check in……可看出不同的人使用工具的同一操作有不同的后果。

 

——为何如此重要?

配置管理员在配置管理中是一个比较奇妙的角色,对于一个实施了配置管理、建立了配置管理工作平台的团队来说,他是非常重要的,整个开发团队的工作成果都在他的掌管之下。如果他管理和维护的配置管理系统出现了问题,轻则影响团队其他成员的工作效率,重则可能出现丢失工作成果、发布错误版本等严重的后果。

 

配置管理员应该做什么
一般而言,配置管理人员在软件公司中应该具有下面的几项主要职责:
1
提交配置管理计划;
2
软件配置管理工具的日常管理与维护,各配置项的管理与维护;
3
执行版本控制和变更控制方案;
4
完成配置审计并提交报告;
5
对开发人员进行相关的配置管理培训;
6
识别软件开发过程中存在的问题并拟出解决方案。

 

你是合格的配置管理员吗

一个高水平的配置管理人员,对开发团队在整体上有非常重要的作用。如果在一个企业中实施了配置管理工具如ClearCase,但没有专业的配置管理人员管理,就像一个拖拉机安装了一个奔驰的马达,还是跑不快。早期在国内企业中,找一个合适的配置管理人员很困难,最后由系统管理人员来担任。并且使用不同的配置管理工具,对配置管理人员的要求就不一样,如VSS对配置管理人员的技术水平要求就较低。

按照配置管理的职责要求,一个合格的配置管理人员需要具备哪些素质呢?
1
、职业道德是第一位的,这是由于配置管理人员负责管理软件公司最为重要的资产。
2
、软件配置管理的专业知识,最好要精通一种配置管理工具,没有工具是不可能实施软件配置管理的,否则那只能是效率极其低下的纸上谈兵。
3
、项目管理的知识,对于软件开发流程非常熟悉。一般而言,最好要经历几个软件项目的开发管理过程,或者担任过项目经理,对软件开发的全过程有比较清晰的了解;有软件开发经验可以增强说服力,降低实施的难度,并且能够切身以开发人员的身份去体会配置管理,才能改进配置管理过程。
4
、有一定的大局观,有一定的IT背景知识,对系统(操作系统、网络、数据库等方面)比较熟悉。
除了个人素质上的要求,在性格上也有一些共性的东西。
1
、沟通技巧:在部署和实施配置管理的时候,肯定会遇到一些抵触,对于程序员而言,使用配置管理之前,没有什么约束,但是在实施后,会有一些约束,认为这并不是自己的工作。如果在使用中出现了问题,就需要配置管理人员进行沟通,并且能够解决问题。
2
、稳重、细心、有耐心。配置管理工作需要和开发人员、测试人员、项目经理打交道,但是他们对于遵循配置管理流程和工具不会非常的热心,因此需要配置管理人员能够稳重、有耐心。
3
、能够吵架。有的时候,如果沟通不行,就需要采取强迫的手段来保证具体配置工作的要求得到执行。记得在网上见到这样的一句话:搞配置管理原来很好玩,就是要——凶~!

 

配置管理员的困惑

用友软件工程公司的耿延煜现在担任一个项目的配置管理员,她对于软件配置管理人员的看法更有代表性。在用友软件工程公司,采取的是一个项目设置一个配置管理人员,主要工作是项目产品的版本管理,并配合项目经理对项目中的文档、代码进行检查。但是这个配置管理人员并不是专职的,在承担配置管理职责之外,还会承担一些项目的开发、测试工作。作为一个兼职的SCM人员,耿延煜认为,有两个问题需要注意:

一是如何在工作任务紧张的时候保证配置管理工作?

作为一个配置管理人员,并不是仅仅从事配置管理工作,很多时候,会接受项目经理指派的开发工作,这个时候如何处理配置管理工作和开发工作的权重就非常重要,尤其是在一个项目处于紧要关头的时候,开发进度紧,很多公司就忽视了配置管理,但是往往这个时候,配置管理才是最为重要的,并且这个时候出了问题,对于项目的影响会更大。因此在很多情况下,必须付出时间从事配置管理工作,如加班。出现了问题,配置管理人员必须立即进行修复。

二是定位模糊。很多SCM人员对自己的定位都比较模糊,没有将自身置于一个项目管理者的角色。感觉自己只是项目组的一个无关紧要的角色。国内软件开发中,向来就重开发人员,轻视测试人员,配置管理人员就更得不到重视了。然而,配置人员应该是一个项目经理的Backup,应该向项目经理发展。

 

配置管理员的最佳实践

对于配置管理人员的部门设置,邓小年认为,一般国内大中型软件公司在配置管理部门可以设置如下的三个职位:
1
、配置管理经理:负责公司全面的配置管理方面的工作;
2
、创建发布工程师:主要负责创建和发布,部署产品;
3
、工具管理工程师:主要负责开发、维护配置管理工具,对工具的使用进行培训。

考虑到我国的现实情况,在一个软件公司中的每个项目专门设置一个SCM人员还不现实。从上面可以看出,配置管理员的最佳实践和推广方式可以采用是兼职+专职的形式来进行。具体而言,可以这样安排:
1
、软件公司在公司级必须有一个整体的配置管理解决方案和策略,对于各个具体开发的项目也有一个适合项目需要的配置管理策略。
2
、公司级的SCM策略上,设置专职的配置管理人员,一般由水平较高的人员担任,符合上面提到的配置管理员的素质要求。
3
、项目级的SCM策略上,设置兼职的配置管理人员,一般可以由开发人员或者质量人员来兼任。
4
、专职SCM人员和兼职SCM人员之间的沟通协调。并且对于SCM工具,如ClearCase,一般在前期部署的时候,任务比较紧张,在实施以后,操作就比较简单,只需要一个兼职人员就可以了。通过专职SCM人员和兼职SCM人员之间不断地反复沟通,才能将一个SCM过程具体实施好。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639375/viewspace-159277/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639375/viewspace-159277/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值