![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
|
软件配置管理概述1.概述没有任何一个行业象如今的计算机业一样发展如此迅速。今天的软件产业更是如此,技术和产品的日新月异令所有技术人员和管理人员都感到明显的压力,这种压力集中体现在两个方面:提高产品质量,缩短面市时间。现在软件产品的开发,对市场投放速度的要求成倍增长;Internet/Intranet 应用的发展改变着软件的开发、传递和分发的方式;不断提高的软件质量要求,使越来越多的软件机构感到规范开发的迫切性;多平台、多操作系统、多开发工具、多对象类型和多计算机语言等使复杂的软件开发环境更加难以控制。 我国信息技术产业的蓬勃发展促使各种先进技术和产品在国内被广泛应用,为国内的软件开发注入了活力。然而,值得注意的是,各种先进的操作系统和开发工具在带来效益的同时,也使得我们的开发环境日益复杂化而难以管理。而无组织的开发环境,会导致潜在问题的产生,这些问题一般难以发现,直至出现影响整个系统的致命错误,但此时往往又为时晚矣。 软件工程使软件开发从手工作坊上升到团队开发模式,其开发工作围绕着软件生命周期的分析设计、开发、测试、运行维护四个阶段进行。通过使用软件工程的方法及工具,可以避免开发过程中许多可能出现的错误,提高软件的可重用性,降低软件测试和维护中的工作量,从而大大提高软件产品的质量,缩短开发周期。 在团队开发的模式中,软件开发管理就显得更加重要,其管理的好坏将直接影响到软件产品的质量。如果缺乏对软件开发的统一管理,势必造成以下问题的出现:
这些问题在实际开发中表现为:项目组成员沟通困难,软件重用率低下,开发人员各自为政,代码冗余度高,文档不健全等。造成的结果是:数据丢失,开发周期漫长,产品可靠性差,质量低劣,软件维护困难,用户抱怨使用不便,项目风险增加等。 2.软件配置管理缺乏软件开发管理,会导致种种问题的出现,这些问题使得最终开发出来的软件产品的质量难以保证,应用难以稳定。那么,怎样进行软件开发管理才能生产出高质量的软件产品呢?在ISO9000质量管理和质量保证标准中,制定了《在软件开发、供应和维护中的使用指南》标准,该标准除对软件生命周期的各个阶段做了严格的规定外,还在其质量体系中规定了与阶段无关的支持活动,其中软件配置管理(Software Configuration Management,简称SCM)被放在首位。 2.1 配置管理的概念 早在七十年代初期加利福利亚大学的Leon Presser教授就撰写了一篇论文,提出控制变更和配置的概念,之后在1975年,他成立了一家名为SoftTool的公司,开发了自己的配置管理工具:CCC,这也是最早的配置管理工具之一。之后,随着软件开发规模的逐渐增大,越来越多的公司和团队意识到了软件配置管理的重要性,而相应的软件配置管理工具也如雨后春笋一般,纷纷涌现,比较有代表性的有:Marc Rochkind的SCCS(Source Code Control System)和Walter Tichy的RCS(Revision Control System),这两种工具对日后的配置管理工具的发展做出了重大的贡献,目前绝大多数广泛使用的配置管理工具基本上都是基于这两者的设计思想和体系架构。 什么是软件配置管理呢?软件配置管理有多种定义,在1986年出版的Wayne Babich的《Software Configuration Management: Coordinating for Team Productivity》一书中把软件配置管理描述为“对软件开发组所建立的软件的修改进行标识、组织和控制的艺术,其目标是减少错误,提高生产力”。这个定义比较简单,而在1993年出版的Steve McConnell的《Code Complete》一书中,从另一个角度对软件配置管理进行了定义:“配置管理能够系统地处理变更,从而使得软件系统可以随时保持其完整性。配置管理又可称为‘变更控制’,可以用来评估提出的变更请求,跟踪变更,并保存系统在不同时间的状态。” 软件配置管理是一套规范、高效的软件开发基础结构。作为管理软件开发过程有效的方法,SCM早已被发达国家软件产业的发展和实践所证明。SCM可以系统地管理软件系统中的多重版本;全面记载系统开发的历史过程,包括为什么修改,谁作了修改,修改了什么等;管理和追踪开发过程中危害软件质量以及影响开发周期的缺陷和变化。SCM对开发过程进行有效地管理和控制,完整、明确地记载开发过程中的历史变更,形成规范化的文档,不仅使日后的维护和升级得到保证,而且更重要的是,这还会保护宝贵的代码资源,积累软件财富,提高软件重用率,加快投资回报。SCM是通往ISO9000和SEI CMM标准的一块基石。 在软件开发团队中,正确地采用、实施软件配置管理系统,必将提高生产力,增强对整个项目的控制,改善软件产品的质量,从容面对快速面市和产品质量的双重压力。软件配置管理系统的实施,一般来讲要考虑两个方面的因素:流程和工具。流程和工具是相辅相成的,流程起决定性作用,它确定了管理的规则和方法,工具用来将变更存储在一个中央存储库中,可以重现任一时期的历史版本,一个好的工具可以提高效率,是贯彻实施流程的必要手段。 因此,在一个开发团队中,实施配置管理流程比采用配置管理工具更重要,我们需要充分考虑,制定出适合自己企业的配置管理流程,该流程必须与公司的开发规范、质量系统等完全结合。 2.2 配置管理的功能 配置管理系统应该具备以下主要功能:
2.3 配置管理的实施 实施配置管理系统,一般的步骤和需要考虑的问题如下: 规划、调整网络开发环境 一个规划良好的开发环境,是实施配置管理系统的前提。在此阶段我们要对配置管理系统做出规划,主要考虑以下问题:
2.2 配置管理的功能 配置管理系统应该具备以下主要功能:
修订版管理:跟踪每一个变更的创造者、时间和原因,从而加快问题和缺陷的确定
2.3 配置管理的实施 实施配置管理系统,一般的步骤和需要考虑的问题如下: 规划、调整网络开发环境 一个规划良好的开发环境,是实施配置管理系统的前提。在此阶段我们要对配置管理系统做出规划,主要考虑以下问题:
设计配置管理库 根据项目开发的要求,设计开发资源的存储模式,良好的存储模式有利于减轻管理上的负担,增强配置管理库的访问性能,同时便于控制访问权限,保护软件资产。 定义配置管理系统的角色 在此阶段,我们需要确定与配置管理相关的所有角色,包括他们的相应的活动。在开发过程中,一个开发人员可能兼任多种角色,但一项任务在同一时刻只能由一个角色来执行。 一般配置管理中的角色主要包括:
集成人员:对软件进行归并,形成相应的基线或发布版本
制定配置管理流程 这是配置管理实施的一个重要阶段,其主要目的是根据项目开发的需要,制定相应的配置管理流程,以更好地支持开发,主要活动包括:
相关人员的培训 一般来讲,实施配置管理系统,相关人员需要接受以下培训:
以上只是简单地介绍了配置管理系统实施的相关内容,软件配置管理作为软件开发过程的必要环节和软件开发管理的基础,支持和控制着整个软件生命周期。若要有效的实施软件配置管理,首先要通过一系列的培训,培养软件开发者的管理参与意识,同时更重要的是借助已有的经验教训,建立起真正适合自己团队的管理流程。 3. CMM(软件能力成熟度模型)与SCM(软件配置管理)在COCOMO模型中,对一个项目团队的软件开发能力作了如下定义: 软件项目的开发能力=(团队技能)(工具)(规模)(过程) 其中:
基于此模型,我们可以看出要提高团队的开发能力,可以从以下四个方面入手:
在这四个方面中,软件开发过程的改进最为重要,目前国际上有多种改善或评估软件开发过程的方法和工具,其中以卡耐基梅隆大学的软件工程研究所(SEI)提出的软件能力成熟度模型(Capability Maturity Model, CMM)最具影响力。CMM将软件过程成熟度划分为5个级别,从一级到五级分别为:混乱级、可重复级、定义级、管理级和优化级。CMM级别越高,就表示软件开发过程越规范。每个成熟级别由一系列关键流程领域(Key Process Areas, KPA)组成,每个KPA确定一组相关活动。当这些相关活动一起开展时,它们完成一系列被认为对在该成熟级别建立流程能力有重要影响的目标。 在CMM二级中,有以下六个KPA:需求管理、软件项目规划、软件项目跟踪与勘察、软件分包管理、软件质量保证、软件配置管理。其中最后一个KPA 软件配置管理的目的就是在项目的整个软件生命周期内建立并维护软件项目产品的完整性,更好地管理开发。实际上,软件配置管理是大多数软件工程和管理流程的一个重要构成部分。 针对配置管理,在CMM中仅仅定义了一系列的流程,而没有对实施方法提出任何要求。因此,如果要达到CMM2的要求,我们需要自己建立配置管理流程,并选用相关的工具,来贯彻流程的实施。 4.总结实施配置管理方法及工具是一项系统工程,同时也是一项领导工程,因为任何新的工具和方法的引进,必将在初期导致团队生产力的短期下降。在此过程中,需要团队的领导的魄力和决心,以及团队成员的理解和配合,大家共同努力,同时可以借助一些外来的帮助,例如专家的顾问咨询等,以尽可能减小负面影响的程度,缩短负面影响的时间。在渡过这段下降区后,就能体验到配置管理系统所带来的一系列好处。
|







