●王伟●
(中国电子科技集团公司第十研究所, 四川 成都 610036)
摘 要:软件文档作为软件产品的重要组成部分, 文档的质量直接影响软件的研发、 应用和维护。GJB 438经过数十年的讨论与修订, 其最新版GJB 438C于2022年3月1日起开始实施。基于新发布实施的GJB 438C标准, 归纳总结了该标准与其上一版标准GJB 438B之间的主要差异, 并简要地分析了标准变化的影响及意义, 在此基础上梳理了GJB 438C与GJB 2786A、GJB 5000B之间的关联关系, 基于软件工程化管理现状并结合项目实际情况, 提出对于新标准在贯彻实施过程中的剪裁思路, 为后续新标准实施应用提供了参考。
关键词:GJB 438C;关联关系;贯彻实施;剪裁
0.引言
在信息化浪潮的推动下, 软件在武器装备中的作用越来越重要。作为GJB 2786 《军用软件开发通用要求》[1-2] 的配套标准, GJB 438在军用软件研制过程中得到了极其广泛的应用, 其规定了软件开发文档编制的种类、 结构、 格式和内容等要求, 适用于军用软件开发过程中文档的编制 [3]。软件文档是软件产品的重要组成部分, 其种类、数量和内容质量对软件的开发成本、 开发效率和后期的升级维护都具体重要的影响。软件文档是把软件开发相关过程中一些不可见的事物转变为可直观看见的文本资料, 便于管理人员实施技术状态管理, 监督检查开发计划的进展情况, 从而提高软件研制过程中的可见性和可控性。
GJB 438B的编制主要以MIL-STD-498为参考,自从2009年发布后, 极大地提高了软件工程化的专业发展, 但是在工程化应用实践过程中, 也发现标准中存在冗余内容、 某些文档不常用、 某些文档中存在不适用的章节和缺少因素, 因此经过多年的论证和修改后, GJB 438C终于在2021年12月获批发布, 并于2022年3月正式实施。GJB 438从初始版本到最新的第C版已经前后发布了4版[3-6],对规范军用软件研制文档、 提高军用软件工程化水平和改进军用软件产品质量发挥了重要作用。
1.GJB 438C 与GJB 2786A、GJB 5000B的关系
GJB 438一直与GJB 2786有着密不可分、 相辅相成的关联关系。GJB 2786规定了军用软件完整的开发活动, GJB 438规定了这些开发活动输出的文档的编写要求。
GJB 2786A中规定了军用软件开发的26个活动要求, 其中包括12个基本开发活动、 6个支持活动和8个管理活动, 这些活动的具体实施可以按照GJB 5000B的要求执行 [7], 这些活动的产物在GJB 438C中有明确要求。归纳起来, GJB 438C与GJB 2786A、 GJB 5000B之间的关系如表1所示。
表1 GJB 438C与GJB 2786A、 GJB 5000B之间的关系
续表1 GJB 438C与GJB 2786A、 GJB 5000B之间的关系
2.GJB 438C与GJB 438B变化差异比较
2.1 增加载体和格式的要求
新增“4.1总则”, 描述了文档的载体和格式,明确了文档有纸质和电子文件介质2种载体;对于电子文件主要有数据库、 交互电子手册和文档处理器 (如WPS) 兼容的格式, 或者软件开发人员存储在计算机辅助软件工程工具中的格式等;这是依据实际情况对标准的补充完善, 对标准的实施几乎没有影响。
新增“4.3.7.1页号/页标记”, 明确文档的每一页应有唯一的页号, 适用时每页还可有文档号、版本/修订号和卷号等, 该内容与GJB 438B中“4.2文档编制b) 页码编制” 要求基本相同, 增加了关于数据库或其他格式方面的要求, 对于数据库类的文档考虑满足要求的同时还需考虑检索或访问方便。
2.2 文档种类缩减
GJB 438中的软件文档是依据软件开发活动中的相关任务所产生的, 宏观上可分为工程类文档和管理类文档两大类。GJB 438C相比GJB 438B删除了工程类文档3份, 管理类文档5份, 如表2~3所示。删除的8份文档中, 《软件配置管理计划》 和《软件质量保证计划》 合并到 《软件开发计划》中;《软件配置管理报告》 和 《软件质量保证报告》 合并到 《软件研制总结报告》 中;《软件输入/输出手册》 《软件中心操作员手册》 《计算机操作手册》 应用范围比较少, 因此这7份文档的删除对软件研制影响较小, 而 《软件研制任务书》的删除影响较大, 颇具争议。
表2 GJB 438C与GJB 438B工程类文档变化情况
表3 GJB 438C与GJB 438B管理类文档变化情况
2.3 重要文档修改完善
重点修改了软件测试计划、 系统/子系统规格说明、 系统/子系统设计说明和软件研制总结报告等文档, 具体如表4所示。
表4 重要文档变化情况
续表4 重要文档变化情况
3.GJB 438C标准剪裁思路
GJB 438C在“4.4 文档剪裁” 中指出, 承制方可根据项目所选择的生存周期模型、 合同的要求和实际活动, 确定所产生的文档种类, 并根据实际情况可对文档的种类进行剪裁、 合并和拆分 [6],同时在标准的正文中也明确了每份文档的适用范围。另外, GJB 438作为GJB 2786的配套标准, 文档的裁剪主要取决于软件相关过程活动的剪裁,所以应该将两个标准配合使用进行合理剪裁。
3.1 《软件质量保证计划》和《软件配置管理计划》的剪裁情况
在GJB 438B标准中给出了这两份文档的模板编制要求, 但是在GJB 438C中, 又删除了这2份文档, 将这2份文档的内容整合到 《软件开发计划》中。是否这两份文档就一定不需要编制呢?
根据GJB 438C标准中 “4.4文档剪裁” 要求,承制方可根据项目实际情况对文档进行合并和拆分, 且在 “5.1软件开发计划” 的详细要求中又明确指出, 必要时可单独编制《软件质量保证计划》《软件配置管理计划》。由此可见, 这两份文档的编制需要视情况而定, GJB 438C中不再作强制要求。
由于软件具有 “无形” 的特征, 软件质量监督管理最困难也是最重要的一环就是技术状态管理, 软件配置管理则通过配置标识、 配置控制、配置状态记实与评价、 配置审核等一系列方法对纳入管理的各配置项进行版本控制, 同时会设定若干基线, 比如功能基线、 分配基线和产品基线来控制掌握软件的技术状态 [8-9]。同时, 软件配置管理作为GJB 5000B中的一个重要的支持类的实践域, 贯穿于软件工程研制过程全生命周期, 而《软件配置管理计划》 正是实施配置管理活动的依据。
质量保证计划是为了软件开发过程中实施质量保证, 要想提高软件质量, 必须从源头就关注软件质量, 进行缺陷预防和质量管理, 而 《软件质量保证计划》 正是在软件需求分析和设计之前进行的, 能够帮助项目在整个软件研发过程中更好地开展质量管理活动。
所以在执行GJB 438C标准时, 不应该僵硬地理解为删除 《软件质量保证计划》 《软件配置管理计划》 就不能再单独编制这两份文档了, 而是应该根据单位贯彻标准情况、 项目实际情况、 质量管理等要求等综合考虑决定。
3.2 《软件研制任务书》的剪裁情况
《软件研制任务书》 主要描述的是用户需求,是站在用户角度去描述的;而 《软件需求规格说明》 描述的是软件需求, 是软件开发人员基于用户需求进行需求分析的结果, 需要分析清楚输入、输出、 前置条件和流程步骤等, 通常还包括一些隐性需求;二者描述角度不同, 差异也比较明显。
根据GJB 2786A的软件开发过程, 软件需求分析之前是系统需求分析和系统设计, 换言之, 软件需求分析的输入是系统需求分析和系统设计的输出, 系统需求分析的输出是 《系统/子系统规格说明》, 系统设计的输出是 《系统/子系统设计说明》 或《软件研制任务书》。从“系统需求分析—>系统设计—>软件需求分析” 完成了从 “用户需求—>系统需求—>软件需求” 的需求开发过程, 也正符合GJB 5000B中“需求开发与管理” 实践域。
对于军品而言, “系统” 的概念包含两种,一种是软件-硬件相结合的系统, 由硬件配置项和一个或多个软件配置项组成, 另一种是纯软件系统, 由多个软件配置项组成。对于系统中包含多个软件配置项, 通常系统总体设计师会根据用户需求 (技术协议) 进行系统需求分析和设计, 划分配置项需求, 确定配置项间的接口关系等, 编写《系统/子系统规格说明》 《系统/子系统设计说明》 《接口需求规格说明》 等系统级文档, 此时,软件需求分析的输入就是上述系统级文档。然而对于单软件配置项系统, 《系统/子系统规格说明》《系统/子系统设计说明》 通常会被剪裁或替代, 理论上, 直接根据用户需求编写 《软件需求规格说明》 即可, 但在工程实践中很难实施, 因为编写此文档的人员通常是软件设计师, 而软件除了功能、 性能和接口之外可能还包括复杂的算法、 模型建模、 接口协议, 以及其他隐性需求, 这些对于软件设计师来讲很难捕获, 因此需要系统人员编写 《软件研制任务书》 下达给软件设计师, 再由软件设计师进行软件需求分析, 并编制 《软件需求规格说明》, 此时软件需求分析的输入即为《软件研制任务书》。
综上, 对于包含多个软件配置项的系统, 系统分析与设计阶段, 系统人员应编写系统级文档,对于单软件配置项系统, 根据实际情况, 系统人员也可以编制《软件研制任务书》, 作为软件需求分析的输入。
4.结束语
GJB 438C相比于GJB 438B, 内容上进行了精简, 删除了多份不必要的文档;对标准原文章条进行了适当的调整和修改, 增加了一些示例和注解说明, 标准更易理解, 更加符合软件工程化的实际应用要求。在贯彻实施GJB 438C时, 应结合GJB 2786A和GJB 5000B的标准要求, 并根据项目实际情况, 对标准进行合理剪裁。