分享好友 资讯首页 频道列表

功能安全系统需求的良好实践

2021-12-17 20:45
需求性文件对于产品开发的重要性不用多说,研发中的许多问题都是由于不完整的、不成熟的、不正确的、模糊有歧义的、糟糕的系统需求而引发的。对于功能安全领域,如何开发出安全、可靠的产品,良好的系统需求性文件是关键的一个环节,笔者将结合功能安全标准以及实践经验,来讲讲如何写好功能安全产品系统需求的一些良好实践方法。
需求的结构化
系统需求应采用结构化的方法,根据需求类型进行分类,逐级细化,拆分到最简单直观的层次,常见的结构化分类方式包括:
  1. 系统应用场景及任务概要;
  2. 输入文件;
  3. 参考标准;
  4. 功能需求(包括安全功能及对应的安全目标,和非安全功能);
  5. 性能需求;
  6. 接口需求;
  7. 环境适应性需求;
  8. 可信性需求(可靠性、可用性、可维护性、维修保障);
  9. 系统约束和假设;
  10. 其它。
其中1,2,3,9,10为系统需求的描述性内容(information),为4,5,6,7,8提供支撑,而4,5,6,7,8则为系统需求的正式内容(specification)。
需求的基本属性
EN50126、DO-178C、ISO26262都有对需求属性的基本要求,包括:
完整性(complete):每个需求项应包括对应此项的全部必要信息,不需要进一步扩展;
正确性(precise):需求描述的内容如功能定义、性能要求等是正确的;
无歧义(unambiguous):不能模棱两可,需求只能有一个解释,设计实现者可以无歧义地理解;
可验证(verifiable):需求是可验证的,通过评审、分析或测试的验证方法,以确定需求被正确的实现,对于可测性需求能够对照需求完成测试用例;
可追踪(traceable):需求的可追踪性以便其可以追踪到更底层的需求,纵向追踪如软件到代码级,硬件到板级,横向追踪如需求与测试用例之间的对应关系;
可维护(maintainable):需求条目的修改、删除、增加是清晰可见的,项目内部对于需求的更新有着一致的认识。
为什么需求有着以上的属性,有些人认为我是这么想的,写这么复杂干什么。系统需求在产品开发生命周期中作为顶层文件,不同的参与方都将利用系统需求开展开发、安全分析、验证确认等工作,因此需求必须明确、清晰、简洁,以易于理解。
下面举一些示例来说明下什么是良好的需求。
良好需求的示例
1.系统功能需求
系统功能应逐级分解,以致到最低层不可再分解的条目。如图,以制动系统的紧急制动功能为例,从顶层功能向下分解,包括EB1(制动指令获取)、EB2(制动指令传递)、EB3(列车载荷计算)、EB4(紧急制动力计算)、EB5(部分制动力丧失后再分配)、……。每个子功能再按照输入-处理-输出的逻辑关系进行描述。


系统需求结构化示例
2.安全相关功能需求
对于安全相关功能,不仅应标记出从风险分析分配的安全目标(SIL等级),而且在需求的通用属性要求外,还应规定:


FTTI时间指标定义
采用哪些故障诊断措施,依赖于系统的危害分析以及选定的安全完整性等级。
安全功能的目标在于防范风险,系统完整性在于系统的健壮性,因此更多考量的是各种故障场景下,系统是否有监控、差异化的故障诊断和响应机制,保障系统发生导向危险失效后能够在规定的时间内导向安全侧。因此对于安全功能要求,以上三点要求缺一不可。
3.可信性需求
轨道交通常称为RAM需求,包括可靠性、可用性、可维护性和维修保障,常用MTBF、MTTR、可用性A等定量指标进行规定,但在规定定量指标前,确定系统的下述属性非常重要:
4.性能需求
可以划分为时间性需求和空间性需求,时间性需求有系统运行周期、响应延时、上电启动时间、重启时间等;
空间性需求有内存容量、处理器容量、通信缓存容量、带宽容量,考虑未来的可扩展性和灵活性。
5.文字和图形化的结合
采用图文结合的方法用于需求编写,如
系统接口图——用于描述系统内外部接口,并在接口需求再详细描述接口规格;
状态转移图——用于描述系统不同模式之间的转换关系,每个状态用文字描述;
数据流图——用于描述不同系统之间的数据流和时序关系。
但应注意图形并不能完全替代文字,而是作为文字的辅助,帮助阅读者的理解。
其它还有一些通用性的需求,如可测试性、可制造性等,不再赘述。另外,现代安全关键系统的需求编写,还常采用形式化/半形式化、基于模型的设计方法,下面讲讲这些方面。
首先应该了解需求的一些特性要求,需求的要求分为单个需求项要求和一组需求的整体要求。
单个需求项应符合以下要求:
由单个需求项构成的一组需求,应符合以下要求:
每条需求除了它的内容外,还具备以下这些属性:
属性
描述
ID
需求的唯一标识符
类型
功能、接口、RAM、性能、……
TEXT
需求的内容
SOURCE
需求的来源
STATE
开发中、挂起、已实现、已测试、……
PRIORITY
Key, mandatory, optional, desirable
Verifiable
是/否
type of Verification
走读、分析、建模、测试
Testable
是/否
Version
版本
在了解以上需求的要求和各类属性后,如何编写需求以符合以上的要求。需求表达可以采用自然语言和模型语言两种方法或它们的组合,现在有一种认识,认为模型语言要比自然语言更高级,但是模型的建立并不能替代自然语言表达的需求,如果需求编写者用自然语言表达出来的需求是模棱两可的,那也不能奢望他用模型语言能够表达清楚。
从实践来说,推荐两种方法相结合,在高层次的需求,用自然语言表达更恰当,可以结合一些半形式化方法(公式、图形、表格、流程图、时序图或其它UML和SysML)作为补充;
在低层次的需求,定义了精确的硬件和软件行为,采用形式化或半形式化方法更合适,但也没有必要每条需求都用。


EN50128 软件需求推荐的技术方法


ISO26262 安全需求推荐的技术方法
自然语言(文本语言)作为需求表达的基本方法,人们在日常表达经常存在歧义,在需求管理中,经常会举下面这个例子。


以上这个例子虽然有些夸张,但实际项目中不同的人由于知识背景、社会背景和经验能力的差别,对同一需求的理解确实千差万别,需求和设计实现出现这么大的差异也就不足为怪了。
在需求的表达上有基本的规则可以遵循,建立一个需求模板是很有必要的,使得需求简单且易于理解,减少自然语言对语义表达的影响。
在Klaus Pohl. Chris Rupp的《Requirements Engineering Fundamentals》一书中,推荐了一类描述功能需求的自然语言模板如下:


在这个模板框架中,采用"主语+动词+宾语+补语 "的结构,要求的强烈程度分为SHALL/SHOULD/WILL/MAY,需求的过程表达了三种行为:
THE SYSTEM SHALL/SHOULD/WILL/MAY <process verb>
THE SYSTEM SHALL/SHOULD/WILL/MAY provide <whom?> with the ability to<process verb>
THE SYSTEM SHALL/SHOULD/WILL/MAY be able to <process verb>
最后additional details中,用于确定系统在什么条件下执行该流程,常见的条件有逻辑条件和时间条件。
第二个减少需求理解的冲突和误解的方法是,尽早地建立一份项目组共享的术语、缩写和缩略语清单,它包括:
通过定义术语列表,可以大大提高需求的可理解性,从一开始就避免对可能导致冲突的术语的误解和不同的解释。

以上是对需求的要求、属性和编写规则的一些方法,良好的需求文本对于项目组的每一个成员而言,能够使项目的目标更明确可达,提高协作的工作效率,对于有外部审核要求的项目,简洁清晰的需求对于外方审核也会减少不必要的沟通成本。对需求编写者个人来说,写出一份赏心悦目的需求文档,如同做出一道色香味俱全的美味佳肴,工作的心情自然舒畅。

参考文件:
EN50126-1 2017 Railway Applications - The Specification and Demonstration of Reliability, Availability, Maintainability and Safety (RAMS) Part 1: Generic RAMS Process
EN50129 2018 Railway applications – Communication, signalling and processing systems – Safety related electronic systems for signalling
ISO26262-4 2011 Road vehicles - Functional safety -Part 4: Product development at the system level

来源:薄说安全

评论 0
同类信息
EMC电波暗室的一些资料介绍学习 增加知识储备
电波暗室(anechoic chamber)通常对于辐射试验来说,测试场地分为三种,分别是全电波暗室、半电波暗室和开阔场。在这三种测试场地中进行的辐射试验一般都可以认为

2021-12-177167

汽车电磁兼容(EMC)问题的研究
一、汽车电磁兼容的问题概述为满足人们对汽车的安全、环保、节能以及舒适等性能日益增高的要求,装备电子、电器设备,应用电子技术是最有效的手段 。制动防抱死

2020-07-138951