攸 阳,杨素梅
(1. 海参信息通信局,北京 100055;2. 中国电子科技集团公司第七研究所,广州 510310)
军用软件是武器装备信息系统的核心,军用软件的发展是我国军队实现高水平信息化的关键[9]。随着军队作战水平要求的提高,越来越多的软件应用在指挥作战系统中,军用软件质量成为影响军队武器装备质量高低、安全是否的关键性因素。军用软件具备以下特点:
(1)军用软件本身的复杂性、抽象性对系统的安全性、可靠性带来挑战;
(2)大多数军用软件规模较大,研制周期比较长;
(3)功能相同的软件,由于应用场所较多、接口不同。因此,存在着分支版本管理的要求;
(4)武器装备系统集成化、复杂化导致需求变更的频率较高。
基于以上所述的军用软件特征,在军用软件中实施软件配置管理有着更紧迫、更高的要求。
根据军用软件配置管理的现状,结合GJB5000A的要求,目前军用软件的主要工程活动包括:系统要求与系统分析、软件需求分析、软件设计、编码与单元测试、软件集成测试、软件配置项测试、软件系统测试等活动[3]。由于要适不同的规模、不同需求稳定性的软件开发。军用软件的开发模型通常包括瀑布模型、迭代模型、外场开发模型、沿用模型等。软件配置管理系统对软件整个生存周期中产生的文档、代码以及其他数据进行管理。记录软件开发过程中的变更,搭建一个规范的软件开发平台。为项目相关人员能够在每个阶段提供所需要的版本的配置项提供保障。
军用软件产品由于试验、应用场景的复杂性导致需求变更频率较高,由于要必须确保对产品有效地进行管控和追溯,配置管理过程除了对成形的产品进行管理,还要对开发过程中的产品进行管理。
军用软件通常是整个大的应用系统的组成,是整个系统很关键的部分。需求往往也不是最初明确。经常随着大系统的进展,需求才逐渐明确。这种情况,必定给软件带来多次变更或者迭代开发。所以,制定一套严格的、完整的软件配置管理流程在军用软件的开发过程中非常重要[1]。
军用软件配置首先管理需要建设一个自动化管理平台。所需要的自动化平台应该是一个具有配置支持、版本控制、变更控制、构造支持、过程支持、团队协作支持,适合各种规模软件使用配置管理系统。软件配置管理系统通常是由开发库、受控库、产品库构成。其中开发库设置在各项目组,受控库设置在部门,产品库设置在单位的资料室。目前,常见的配置管理工具有 Vss、CVS、Starteam、Hansky Firefly、ClearCase[5],本文选用了 Starteam作为配置管理工具,制定了一套配置管理流程,如图1所示。
安装配置管理工具后,项目配置管理员依据配置管理计划对人员进行权限分配,项目成员按照权限和进度上传项目有关配置项到对应库的目录中。配置管理系统功能主要要包括:1)配置管理系统支持多种级别的权限设置;2)通过配置项添加、迁入、迁出、更改、锁定、等功能支持项目成员并行开发;3)形成配置管理状态记录;4)配置库中文件的备份、恢复;5)三库的分配形式应该是逻辑上独立,物理上一起[7]。通过权限设置实现配置项在不同库之间的流转。三库的关系见图2。
图1 配置管理流程图Fig.1 Software configuration management flowchart
图2 软件三库结构图Fig.2 Software library structure diagram
软件配置管理计划是由软件配置管理员根据软件开发计划制定,是指导软件配置管理活动开展的依据。配置管理计划的主要内容:1)说明与项目软件配置管理有关的人员与职责;2)说明开展软件配置管理活动所需要的资源,其中包括选用的配置管理工具以及安装环境要求;3)划分配置库结构,说明那个三库目录、存放内容格式要求,以及各目录的使用权限;4)选择配置项和基线并进行标识,建立软件配置项和基线计划表,包括配置项名称、所在基线名称、入库和建立时机、责任人等;5)制定更改控制流程,说明更改控制细则;6)确定软件配置管理审核时机和审核内容;7)编写配置管理状态报告时机;8)描述安全备份要求[6]。
2.2.1标识配置项
配置项的选择是配置管理实施的前提,确定配置项的原则为:1)可能被两个或更多人员使用的工作产品;2)预期会时间推移因错误或需求变化而变更的工作产品;3)相互之间存在依赖的工作产品,即一个工作产品变更会引起另一个工作产品的变更;4)对项目有关键影响的工作产品,如:辅助测试软件、专用操作系统。典型的配置项如软件研制任务书、软件需求规格说明、数据字典、接口说明、设计说明、测试报告、源代码等工程类工作产品,以及对产品交付有影响的管理类成果,如软件开发计划、软件质量保证计划、软件配置管理计划等。另外,非通用类的开发环境、运行环境等也要纳入配置项。每个配置项要有唯一的标识,用于区分与其他配置项。
军用软件的配置项大小可根据其变更的频繁程度、开发的进度等来划分,对可能比较频繁变更的工作产品采用细粒度划分管理[2]。否则配置项可能因为局部变更带来配置项的频繁变更,加大了变更成本。
2.2.2建立基线
在配置管理系统中,基线就是一个配置项或者一组配置项在其生命周期的不同时间点上通过正式评审而进入正式受控的一种状态,而这个过程被称为“基线化”。软件配置管理员与软件负责人依据项目的实际情况,如进度要求、复杂度、规模大小、安全级别等来明确本项目的基线,功能基线、分配基线、产品基线是必须要进行设置的,其他还有如实现基线、测试基线以及自定义的基线等。
完成上一条基线,才能开展下一步工作。基线所包括的配置项通过相应级别评审确认后提交受控库,同时建立基线。并对相关人员进行发布。
软件版本管理的目的是为了确保清楚地、唯一地标识软件各个组成部分及其状态,并建立这些部分之间的一致性关系[8]。适用于软件配置项、基线的管理、标识。军用软件的配置项、基线版本和软件产品版本根据阶段要求,可制定适合组织的规则。例如版本标识如:Vw.x.y.z。
w:定型标识,用1位数字标识。0—设计定型(或技术鉴定)之前;1—设计定型(或技术鉴定)之后。每次改型并重新定型后顺序加 1。通过设计定型或者每次改型后入库受控时,应按项目的版本标识要求,提升基线或者系统级、设备级、单元级和模块级的配置项版本。
X:科研里程碑标识,用1位数字标识。0—通过初样前;1—通过初样;2—通过正样;3—组织级鉴定;4—通过组织放行检验;5—通过定型测评;6—通过部队试验。和系统总体一起研发的项目,该标识为系统总体的科研里程碑标识;自主研发的项目,该标识为组织内的里程碑标识,如项目不分初样,正样阶段的,该标识用0表示。数字所表示含义可根据组织本身做调整。
到里程碑点(如初样、正样、测评、部队试验、定型等)入受控库时,应按照项目规定的版本标识要求,提升基线或系统级、设备级、单元级和模块级配置项的版本(例如版本号由0.0.2.0变为 0.1.0.0)。
y:系统总体的版本标识,用1位或2位数字标识,初始值为0。软件产品提交系统总体,通过系统总体单位要求的验证,入软件受控库时,顺序加1。
Z:项目组控制的版本标识,用1至2位数字标识,初始值为 1;通过项目组要求的验证时,顺序加1。
军用软件为了适应不同批次的部署和接口不同的个性要求,往往通过对配置项进行很小的变更去适用于其他批次。这种情况,可以采取分支版本管理的方式。将一个配置项中的适用于各个批次的部分单独列出来作为基础版本。不同的部分作为分支管理。这样,可以将变更的成本降到最低。
项目进行分支管理时,可在版本标识后加—Vp.q,其中p为分支序号,用1至2位数字标识,初始值为1;q为分支子版本号,用1至2位数字标识,初始值为0。
变更控制不是为了控制变更的发生,而是对变更进行管理,确保变更有序进行。并能够进行有效追踪。因此,事先在项目开始前明确定义一套更改控制流程是其最有价值的一部分。典型的变更控制流程如图3所示。
在变更中,最重要的一个环节是变更前的影响分析,以及变更过程中记录前后版本的对比。变更影响分析是要由 SCCB(变更分析委员会)分析变更会给项目的进度、成本、其他模块造成多大的影响。从而给项目负责人对变更的批准提供比较准确的参考。
图3 更改控制流程图Fig.3 Change control flow chart
在变更过程中,容易发生版本的混乱。如配置管理员出库的版本与开发人员更改的版本不一致。变更申请中拟更改内容与实际更改内容不一致。多种不一致会造成版本管理混乱,影响软件产品的质量。尤其军用软件存在各种隐患,会对国家军队造成安全方面的威胁。为避免此类问题的发生。可设立专门用户更改的计算机,并设置三岗进行变更。
每次变更申请批准后,由软件配置管理员出库变更对象至变更专用计算机中。流程中一岗为变更申请人员,确定拟变更内容。二岗为项目组其他开发人员,负责实施更改。三岗为项目的质量师,对更改进行监管。这样避免了变更的版本混乱问题。保证了变更的有效性。
配置审核是配置管理活动的有机组成部分。配置审核分为功能审核和物理审核。而且配置审核不是一次性的活动,而是贯穿软件生命周期的持续进行的活动。常见的做法是出入库事件触发时候做配置审核。审核的一个目的是确保软件基线的完整性,另外一个目的是控制变更。
软件配置状态报告是用于记载软件配置管理活动信息和软件基线内容的标准报告,其目的是及时、准确地给出软件配置项的当前状态,使受影响的组和个人可以使用它,同时报告软件开发活动的进展状况[10]。通过不断的记录状态报告可以更好地进行统计分析,便于更好的控制配置项。
通过探讨软件配置管理自动化平台的建设,配置项标识、建立基线、变更控制、多分支版本管理、配置审核等内容,有效的解决了军用软件多版本管理混乱。通过跟踪和控制变更,维护了基线的完备性和正确性,提高了武器装备系统的质量、可靠性、安全性。