本文章结合MIT教授Nancy Leveson的系统工程理论和个人理解进行整理。
目前在自动驾驶系统供应商(除Bosch和AVL外)的开发流程中很少由见到STPA应用的痕迹,但对于自动驾驶系统来说,STPA对于三级自动化以上系统级工程的帮助是巨大的,这种源自于航天工程的系统分析工具将在很大程度上帮助完成Cost down的工作。

Cost during development
本文依据Nancy教授的系统安全分析逻辑分为以下五个部分:
- Why do we need something else?
- What is STAMP and how does it differ from what people do now?
- What kinds of tools are available?
- How is it being used?
- Does it work?
Why do we need something else?
在系统安全的领域,产品开发现有的安全措施已经存在了近70年,相关思想和工具并没有太多的改变,但相关系统中的软件比例却开始大幅提升,如下图:
从1970年开始,人们开始使用计算机设备用于控制系统,增加了系统复杂性和新技术的冗杂度,也改变了人们控制系统的方式,人们开始扩展原有的工具应用于新的系统安全领域,但收效甚微,其原因在于原有老旧的安全工具著重于传统控制模型下失效事件的发生原因,而新的控制模型已经到来。对于马车的分析方法很难应用于对导弹的分析中来。
对于现代的系统工程而言,计算机软件对于系统的影响分为四个方面:
- 由于系统的控制模型随着计算机控制系统的到来而发生的变化,其本质原因在于软件带给系统的变化,但这里并不意味着软件的失效,大部分的软件本身是不会失效的,软件只是在一个目标平台上实现功能的工具。Software is pure design and design do not "fail". 所以在系统工程的定义中,软件并不会出现如硬件一般的Random Failure.
2. 在足够成熟的但出现问题的系统中,软件的问题最后总会映射到系统设计的不足,在系统设计中可能会出现的两个问题为:
- 对于被控系统或计算机错误或不完整的需求
- 不能被解决的系统状态和环境因素
对于自动驾驶系统来说,系统工程由系统架构师发起,确定系统需求,由软件工程师理解系统需求后设计软件系统,人们的眼光往往更多的聚焦于软件工程师的Coding的实施,而忽视了系统工程中重要的系统需求的过程,而往往软件工程的质量并不能完全覆盖系统工程的质量。
3. 软件几乎允许无限制的系统复杂度,这意味着:
- 无法计划、理解、预测和对抗不期的系统行为,传统的纯硬件行为意味着可预测的控制,但软件带来的控制的新方式带来了新的风险。
- 需要使用足够详尽的测试以解决所有的系统设计错误。
波音747的软件在其平台上是安全的,但并不意味着在波音737的平台上同样安全,也就是说独立的软件安全并不会决定系统的安全,人们可以说系统在某目标平台上在某种情况下是安全的,但无法认为系统是安全的。辅助驾驶系统往往要求驾驶员的双手放在方向盘上,但如果在方向盘上用其他的方式施加同样的力矩辅助驾驶系统便无法检测,导致系统错误的感知到人的决策,极易导致交通风险。而这一切的本质就在于软件带来的控制思维的变化。
事故的发生存在于以下方面:
以上的失效事件均可以通过同质或异质冗余的方式解决。
模块间的交互失效往往不但关系到接口的失效,还关系到系统设计框架的缺陷,这些问题是最难以发现并解决的。
4. 软件的存在改变了人们在系统中的定义
系统的使用者或者交互人员往往难以做到对于系统的全面了解,可以使用以下的方式解决这个问题:
- 训练系统的操作者等措施使系统操作者更加了解系统。
- 提高系统的自动化以代替操作者,或对于系统操作者提出操作的限制。
从系统设计自身的角度上看,操作者的错误是一种症结,而不是一种病因,在高复杂度的系统工作中操作者的角色与传统系统存在不一致的情况,与此同时系统的设计本身也存在着允许操作者进行误操作的接口,这就要求在系统设计的过程中注意设备的设计以及无意义操作的减少。
That is why we need something new!
2. What is STAMP and how does it differ from what people do now?
STAMP (System-Theoretic Accident Model and Processes) 是一种用来描述事故是如何发生的模型,它将安全定义为一个控制问题,用于巨型复杂的系统,包含软件,硬件,人类,运行,管理等多个方面。STAMP认为危害来自于对于系统设计和运行缺少安全限制的原因,STAMP的目的是控制系统的行为以限制系统的安全。

并不使用预防危害的方式保证系统的安全,而使用安全限制的方式来控制系统表现
系统安全的工作过程践行了STAMP的核心思想,Ways to Cope with complexity:
- Analytic reduction
- System theory and system engineering
什么是Analytic reduction?
一般情况下,若需要设计一个高复杂度的系统,第一件事情就是把高复杂度的系统分为小的部分,我们可以将系统认为物理层面和功能层面的存在,那么就可以将系统进行物理划分和功能划分后进行独立的分析和设计。这一切的工作建立在子系统间足够独立、子系统间不会出现非线性的交互,和子系统均能在母系统中协同工作的基础上。
在当下的自动驾驶系统中这些情况显然难以满足,只进行FMEA,FTA 此类工作工具对于系统安全显然已经无法满足需要,在当下的复杂系统的系统安全设计思想中,冗余和隔离,高集成度,Fail-safe的系统策略需要被考虑,对于操作者来说,操作空间、操作流程、Checklist,培训的方法也同样被列为重要的手段。
什么是System theory and system engineering?
系统工程作用在复杂系统的完整分析上,专注于完整的系统而非独立的子系统,包括所有的社会因素以及技术因素
STAMP架构下的系统模型就是下图中大环套小环的存在,假设最底层的控制逻辑是辅助驾驶功能ACC最基本的逻辑,包括感知决策和执行三个层面,那么还会由最底层的功能系统延伸到上层的操作域,到公司管理、相关法律法规以及国会:
在模型开发的基础上,控制模型对于系统工作Process的控制理论上可以在早期更好地控制被控对象的风险。
3. What kinds of tools are available?
STAMP只是一种理论,理论中包含许多过程与工具:
STPA是一种从上至下的系统分析工具,它可以用来分析系统中任何因素的安全限制,用于生成安全需求,它可以用来分析违反相关安全限制的场景用来提高系统的稳健性,它可以用来做技术的设计以及组织的设计,它可以帮助早期的设计工作和中后期的设计迭代和进化。
4. How the tools being used?
上图是在工业界的一个经典的控制回路,计算机控制CATALYST和COOLING WATER的阀门,软件工程师收到的需求往往是当有任何的错误发生时,停止控制链中的任何工作并发出警报提醒操作者。看上去毫无问题的一条需求却有着致命的缺陷,但当GEARBOX中的油位很低时,计算机停止工作,一切停止,操作工加满GEARBOX的油量后重启的时候计算机先打开了CATALYST的阀门,后打开了COOLING WATER的阀门,导致REACTOR过热出现危险。在完整的控制链中软件按照需求没有出现任何问题,其问题源于早期系统设计的不足。
我们通常会使用物理模型的方式作为软件需求的输入,但当功能模型被生成时,其中往往会出现未形成闭环的情况,导致系统控制策略的缺失。
可以使用表格的方式,对于Process做出定性的控制,以分析在不同的情况下,CATALYST与COOL WATER对于系统的影响,通过这种方式,可以得到早期的High Level Requirement:
- Water valve shall always be fully open before catalyst valve is opened
- Water valve shall not be opened more than X seconds after catalyst valve open
- Catalyst valve shall always be fully closed before water valve is closed
- Catalyst valve shall not be closed more than X seconds after water valve has fully closed
当我们得到了High Level Requirement的时候我们需要分析不安全的控制行为并避免或减弱其影响,如:
- 分析若CATALYST打开而COOLING WATER没有打开的原因
- 打开COOLING WATER的指令被发出,但没有执行的原因
- Etc...
通过在系统工程中对于Process的定性安全分析来确定安全危害的来源并添加新的需求:
- Software shall check for feedback after issuing an Open/Close command. If not received in a specified time period, then assume valve not opened or closed
- There must be feedback to controller to determine that water is actually flowing through pipe before issuing an Open Catalyst command

Full co
ntrol loop example
5. Does it work?
STPA已经被用于太空、国防、汽车、核电等重要领域,相比FTA,HAZOP,FMEA,ETA来说,STPA同样分析危险的来源,并可以更好的发现与软件和人类相关的危害原因。正是因为STPA可以在早期确认风险的存在,在Top-Down系统开发的流程中相比于使用传统安全分析工具的系统开发的成本将被进一步的降低。