如何构造软件企业的配置管理方案
时间:2007-02-17 来源:PHP爱好者
1 引言
1.1 什么是配置管理
配置管理(Configuration Management)是通过技术或行政手段对软件产品及 其开发过程和生命周期进行控制、规范的一系列措施。配置管理的目标是记录软件产品的演化过程,确保软件开发者在软件生命周期中各个阶段都能得到精确的产品配置。
配置管理过程是对处于不断演化、完善过程中的软件产品的管理过程。其最终目标是实现软件产品的完整性、一致性、可控性,使产品极大程度地与用户需求相吻合。它通过控制、记录、追踪对软件的修改和每个修改生成的软件组成部件来实现对软件产品的管理功能。
1.2 配置管理在软件开发过程和项目管理过程中的作用
随着软件系统的日益复杂化和用户需求、软件更新的频繁化,配置管理逐渐成为软件生命周期中的重要控制过程,在软件开发过程中扮演着越来越来重要的角色。一个好的配置管理过程能覆盖软件开发和维护的各个方面,同时对软件开过程的宏观管理,即项目管理,也有重要的支持作用。良好的配置管理能使软件开发过程有更好的可预测性,使软件系统具有可重复性,使用户和主管部门用软件质量和开发小组有更强的信心。
软件配置管理的最终目标是管理软件产品。由于软件产品是在用户不断变化的需求驱动下不断变化,为了保证对产品有效地进行控制和追踪,配置管理过程不能仅仅对静态的、成形的产品进行管理,而必须对动态的、成长的产品进行管理。由此可见,配置管理同软件开发过程紧密相关。配置管理必须紧扣软件开发过程的各个环节:管理用户所提出的需求,监控其实施,确保用户需求最终落实到产品的各个版本中去,并在产品发行和用户支持等方面提供帮助,响应用户新的需求,推动新的开发周期。通过配置管理过程的控制,用户对软件产品的需求如同普通产品的订单一样,遵循一个严格的流程,经过一条受控的生产流水线,最后形成产品,发售给相应用户。从另一个角度看,在产品开发的不同阶段通常有不同的任务,由不同的角色担当,各个角色职责明确,泾渭分明,但同时又前后衔接,相互协调。好的配置管理过程有助于规范各个角色的行为,同时又为角色之间的任务传递提供无缝的接合,使整个开发团队象一个交响乐队一样和谐而又错杂地行进。
正因为配置管理过程直接连接产品开发过程、开发人员和最终产品,这些都是项目主管人员所关注的重点,因此配置管理系统在软件项目管理中也起着重要。配置管理过程演化出的控制、报告功能可帮助项目经理更好地了解项目的进度、开发人员的负荷、工作效率和产品质量状况、交付日期等信息。同时配置管理过程所规范的工作流程和明确的分工有利于管理者应付开发人员流动的困境,使新的成员可以快速实现任务交接,尽量减少因人员流动而造成的损失。
1.3 配置管理方案的构成
配置管理过程对软件开发有如此重要的影响,它的构造、实施过程也必定相当复杂。不借助工具,纯粹靠手工方式或只利用简单的工具来实现配置管理是很难做到满意程度的,而且其中的繁琐庞杂最终必定让管理者一愁莫展。因此,实现配置管理过程的通常做法是借助于专业化的配置管理工具,结合开发组织的实际情况制订出相应的配置管理规范,由开发人员在工作过程中依据规范,通过配置管理工具来实现。在这整个过程中,由配置管理工具负责那些非智能的、可自动化的管理过程,如身份角色验证、修改轨迹记录、版本控制等;由配置管理规范来控制那些需要开发人员用智力去判断的因素,如需求合理性和优先级判定、任务分工、产品的结构定义、版本发行方案确定等等。配置管理工具的采用和配置管理规范的制订是紧密联系的,二者构成了一个软件开发机构的整体配置管理方案。这种方案是因组织的差异和配置管理工具的差异而变化的。构造一个配置管理方案涉及到软件开发组织和开发过程的各个方面,是一个复杂的工程应该当作一个项目来做。本文试图给出一个构造配置管理方案的基本策略和主要步骤。
2 组建配置管理方案构造小组
构造或完善一个软件开发组织的配置管理过程需要在构造初期花费较大的人力物力。这种工作一般是由一个临时组成的软件配置管理过程构造小组来完成。这个小组负责构造配置管理过程中的所有工作,包括了解本组织的现有开发、管理现状,选择配置管理工具,制订配置管理规范,安排试验项目的实施,沟通部门间关系,获得管理者支持和开发人员的认同。
配置管理过程构造小组的成员应该包括:
小组负责人
其对整个构造过程负责。主要职责是协调与其它部门或与上级主管的关系,监督工作进程,协调小组内部关系。
技术支持专家
其负责在技术、设备方面为本组提供支持和服务,并负责本同其它部门就技术问题进行联络,如了解相关项目情况、开发环境、开发人员状况等。
配置管理技术专家
其对配置管理过程的构造和配置管理工具十分熟悉。主要任务是指导配置管理过程的构造,帮助制订配置管理规章,负责对开发人员进行配置管理工具的培训。通常是配置管理工具提供商或专门的配置管理顾问机构的人员担当此任。
配置管理系统用户代表
他们是从将来要在实际的项目开发过程中使用该系统、遵照该过程的开发人员中挑选出来的。他们负责从构造初期了解配置管理系统和规程,根据开发经验协助制订、修改配置管理规程,并在试验项目中担任部分开发角色。这部分成员应包括软件开发项目经理、设计人员、编码、测试和构造、发布人员。
该项目小组成立后,将按后述步骤开展配置管理过程的构造工作。
3 对目标机构进行了解、评估
“知已知彼,百战不殆”。配置管理过程的构造过程也是如此,必须对相互作用的双方都有较透彻的了解才能达到预期的效果。因此首先要做的事情是调查了解,既要了解目标机构(即将要采用该配置管理过程的软件开发组织)的情况,又要了解配置管理工具的情况。
目标机构的调查评估工作由配置管理技术专家领导,配置管理系统用户代表参与,提供基本信息,并由小组负责人协调,对相关部门人员进行深入调查获得较全面的数据。
对目标机构的了解、评估应从这几个方面入手:人员、技术、工作流程、现有项目和期望值。
3.1 人员评估
人员评估的目的是了解目标机构的员工对现有配置管理过程的评价和对采用新工具、制订新规范的态度,预测新的配置管理过程构造中的工作难点和可能遇到的阻力。调查的方面包括:
该组织员工对引入新工具的反应,以前是否有过类似的偿试。
该组织负责人对新工具、新流程的支持程度。
开发人员的素质、教育程度、沟通能力。
开发队伍的稳定性。
该组织的沟通渠道是否通畅。
3.2 技术评估
对目标机构技术方面的的调查、评估将直接导致对工具的选择。要了解的信息有:
目标机构有哪些可用的计算资源。
在什么软硬件平台上进行开发。
是否存在资源瓶颈,是什么。
现用什么开发工具,用户对该工具评价如何。
现用什么网络环境。
使用什么编程语言。
目标平台是否与开发平台一致。
代码更新程度如何,新编代码、重用代码和历史代码各占什么比例。
3.3 现有流程评估
对目标组织现有工作流程的评估直接影响新的配置管理流程和规章的制订。调查的方面是:
现有流程的成熟性、适用性和执行情况。
现有流程是否能进一步提高自动化程度。
现用什么开发模型。
对分析、设计、编码、测试、产品管理等过程是否有严格的成文规范,如何保证该规范的执行。
开发流程中的哪些质量控制信息被收集,如何使用。
3.4 项目评估
配置管理系统对正在开发的产品、正在进行的项目有直接的影响,因此对即将纳入管理的项目应有充分的了解。了解的方面有:
项目的平均工期(人月)。
项目的组织方式,是主程序员制还是开发小组制,按深度结构还是按广度结构组织。
项目的产品规模(功能模块数、源码行数)。
项目开发支持状况,是否有专门的开发环境、开发工具和配置管理等方面的支持人员。
3.5 期望值评估
对目标机构的开发、管理人员对新系统的期望值的了解有利于对症下药,解决其当前紧要问题,提高对新系统的信心。调查的方面包括:
对当前本组织的生产率和产品质量的满意程度,期望有怎样的提高。
对现有流程的评价,现有流程中哪个环节希望改进或加强。
期望增减哪些文档或规则。
期望等到什么样的通信交流方式,现有方式的优缺点是什么。
期望收集哪些新的开发度量数据或简化哪些数据。
4 配置管理工具及其提供商评估
通过对目标组织的评估,了解该组织的现状和需求后,就需要选择适合该组织的配置管理工具。市场上现有的配置管理工具不下数十种,它们各有所长,在功能,性能等方面有较大的差别,只有经过仔细地对产品及其提供商进行分析评估,核对目标机构的需求,才能挑选出合适的工具,实现一个理想的配置管理过程。
这种评估可从三个方面进行:配置管理工具的评估、供应商评估和其它用户使用经验的评估。
4.1 配置管理工具评估
对工具的评估应侧重于功能的适用性,而不应一味强调功能的全面性。产品评估应了解如下问题:
该产品的哪一方面功能可解决目标组织的当前问题满足该组织在配置管理上的需求。
该产品在目标机构的峰值负荷下的运行效率将如何。
该产品对并发使用的支持情况如何
该产品与现有系统、工具、流程、环境的兼容性如何。
该产品的成熟性和稳定性如何。
该产品是否易学易用。
该产品的购买、安装、实施、维护费用是否可以接受。
4.2 供应商评估
供应商的实力和它所能提供的服务和支持对配置管理系统的实施至关重要。因为配置管理工具不象其它的工具那样,只要安装完成后按照使用手册和在线帮助就能使用,而是必须在系统之外有一系列的操作、管理规范,有一套完整的方案。这些些必须在系统提供者或顾问机构的帮助下才能制订、实施。因此,系统提供商对配置管理过程的实现有重要影响。对供应商的评估包括:
供应商在相应行业的从业时长。
该产品是否是该供应商的主导产品。
该供应商的年销售额。
供应商在五年之内的稳定情况。
该供应商是否有专业化的客户支持队伍。
是否提供安装、用户培训等服务。
供应商的声望、信誉如何。
供应商的支持人员在地理位置上是否与目标机构邻近。
另外,通过了解同一产品的其它用户对该产品的评价可以对该产品和供应商有较为客观、综合的认识。这种评价可从所知的用户组、专业会议、配置管理工具公告板等途径获得。
5 制订实施计划
经过对目标机构和选用工具的评估,工作小组可以制订出一份完整的工作计划作为下一阶段的行动纲要,同时也是向上级主管汇报,取得支持的有力佐证。
工作计划由如下部分组成:
必要性和影响因素
结合目标机构的开发过程组织和配置管理现状,论证构造或完善配置管理过程的必要性;根据所选配置管理工具的功能特性和供应商的实施支持,阐明新的配置管理系统可对目标机构的开发和管理工作带来改进和驱动。另外,对该配置管理系统和相应的配置管理过程对现有的人员、工序和管理等方面可能带来的影响作出适当的预测,以便减小将来实施时可能遇到的阻力。
配置管理目标和配置管理过程的构造成功标准
对正待构建的新的配置管理过程制订出一个较为长远的目标,即要达到哪种控制程度,加强哪些方面的管理,是否按照相关的国家或国际标准实施,达到何种级别等等。
另外,对构造配置管理过程的工作本身,如前所述应当作一个项目来做,因此也必须制订一个明确的完成标准。该标准应该在本小组内部统一并获得上级主管认可。
人员组织和分工
进一步明确工作小组的组织成员和成员关系,为每个成员分派相应的任务和职责。这些任务应该具体、细化到可操作的程度,如张三负责与某部门接洽,了解原有某一管理规范,李四负责试验环境的准备工作等等。
进度计划
罗列出构造过程中所要解决的问题,设置里程碑。
风险管理
预测构造过程中可能遇到的外在困难因素,如硬件短缺、平台差异、与相关部门冲突、试验项目的特殊性等等。为这些风险因素设计出降低或规避风险的方法。
6 定义配置管理流程
配置管理流程是软件开发机构进行配置管理的依据,也是配置管理构造工作小组的最重要的工作成果。配置管理流程规定开发过程中需要做哪些配置管理方面的工作,由谁做、如何做。前两个问题有较为通用的答案,在后文将会涉及,第三个问题则必须根据目标机构的具体情况解决。
制订配置管理流程的方法是:通过对目标机构的调查、评估,定义现有的配置管理流程,由配置管理技术专家对它进一步分析,结合常规的配置管理方法制订出新的流程。之后,依据选定的配置管理工具的功能,将新流程中可自动化的环节交由配置管理工具处理,其它环节由新制订的配置管理规范控制。
除了制订配置管理规范外,该小组还应制订出适合目标机构的配置管理基本章程。该章程应包括配置管理部门的设立、该部门的责能(通常是负责监督配置管理规范的执行情况,对配置规范进行完善,并担当日常的内部配置管理过程支持任务),定义配置管理过程与开发过程的协调关系,以及各开发阶段的开发人员构成、在配置管理流程中的责任划分等等。
一般说来,配置管理包括四个方面的活动:配置项标志,配置项控制(修改控制),配置状态报告和配置审核。配置管理规范的制订也应按这四个方面内容进行。每一个方面要考虑的问题是:
配置项标志
制订文档或文件编号、标记体系。
定义文档和文件之间的联系。
确定受控的配置项的取舍,如软件源码、硬件描述文件、中间文件、目标文件、测试方案、系统数据等等。
确定产品版本、基线的标志体系。
确定库程序的标志和管理机制。
配置项控制
确定产品的版本的演化策略,规定何时、何人创建新的基线,如何创建。
确定修改请求控制机构(CCB-Change Control Board) 的人员组成、职能、工作程序。
确定修改请求的处理流程和终止条件。
确定修改请求处理过程中各开发人员的职能。
确定修改请求和所生成的结果的对应机制。
确定文档的修改方式。
确定配置项的提取方式。
配置状态报告
定义报告的内容、形式、提交方式。
确定产品的发行事宜,包括发行时间如何确定、发行说明的生成发布方式、发行方式等。
配置审核
确定审核的执行人员、执行时机,审核的内容和方式。
确定发现问题后的处理方法。
7 试验项目的实施
这一阶段的任务是选取目标机构中的一个现有项目,按既定的配置管理流程去进行开发和配置管理工作。这种试验的目的是在一定风险范围内,通过实地运作来确定所选配置管理工具、所制订的配置管理规范是否能满足目标机构的需要。要做的工作有:
选定试验项目
该项目应该具有一定的复杂性,但又有较强的独立性,不会对目标机构的关键项目造成重要影响。
选定试验组成员
通常应包括构造小组的部分成员和该项目原有的成员。
定义试验成功的标准和试验时间表
应以配置管理流程和项目开发管理过程的协同程度和总体工作效率为依据。
人员培训
包括配置管理工具培训和配置管理规范培训。
配置管理工具的安装和项目环境的搭建
包括将历史代码导入到新系统中,将原有配置管理信息转换成新系统的形成,置于新系统控制之下;搭建项目所需的软硬环境等。
开发过程
按新的配置管理流程进行试验项目的开发,及时收集项目开发人员的反馈信息。
调整配置管理流程
根据项目的进行情况和开发人员的反馈信息,找出新配置管理流程的不足,及时调整改进。
8 全面实施
经过试验项目证实、校正后的配置管理流程就可以在目标机构的各个项目、各个相关工作环节中去应用、实施,最终使配置管理过程日常化、规范化。全面实施过程主要由配置管理部门根据新的配置管理流程来指导。配置管理过程构造小组的作用趋于淡化,主要起监督和支持作用。该小组在全面实施过程中逐步解散,小组中部分成员可转移到配置管理部门中去。
全面实施阶段的任务有:
组建或完善配置管理部门,并完成配置管理流程的移交。
由配置管理部门制订各个项目的配置管理实施计划。
进行全组织范围的配置管理系统和规则的培训。
帮助各个开发项目向新流程转移。
进行日常的监督、抽查、评估和规范的完善工作。
10 结语
配置管理过程的建立是一个复杂而漫长的过程,因为它受软件开发机构的许多方面的影响,包括技术、设备、项目、制度、人员、文化等因素。就象其它任何新事物的出现一样,在一个机构内刚刚建立的配置管理过程必然会受到各方面的挑战和考验,因此需要有一个适应、融合的过程。另外,配置管理过程的建立也不是一件一劳永逸的事情,不同机构、同一机构在不同的发展阶段或不同的项目中会有不同的配置管理细节,这些都需要配置管理部门在长期工作过程中对配置管理过程不断调节、充实、完善。
非常全面的一个php技术网站,php爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.