近期一直在学习GJB3206B-2022《技术状态管理》,有了一些零星理解但不成系统,有朋友希望我写写GJB 5235-2004《军用软件配置管理》和GJB 5235A-2021《军用软件配置管理》(敲黑板,本文严格区分GJB 5235和GJB5235A,请大家在阅读时务必注意)的区别,我就试着去读了读GJB 5235标准,却发现单独一个GJB 5235标准无法将配置管理说清楚,就顺着又读了一下GJB 5000、GJB 5880、GJB 5716等相关标准,就又有了一些体会,当然,这些体会更多是用GJB 3206的方式理解的,今天就斗胆来和各位朋友说一说。
01
概念及内涵
软件配置(GJB 5235):在软件生存周期各阶段产生的各种形式和各种版本的文档、程序、数据及环境的集合。这个定义对应GJB3206B是“技术状态”,但内涵差异较大,技术状态的主体是“功能特性和物理特性”,而软件配置的主体是“文档、程序、数据及环境的集合”,这种差异导致GJB 5235A标准去掉了“软件配置”术语定义。
软件配置项(GJB 5235):为了配置管理的目的而作为一个单位来看待的软件成分,通常为软件配置中的一个元素。计算机软件配置项(GJB 5235A):能满足最终使用功能,并被指定作为单个实体进行配置管理的软件,简称“软件配置项”。这个定义对应GJB3206B是“技术状态项”,两个GJB 5235标准定义差异很大,但GJB 5235A的定义与GJB 3206B较为接近。GJB 5235中的配置项主体是“软件排至中的一个元素”,包括“文档、程序、数据及环境的集合”;GJB 5235A中的配置项主体是“软件”,就是软件产品,这也是标准把“配置项”与“配置文件”分开的原因;GJB3206B中的技术状态主体是“产品及其组成部分”。
配置文件(GJB 5235A):规定配置项的功能特性和物理特性,或从这些内容发展而来的关于配置项验证、使用、保障和报废要求的技术文件。这个定义对应GJB 3206B是“技术状态文件”并且这个定义在GJB 5235中没有,是在GJB 5235A版才出现的。
受控库(GJB 5235):一个受控的软件配置项集合,以便于软件开发、运行及维护。配置管理库(GJB 5235A):受控的计算机软件配置项及其配置文件的集合,以便于软件开发、运行及维护。从GJB 5235的“受控库”变成了GJB 5235A的“配置管理库”,可以看出两点变化:① 从两个定义的内容,GJB 5235的“软件配置项集合”到GJB 5235A的“软件配置项及其配置文件的集合”,说明GJB 5235开始区分配置项和配置文件两个概念了;② 从“受控库”到“配置管理库”,不只是名称变了,内涵也从“受控库”扩展到了“开发库”、“受控库”和“产品库”。
02
软件配置管理过程
依据GJB 5235A,软件配置管理的过程包括标识、控制、记实、审核、发行管理和交付等活动,相对于GJB3206B,缺少了“策划”和“验证”环节,多了“发行管理和交付”内容,以下分别进行介绍。
2.1 配置标识
基于GJB 5235A,配置标识包括四部分:标识软件配置项和配置文件、标识基线、建立配置管理库、进展状态四个部分,每个字都懂了,但什具体干什么工作还是不明白,翻译如下:
1)建立配置控制委员会,类似于GJB 3206B的技术状态管理委员会,从分类分级角度出发,很多企业建立多层CCB,负责不同层级的配置管理工作;
2)识别配置项、配置文件和基线,依据GJB 5235A的6.1b)条内容,选择功能特性和物理特性能被单独管理且有助于达到最终适用要求的产品或其组成部分作为配置项;确定每个配置项在不同阶段的配置文件内容(如需求规格说明书);在软件生产周期内容,应建立功能基线、分配基线和产品基线,它们由相应配置项的配置文件体现。
3)标识配置项、配置文件和配置基线,明确配置项、配置文件和配置基线的标识规则,按规则进行配置项、配置文件和配置基线的标识,敲黑板,相对于GJB 3206B,GJB 5235A多了一个配置基线的标识,这个“标识”的内涵包括明确基线的受控配置项/配置文件和记录、纳入/批准基线的规程、批准基线的授权、配置并建立完整基线的规程、标识符以及建立基线所需的工具等。
4)制定配置管理计划,相当于GJB 3206B中技术状态策划,包括编制、评审《软件配置管理计划》,将评审后的《软件配置管理计划》纳入配置库管理,并通知有关的利益相关方。
5)建立配置管理库,依据项目情况确定配置管理环境,定义配置库结构(一般分为开发库、受控库、产品库)并在相应库中定义目录结构,明确三类配置库的访问权限,并且定期备份配置库内容。
2.2 配置控制
基于GJB 5235A,配置控制包括四部分:检入和检出控制、更改控制、版本控制、存取控制,内容清晰但复杂,翻译如下:
1)检入和检出控制,参考GJB 5716-2006《军用软件开发库、受控库和产品库通用要求》,软件配置库分为开发库、受控库、产品库,软件开发库由项目组管理,软件受控库由研制管理部门(或质量管理部门)管理,软件产品库由企业的档案管理部门管理。① 软件开发库,软件开发库由项目组自行管理,不再赘述。② 软件受控库,软件受控库入库内容应是通过测试或评审的软件配置项以及组织和顾客认可的其他内容;在配置项或其配置文件通过评审或确认后,提出受控库入库申请,经受控库管理负责人审查后,执行入库操作;项目基线在受控库建立后,提出发布基线申请,经相应CCB审批后,基线正式发布。③ 软件产品库,软件产品库入库内容应是提供交付、生产、检验验收、维护的软件产品和其他软件工作产品;在软件验收结束前,提出产品库入库申请,经组织代表和顾客代表共同审查批准后(注意,在最新发布的GJB 4072B-2023《军用软件质量监督要求》标准中,顾客代表在出入库时需要签字),执行入库操作;产品基线在入产品库经审查标识、版本并审批后,产品正式发布。
2)更改控制。配置更改实施分类控制,分类的方式在GJB 5235A并没有明确,要求参照GJB 3206,据此软件配置更改也分为I类、II类、III类,具体的分类方式参见《学习 | GJB 3206B-2022系列之8 — 技术状态更改》,此处不再赘述;首先提出配置更改申请,然后评价配置更改申请的影响,按更改类别不同进行审批(敲黑板,按照最新发布的GJB 5709A-2023《装备技术状态管理监督要求》,对于I类技术状态变更和状态鉴定后的II类技术状态更改申请,要求装备承制单位报项目管理机构处理,军事代表监督;对于III类技术状态变更和状态鉴定前的II类技术状态更改申请,要求装备承制单位审批,军事代表监督并提出意见,都没有军事代表签署的要求)。审批后实施配置更改,注意实施过程中,需要先出库、再更改、然后验证、最后入库;通报处理,要求在批准更改申请的情况下,应通报哪些使用受已批准配置更改影响的配置项及配置人员的有关人员。在未获批准的情况下,也应通知有关人员(敲黑板,这是GJB 3206B标准中没有的内容,也是需要向配置管理学习的地方);更改结束后,要编写软件配置更改报告,对纳入已建立基线的配置项及其配置文件的配置更改,产生一个新的基线。
3)版本控制,发生配置更改后,应更新版本号。
4)存取控制,控制不同权限的人员访问配置管理库。
2.3 软件配置状态记实
基于GJB 5235A,配置状态记实包括三部分:记录标识、跟踪配置更改、报告状态记实,翻译如下:
1)记录标识,包括记录配置项及其配置文件的标识和状态,并且原先版本可恢复;对配置项及配置文件的每次更改时版本和状态进行维护;说明配置项、配置文件及其版本号,明确基线的最新版本。
2)跟踪配置更改,这是GJB3206B没有的内容,也是需要向配置管理学习之处,包括跟踪配置更改申请、跟踪批准的配置更改落实情况,非常有必要,因为很多技术状态混乱的根源就在于此。
3)报告状态记实,在配置库的配置项及其配置文件状态发生变化时,应对状态进行统计,包括配置项、配置文件和基线的变更状态、各个版本的记录及差异等内容,形成配置状态报告,并及时通知利益相关方。
2.4 软件配置审核
在GJB 5235A中,只对配置审核进行了含糊的描述。在GJB 5000B-2021《军用软件能力成熟度模型》的CM2.6:配置审核的类型一般可包括功能配置审核、物理配置审核、配置管理审核(比GJB 3206B多了一个配置管理审核),其中,物理配置审核是为了评估基线的完整性,主要检查组成基线的配置项及其配置文件是否完备、相应版本是否正确等;功能配置审核是为了审核配置管理系统中配置项的结构和完整性,主要检查配置项的评审、测试记录以及与软件需求的追溯关系等;配置管理审核是为了确认配置管理活动与配置管理规程的一致性,可以由QA结合项目例行检查开展。
2.5 软件的发行管理和交付
软件的发行管理和交付包括处理、存储、复制、包装、交付几个部分,内容相对简单,处理主要规定软件产品的发行过程;存储更多是保证所存储配置项的完整性;复制是确保一致且完整地复制软件产品;包装明确了介质和标识的要求;交付强调按规程交付并且留存记录。
03
GJB 5235与GJB5235A的差异
在GJB 5235A的前言中,明确了本次修订主要变化内容,也是GJB 5235和GJB5235A的主要差异,包括以下内容:
1)直接采用了GJB 3206《技术状态管理》中的术语和定义,增加了“配置文件”术语和定义;将“受控库”改为“配置管理库”;
2)将配置控制涉及的“更改”改为“配置更改”,将“配置评价”改为“配置审核”;
3)修订了“4 一般要求”的内容,增加了配置管理库、配置项清单、非开发软件配置项等方面的要求;
4)细化了软件配置项的选择、标识软件配置项等方面的内容;
5)配置更改申请方面增加了配置更改的类别方面的要求;
6)修改并细化了记录标识、跟踪配置更改、软件配置审核等方面的要求;
7)增加了附录A《<软件配置管理计划>的正文格式》和附录B《配置文件和基线》。
这些内容都只是明面上的变化,透过这些变化可以看出两个观点:
1)GJB 5235A正在与GJB3206保持一致
在GJB 5235A中,① 增加了“配置文件”的术语和定义,把GJB 5235的“配置项”细分为“配置项”和“配置文件”两部分;② 将“配置评价”改为“配置审核”;③ 增加了配置项选择的内容,配置更改申请增加了配置更改类别等,都表示GJB 5235A正在逐步与GJB3206保持一致。
2)GJB 5235A关于基线的定义有点落伍
在GJB 5235A的附录B.2 不同视角的基线中,产品的功能基线、分配基线和产品基线一般是面向产品的订购方和总承制方,分承制方只对应产品的分配基线和产品基线。当然,这是GJB 3206A的观点,GJB 3206B已经进行了优化,增加了面向分承制方的基线分类方式,当然,这也可以理解,毕竟GJB 5235A是2021年发布的,而GJB 3206B是在2022年发布的。
04
最后的话
软件配置管理是软件产品质量管理的重要环节,包括配置标识、配置控制、配置状态记实、配置审核、放行管理和交付等活动,GJB 5235A标准中正在增加越来越多的GJB 3206要素,软硬件的技术状态管理内容正在逐步趋向统一。本文也是从GJB 3206的方式理解软件配置管理,很多都是个人理解,不对之处,敬请各位朋友批评指正。