软件配置管理(Configuration Management)是指用于控制系统一系列变化的学科,通过一系列技术、方法和手段来维护产品的历史、鉴别和定位产品独有的版本,并在产品的开发和发布阶段控制变化,通过有序管理和减少重复性工作,保证生产的质量和效率。不同于配置管理,软件配置管理以计算机为载体(不论工具和产品),不光维护产品的状态,历史纪录,同样还支持存储、恢复和产品制造。软件配置管理是软件工程中涉及概念较多的一项内容,为了便于说明,下面给出一些软件配置管理相关术语(主要是软件配置管理计划规范GB/T 12505-90)的定义和说明。

  (1) 项目委托单位(Project Entrust Organization)

  项目委托单位指为产品开发提供资金,通常也是(但有时也未必确定产品需求的单位或个人。

  (2)项目承办单位(Project Undertaking Organization)

  项目承办单位指为项目委托单位开发、购置或选用软件产品的单位或个人。

  (3) 软件开发单位(Software Development Organization)

  软件开发单位是指直接或间接受项目委托而直接负责开发软件的单位或个人。

  (4)用户(User)

  用户指实际使用软件来完成某项计算、控制或数据处理等任务的单位或个人。

  (5)软件(Software)

  软件指计算机程序及其有关的数据和文档,也包括固化了的程序。

  IEEE 给出的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必须的数据。

  由此可见,软件已不再只是一个程序和一本使用手册,而是包括大量的程序、文档和数据。

  (6)软件对象(Software Object)

  软件对象是在项目进展过程中产生的、可由软件配置管理加以控制的任何实体。每个软件对象都具有一个的标识符、一个包含实际信息的对象实体、一组用于描述其自身特性的属性与关系,以及用于与其他对象进行关系操作与消息传递的机制。软件对象按其生成方式可分为源对象(Source Object)与派生对象(Derived Object),按其内容结构形式可分为原子对象(Atomic Object)与复合对象(Derived Object),按其内部结构形式可分为原子对象(Atomic Object)与复合对象(composite Object),按照软件开发的不同时刻(状态)可分为可变对象(Mutable Object)与不可变对象(Immutable Object).

  (7)配置(Configuration)

  配置指在配置管理中,软件或硬件所具有的(即在技术文档中所陈述的或产品所实现的)那些功能特性和物理特性。

  (8)重要软件(Critical Software)

  重要软件指其故障会影响到人身安全,会导致重大经济损失或社会损失的软件。

  (9)软件生存周期(Software Life Cycle)

  软件生存周期指从对软件系统提出应用需求开始,经过开发,产生出一个满足需求的计算机软件系统,多面手投入运行,直至该软件系统“退役”为止。其间经历系统分析与软件定义、软件开发以及系统的运行与维护等3 个阶段。其中软件开发阶段一般又分成需求分析、概要设计、详细设计、编码与单元测试、组装与集成测试、系统测试以及安装与验收等6个阶段。

  (10)软件开发库(Software Development Library)

  软件开发库指在软件生存周期的某一个阶段期间,存放与该阶段软件开发工作有关的计算机可读信息和人工可读信息的库。

  (11)配置项(Configuration Item)

  配置项指一个配置中的实体,它满足一项终使用功能,并能在给定的参考点上意象标识。在GB/T 11457-1995《软件工程术语》中给出配置项另外一个定义:为了配置管理目的而作为一个单位来看待的硬件和/或软件成分,满足终应用功能并被指明用于配置管理的硬件/软件,或它们的集合体。软件配置管理的对象是软件配置项,它们是在软件工程过程中产生的信息项。按照ISO9000-3 的规定,软件配置可以是:

  与合同、过程、计划和产品有关的文档和数据; 源代码、目标代码、和可执行代码; 相关产品,包括软件工具、库内的可利用软件、外购软件及用户提供的软件。  组成上述信息的所有项目构成了一个软件配置,而其中的每一项便于工作称为一个软件配置项,这是配置管理的基本单位。在软件开发过程中,早的软件配置项是系统软件规格说明书,随着软件开发过程的不断深入,软件配置项也迅速增加。

  软件配置项基本可划分为两种类别:

  软件基准??经过正式评审和认可的一组软件配置项(文档和其他软件产品),它们作为下一步的软件开发工作的基础,并且只有通过正式的变更控制堆积才能被更改。例如:设计报告是编码工作的基础,设计报告可作为软件基准。 非基准配置项??没有正式评审认可的一组软件配置项。  这可以从下面角度划分软件配置项。

  一个软件系统划分为几个配置项要由项目经理所确定的开发策略决定。读者可以参考NASA 给出的软件配置项划分原则( 《NASA Software Configuration ManagementGuidebooks》,1995),每个软件或某集合符合如下条件之一,可视为一个软件配置项:

  该软件集合是独立设计、实现和测试的; 该软件集合对总体性能是关键的,或存在高风险的,或关系到系统安全性; 该软件集合极为复杂,涉及高新技术,或有严格的性能要求; 该软件集合与其他现有软件项目或由其他机构提供的软件之间有直接接口; 预计该软件集合在成为可运行软件之后会有比常规更多的修改; 该软件集合包括了某个特定范围的所有功能,如应用软件、操作系统等; 该软件集合安装在与系统其他部分不同的计算机平台上; 该软件集合被设计成可重复使用的。  下面介绍软件配置项的命名/编号

  软件的每个组件/部件的标识必须,以便于用该标识符来跟踪和报告软件配置项的状态。通常,对每一个软件配置项要赋予一个标识名称或符号,软件配置项的各部分又在该标识符下附上描述符。NASA-CM-GDBK 给出的一个标识例子是:组成航天飞机飞行软件的软件配置项可标识为FS(Flight Software for a Spacecraft);而该飞行软件的组成部分,例如飞行执行程序可标识为FS_EX,表示它是FS 软件配置项的第二层次组件;该执行程序的各元件(子程序)可编号为FS_EX_001、FS_EX_002 等。

  因此,可以根据“型号代号_分系统/设备配置代号_所处研制阶段代号_软件产品分类编号_配置项编号”原则来对各软件配置项及其组件、子程序及相关描述文档进行命名、编号。在软件的事个生存周期中,一般包括制定计划,分析评估、设计,测试,运行/维护等状态。相应地可以把软件配置管理分为设计态,测试态,受控态和运行态4 种状态,其中受控态即指软件配置管理项处于配置管理状态。

  (12) 软件受控库(Software controlled Library)

  软件受控库指在软件生存周期的某一个阶段结束时,存放作为阶段产品而释放的,与软件开发工作有关的计算机可读信息和人工可读信息的库。软件配置管理是对软件受控库中的各软件项进行管理,因此软件受控库也叫做软件配置管理库。

  (13)软件产品库存(Software Product Library)

  软件产品库指在软件生存周期的系统测试阶段结束后,存放终产品、交付给用户运行或在现场安装的软件的库。软件产品库可在分系统、系统层上分别设立并维护。如果软件产品库中的产品需要更改则应将些产品在产品库中加锁,撮软件受控库中相应的软件配置项,履行受控库中的更改控制手续,直至更改完成并确认其能完成指定功能和性能后,方可再次存入软件产品库。

  (14)配置管理(Configuration Management)

  配置管理是对以下各项在运用技术上和行政上的管理和监视的一门学科。对一个配置项的功能特性和物理特性进行标识并写成文档;对这些特性的更改进行控制;对更改处理过程和实施状态进行记录和报告;以及对是否符合规定需求进行验证。

  (15)接口控制(Interface Control)

  接口控制指描述由一个或多个部门提供的,两个或两个以上的配置项接口的所有功能特性和物理特性的过程。在这些功能特性和物理特性实现之前,要确保对它们所做的修改已经评审和批准。

  (16)版本(Version)

  版本是某一配置项的已标识了的实例(Instance)。也可以说,不可变的源对象经质量检查合格后所形成的新的相对稳定的格局(配置)称为软件版本。每个软件对象可具有一人版本组,它们彼此间具有特定的关系,这种关系用以描述其演变情况,通常软件对象的版本组呈树形结构。