软件配置管理解析

软件配置管理解析

转载地址:http://www.rjgc.net/control/content/content.php?nid=5997

 

  配置管理的三大误区
  国内软件公司实施配置管理,已经取得了很多进步,也提高了软件的质量。但是对于软件配置管理,有很多公司对它的理解比较模糊,或者在真正的配置管理实施过程中存在着误区。从专家们的讨论中,我们了解到国内的软件配置管理主要有三个方面的误区。
  误区一:版本控制=软件配置管理
  也许很多人不承认自己对于软件配置管理的理解局限在版本控制上,但在具体实施配置管理的过程中,就只见版本控制,而不见真正的配置管理。其实版本控制只是配置管理最基本的层次和功能。当然只有进行了版本控制,其他的功能才可能会逐渐提升。就是一个基本的版本控制,在部分软件公司中也并不是一个非常正规和完善的过程。
  这种问题,归根到底在于软件公司对软件开发流程的管理在意识上不够重视。国内软件企业的开发管理不是很规范,即使在大的软件公司里面,项目组对于开发管理的关注也是有限的。另外一个原因是由于开发管理中资源的不足,比如:资金的缺乏(导致不能购买功能齐全、价格昂贵的商业产品)、人力资源(不能招聘专业的配置管理人员),因此不能在公司内部实施体系化的配置管理。
  误区二:编码水平最差=配置管理员
  配置管理人员是配置管理具体实施的人。可以说公司制定了配置管理的流程和规章只是配置管理实施的基础,而真正配置管理能否实施,能否有效,关键在于从事配置管理的人员。但国内的一个误区是:在选择配置管理人员的时候,是寻找开发团队中编码水平最差的人。比如张三写代码不行,测试也不行,那就只好去从事配置管理工作了。
  谷炼对此深有体会。谷炼有在日本Rational和国内在配置管理领域工作的经历。相比国内低水平的配置管理人员,国外公司一般都由有丰富编程经验的人担任软件配置管理人员,有的时候配置管理部分的工作职责直接由开发经理担任。配置管理人员的级别也相当高,被认为是项目经理的左右手,拿的是双薪。
  其实一个SCM人员的责任相当重大,一个团队所有的代码、文档都由其负责,国内好像是处于一个相当尴尬的境地,认为一个什么都不懂的人担任,才能保证这些代码文档的安全。
  当然国内也不泛重视配置管理的公司。据传说华为就非常重视软件配置管理,除了设置CTO、CEO,好像还设置了一个CMO(Configuration 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过程具体实施好。
  实施——从老板的角度思考
  配置管理应该如何实施?软件配置管理活动是一项支持性、保障性的工作,它本身并不直接为企业产生直接赢利的工作成果,它每一项活动都需要消耗企业的资源,还需要购置配置管理工具,这些都会导致企业生产成本的增加。因此对一个软件公司来说,实施配置管理就需要从老板的角度进行思考。
  什么是成功的配置管理?
  一个没有实施配置管理的软件项目,常常出现的问题有:版本混乱、文档不统一、工件遗缺等。这些问题归根到底是软件质量的问题。因此对于什么是成功的软件配置管理,一个最简单的方法是比较配置管理实施活动前后,软件产品的质量是不是得到了提高、开发团队是不是能够工作在一个有助于提高整体工作效率的配置管理平台上。
  具体到配置管理中的每项活动,是否成功的标准是:这项活动是不是真正有助于我们实施配置管理的活动?它对于提高我们产品的质量有多大的帮助?能否帮助开发团队更高效地工作?
  配置管理流程再造
  软件配置管理的实施首先需要有一个规范的软件开发流程,因此对于一个软件公司而言,要实施配置管理,首先是需要对自身的软件开发流程进行再造。再造水平的好坏决定了配置管理是否仅仅是版本控制,是否能够有效的实施配置管理。流程不好,也许就仅仅到达版本控制的水平,不能达到变更控制、过程管理等“配置管理”的较高水平上。
  选择合适的配置管理工具
  有了配置管理流程,为了保证配置管理的效果、范围和质量,就需要应用配置管理工具。对于如何选择一个合适的配置管理工具,在这次的研讨会上也是我们讨论的热点。我们认为,公司在选择SCM工具的时候,可以遵循下面四个原则。
  首先是工具的价格。一般国内中小型软件企业都没有足够的资金来实施一些商业工具。因此就只能退而求其次了,采用一些变通的方法来实施。比如:对于变更管理,采用签发变更单解决。有些公司采用一些简单的MIS来管理,数据保存到数据库,能够做到查询、保存等目的。
  二是在功能上,满足需要就可以,太过复杂的产品使用也麻烦,对配置管理人员的要求也高,价格也昂贵。工具只要符合需要就行,不必追求功能齐全。
  三是性能。由于配置管理的都是开发中最为重要的资源,一旦崩溃,损失就会很大。因此配置管理工具的运行需要非常稳定,不出故障,出了故障应该有补救措施。
  四是实施的过程是否顺利,售后服务和技术支持是否完善。
  正确实施配置管理工具
  在实施配置管理工具的时候,工具必须和开发管理流程良好的结合起来,这样才能保证工具的正确实施。而这点也是目前软件公司在使用各种工具时一个最大的难点。
  1、配置管理应该更自动化
  变更管理应该支持从项目开始到维护整个生命周期不同的变更类型;代码的版本管理到发布应该一气呵成;版本的配置关系可以简单表现出来。这些方面虽然配置管理工具涉及到,但没有一个工具能够完全的自动化。很多时候,我们需要额外的工作来维护配置管理系统本身。可以说:项目总的复杂度不变,实施配置管理后,降低了软件开发的复杂度,却增加了管理的复杂度。因此配置管理的自动化非常重要。
  2、配置管理应该基于流程
  没有流程来执行配置管理是不切实际的,而现有的配置管理工具大多支持流程的管理,但是流程不一定适合于每个公司。如ClearCase的UCM流程,虽然很好,但是很难定制,我们只能让公司项目环境来适应这个工具,而不是让工具来适应现有的开发环境,这样的做法并不少最好的。配置管理工具不仅要支持流程,并且能够定制流程。
  3、策略和标准化更加容易使用
  实施配置管理的时候,需要定义许多的标准,比如版本名称规则、文档命名规则、什么时候check in、什么时候创建分支等。目前的一些配置工具,都没有提供这方面的专门定义,需要配置管理员另外写脚本或者程序来限制执行。这些地方都是需要改进的。

你可能感兴趣的:(工作,项目管理,配置管理,活动,文档,工具)