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