一、简述软件配置管理
随着软件团队人员的增加,软件版本不断变化,开发时间的紧迫以及多平台开发环境的采用,使得软件开发面临越来越多的问题,其中包括对当前多种产品的开发和维护、保证产品版本的精确、重建先前发布的产品、加强开发政策的统一和对特殊版本需求的处理等等,这些问题在实际开发中表现为,项目组成员沟通困难,软件重用率低下,开发人员各自为政,代码冗余度高,文档不健全等;造成的结果是:数据丢失,开发周期漫长,产品可靠性差,质量低劣,软件维护困难,用户抱怨使用不便,项目风险增加等。解决这些问题的唯一途径是加强软件开发的管理,而软件开发管理的核心是软件配置管理。
什么是软件配置管理?软件配置管理是一套规范、高效的软件开发基础结构。作为管理软件开发过程有效的方法,SCM 早已被发达国家软件产业的发展和实践所证明。SCM 可以系统地管理软件系统中的多重版本;全面记载系统开发的历史过程,包括为什么修改,谁作了修改,修改了什么;管理和追踪开发过程中危害软件质量以及影响开发周期的缺陷和变化。SCM 对开发过程进行有效地管理和控制,完整、明确地记载开发过程中的历史变更,形成规范化的文档,不仅使日后的维护和升级得到保证,而且更重要的是,这还会保护宝贵的代码资源,积累软件财富,提高软件重用率,加快投资回报。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。SCM 是通往ISO9000 和SEI CMM 标准的一块基石。
二、软件配置管理的主要活动
任何一个活动的执行首先是明确谁做,再明确怎么做,配置管理活动也一样,一般来说配置管理中的角色主要包括:
项目经理:项目经理在配置管理方面的职责是依靠配置管理员、系统管理员和系统体系结构设计人员的帮助,制定项目的组织结构和配置管理策略。这些工作包括: 定制开发子系统,定制访问控制,制定常用策略,制定集成里程碑,以及进行系统集成
配置管理员:配置管理员的职责是根据项目经理制定的开发组织结构和策略,实施、维护配置管理的环境。其主要职责如下:创建配置管理库,对存储库进行日常备份和恢复,维护配置管理环境,及管理配置管理相关的用户
软件开发人员:软件开发人员依据项目的开发和配置管理策略,创建、修改和测试开发工件
集成人员:对软件进行归并,形成相应的基线或发布版本
QA 人员:需要对软件配置管理有较深的认识,其主要工作是跟踪当前项目的状态,测试,报告错误,并验证其修复结果
软件配置管理人员应该完成以下几个主要任务:
任务一配置标识
要配置标识,首先必须明确项目生命周期内所要产生的工作产品,然后确定工作产品的名称和标识规则。总体原则是,保证配置管理工具检索便利,让项目组成员容易记住标识规则,同时要确保组织一级的标识规则的一致性。
任务二版本管理
版本管理一般是使用工具来完成的,如Rational ClearCase、Merant PVCS Version Manager、Microsoft Visual SourceSafe等。使用这些工具时,容易被忽视的一点是制定所使用工具的版本规则。如果直接采用工具的内部版本号,会给产品发布带来一些困难。通常采用“X.Y.Z”方式进行版本标识,明确X、Y和Z各位数字递增的规则,然后结合工具标签(Label)功能,便可实现高效的版本管理。
任务三变更管理
变更管理是项目管理的一个重点和难点,涉及的范围很广。实施高效的变更管理至少应该包括两个部分:“定义合理的变更管理流程”、“采用自动化工具作为支持”。在具体的实践中,应该对变更进行分类和分层,建立起处理不同变更的“变更控制委员会”(CCB),既保证项目组成员有一定的自主权,又不会耽误高层经理对关键问题的把握。
任务四配置审核
配置审核包括两方面的内容:“配置管理活动审核”、“基线审核”。“配置管理活动审核”用于确保项目组成员的所有配置管理活动,遵循已批准的软件配置管理方针和规程,如检入(Check in)/检出(Check Out)的频度、工作产品成熟度提升原则等。实施“基线审核”,要保证基线化软件工作产品的完整性和一致性,并且满足其功能要求。基线的完整性可从以下几个方面考虑:基线库是否包括所有计划纳入的配置项?基线库中配置项自身的内容是否完整?(如,文档中所提到的参考或引用是否存在?)此外,对于代码,要根据代码清单检查是否所有源文件都已存在于基线库。同时,还要编译所有的源文件,检查是否可产生最终产品。一致性主要考察需求与设计以及设计与代码的一致关系,尤其在有变更发生时,要检查所有受影响的部分是否都做了相应的变更。审核发现的不符合项要进行记录,并跟踪直到解决。
任务五报告配置状态
报告配置状态的目的,是向项目所有成员提供基线内容和状态、基线变更信息(如表2所示),这也是实现资源共享的前提。此外,在项目生命周期中进行对配置项的变更数据统计分析,有利于评估项目风险,有效控制项目的执行。在变更请求被批准、基线版本发生变化及项目组提出任何需要时,可以采用Email等方式进行报告。
任务六发布管理
实施了规范的配置管理,发布就显得很从容了。但是必须要注意的是:发布的产品应该是从软件基线库中提取出来的;在软件发布给最终用户之前,要准备发布记录,为软件产品分配发布版本号,同时要对它进行发布评审并确认其得到批准。一般来说,高层经理、项目经理、软件质量保证人员和测试组都应该参加发布评审。
三、研发部实施配置管理的经验分享
要制定切实可行的配置管理规程
实施配置管理,非常重要的是先定义好配置管理规程,可以参看CMM、 RUP等规范来制定,但必须要注重与部门实际项目开发情况相结合,制定的流程不一定要复杂,过于求全,主要是让大家看了规程能够理解,并且可操作,能够遵守执行的,而且确实能解决实际问题的。规程的制定能让组织的人员有统一的标准可以依据,指导配置管理工作的有序执行。配置管理规程要根据实际过程情况定期进行更新
项目初期要做好配置管理计划
在执行任何软件过程之前一定要有明确的总体计划,特别是各开发阶段的配置管理计划,而且要严格按照计划执行,保证执行的结果与计划的要求一致,而不是做到哪里是哪里,导致整个过程杂乱无章。
保证充分的资源
软件配置管理活动在整个开发活动中是一项支持性、保障性的工作,它本身并不直接为企业产出可以直接赢利的工作成果;而配置管理每一项活动都需要消耗企业的人力资源,有些还需要购置专门的工具来支持活动的进行,这些都会导致企业生产成本的增加。这就需要组织高层和实施人员的大力支持,研发部从实施配置管理至今正是有了公司及部门领导在人力资源和工具资源上的大力支持才使得我们非常有效的实施这一过程。
实施培训
一般来讲,实施配置管理系统,相关人员需要接受一下培训:
管理员培训:针对配置管理员,主要学习配置管理工具管理相关内容
开发人员培训:针对开发人员,主要学习配置管理工具与开发相关的常用操作
管理流程培训:针对全体人员,目的是了解配置管理策略和流程,以及如何与开发管理、项目管理相结合
工具的支持
选择什么样的配置管理工具,一直是大家关注的热点问题。确实,与其他的一些软件工程活动不一样,配置管理工作更强调工具的支持;缺乏良好的配置管理工具的话,要做好配置管理的实施会非常困难。当然,对于工作的选择应根据部门实际的需要而论,不一定要选最好的,只要是最合适的就可以。
过程不断改进
实施软件配置管理不可能一次计划、执行就可以建立起完整的配置管理系统,要经过不断的经验总结和实际项目管理的需要,不断改进现有的配置管理规程,才可以达到较为成熟的软件配置管理过程,这是一个循序渐进的改进过程。
四、总结
以上只是简单地介绍了配置管理系统实施的相关内容,软件配置管理作为软件开发过程的必要环节和软件开发管理的基础,支持和控制着整个软件生命周期。若要有效的实施软件配置管理,首先要通过一系列的培训,培养软件开发者的管理参与意识,同时更重要的是借助已有的经验教训,建立起真正适合自己团队的管理流程。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhangmike/archive/2005/09/03/470477.aspx
随着软件团队人员的增加,软件版本不断变化,开发时间的紧迫以及多平台开发环境的采用,使得软件开发面临越来越多的问题,其中包括对当前多种产品的开发和维护、保证产品版本的精确、重建先前发布的产品、加强开发政策的统一和对特殊版本需求的处理等等,这些问题在实际开发中表现为,项目组成员沟通困难,软件重用率低下,开发人员各自为政,代码冗余度高,文档不健全等;造成的结果是:数据丢失,开发周期漫长,产品可靠性差,质量低劣,软件维护困难,用户抱怨使用不便,项目风险增加等。解决这些问题的唯一途径是加强软件开发的管理,而软件开发管理的核心是软件配置管理。
什么是软件配置管理?软件配置管理是一套规范、高效的软件开发基础结构。作为管理软件开发过程有效的方法,SCM 早已被发达国家软件产业的发展和实践所证明。SCM 可以系统地管理软件系统中的多重版本;全面记载系统开发的历史过程,包括为什么修改,谁作了修改,修改了什么;管理和追踪开发过程中危害软件质量以及影响开发周期的缺陷和变化。SCM 对开发过程进行有效地管理和控制,完整、明确地记载开发过程中的历史变更,形成规范化的文档,不仅使日后的维护和升级得到保证,而且更重要的是,这还会保护宝贵的代码资源,积累软件财富,提高软件重用率,加快投资回报。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。SCM 是通往ISO9000 和SEI CMM 标准的一块基石。
二、软件配置管理的主要活动
任何一个活动的执行首先是明确谁做,再明确怎么做,配置管理活动也一样,一般来说配置管理中的角色主要包括:
项目经理:项目经理在配置管理方面的职责是依靠配置管理员、系统管理员和系统体系结构设计人员的帮助,制定项目的组织结构和配置管理策略。这些工作包括: 定制开发子系统,定制访问控制,制定常用策略,制定集成里程碑,以及进行系统集成
配置管理员:配置管理员的职责是根据项目经理制定的开发组织结构和策略,实施、维护配置管理的环境。其主要职责如下:创建配置管理库,对存储库进行日常备份和恢复,维护配置管理环境,及管理配置管理相关的用户
软件开发人员:软件开发人员依据项目的开发和配置管理策略,创建、修改和测试开发工件
集成人员:对软件进行归并,形成相应的基线或发布版本
QA 人员:需要对软件配置管理有较深的认识,其主要工作是跟踪当前项目的状态,测试,报告错误,并验证其修复结果
软件配置管理人员应该完成以下几个主要任务:
任务一配置标识
要配置标识,首先必须明确项目生命周期内所要产生的工作产品,然后确定工作产品的名称和标识规则。总体原则是,保证配置管理工具检索便利,让项目组成员容易记住标识规则,同时要确保组织一级的标识规则的一致性。
任务二版本管理
版本管理一般是使用工具来完成的,如Rational ClearCase、Merant PVCS Version Manager、Microsoft Visual SourceSafe等。使用这些工具时,容易被忽视的一点是制定所使用工具的版本规则。如果直接采用工具的内部版本号,会给产品发布带来一些困难。通常采用“X.Y.Z”方式进行版本标识,明确X、Y和Z各位数字递增的规则,然后结合工具标签(Label)功能,便可实现高效的版本管理。
任务三变更管理
变更管理是项目管理的一个重点和难点,涉及的范围很广。实施高效的变更管理至少应该包括两个部分:“定义合理的变更管理流程”、“采用自动化工具作为支持”。在具体的实践中,应该对变更进行分类和分层,建立起处理不同变更的“变更控制委员会”(CCB),既保证项目组成员有一定的自主权,又不会耽误高层经理对关键问题的把握。
任务四配置审核
配置审核包括两方面的内容:“配置管理活动审核”、“基线审核”。“配置管理活动审核”用于确保项目组成员的所有配置管理活动,遵循已批准的软件配置管理方针和规程,如检入(Check in)/检出(Check Out)的频度、工作产品成熟度提升原则等。实施“基线审核”,要保证基线化软件工作产品的完整性和一致性,并且满足其功能要求。基线的完整性可从以下几个方面考虑:基线库是否包括所有计划纳入的配置项?基线库中配置项自身的内容是否完整?(如,文档中所提到的参考或引用是否存在?)此外,对于代码,要根据代码清单检查是否所有源文件都已存在于基线库。同时,还要编译所有的源文件,检查是否可产生最终产品。一致性主要考察需求与设计以及设计与代码的一致关系,尤其在有变更发生时,要检查所有受影响的部分是否都做了相应的变更。审核发现的不符合项要进行记录,并跟踪直到解决。
任务五报告配置状态
报告配置状态的目的,是向项目所有成员提供基线内容和状态、基线变更信息(如表2所示),这也是实现资源共享的前提。此外,在项目生命周期中进行对配置项的变更数据统计分析,有利于评估项目风险,有效控制项目的执行。在变更请求被批准、基线版本发生变化及项目组提出任何需要时,可以采用Email等方式进行报告。
任务六发布管理
实施了规范的配置管理,发布就显得很从容了。但是必须要注意的是:发布的产品应该是从软件基线库中提取出来的;在软件发布给最终用户之前,要准备发布记录,为软件产品分配发布版本号,同时要对它进行发布评审并确认其得到批准。一般来说,高层经理、项目经理、软件质量保证人员和测试组都应该参加发布评审。
三、研发部实施配置管理的经验分享
要制定切实可行的配置管理规程
实施配置管理,非常重要的是先定义好配置管理规程,可以参看CMM、 RUP等规范来制定,但必须要注重与部门实际项目开发情况相结合,制定的流程不一定要复杂,过于求全,主要是让大家看了规程能够理解,并且可操作,能够遵守执行的,而且确实能解决实际问题的。规程的制定能让组织的人员有统一的标准可以依据,指导配置管理工作的有序执行。配置管理规程要根据实际过程情况定期进行更新
项目初期要做好配置管理计划
在执行任何软件过程之前一定要有明确的总体计划,特别是各开发阶段的配置管理计划,而且要严格按照计划执行,保证执行的结果与计划的要求一致,而不是做到哪里是哪里,导致整个过程杂乱无章。
保证充分的资源
软件配置管理活动在整个开发活动中是一项支持性、保障性的工作,它本身并不直接为企业产出可以直接赢利的工作成果;而配置管理每一项活动都需要消耗企业的人力资源,有些还需要购置专门的工具来支持活动的进行,这些都会导致企业生产成本的增加。这就需要组织高层和实施人员的大力支持,研发部从实施配置管理至今正是有了公司及部门领导在人力资源和工具资源上的大力支持才使得我们非常有效的实施这一过程。
实施培训
一般来讲,实施配置管理系统,相关人员需要接受一下培训:
管理员培训:针对配置管理员,主要学习配置管理工具管理相关内容
开发人员培训:针对开发人员,主要学习配置管理工具与开发相关的常用操作
管理流程培训:针对全体人员,目的是了解配置管理策略和流程,以及如何与开发管理、项目管理相结合
工具的支持
选择什么样的配置管理工具,一直是大家关注的热点问题。确实,与其他的一些软件工程活动不一样,配置管理工作更强调工具的支持;缺乏良好的配置管理工具的话,要做好配置管理的实施会非常困难。当然,对于工作的选择应根据部门实际的需要而论,不一定要选最好的,只要是最合适的就可以。
过程不断改进
实施软件配置管理不可能一次计划、执行就可以建立起完整的配置管理系统,要经过不断的经验总结和实际项目管理的需要,不断改进现有的配置管理规程,才可以达到较为成熟的软件配置管理过程,这是一个循序渐进的改进过程。
四、总结
以上只是简单地介绍了配置管理系统实施的相关内容,软件配置管理作为软件开发过程的必要环节和软件开发管理的基础,支持和控制着整个软件生命周期。若要有效的实施软件配置管理,首先要通过一系列的培训,培养软件开发者的管理参与意识,同时更重要的是借助已有的经验教训,建立起真正适合自己团队的管理流程。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhangmike/archive/2005/09/03/470477.aspx