GJB软件需求规格说明模板及详解
GJB软件需求规格说明模板及详解
1 范围
1.1 标识
1.2 系统概述
1.3 文档概述
2 引用文档
GJB XXX
XXX XXX;
XXX XXX。
前2章通用不再赘述
3 需求
需求是软件需求规格说明文档的主要内容。需求包括三类:功能需求、质量因素和设计约束。
在GJB438模板中的对应关系如下。
(1)模板的3.2CSCI能力需求是指软件的功能需求。
(2)模板的3.6适应性需求、3.7安全性需求、3.8保密性需求、3.11系统质量因素和3.13人员需求是质量因素类需求。
(3)模板的3.12设计和实现约束是指设计约束类需求。
(4)模板的3.1要求的状态和方式是与软件使用要求(用途)密切相关的要求。
(5)模板的3.3CSCI外部接口需求、3.4CSCI内部接口需求和3.5CSCI内部数据需求是支撑功能需求的接口需求和数据需求。
(6)模板的3.9CSCI环境需求和3.10计算机资源需求是指CSCI运行所依赖的计算机软件和硬件资源需求。
(7)模板的3.14培训需求、3.15保障需求、3.16其他需求、3.17包装需求等主要是指支持软件交付的需求。
3.1 要求的状态和方式
(1)CSCI仅有一种运行状态时,对该状态进行描述即可。
(2)CSCI有多种运行方式和状态时,可先用表5-6说明方式与状态的关系
(3)用文字或状态图说明这些状态/方式之间如何转换
(4)CSCI有多种运行方式或状态时,需按表5-7说明本文的需求在哪个状态/方式下有效。
3.2 CSCI能力需求
(1)如果本CSCI在系统设计阶段已经明确的任务中包含多个软件,则在此处用UML构件图说明这些软件之间的关系,如图5-1所示。
(2)用表格说明CSCI所包含的软件用途,如表5-8所示
(3)画出CSCI的UML用例图(见图5-2),并列表说明各个用例(见表 5-9)。
(4)按照要求,以每个CSC1用例为小章节分条说明CSC能力需求。每个CSCI用例使用如下CSC1用例规约表进行描述,见表5-10。
3.3 CSCI外部接口需求
(1)画出CSCI与软件外部的其他硬件和软件之间的接口图。注意:此处的外部接口图应该与系统设计说明的系统内部接口图中与此CSCI相关部分的描述完全一致。
(2)使用表5-11说明CSCI外部接口的相关信息。注意:表5-11内容应该与系统设计说明的系统内部接口的描述完全一致。
(3)对识别的接口逐条进行说明。
注意表5-12中内容应与系统设计说明的系统内部接口的述完全一致
3.4 CSCI内部接口需求
(1)如果本CSCI在系统设计阶段已经明确的任务中仅包含一个软件,或暂时无法明确软件个数,需要在CSCI软件设计阶段确定的,此处可留待设计时描述。
(2)如果本CSCI在系统设计阶段已经明确的任务中包含多个软件,则应说明该CSCI包含的每个软件之间的接口。
(3)画出CSCI所包含的软件之间的接口。
(4)用接口需求表说明CSCI所包含的软件之间接口的相关信息
3.5 CSCI内部数据需求
(1)从各个CSCI用例中找出软件需要处理的实体类。
(2)画出CSCI所包含的实体类的UML类图,如图5-3所示。
(3)用表格说明所有实体类的相关信息,如表5-13所示
(4)逐条说明识别出的每个类的数据需求,见表5-14。
3.6 适应性需求
GJB438 原文要求“本条应描述关于CSCI将提供的与安装有关的数据(如场地的经纬度或场地所在地的赋税代码)的需求(若有),应指定对要求CSCI使用的运行参数(如指明与运行有关的目标常数或数据记录的参数)的需求,这些运行参数可以根据运行需要而改变。”
提示:是指在不同用户现场安装时需要修改的安装数据,并指明这些参数涉及的CSCI,如地理数据配置文件、菜单配置文件、通信端口参数等。
例如,某电机控制软件可以部署运行在一个系统的多处电机的控制板上,软件运行时需要加载不同的配置文件,根据配置参数自主适配不同的电机。那么,该软件的适应性需求就应说明配置文件参数如何适配不同的电机。
3.7 安全性需求
GJB438原文要求“本条应描述关于防止或尽可能降低对人员、财产和物理环境产牛意外危险的CSCI需求(若有)。”
提示:
(1)要从本软件自身的安全性上考虑,而非外界提供的安全措施(如全系统的网络安全等)。
(2)软件自身安全性主要体现在两方面:①防止恶意入侵的安全性,如防止非法用户登录的需求、防止数据库核心数据被篡改的需求、防止保存在本地的数据文件被篡改的需求、防止数据丢失后软件无法运行的需求、防止重要作战指令被误发的需求等;②防止人员、设备受到伤害的安全性,如意外地发出一个“自动驾驶关闭”命令,软件没有进行安全连锁判断或提示飞行员确认的前提下直接执行了该指令,可能导致飞机失事
(3)安全性需求要明确,要具备可测试性。
(4)不要混淆需求和解决方案。
例如,某CSCI的安全性需求为“在软件的人口、出口及其他关键点上,应对重要的物理量进行合理性检查,并采取措施进行处理,以便进行故障隔离。
这条安全性需求存在以下问题。
首先,不符合安全性需求定义的两条原则,不属于安全性需求范畴。
其次,需求描述不明确,“其他关键点”和“重要的物理”等没有明确的定义,软件架构设计人员难以对此条需求给出有效的设计决策;测试人员更是难以确定测试内容。
另外,有混淆需求和设计的嫌疑。这条描述已经站在了“解决方案域"内,给出的是一种检查输入输出数据是否合理的方案,但是这条方案针对的是什么需求并不明确。
3.8 保密性需求
GJB438 原文要求“本条应描述与维护保密性有关的CSC1需求(若有)。(若适用)这些需求应包括:CSCI必须在其中运行的保密性环境、所提供的保密性的类型和级别、CSCI必须经受的保密性风险、减少此类风险所需的安全措施、必须遵循的保密性政策、CSCI必须具备的保密性责任、保密性认证/认可必须满足的准则等。”
提示:保密性需求是指 CSCI使用环境中是否存在数据存储、销毁、传输等保密性需求。
另外需要注意的是,需求都应是明确的要求,而非笼统的要求。例如,保密性需求“在紧急情况下,需要销毁重要数据”就是不明确的需求,应该明确说明销毁哪些重要数据。
3.9 CSCI环境需求
提示:此处的 CSCI环境需求应与系统设计说明的软件部件的运行环境保持一致。
CSCI运行环境需求表示例见表5-15 所示。
3.10 计算机资源需求
1)计算机硬件需求
GJB438 原文要求“本条应描述针对本CSCI必须使用的计算机硬件的需求(若有)。(若适合)这些需求应包括:各类设备的数量;处理机、存储器、输入/输出设备、辅助存储器、通信/网络设备及所需其他设备的类型、大小、容量和其他所需的特征。”
提示:对CSCI环境需求中的计算机硬件需求进行详细说明。
计算机硬件需求表示例如表 5-16所示。
2)计算机硬件资源使用需求
GJB438 原文要求“木条应描述本CSC1的计算机硬件资源使用需求(若有),例如:大允许利用的处理机能力、内存容量、输入/输出设备的能力、辅助存储设备容量和通信/网络设备的能力。这些需求(例如陈述为每一个计算机硬件资源能力的百分比)应包括测量资源使用时所处的条件(若有)。”
提示:对计算机硬件需求中的各项硬件的使用要求进行详细说明。
计算机硬件资源使用需求表示例如表5-17所示。
3)计算机软件需求
GJB438 原文要求“本条应描述本CSCI必须使用或必须被并入本CSCI的计算机软件的需求(若有)。例子包括:操作系统、数据库管理系统、通信/网络软件、实用软件、输人和设备仿真软件、测试软件和制造软件。要列出每一个这样的软件项的正确名称、版本和参考文档。”
提示:对CSCI环境需求中的计算机软件需求进行详细说明。
计算机软件需求表示例如表5-18所示。
4)计算机通信需求
GJB438 原文要求“本条应描述本CSCI必须使用的计算机通信方面的需求(若有)。例子包括:要连接的地理位置;配置和网络拓扑;传输技术;数据传送速率;网关;要求的系统使用时间;被传送/接收的数据的类型和容量;传送/接收/响应的时间限制;数据量的峰值;以及诊断特性。”
提示:这条要求应该是指CSCI在运行环境中,与其他软件和硬件进行通信的需求,这个已经属于系统内部的通信需求。例如,CSCI通过什么速率的串口与其他CSCI通信;如果通过 CAN总线与其他 CSCI通信,对传送/接收的数据容量是否有要求;使用IO 口通信是否有诊断特性需求等。
3.11 软件质量因素
GJB438 原文要求“本条应描述合同(或软件研制任务书)规定的或由较高一级规格说明派生出的软件质量因素方面的CSCI需求(若有)。例子包括有关CSCI功能性、可靠性易用性、效率、维护性、可移植性和其他属性的定量要求。”
提示:此处的软件质量因素原则上直接来源于软件研制任务书的要求;也可以结合系统规格说明中与本 CSCI相关的质量属性进行分析。质量因素分析示例见表5-19。
示例1,某星载嵌人式软件,其可靠性需求为“为防止空间单粒子效应,软件应有措施保证每次加载正确的程序。”针对这条需求,软件设计人员给出设计决策为“存储在Flash中的程序代码采用三备份存储,当程序装载时采用三取二判决进行装载。”
示例2,对关键等级较高的嵌入式软件,通常都有恢复性需求“软件在故障后能够恢复运行”。针对这条需求,软件设计人员给出设计决策为“采用硬件看门狗,软件定时喂狗,若超时则软件被重新启动。”
3.12 设计和实现约束
提示:四类约束=业务环境约束+使用环境约束+构建环境约束+技术环境约束。这四类约束分布在不同层面的需求。
业务环境约束。属于业务级需求,来自出资方的约束,如上线时间、预算、集成、业务规则、行业法律法规(禁止使用解释性编程语言)等;由出资方指定技术选型(某平台、必须使用某数据库系统、必须遵循某数据标准、应与原某系统集成、应与某系统互连互通等)。
使用环境约束,属于用户级需求,来自使用方的约束,如使用者的专业能力、何种人群分布式使用、使用环境有电磁干扰、车船移动等因素。
构建环境约束。属于开发级需求,来自开发和维护人员的约束.如开发人员的技术水平、业务知识、管理水平等。
技术环境因素。来自业界当前技术环境约束,如技术平台、中间件,编程语言成熟度等
3.13 人员需求
GJB438 原文要求“本条应描述与使用或支持本CSC的人员有关的需求(若有)”注意:本条不应该描述与开发人员相关的需求,也不是单纯描述 CSCI使用人员的款量、技能需求。
本条的目的是通过对软件使用或支持人员的数量、技能等信息进行分析,得到对CSCI质量因素方面的需求。例如“允许多少用户同时使用”等。
3.14 培训需求
对具备人机交互界面的软件而言,对使用人员进行培训是有必要的。所以,本条应该摇述与培训相关的需求。例如,需要培训的操作人员(角色)、数量、培训使用的教材(包括操作手册、用户手册、电子交互手册,以及其他教材)等。
注意:本条不是对软件使用方提出需求,而是站在需求方的角度,对系统研制方提出培训需求,要求研制方对软件使用方进行培训,要求研制方提供合适有效的培训资料。
3.15 软件保障需求
GJB438 原文要求“本条应描述与软件保障考虑有关的CSCI需求,这些考虑可以包括:对系统维护、软件保障、系统运输方式、对现有设施的影响和对现有设备的影响”。
本条的目的通过对软件交付后,如何使得软件保障机构能够保障软件正常运转进行分析,得到与保障工作相关的软件质量因素方面的需求。
注意:本条不是对软件保障机构提要求,而是站在需方的角度,对软件研制方提出需求,要求研制方基于软件的维护保障工作的顺利实施,分析本 CSCI需要承担的职责。
3.16 其他需求
GJB 438 原文要求“本条应描述上述各条未能覆盖的其他CSCI需求(若有)”。这条的目的是如果需方还有在合同中,以及上述需求中未覆盖到的其他需求,包括研制方应提供的文档需求,可以在本条进行说明。
3.17 包装需求
GJB438 原文要求“本条应描述为了交付而对CSCI进行包装、加标记和处理的需求(若有)”。
这条的目的很明确,站在需方或研制总承包方的角度,对CSCI交付时的包装提出要求。例如,以光盘为载体交付程序安装包,光盘外包装上应贴标签,标签应明示软件名称、标识、版本、时间、厂家、联系人等信息;以纸质为载体提交需交付的软件用户手册,手册的外包装要求等。
3.18 需求的优先顺序和关键程度
GJB438 原文要求“本条(若适用)应描述本文档中诸需求的优先顺序、关键程度或所赋予的指示其相对重要性的权重”。
这条包含两方面的要求,一是需求的优先次序,优先次序是研制方优先实现CSCI需求的依据; 称度。关键性,关键性是研制方需要特别关注是否需要特殊处理(如CSCI设计时需要给出专门的设计决策等)的依据。
例如,优先顺序定义为1和2。1是需要优先实现的基本需求;2是增强需求。CSCI需求的关键程度通常来自系统需求的关键程度。系统需求的关键程度是从系统安全性和保密性角度考虑的,建议由高至低分为三个等级(A、B、C)。
在系统设计阶段,由系统架构设计师将系统的每个能力需求(系统用例)分配给相应的软件和硬件。所以,CSCI需求是从属于某个系统需求的,其关键程度等同于相应的系统需求的关键程度。
需求优先顺序和关键程度列表示例如表5-20所示。
4 合格性规定
GJB438 原文要求“本条应描述所定义的合格性方法,并为第3章中的每个需求指定为确保需求得到满足所应使用的方法”。
合格性规定是CSCI合格性测试的依据。按照GJB2786A的要求,CSCI合格性测试应具有独立性(即必须由独立于CSCI研制团队的人员承担CSCI合格性测试)。本条的目的是站在需方的角度,为每条CSCI需求提出验证其合格性的方法。
GJB438 提出的合格性方法包括:演示、测试、分析、审查和特殊的合格性方法。详见表 5-21。
5 需求可追踪性
使用正向追踪表,说明系统的每个需求(系统/子系统规格说明中的三类需求)和本CSCI的能力需求(软件需求规格说明中的三类需求)的对应关系。
使用逆向追踪表,说明本CSCI的每个软件需求(软件需求规格说明中的三类需求)来自哪些系统需求。