戚 璠 邱兆陽
(北京全路通信信號研究設計院集團有限公司,北京 100073)
SEEA應用探討
戚 璠 邱兆陽
(北京全路通信信號研究設計院集團有限公司,北京 100073)
介紹軟件錯誤影響分析的方法和步驟,探討SEEA在安全軟件開發(fā)中的作用,同時以某典型聯(lián)鎖軟件為例,介紹SEEA在該項目中的應用情況,并給出分析示例。
軟件錯誤影響分析;后果;錯誤檢測方法
軟件錯誤影響分析(Software Error Effect Analysis,簡稱SEEA)是EN50128(2011)中在軟件設計結構階段針對SIL4軟件強力推薦的一種設計方法。該方法適合在軟件需求分析及結構設計的基礎上,對軟件功能模塊進行錯誤影響分析。在設計階段通過識別關鍵軟件模塊和不同模塊的軟件錯誤模式,研究分析其可能造成的后果,并尋找錯誤檢測方法,以盡早發(fā)現(xiàn)潛在的問題,采取相應的措施,從而提高軟件的可靠性和安全性。
從EN50128(2011)表A.3中的要求說明一節(jié)可以看到,該技術作為SIL3和SIL4軟件結構設計組合技術/措施的一種,與技術/措施2、5、12 和21互為替代技術選用。SEEA與其他幾種技術/措施說明如表1所示。

表1 技術/措施說明
SEEA本質上是找到軟件模塊中可能存在的故障模式,并采取措施防止故障傳播到下一個模塊,造成軟件失效,SEEA與防御性編程、斷言以及建模等方法結合,可以有效發(fā)現(xiàn)軟件中的錯誤,從而提高軟件安全性。
SEEA方法主要是識別重要軟件模塊和分析深度;對軟件模塊進行錯誤分析,提出檢測軟件錯誤、增強軟件魯棒性的方法;對分析后的軟件進行綜合確認。
SEEA分析分3個階段完成。
1) 重要軟件模塊識別
對于每個軟件模塊,根據(jù)模塊規(guī)范說明決定軟件模塊需要的分析深度(在單指令行、指令組、模塊等水平上) 。
2) 軟件錯誤分析
這個階段的結果是一個表格,表格列出了下列信息。
a.模塊名(component name);
b.考慮到的錯誤(error considered),包括:錯誤類別;本模塊是否適用該錯誤類別;分析及結論。
c.在模塊級上的錯誤后果(consequences of the error at the module level);
d.系統(tǒng)級上的后果(consequences at the system level);
e.違反的安全準則(violated safety criterion);
f.錯誤危害程度(error criticality);
g.建議的錯誤檢測方法(proposed error detection means);
h.如果檢測方法被執(zhí)行將會違反的準則(violated criterion if the detection means is implemented);
i.檢測方法執(zhí)行后的殘余危害程度(residual criticality if the detection means is implemented)。
3) 綜合
給定每個模塊的關鍵程度,綜合識別殘余的不安全場景和所需的確認工作。
3.1 應用定義
3.1.1 錯誤類別定義
在某典型聯(lián)鎖軟件的開發(fā)過程中,根據(jù)參考文獻[2]定義了5種軟件模塊的錯誤類別,如表2所示。

表2 錯誤類別定義
3.1.2 安全準則定義
在某典型聯(lián)鎖軟件的開發(fā)過程中,定義的安全準則和可能違反安全準則的行為和狀態(tài)如表3所示。
3.1.3 錯誤危害程度定義
采用EN50126:1999中“頻率-后果”矩陣的構成以及ALARP原則,定義錯誤危害程度為危害性事件發(fā)生的頻率等級與后果的嚴重程度的乘積,即風險等級。
“頻率-后果”矩陣(即風險等級矩陣)定義如表4所示。

表3 安全準則定義
錯誤危害程度(即風險等級)及對應的等級所采取的措施如表5所示。
3.2 重要軟件模塊識別
本節(jié)對某典型聯(lián)鎖軟件的所有模塊進行分析,通過判斷該典型聯(lián)鎖軟件模塊的邏輯行為,識別出其中的重要軟件模塊和非重要軟件模塊。
承擔安全功能且邏輯功能復雜的模塊為重要軟件模塊,不承擔安全功能或者承擔安全功能但邏輯功能簡單為非重要軟件模塊。對于所有識別出的每個重要軟件模塊,從模塊水平進行了軟件錯誤分析。

表4 “頻率-后果”矩陣

表5 定性的風險等級
舉例如表6所示。

表6 列車進路處理模塊M9
3.3 軟件錯誤分析
本節(jié)針對上節(jié)中分析出的某典型聯(lián)鎖軟件的重要模塊進行錯誤分析。主要從模塊的功能點出發(fā),判斷模塊可能出現(xiàn)的錯誤類別,考慮某種錯誤類型可能導致的模塊級后果、系統(tǒng)級后果、違反的安全準則、錯誤危險程度、被提議的錯誤檢測方法、如果檢測方法被執(zhí)行會被違反的準則以及檢測方法執(zhí)行后的剩余危害程度等。結合各模塊的具體應用場景,分析選取針對該模塊最有可能出現(xiàn)的錯誤類別進行,對于模塊邏輯錯誤不進行深入分析。
列車進路處理模塊由聯(lián)鎖主程序進行周期性調度執(zhí)行,該模塊的輸入為固定的各種控制表以及靜態(tài)數(shù)據(jù),輸出數(shù)據(jù)為各種固定的控制表,輸入輸出數(shù)據(jù)流如圖1所示。

圖1 列車進路處理模塊輸入輸出數(shù)據(jù)流圖
列車進路處理模塊主要完成列車進路主要功能,包括:選路,鎖閉,開放信號,正常解鎖,人工解鎖,取消進路等。該模塊考慮到的錯誤(error considered)及分析如如表7所示。

表7 考慮到的錯誤及分析
分析及結論A)、B)、C)三項在模塊級和系統(tǒng)級上的后果如表8所示。

表8)模塊級和系統(tǒng)級的錯誤后果
分析結論A)、B)、C)三項違反的安全準則、錯誤危險程度及相應的錯誤檢測方法如表9所示。

表9 違反的安全準則及錯誤檢測方法
針對上述建議的錯誤檢測方法,如果該檢測方法被執(zhí)行將會違反的準則(violated criterion if the detection means is implemented)為無,檢測方法執(zhí)行后的殘余危害程度(residual criticality if the detection means is implemented)為R4。
3.4 綜合
某典型聯(lián)鎖軟件所有模塊的重要程度分為重要、非重要兩種。在對所有重要模塊分析完畢后,項目組對分析過程進行了總結,該典型聯(lián)鎖軟件有6個軟件模塊中存在可能的錯誤,并提出錯誤檢測方法及對應的軟件需求。
基于該典型聯(lián)鎖軟件多年的使用業(yè)績,項目組認為如果檢測方法能夠執(zhí)行,則執(zhí)行后的殘余危害程度都為R4類,即不存在殘余的不安全場景,經(jīng)驗證和確認后,可以接受。
通過在某典型聯(lián)鎖軟件項目中應用SEEA方法,可以發(fā)現(xiàn)SEEA方法對于SIL4軟件的設計和開發(fā)存在一定的指導意義,使得設計人員能夠深入發(fā)現(xiàn)其軟件模塊中存在的可能錯誤,并通過提出建議的錯誤檢測方法及對應的軟件需求,來提高軟件的可靠性和安全性。建議在以后的SIL4軟件開發(fā)項目中大力推廣此方法的應用。
[1] EN50128:2011 軌道交通通信、信號和處理系統(tǒng)控制和防護系統(tǒng)軟件[S].
[2] Peter Fenelon,John A.Mcdermid.An Integrated Toolset For Software Safety Analysis[J].Journal of Systems & Software,1993 (3):279-290.
The paper introduces the analysis methods and steps of Software Error Effect Analysis (SEEA)and discusses the role of SEEA in the safety software development. Taking a typical interlocking software as an example, it describes the application of SEEA in the project and gives the analysis of the sample.
SEEA; consequence; error detection method
10.3969/j.issn.1673-4440.2015.06.009
2014-07-01)