卢忠伦 赖文娟
[摘 要]本文根据GJB 5000A、GJB 9001C-2017、GJB 2786A、GJB 438B和《装备软件管理规定》等军用标准、法规的要求,结合武器装备软件产品科研开发特点对软件生命周期内开展需求开发、软件研制、软件交付和服务时的活动控制方法进行研究,并结合科研产品的特点提出软件设计开发中项目组及其各软件小组进行项目策划、组织各阶段设计开发活动的软件控制要求。本文可用于指导软件开发的设计工作,同时也可用于指导基于GJB 5000A的定型产品在软件需求获取、生产交付和服务环节的工作。
[关键词]GJB 5000A;软件;生命周期;控制要求
doi:10.3969/j.issn.1673 - 0194.2018.14.035
[中图分类号]TP311.5 [文献标识码]A [文章编号]1673-0194(2018)14-00-05
1 GJB 5000A实施的益处
从事软件研发的资深软件人员都对“软件系统的质量受制于开发和演化所用过程的质量”这一理念深切认同,并在软件研发过程中贯彻GJB基于过程保证质量的观点。实施
GJB 5000A的益处主要包括提高进度和预算的可预测性、改进项目研发周期、提高生产效率、改进质量、提高客户满意度、提高员工士气、提高投资回报率和降低成本等8个方面的益处。
2 武器装备软件研发过程
2.1 软件项目策划
项目组长与各软件组组长在项目立项前后的产品实现综合策划、设计开发策划中明确本项目的软件生命周期模型、每个研制周期的各设计阶段及其技术评审、配置管理、质量保证控制要求,形成覆盖本研制周期的软件开发计划、软件配置管理计划、软件质量保证计划,并在适当时机完成软件测试计划、软件移交计划等的策划。软件开发计划、软件质量保证计划、软件配置管理计划、软件测试计划等应得到顾客批准。
2.2 按照软件工程化要求进行软件开发活动
设计开发工作主要由各CSCI的软件组完成,期间应按照GJB 2786A、《装备软件管理规定》以及总体单位软件工程化规定和工作程序的要求,开展本阶段的设计开发工作,完成当前阶段的设计开发任务。
顾客要求时:软件研制任务书评审应由顾客组织,否则应邀请顾客代表参加;软件需求规格说明的评审应邀请顾客代表参加;CSCI合格性测试、CSCI/HWCI合格性测试应邀请顾客参加;CSCI集成测试、CSCI/HWCI集成测试应邀请顾客参加。
2.3 完整、规范软件技术文档
软件技术文档格式及内容要求由项目组在项目策划过程中规定,并得到科研管理部门批准。一般情况下军用产品软件应按照GJB 438B-2009的要求执行,民品产品应按照GB/T 8567-2006的要求执行,当单位、顾客有特殊要求时应遵照执行。
2.4 组织评审各个开发阶段
各个软件工程化阶段均需在本阶段设计工作完成并通过评审后,方能开展下一阶段的设计开发工作。一般情况下军用产品软件应按照总体单位的要求执行,若总体单位没有要求的,由项目组在项目策划时按照相关要求进行策划,得到批准后才能执行。各级、各阶段评审组织者应按照软件评审规程的相关要求和步骤组织评审。顾客要求时,邀请顾客代表参加阶段评审。
2.5 阶段产品及时纳入软件库管理
软件开发的全生命周期内将陆续产生一系列包括各种文档、程序代码和数据等的阶段产品,这些产品应作为软件配置项纳入软件配置管理中。
在产品实现的综合策划、设计开发策划过程中,根据项目大小和关键等级等因素,通过《软件配置管理计划》《软件设计开发计划书》《软件开发计划》对本项目各设计阶段输出产生的软件配置项、输出时机等进行约定。各级配置管理员应按照《软件配置管理计划》的相关要求实施配置管理,确保重要的阶段产品及时纳入受控库、产品库进行严格控制。顾客要求时,对基线或产品库中的软件配置项进行更改时应得到顾客的批准。
2.6 生产和交付软件的使用和更改
生产和交付的软件及其技術文档应取自软件产品库(或受控库),交付后应注重分析来自顾客的《故障报告单》或《软件问题报告单》,若存在问题应及时以《软件问题报告单》向科研管理部门提出请求,启动设计更改过程。每批生产任务均应单独办理出库手续。用于产品生产及科研交付的软件出库应接受顾客监督。
2.7 非开发软件配置项应受控
2.7.1 外包软件
项目组以合同或合作协议等形式与外包软件的供方明确项目进度、配置管理、质量保证方面的要求和约束。在项目的研制过程中要求供方及时提供阶段产品,派人参加阶段评审,对阶段评审中提出的意见建议,科研管理部门或项目组应加以跟踪验证。
2.7.2 外购软件
项目组或软件组在充分选型、征求顾客意见的基础上选择外购软件,外购软件的采购由项目组或软件组提出,经科研管理部门批准后,按照相关制度进行采购并进行使用验证、入库受控。
2.7.3 可重用软件
推荐软件开发小组评估采用以前开发软件产品可重用的可行性,若可重用,由项目组验证并提供使用验证报告后(或软件测试报告),经科研管理部门批准后才能够采用该软件。
2.7.4 环境搭建软件
项目组进行软件开发的管理工具、开发工具、软件测试或调试需要的工具、软件生产过程中需要使用的工具以及软件在产品中运行所需的平台环境等软件均应受控,受控方式可采取纳入配置库或组织资源库。《软件设计开发计划书》或《软件配置管理计划》中明确要求当外购、外包、可重用软件(或模块)在关键软件及重要软件中使用时必须进行安全性、可靠性分析及审查。
3 软件控制过程流程及要求
基于GJB 5000A的武器装备软件控制过程流程图如图1所示。基于GJB 5000A的武器装备软件控制过程要求如下。
3.1 论证及方案阶段控制要求
3.1.1 基本要求
项目组长在立项论证中提出软件研制方法、软件产品应遵循的标准、已定型软件的选择、需改进的软件、软件的主要功能、安全性需求和计算机硬件资源需求等软件基本要求。相关信息应体现在《立项论证报告》等文档中。项目组长在研制中要求论证时细化立项论证中提出的软件基本要求,提出软件功能、性能、接口、人机交互界面、安全性、可靠性、测试性、易用性、维护性和设计约束(编程语言、运行环境、通信协议等)等软件研制要求,明确软件等级 ,提出软件系统研制过程的工程化管理要求。相关信息应体现在《研制总要求》或《可行性分析报告》等文档中。
产品进行综合策划时:项目组长根据研制总要求等前期论证结果,组建软件专项组,明确软件负责人;项目组长根据总体单位或研究所《软件工程体系》的相关要求,制定本项目的软件研制工作程序和规范,以便对软件研制过程实施质量控制,组织实施阶段评审;期间可明确本项目各软件组成(含开发软件和非开发软件),在设计开发计划书中明确每个软件的CSCI编号、软件工程化要求安全关键等级、软件生命周期模型等内容。
在项目研制的方案阶段,项目组长组织软件负责人等开展系统需求分析及系统设计工作,编制软件研制方案。期间按照设计开发计划书的策划安排形成《系统/子系统规格说明》《接口需求规格说明》《系统/子系统设计说明》《接口设计说明》《软件产品规范》和《软件开发计划》等技术文档。软件研制方案采取评审等方式进行设计开发验证,软件研制方案通过评审后,项目组长根据研制总要求等文档中的描述为每个CSCI主动编制(或配合总体单位编制)《软件研制任务书》。其他相关工作按《软件工程体系》的相关要求执行,其中外包软件开发按照《软件工程体系 供方协议管理》的相关要求执行
3.1.2 军用软件特殊要求
论证部门申请用户召开论证评审活动,软件研制方案、《软件研制任务书》交由总体单位,参加由用户组织的评审。通过评审的关键软件、重要软件的《软件研制任务书》需由用户批准,并进行项目策划及软件需求分析
3.2 项目策划及软件需求分析
3.2.1 基本要求
本过程相关工作按《软件工程体系》的相关要求执行,软件研制任务书评审前后,各CSCI承研部门可任命各CSCI的软件负责人,组建软件组(含软件开发人员、测试人员、配置管理人员和软件质量师等)开展后续项目策划和需求分析工作。软件组在产品实现综合策划输出框架内,按照《软件工程体系》中《项目策划过程》的要求,开展项目策划工作,并对本CSCI设计开发过程进行仔细策划,完成正式的技术文档《软件开发计划》《软件配置管理计划》《软件质量保证计划》等技术文档。在顾客需求发生重大变化、设计方案发生重大调整、项目计划进度出现变更时,也可重新启动设计开发策划活动,以便按照实际情况重新制订项目计划。
软件组开展软件需求分析工作期间应按CSCI分析确定软件的功能、性能、数据结构需求接口需求,进行危害性分析以确定软件可靠性、安全性設计准则,确定设计规范。定义和记录每个CSCI所要实现的功能、满足的需求,确定每项需求得到满足的方式、方法,建立CSCI软件需求与系统需求之间的可追踪性,按照项目策划的相关要求,完成本阶段的《软件需求规格说明》《接口规格说明》等软件设计类技术文档的编写工作。项目策划及软件需求分析结果应通过评审验证。
3.2.2 军用软件特殊要求
顾客要求时,《软件开发计划》《软件配置管理计划》《软件质量保证计划》等经顾客代表签字批准,必要时软件需求分析评审由用户或总体单位组织,邀请软件论证、测评、使用单位和顾客代表参加。
3.3 软件设计阶段
3.3.1 基本要求
软件设计阶段相关工作按《软件工程体系》的相关要求执行。主要由软件组负责,期间按照《软件开发计划》中的策划安排:根据确认的软件需求,按设计准则和规范进行软件的设计决策、体系结构设计和详细设计,期间应关注所用模型和算法、接口的设计;对关键、重要软件进行可靠性、安全性设计;编制《软件设计说明》《软件测试计划》等技术文档。软件设计结果应通过评审。
3.3.2 军用软件特殊要求
必要时,软件设计阶段还可细分为CSCI设计决策、CSCI体系结构设计和CSCI软件详细设计3个子阶段。
3.4 软件实现及单元测试过程
3.4.1 基本要求
软件实现及单元测试过程相关工作按《软件工程体系》的相关要求执行。本活动适用于软件实现及单元测试阶段,由软件组完成,软件测试人员协助,按照《软件开发计划》中的策划安排。
软件开发人员按照CSCI设计开发计划书中的要求,开展相应的编码、编译(汇编)、调试工作,完成本阶段的设计开发任务,完成数据库建立,将数据值填入数据库或其他数据文件以及其他为实现设计所需的活动。为每个软件单元制订测试计划(包括测试需求和进度)、准备测试用例(按照输入、预期结果、评价准则)、测试规程和测试数据,形成测试类技术文件或质量记录《软件验证、确认测试报告》。软件测试计划和测试说明需经过评审,测试按照测试计划和测试说明进行策划,严格按照测试用例、规程和数据进行,根据单元测试的结果进行必要的修改,并进行必要的回归测试。对单元测试结果进行分析和评价,按照项目策划的要求形成测试报告类技术文件或质量体系记录文件,对各非开发软件(外包、外购、重用软件等)进行分析,并进行测试验证。相关活动的原始记录应长期保存,如项目策划需评审时,设计组完成本阶段的设计开发工作后进行阶段评审。不需评审时,将《软件验证、确认测试报告》及相关原始记录提交科研管理部门进行备案后可转入下一阶段工作。
3.4.2 军用软件特殊要求
对于需交付软件,如采用非合同规定的程序设计语言,经顾客代表批准,设计组照项目策划的要求编写软件产品规格说明类文档。本阶段还可包含“软件开发环境建立过程”,将设计开发中需要的非开发软件及非交付软件(如操作系统、开发平台、运行平台)及时纳入软件配置开发库或提交信息中心纳入组织资产库进行管理。无特定软件产品规范约束时,软件代码注释率不能低于20%,关键软件单元规模不大于60行,重要软件单元规模不大于100行,一般软件单元规模不大于200行。在关键软件、重要软件中使用非开发软件时,必须进行安全性、可靠性分析和审查。
3.5 软件测试过程
3.5.1 基本要求
软件测试过程相关工作按《软件工程体系》的相关要求执行。由《软件开发计划》中的策划安排的机构完成,从事相关软件详细设计和实现的人员不能是负责合格性测试的人员,但可以为测试过程提供必要的测试文档和测试用例。
本阶段为相应的测试活动制订计划,并准备测试说明和测试用例、测试规程和测试数据,测试用例应涉及决策和体系设计的所有内容,相应信息应记录在书面的设计开发文档中或质量记录《软件验证、确认测试报告》。软件测试计划和测试说明应经过评审,必要时邀请信息中心参加评审。测试人员应按照已批准的软件测试计划,开展相应的测试工作,在进行合格性测试时应按照测试计划要求配置软件测试环境,相应的测试要求在与软件真实运行环境一致或相容的测试环境下进行。测试前的源代码应来自开发库及以上的配置库,测试前(或回归测试前)对源代码进行编译,生成可执行程序(目标代码),并将可执行程序灌装到产品中后方可进行测试,测试过程中的源代码及可执行程序一致性由测试人员负责,对测试问题加以跟踪和验证。测试人员要进行严格的回归测试,并对测试结果进行分析和评价,按照项目策划的要求形成《软件测试报告》类技术文件或质量记录《软件验证、确认测试报告》。测试过程中若进行了修改,则应在通过回归测试后,重新纳入配置管理库中进行管理,将相关活动的原始记录移交项目组长期保存。
如项目策划需评审时,设计组完成本阶段的设计开发工作后提请进行阶段评审,不需编制文档时将《软件验证、确认测试报告》及相关原始记录提交科研生产管理部进行备案后可转入下一阶段工作。
3.5.2 军用软件特殊要求
针对按照2786A、438B执行的军用软件,注意本阶段还可细分为“单元集成与测试”“CSCI合格性测试”“CSCI/HWCI集成与测试”“CSCI/HWCI合格性测试”4个阶段。
顾客要求时:合格性测试计划应经军代表签署;邀请军代表参与合格性测试活动;关键软件、重要软件的合格性测试由总体单位指定的测评机构实施并提供测评报告。
3.6 鉴定及定型前准备及支持活动
3.6.1 基本要求
软件组按照《软件开发计划》的策划,完成生产和交付软件包的制作和确定,完成软件归档入库,并编制《软件生产作业指导书》,若编写的技术文档内容不能覆盖相关要求时,各CSCI均需编制《软件开发人员手册》(原软件编译说明)。按照《软件开发计划》的要求,完成《软件研制总结》《软件配置状态报告》《软件质量保证报告》等技术文档的编制及评审;按照《设计开发计划书》的要求,完成产品使用、移交、检定所需的生产、交付和后续维护文档编写;对本项目开发的监视测量软件或用于本产品的监视测量软件,应按照《监视测量软件管理制度》的要求,向计量管理部门提出确认申请,协助项目组开展部队试验、第三方测评、定型鉴定、培训维护等后续工作。
3.6.2 军用软件特殊要求
将整个准备及支持过程分解为软件使用准备、软件移交准备和软件验收支持3个子阶段。当顾客有特殊要求时,本阶段需编制必要的培训教材,以便为用户提供培训服务。
3.7 設计变更过程
3.7.1 基本要求
在软件全生命周期内,任何发现软件问题的部门及人员均向科研生产管理部提交《软件问题报告单》或质量信息联络单启动本过程。当项目组、软件组提出更改申请时可跳过《软件问题报告单》,直接填制《软件更改申请单》申请设计更改。
软件问题报告单处理:科研管理部门对《软件问题报告单》进行登记后,转给软件组按照《软件工程体系》的要求进行原因分析、提出处理意见,软件问题报告单应及时向顾客代表通告。软件更改申请单处理:若相关问题需对受控库、产品库中的软件配置项进行更改时,则由软件组按照《软件工程体系》的要求进行更改申请。软件更改控制单处理:软件更改通过回归测试验证后,按照《软件工程该体系》申请科研管理部门对本次更改活动进行验证和批准后,纳入配置管理受控。
3.7.2 军用软件特殊要求
对于已纳入基线的软件配置项,科研管理部门应将软件问题报告单中反映的问题及其处理结果及时通报军代表。同时,软件更改后的回归测试邀请军代表参加。
3.8 配置管理活动
软件配置管理员按《软件工程体系》的相关要求编制《软件配置管理计划》并执行。
3.9 质量保证活动
软件质量师按《软件工程体系》的相关要求编制《软件质量保证计划》并执行。
3.10 软件生产过程
3.10.1 基本要求
新产品试制或批量产品生产中应参照《产品制造部软件生产管理办法》进行控制,期间根据生产计划中的软件版本领用相应的生产及交付软件包用于生产。生产过程中严格按照《软件生产作业指导书》中规定的操作步骤,将相关软件配置项下载到相应单体中,并按照工序文件的要求做好生产记录。设计部门协助进行样机生产时,也应使用从受控库中领用的“生产及交付软件包”。
3.10.2 军品生产中的特殊要求
产品制造部门或设计部门在生产每批软件前,填写出库方式为“发布使用”的《软件配置出库单》,其描述信息应与《军用软件配置库有效版本清单》中的描述严格一致,经科研管理部门批准后,用于领用软件生产用作业光盘,并在生产完成后及时将光盘归还。每批软件生产前填写的《软件配置出库单》应经军代表签署意见。
3.11 交付及服务过程
设计部门根据总体单位要求,向相关方(如测评机构、总装厂、顾客等)单独交付软件产品(如设计文档、源代码、执行程序等)时,填写出库方式为“发布使用”的《软件配置出库单》,经科研管理部门批准后,从受控库、产品库领用相关软件配置项,并按照相关规定及要求进行交付。
4 软件控制过程的监视、测量和分析
过程测评按表1所述方式进行。
5 结 语
本文主要研究了基于GJB 5000A的武器装备软件产品在软件生命周期内进行活动控制的方法,并结合科研产品特点提出了相关软件控制要求。本文可用于指导软件开发的设计工作,希望能够为相关人员提供借鉴。
主要参考文献
[1]朱竞夫.装甲兵作战模拟训练装备综述[J].现代军事,2005(12).