崔利杰,田宇,丛继平,马涛
(1.空军工程大学 装备管理与无人机工程学院, 西安 710051)(2.中国人民解放军95655部队, 成都 611530)(3.空军工程大学 研究生院, 西安 710051)(4.空军工程大学 信息与导航学院, 西安 710051)
现代飞机是一个具有多功能的复杂系统,呈现出相互关联、信息融合、人机结合、软硬件耦合的发展趋势,这使得影响飞机运行安全的因素增加、安全因素之间的关联性增强,导致事故模型的构建和安全性分析变得更为困难。ARP4761中描述的传统危害分析方法用来分析软件密集型系统的安全性,其有效性正逐渐降低。
国内外提出了多种针对软件密集型复杂系统安全性的分析模型和方法,例如,J.Rasmussen[1]提出的跨学科研究风险管理建模的风险管理框架、E.Hollnagel等[2]针对社会技术系统提出的功能共振分析法、Hong Sheng等[3-4]提出的应用于评估轴承退化程度的基于WP-EMD和SOM网络的特征提取模型等。2004年,N.G.Leveson[5]提出了用于对危险致因进行分析的系统理论过程分析方法(System Theoretic Process Analysis,简称STPA)。STPA是一种自顶向下的系统工程方法,它注重于从危险入手,对系统的各部件以及各部件之间的相互作用进行分析。
目前,基于STPA的安全性分析已被应用于各个领域。在软件分析方面,让涛[6]提出了一种基于STPA的软件安全性分析与验证方法;甘旭升等[7]成功地将STPA危险分析方法应用于ATSA-ITP设计中。在具体的复杂系统中,刘朝晖等[8]对数字化反应堆紧急停堆系统应用STPA方法进行安全性分析;王琳[9]提出了基于STPA的复杂机载系统安全性分析方法;曹顺安等[10]实现了直升机燃油系统运行的危险性分析。在交通系统运作中,王洁宁等[11]提出了基于STPA的空管运行系统安全分析方法;刘金涛[12]提出了基于STPA的需求阶段的高速列车运行控制系统安全分析方法;刘宏杰等[13]完成了基于STPA方法的平交道口安全需求分析;A.L.Dakwat等[14]总结了基于STPA的系统安全分析和模型检验。在军用领域,胡剑波等[15-16]进行了综合火/飞/推控制系统复杂任务的STPA分析,以及基于STAMP/STPA的机轮刹车系统安全性分析,拓宽了STPA方法的应用领域。相比于其他方法,STPA分析运用系统与控制理论,更多地考虑系统组件间的相互作用对系统整体安全性的影响。因此,对于高耦合复杂系统来说,该方法能够更加全面、准确地识别其安全性需求,对提升系统的安全性水平具有重要意义。随着安全学科领域的不断发展,安全性分析方法也在不断改进。突出表现为:致因机理从基于链式/树型事故因果模型向基于系统的、网络式的致因分析方法转变,危险源识别从传统的事后被动分析方法向创新的事前主动判别型危险源体系转变[17]。
目前基于系统理论和控制模型的安全性分析方法已在软件应用、系统设计等方面有了实践成果,但运用STPA理论分析的流程并不细致具体,未表明其与传统的安全性分析方法有何异同,也无法证明其得出的安全性需求是否完备,不能很好地体现出该方法的先进性和适用性。因此,本文将STPA方法与ARP4761中提供的安全性分析过程从潜在事故因果模型、评估结果(输出)、分析过程等方面进行比较研究,并对照GJB900A-2012《装备安全性工作通用要求》分析其对于军用标准的符合性,来体现STPA方法的优势与符合性,并针对在分析过程中发现的一些不足之处,提出改进方法。
ARP4761论述了民航飞机适航合格审定的安全性评估指南和方法,在考虑飞机运行环境的基础上,介绍了飞机级安全性评估的流程、方法和工具。安全性评估过程包括安全性需求分析以及为飞机研制进行的相关验证活动[18]。
ARP4761流程由三个部分组成:功能危害分析(FHA)、初步系统安全分析(PSSA)和系统安全分析(SSA),这些工作在研究系统的每个相关抽象级别(或层次级别)上执行。飞机研制中的安全性评估过程简述如图1所示[19]。
图1 安全性评估过程
故障和概率风险评估是ARP4761中描述的主要方法。针对飞机的安全性评估工作,使用基于故障的风险分析技术。分析的目标主要是定量的结果,定性分析只用于无法得到或不合适得到概率之处。
故障树分析(FTA)、关联图分析(DD)和马尔可夫分析(MA)是自上而下的分析技术,可持续向下分析到设计的详细层次。在FHA 识别故障状态之后,FTA/DD/MA作为初步系统安全分析的一部分,用来确定导致故障状态的较低层次的单个故障或组合故障。
故障模式与影响分析(FMEA)是一种系统的、自上而下的识别系统、单元与功能的故障模式并确定其对上层影响的方法。FMEA可以在系统的任一层次(例如功能、零件等)上进行,通常用来分析单一故障的影响。
共因分析(CCA)是对共因失效进行定性和定量分析的工具,可以用来检验系统间是否满足独立性要求,分析共因失效条件下对系统失效的概率[10]。共因失效分析得出故障模式以及一些外部事件所能引起的灾难性的或危险的故障后,必须避免导致灾难性的故障后果的共因事件;而对于危险的故障后果,这些共因事件发生的概率必须控制在给定的概率之内。
总体来说,ARP4761中安全性分析方法的共同特点如下:
(1) 假设事故是由部件故障和故障链引起的;
(2) 关注组件故障、常见原因/模式故障;
(3) 考虑组件之间有限的(主要是直接的)功能交互;
(4) 安全性等同于可靠性;
(5) 分析中不包括飞行员和其他操作人员,对人为因素进行了分类,但未对其进行处理;
(6) 可从概念形成阶段开始迭代系统工程。
在STPA中,控制问题被认为是导致系统发生危险的原因,其中控制问题是指未对系统各组件之间的交互、系统外部的干扰、系统部件的失效进行安全有效的控制。
STPA方法是基于STAMP(Systems Theoretic Accident Modeling and Processes)对已辨识的系统危险进行致因分析,即以控制为中心点,以系统中不安全的控制行为为着力点,对系统部件间的控制关系用分层的控制结构进行描述。通过过程模型,对不安全控制行为进行分类分析,找到系统危险核问题发生的根本原因,然后根据问题发生的原因可以衍生出对应的安全性需求(即安全约束)。通常认为,只有违反相应的安全性需求(安全约束)时,系统才会发生事故。
STPA分析的危险包含设计错误、组件影响、造成事故的社会、组织和管理因素,特别是与软件、人为因素和操作方面相关的危险。总之,STPA的目标是识别导致事故的详细场景,以便在设计中消除或控制它们,而不只是机电组件的故障或显示可靠性目标是否达到要求。
STPA理论首先针对控制行为进行分类,并将不安全的控制行为总结为四种类型:(1)没有提供控制行为;(2)提供了产生危险的控制行为;(3)过早或过晚提供安全控制行为;(4)提供的控制行为作用时间过短或过长。
STPA的过程可分为四个主要步骤:(1)定义分析目标,进行目标对象的系统级分析;(2)建立对象的功能控制结构;(3)识别潜在的不安全控制行为,分析单个组件的安全性需求;(4)分析不安全控制行为的致因,确定系统潜在的安全性需求:致因情景不仅包括组件故障,还包括其他因素,例如系统组件之间的直接和间接交互(可能没有“出现问题”),确定的致因情景作为开发系统和组件新的安全需求和约束基础。
STPA方法较之于ARP4761安全性分析过程,更适应高度复杂、软件密集系统的安全性分析。GJB900A提出的相关安全性工作项目,尤其是在软件安全性分析上,STPA方法表现出了极强的适用性。
ARP4761没有考虑危险因素与人为因素(HF)的相互影响,而STPA则将人作为系统的一部分进行分析,识别潜在模式的影响类型,以及由于实际自动控制状态与飞行员的心理模型之间不同步而可能产生的危险。STPA的目标与其他危险分析方法的相似之处在于:它试图确定系统危险是如何发生的,以便通过修改系统设计来消除或减轻危险。然而,其目标不是像ARP4761那样推导出概率需求,而是识别在设计或操作中需要消除或减轻的危险场景(危险被定义为系统安全工程中的危险,即系统状态或条件集,当与某些最坏的环境条件相结合时,将导致事故或损失事件)。总结STPA分析过程与ARP4761提供的分析评估过程在不同方面的主要差异,如表1所示。
表1 STPA与APR4761的差异
续表
从表1可以看出:STPA识别出了ARP4761中的安全性分析容易忽略的危险,特别是与软件、人为因素和操作相关的危险。
STPA的目标是识别导致事故的详细场景,以便在设计中消除或控制危险,而不是显示可靠性目标是否达到要求。ARP4761在分析之后的验证过程仍是必要的,以确保提供的需求得到充分验证。
在飞机复杂性和软件控制日益增加的过程中,过去简单、自动化程度较低的设计已逐渐被淘汰,航空领域的安全学需要采用新的方法来应对新的变化。ARP4761中描述的传统安全评估过程忽略了造成飞机事故的部分重要原因,因此,需要创建和使用更全面的方法来评估安全性,分析更多类型的因果因素,并将软件和人为因素直接集成到评估中;同时需要不断探索STPA以及其他新的安全性分析方法的潜力,进而对STPA进行改进或扩展。
GJB900A规定了装备寿命周期内开展安全性工作的一般要求和工作项目。本节将分析STPA方法是否符合和支持我军目前使用的这一安全标准中的相关工作项目。
(1) 安全性工作项目对照分析
①初步危险分析(工作项目302):
STPA可以(并且正在)用于PHA。它包括工作项目302中提到的所有因素。传统的危险分析方法,如人工、软件、接口、组件之间的交互、模式、运行环境和约束等,对上述因素的处理往往存在不足,而STPA提供了确定消除或减轻危险措施所需的信息。
除了简单地识别危险之外,STPA还确定了它们的因果情景。能在早期消除设计决策错误(根据系统安全设计优先),而不必在后期的详细决策阶段更改设计方案(撤销设计决策的返工代价高昂)。设计师们正在使用STPA作为他们早期设计工作的一部分,以帮助他们在无法逆转一些基本的设计决策之前做出提高安全性和网络安全性的决策。
②系统危险分析(工作项目304):
STPA通过生成系统和组件安全需求,确定它们产生的原因,并使用因果场景生成详细的设计和操作需求来支持这项任务。
一旦STPA确定了不安全控制行动(详细危险)的因果场景,如果不能完全消除危险,则确定如何验证和进行验证是很简单的。验证包括人工测试模拟器生成场景。此外,基于模型的开发系统可以使用不安全控制动作(详细的危险)来生成模型,并从这些正式的模型中生成软件测试数据,以确保危险软件行为的测试覆盖率。通过加强流程模型控制将要求与安全控制结构连接起来。
STPA方法是一个自顶向下的危险分析工具,它可以包含所有子系统。在STAMP和STPA中,子系统危险分析是一般系统分析的一部分。STPA识别危险和因果场景,这些场景可能涉及子系统行为,导致系统危险。因果情景中的信息(与任何危险分析技术一样)可以用于协助设计师确定设计缓解措施。与许多传统的危险分析技术不同,STPA不仅考虑故障,还考虑设计错误、定时错误、无意中起作用或在错误的条件下起作用等。STPA亦考虑人作为系统的一个组成部分,这与工作项目304.2任务描述中所要求相一致。
STPA将系统危险分析、子系统危险分析、功能危险分析和系统中的系统危险分析集成到一个过程中,并生成所有这些任务所需的信息。
③使用与保障危险分析(工作项目305):
STAMP安全控制结构可以包括操作控制结构,采用STPA进行使用与保障危险分析是可行的。在现有文献中,STPA已被用于操作飞行测试的安全性。使用与保障安全规划应从概念发展阶段开始,以便将作业安全纳入系统设计。STPA可以支持这种提前性分析。
④安全性验证(工作顶目401):
如工作项目302所述,从已确定的因果场景生成测试和演示具有可行性。
⑤安全性评价(工作项目402):
与其他危险分析技术一样,STPA以危险、潜在原因以及减轻或控制它们的形式向评价工作提供输入,但是作为一种危险分析技术,它也只能为这一过程提供输入,而关于每个危险和风险接受决策的最终决策则超出了STPA的范围。
此外,STPA与传统的危险分析方法的不同之处在于,它提供了关于危险人员和软件行为的信息。有关如何预防这些危险的具体设计决策由分析提供,并在最终的安全性评估中使用,而不是简单地讨论软件的严格程度或人为错误的可能性。
在生成危险管理评估报告上, STPA同样以确定的危险(包括不安全的控制行动)、潜在原因、消除或减轻危险的建议以及为减轻危险而创建的任何控制的形式向本报告提供了输入。实际的风险评估决策超出了风险分析技术的要求范围。
STAMP、STPA和CAST(基于系统论的因果分析)可以提供对任务303和304的支持,方法是提供危险的原因,并使用它们来帮助开发测试用例。STPA还协助将系统安全流程进行更新。使用最初应用STPA时创建的安全控制结构,可以将更改定位到结构中,以便只需要检查那些受影响的部分,以确定更新是否引入或影响了危险因素。
总体来看,STPA完全符合GJB900A相关要求。STPA是一个自顶向下的系统危险分析方法,可用于风险分析任务(工作项目300系列)。它识别危险并生成:①系统和组件安全和网络安全需求;②消除或减轻识别危险所需的信息。STAMP控制结构提供了记录关于系统结构和任务中描述的需求等大量信息的方法。STPA建模和分析可以从概念开发阶段开始,以帮助设计师对基本的架构设计和开发问题进行决策,从而消除或减轻危险。有特定的因果情景可以帮助确保PHA不会在没有因果信息的情况下,通过过早的可能性评估,错误地对重要的危险进行分类。STPA满足工作项目304(系统危险分析)中强调的在项目早期获取安全相关信息的需要。随着决策的制定,分析可以以迭代的方式进行细化,生成的信息还可以用于验证设计和活动。
(2) STPA与软件安全性分析
GJB900A关于软件安全性工作特别规定了工作项目600系列,依据前文的分析过程以及对比,可以得出在软件安全性工作中,STPA方法可直接或间接地协助下列工作,对这些活动所列的大部分任务提供帮助:
①识别软件相关的危害(软件对系统级危害);
②识别可能导致危险软件行为的因果场景;
③向设计软件以消除危险软件行为的人员和设计系统以减轻任何潜在危险软件行为的人员提供信息;
④创建文档和模型(即安全控制结构),以便就危害、不安全控制行动、不安全控制行动的原因、对控制器的安全关键反馈、环境威胁(包括网络安全威胁)以及正在考虑的系统内和更大系统内的协调和沟通进行沟通和共同理解;
⑤进行软件安全危害分析;
⑥跟踪危害及其后果,以及在危害日志中选择控制策略;
⑦跟踪软件体系结构中的系统级危险;
⑧识别对安全至关重要的软件功能和组件,以及对安全至关重要的反馈和沟通要求;
⑨支持软件测试和验证活动;
⑩生成关键指标,以识别软件或系统中的更改何时可能导致危险。
可以看出,由于软件安全性工作较强的结构性和程序性要求,基于自顶向下的系统工程的STPA方法更适合于软件密集型系统的安全性分析。
STPA方法是一个自顶向下、持续迭代的过程,适用于复杂的系统生成功能安全要求,识别导致危害的设计缺陷。STPA方法的优势总结如下:
(1) 能够分析高度复杂的系统;
(2) 能够在系统研发早期介入;
(3) 能够分析软件和人为因素;
(4) 能够识别大型复杂系统中容易忽略的系统功能;
(5) 能够结合过程模型实现基于模型的系统工程;
(6) 相对于传统危险分析方法,危险识别更全面。
STPA可以用于系统生命周期的任一阶段,为系统设计、研制、运行等过程提供确保安全性约束执行必须的信息。但STPA方法仍存在一些不足之处需要改进:
(1) 目前,研究运用的STAMP模型一般是基于主观描述建立系统功能控制结构等,模型建立的思路不清晰,层次不分明,未突出重点,其准确性受人的分析能力影响较大;
(2) 在STPA方法中,过程模型的要素分解不够详细,分析控制过程中的不安全控制行为容易造成混乱,没有体现与分析实际相关的关键性信息;
(3) 对于不安全控制行为的致因分析只是因果关系的向上追溯,缺乏具体的逻辑关系和方法步骤,分析工作量大,分析结果的完整性及准确性受人对系统的主观认知、分析能力等的影响较大。
因此,本节针对分析过程中发现的STPA方法以上三个不足,尝试提出一些方法上的改进以供商榷。
创建功能控制结构的改进,主要是从结构物理功能层次性划分的角度深入。根据优化依据划分出多级控制层、信息层的输入/反馈/输出、执行层等。整个研究对象中,不被其他控制器控制、发出初始指令的控制器划分为一级控制层,操作人员一般为一级控制层。上级的控制层直接控制下级控制层。如果需要建立的模型非常复杂,同层中就可以分析多个控制器的相互作用。如多一个系统能发挥不同级别的功能,它对应包含的控制器就分属于多个控制级。每一级的控制层都可能直接影响执行层。信息层就是同级之间、不同级之间的控制器的输入、输出、反馈信息。新的功能控制结构的建立过程如图2所示。
图2 分层功能控制结构的建立
STPA方法的第三步是分析致因情景,识别潜在的不安全行为(Unsafe Control Actions,简称UCAs)。这一步骤的主要方法是基于对过程模型的分析。改进后的过程模型如图3所示。
图3 过程模型
改进前的过程模型要素分解不够详细,不利于分析得出控制过程中的不安全控制行为,体现在分析实际相关的关键性信息不足。改进后体现与分析实际相关的关键性信息,明确输入和输出,状态的前后改变,这样可以从每一步骤的分析来找出不安全控制行为。
STPA方法完成针对单一的控制行为分析后,主要是根据控制反馈模型向后追溯因果场景来生成潜在需求,但并未说明采用何种逻辑、方法来向后追溯。因为在复杂系统安全性问题中,不安全控制行为往往是由于子系统关联产生的。因此可以从两个UCAs之间的相互影响来分类分析致因的产生。
(1) UCAs的组合影响:当一个UCA发生的同时,发生了另一个与之相关UCA,使得其影响增大或者削弱,这类问题统称为不安全控制行为的组合问题。考虑不安全控制行为的影响强度,不涉及UCAs提供时间及作用的长短时,UCAs的共同作用的影响如表2所示。
表2 UCAs的组合影响
(2) UCAs发生先后的影响:进行复杂系统安全性分析时,需要分析两个UCAs的作用先后影响。即考虑两个不安全控制行为在一个较短时间内,作用的次序不同对系统的影响。此处的较短时间被定义为在上一个不安全控制行为仍然作用的时间内。先后作用的次序不同,造成的影响也不同的这类问题。假设UCA1 和 UCA2 是两个存在功能联系的不安全控制行为,那么UCA1和 UCA2间的作用次序关系有三种情况:①UCA1先发生;②UCA2先发生;③UCA1和 UCA2同时发生。(UCA1和UCA2造成不同影响的情形)。
(3) UCAs之间的因果影响:当两种UCAs由于涉及到共同的物理功能等情况时,存在一定的因果联系,那么需要分析二者的交互影响,及在分析其中一个不安全控制行为的致因时,由于该不安全控制行为是另一个UCA产生的因素,那么此致因也同样是另一个UCA的致因。
通过对分层功能控制结构的优化使得系统的层次结构、信息交互更加清楚,进行实质内容的扩展以及结构上的优化,为后续分析步骤提供引导,有助于更复杂系统模型的建立,按照层级间的联系进行分析,有助于分析出潜在的不安全控制行为;通过对识别过程的改进,提出改进的过程模型,可以从每一步骤的分析来找出不安全控制行为。增添了底层需求,包括液压源、电源等,可以为多系统间的分析提供帮助;通过对致因分析方法的改进,按照一定逻辑方法分析控制行为所有可能原因,缩短分析时间,提高了分析过程的效率,从STPA方法三个主要方面优化了方法实施步骤。
(1) 本文通过将STPA方法与ARP4761标准进行对比,表明STPA方法的优越性,并通过对STPA方法的功能控制结构、不安全控制行为识别、致因分析三个方面进行结构和逻辑上的改进,使STPA方法更适用于复杂航空产品的系统安全性设计,为提高复杂航空产品的安全性提供理论支撑,拓宽了STPA的应用领域,而且对于STPA方法的改进措施也促进了其理论的进一步更新完善。
(2) 本文仅是对STPA安全性分析方法的理论研究,今后的研究会将该方法应用于具体的安全性分析工作中,进一步验证STPA方法的先进性。