jasmine214--love

只有当你的内心总是充满快乐、美好的愿望和宁静时,你才能拥有强壮的体魄和明朗、快乐或者宁静的面容。
posts - 731, comments - 60, trackbacks - 0, articles - 0

配置管理 是什么

Posted on 2010-11-15 11:15 幻海蓝梦 阅读(272) 评论(0)  编辑  收藏 所属分类: 版本管理项目管理配置管理
SCM学习第二周,了解到软件工程的危机---------大量的代码无法统一,没有统一的 管理  变更带来的大量的问题(费时  成本高 质量差),随着软件的发展,代码在 失控,这时配置管理开始挽救整个软件业。

    WHAT-----早在七十年代初期加利福利亚大学的Leon Presser教授就撰写了一篇论文,提出控制变更和配置的概念,之后在1975年,他成立了一家名为Soft Tool的公司,开发了自己的配置管理工 具:CCC,这也是最早的配置管理工具之一。之后,随着软件开发规模的逐渐增大,越来越多的公司和团队意识到了 软件配置管理的重要性,而相应的软件配置管理工具也如雨后春笋一般,纷纷涌现,比较有代表性的有:Marc RockingSCCS(Source Code ControlSystem)Walter ItchyRCS(RevisionControl System),这两种工具对日后的配置管理工具的发展做出了重大的贡献,目前绝大多数广泛使用的配置管理工具基本上都是基于这两者的设计思想和体系架构。什 么是软件配置管理呢?软件配置管理有多种定义,在1986年出版的Wayne BabyisSoftwareConfigurationManagement:Coordinating for Team Productivity》一书中把软件配置管理描述为"对软件开发组所建立的软件的修改 进行标识、组织和控制的艺术,其目标是减少错误,提高生产力"。这个定义比较简单,而在1993年出版的Steve McConnell的《Code Complete》一书中,从另一个角度对软件配置管理进行了定义:"配置管理能够系统地处理变更,从 而使得软件系统可以随时保持其完整性。配置管理又可称为'变更控制',可以用来评估提出的变更请求, 跟踪变更,并保存系统在不同时间的状态。" 软件配置管理是一套规范、高效的软件开发基础结构。作为管理软件开发过程 有效的方法,SCM早已被发达国家软件产业的发展和实践所证明。SCM可以系统地管理软件系统中的多重 版本;全面记载系统开发的历史过程,包括为什么修改,谁作了修改,修改了什么;管理和追踪开发过程中危害软件质量以及影响开发周期的缺陷和变化。SCM对开发过程进行有效地管理和控 制,完整、明确地记载开发过程中的历史变更,形成规范化的文档,不仅使日后的维护和升级得到保证,而且更重要的是,这还会保护宝贵的代码资源,积累软件财 富,提高软件重用率,加快投资回报。SCM是通往ISO9000SEI CMM标准的一块基石。在软件开发团队 中,正确地采用、实施软件配置管理系统,必将提高生产力,增强对整个项目的控制,改善软件产品的质量,从容面对快速面市和产品质量的双重压力。软件配置管 理系统的实施,一般来讲要考虑两个方面的因素:流程和工具。流程和工具是相辅相成的,流程起决定性作用,它确定了管理的规则和方法,工具用来将变更存储在 一个中央存储库中,可以重现任一时期的历史版本,一个好的工具可以提高效率,是贯彻实施流程的必要手段。因此,在一个开发团队中,实施配置管理流程比采用 配置管理工具更重要,我们需要充分考虑,制定出适合自己企业的配置管理流程,该流程必须与公司的开发规范、质量系统等完全结合。

      在软件开发中,变更是不可避免的。从某种角度上讲,软件开发过程就是一个变更的过程。有些变更是有益的,是具有创造性的,但是,也有些变更是有害的,导致 混乱的。正像James Bach 总结的那样:我们为变更所困扰,因为代码中的一个极小的混乱可能带来产品的大的故障,但是,他也能够修复大的故障或启用奇妙的新能力。我们为变更所困扰, 因为某个喜欢恶作剧的单个开发者可能破坏掉项目,但是,一些奇妙的思想也源自那些喜欢恶作剧的人员。
因此,如何管理这些变更是一个软件开发能否成 功的关键。简言之,
软件配置管理就是管理变更的过程,它贯穿着几乎软件的整个生命周
期。成功的配置管理系统可以提高产品的质量、项目开发 效率,而且最大限度的减少对个别“英雄”式人员的依赖。
     软件开发过程的输出信息可以分为三个主要的类型:(1)计算机程序(源代码、中间代码和可执行程序),(2)描述计算机程序的文档(针对技术开发者和用 户),(3)数据(包含在程序内部或在程序的外部)。这些项包含了所有的在软件过程中产生的信息,总称为软件配置。该集合中每一个元素称为该软件产品软件 配置中的一个配置项(CI,Configuration Item)。尽管配置管理(Configuration Management )这个概念被提出有几十年了,但是,业内还没有一个全面而权威的定义。Configuration 的
意思是“使成形”,它来源于拉丁语的 com-(表示“与”或者“一起”)和figurate (形成)。它还有一个意思是“组成部件或元素的相对排列”。因此,配置管理(Configuration Management )指的是管理组成部件或者元素的相对排列。配置管理的概念来自于硬件领域,美国国防部最早使用了配置管理的概念。
我们知道一架飞机的构成非常复 杂,比如机头、机身、机翼和机尾
等。不同型号飞机的各个部分是不能随便组装的。因此,我们只有把相匹配的部件组装在一起,才能构成了一个功能完备 的飞机整体。随着技术的提高,各个部件可能还要进行功能改善,我们还要使得不同版本的部件能够正确无误组合在一起。
     准确地说:配置管理是对产品进行标识、存储和控制,以维护其完整性、可追溯性以及正确性的学科。

    WHY----在团队开发的模式中,软件开发管理就显得更加重要,其管 理的好坏将直接影响到软件产品的质量。如果缺乏对软件开发的统一管理,势必造成以下问题的出现:
● 由于开发经费及开发时间的限制,不可能一次开发就解决
所有问题,许多问题有待维护阶段解决,因此带来的是软件产品的不断
升级,而维护和升 级所必需的文档往往非常混乱;
● 开发商开发过程缺乏规范化的管理,即使有源程序文档也由
于说明不详细而不能对产品进行进一步的功能扩 充,用户不得不再投入
大量的经费去开发新产品,浪费大量的人力、物力和时间;
● 在软件的团队式开发中,人员流动在所难免,如管理不善,
有 些人员的流动将对开发产生致命的影响。特别是软件开发管理人员或
核心成员的流失,有可能造成无法确定软件产品中各模块所处的状态及
阶段, 使软件产品的版本出现混乱,甚至可能泄漏公司的核心机密;
● 管理不善致使没经测试的软件加入到产品中,不但影响产品
的质量,有时还会导 致致命的错误,造成不可挽回的损失;
PDF 文件使用 "pdfFactory Pro" 试用版本创建
● 用户与开发商没有有效的沟通手段,用户投入了开发费用
后,得到的是有关可执行程序以及一堆杂乱无章的文档,即使是较好的
文档,对不熟悉开 发过程的专业人员来说也无从下手,更谈不上日后的
维护和升级,用户的利益无法保证;
● 软件生产达不到规模化,无法生产出软件企业内部的软件
标准构件仓库,使应用软件产品总处于一种低水平、重复开发的状态,不但时间得不到保证,而且 成本也无法降低,使产品没有市场竞争力。这些问题在实际开发中表现为,项目组成员沟通困难,软件重用率低下,开发人员各自为政,代码冗余度高,文档不健全 等;造成的结果是:数据丢失,开发周期漫长,产品可靠性差,质量低劣,软件维护困难,用户抱怨使用不便,项目风险增加等。
   
HOW----配置标识就是识别产品的结构、产品的构件及其类型,为其分配唯一 的标识符,也就是说,每一个配置项要有一个唯一标识。一般说来,标识包括两个方面:一是文件名,二是版本,可用如下一个二元组来标识:<文件名,版 本>。每个项目首先要确定一套命名规则,例如,采用“系统.子系统.模块.文件”的方式,</videoConference /audio/compressing /main.c , 2.1>就是一个唯一.标识。
  版本控制
版本控制就是对在软件开发过程中所创建的配置对象的不同版本
进行管理, 保证任何时候都能取到正确的版本以及版本的组合。
软件配置管理基线管理 变更请求管理 发布管理 构建管理
配置标识 版本控制 变更控制 配置状态统配置审核当前,这方面典型的工具有如VSS 和CVS。
 变更控制
在软件开发过程,要产生许多变更,比如,配置项、配置、基线、
构建的版本、发布版本等。对于所有的 变更,都要有一个控制机制,以保证所有变更都是可控的、可跟踪的、可重现的。对变更进行控制的机构称为变更控制委员会(Change Control Board,简称CCB)。变更控制委员会要定期召开会议,对近期所产生的变更请求进行分析、整理,并做出决定。而且要遵循一定的变更机制。
下面 是一个典型的变更机制:
接受 拒绝提交变更请求管理变更请求管理就是对变更请求(Change Request,简称CR)进行分类、追踪和管理的过程来实现的。
变更的起源有两种:功能变更和缺陷修补(Bug-Fix)。功能变更
是 为了增加或者删除某些功能。缺陷修补则是对已存在的缺陷进行修
修改测试或验证对变更请求的有效管理可以提高产品管理的透明度,经理可以清楚的知道 当前产品的进展情况,比如有多少个新产生的CR,已经解决了多少CR 等等,有利于经理做出正确的决策。
基线管理
基线是指经过正式评审和批准,可作为下一步工作的基准的一个配
置。软 件开发过程中,无论是需求分析、设计、测试都需要在完成时建立基线,以作为下一步工作的基础。通过基线管理可以使用户能够通过对 适当版本的选择来组成特定属性(配置)的软件系统,这种灵活的“组装”策略使得配置管理系统像搭积木似的使用已有的积(版本)组装成各种各样、不同功能的 模型。基线的变更需要一个严格的流程,需要提出申请,经过审批,然后才能进行。
构建管理
在做构建时,我们需要首先取出正确的配置,然后再做构建。我们
可以利用基线,可以取出某 个基线的所有配置项,也可以利用配置管理系统的构建功能直接在工作空间内做构建。构建管理需要配置管理工具的支持。
发布管理
软件产品的每个版本都是一组配置项(源代码、文 档、数据)的集
合。举个例子来说,我们要发布软件的32.6 版本,那么我们就要把源
代码、文档、数据中所有应该包含到这个版本中的正确 配置项检出。
所以如何管理每个版本中包含哪些配置项是非常重要的。
状态报告状态报告要回答所谓4W 的问题:
What:发生了什 么事?
Who:谁做的此事?
When:此事是什么时候发生的?
Why:为什么做此事?
状态报告要能够报告所有配置项以及 变更请求的状态,通过量化的
数据和报表反映项目开发进度的状态。
配置审核
配置审核要审查整个配置管理过程是否符合规范,配置项是否与需
求一致,记录正确,配置的组成是否具 有一致性等等。比如,需求分析文档提交后,需要由一个由相关人组成的小组进行正式评审,只有通过了评审才能基线化。对于源代码也一样,一般说来,每行代码 都要进行评审(Review),只有通过评审才能交由测试人员进行测试。
实施配置管理的好处我们知道软件有三个要素:时间、预算和质量。一个成功 的软件就是要在限定的时间内,不超过预算,交付符合质量要求的产品。真正实施配置管理后,我们会对产品的开发过程进行有效的控制,可以加快开发进度,降低 开发成本,保证产品的质量。
     产品经理可以得到什么好处呢?
准确掌握项目的开发进度。配置管理系统可以提供详尽的状态报告,例如 当前系统有多少个Bug,所有Bug 的状态如何?已经解决了多少Bug?了解项目组成员的工作负荷、工作效率以及工作质量。例如,我们可以知道当前分配给每个成员的工作量,每个成员已完成的 工作量,每个成员未通过正式评审的工作比例等等。减少人员流动所带来的影响。每个成员的所有变更,包括文档、代码的增删都是可追踪的,而且对于变更的原 因、描述也都有记录。样,一旦成员离开,其它成员就可以在最短的时间里接手。有效提高过程管理,配置管理产生的许多数据可作为管理者度量项目的依据。


只有注册用户登录后才能发表评论。


网站导航: