军用软件开发必须遵循国家军用标准。需求规格说明文档的编写必须遵循GJB438B的要求。
GJB438B给出了需求规格说明的文档结构和编写要求:
所有的软件需求规格说明都应该按照这个文档结构来编写。对于实施GJB5000A标准的组织来说,需求规格说明的编写还要满足GJB5000A标准的要求。
在GJB5000A中对于软件需求的开发和管理有如下要求(此处仅列出与需求规格说明有关的专用实践):
对需求达成一致理解
进行需求的双向追溯
分配需求
标识接口需求
制定运行方案和场景
建立必需功能性的定义
分析需求
分析需求以达到平衡
注:其中前2个是GJB5000A二级的要求,后6个是GJB5000A三级的要求。
以上的GJB5000A要求都可以在GJB438B的需求规格说明文档中呈现出来。
GJB5000A这条实践要求用户和开发对需求的理解是一致的。在军用软件开发中,用户需求是用软件研制任务书来记录的,而需求规格说明则是开发对需求的描述。所以,要满足这一实践要求,就是要求需求规格说明所描述的需求要覆盖软件研制任务书的需求,并且与软件研制任务书的描述也是一致的。所以,编写需求规格说明绝不能脱离软件研制任务书。
为确保本实践的实现,通常还会要求开发人员参加软件研制任务书的评审,代表用户需求的软件研制任务书编写者参加需求规格说明的评审。
在编写需求规格说明时,要进行需求的双向追溯。这一内容呈现在《需求规格说明》的第5章“需求的可追踪性”。通过建立需求规格说明中的软件需求与软件研制任务书的用户需求的正向追踪和逆向追踪,以确保软件需求覆盖用户需求。
GJB5000A这条实践要求将已经确定的用户需求(包括性能需求、设计约束等),分配到软件需求的功能需求、接口需求、软件质量因素、安全性需求等方面。
即把用户需求以开发人员熟悉的语言表述在需求规格说明的第3章节中。
尤其注意的是,需求规格说明中并没有单独的“性能需求”的内容需求规格说明书在哪个阶段,这本身就是要求将软件研制任务书中的“性能需求”要分配到需求规格说明的能力(使用能力需求而非功能需求,隐含的意思就是这里不仅仅描述功能,也包括性能)需求中。
GJB5000A这条实践要求标识出软件产品的外部和内部接口需求。
在需求规格说明当中对应的就是3.3节、3.4节。要求接口需求应覆盖软件研制任务书中的接口需求;接口需求的定义应明确信源、信宿、激活源,以及软件的数据特性等项,应使用适当的图文表示接口。
GJB5000A这条实践要求建立软件产品的运行方案和运行场景需求规格说明书在哪个阶段,以更好地进行需求分析。
在需求规格说明当中对应的就是3.1节“要求的状态和运行方式”。
在这里,开发人员要描述出软件有几种运行状态,每种状态可用的功能,状态之间如何转换等内容。通常要绘制状态转换图。
GJB5000A这条实践要求对软件产品的功能进行分析和量化。
在需求规格说明当中就是在3.2节“CSCI能力需求”中使用功能结构图(全局的功能定义)、活动图(或流程图)和用例(单个功能定义)对功能需求进行定义。
GJB5000A这条实践要求分析需求的充分性和必要性,就是分析需求间的相互影响;分析部件需求是否满足产品需求,产品需求是否满足系统需求;分析需求描述是否满足需求验收准则;标识关键需求。
以上分析结果体现在需求规格说明的第3章节中。
GJB5000A实践要求分析需求时应兼顾各个利益相关方的需求,力求平衡。
以上分析结果体现在需求规格说明的第3章节中。
综上所述,军用软件的需求规格说明文档不仅要满足GJB438B的要求,还应满足GJB5000A中“需求开发”和“需求管理”两个过程域要求。
这正是:
熟悉需求两过程,融入文档编写中
符合标准求实效,不让五千悬空中
作者简介:王小双,长期从事GJB5000推广、实施、评价、改进的工作,创建《软件工程之思》微信公众号,一直在《软件工程之思》分享GJB5000、CMMI、软件工程的知识和感悟。现致力于GJB5000咨询以及软件过程改进、软件工程能力提升的研究工作。
限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信: