戚 璠 邱兆陽
(北京全路通信信號研究設(shè)計院集團(tuán)有限公司,北京 100073)
SEEA應(yīng)用探討
戚 璠 邱兆陽
(北京全路通信信號研究設(shè)計院集團(tuán)有限公司,北京 100073)
介紹軟件錯誤影響分析的方法和步驟,探討SEEA在安全軟件開發(fā)中的作用,同時以某典型聯(lián)鎖軟件為例,介紹SEEA在該項目中的應(yīng)用情況,并給出分析示例。
軟件錯誤影響分析;后果;錯誤檢測方法
軟件錯誤影響分析(Software Error Effect Analysis,簡稱SEEA)是EN50128(2011)中在軟件設(shè)計結(jié)構(gòu)階段針對SIL4軟件強力推薦的一種設(shè)計方法。該方法適合在軟件需求分析及結(jié)構(gòu)設(shè)計的基礎(chǔ)上,對軟件功能模塊進(jìn)行錯誤影響分析。在設(shè)計階段通過識別關(guān)鍵軟件模塊和不同模塊的軟件錯誤模式,研究分析其可能造成的后果,并尋找錯誤檢測方法,以盡早發(fā)現(xiàn)潛在的問題,采取相應(yīng)的措施,從而提高軟件的可靠性和安全性。
從EN50128(2011)表A.3中的要求說明一節(jié)可以看到,該技術(shù)作為SIL3和SIL4軟件結(jié)構(gòu)設(shè)計組合技術(shù)/措施的一種,與技術(shù)/措施2、5、12 和21互為替代技術(shù)選用。SEEA與其他幾種技術(shù)/措施說明如表1所示。
表1 技術(shù)/措施說明
SEEA本質(zhì)上是找到軟件模塊中可能存在的故障模式,并采取措施防止故障傳播到下一個模塊,造成軟件失效,SEEA與防御性編程、斷言以及建模等方法結(jié)合,可以有效發(fā)現(xiàn)軟件中的錯誤,從而提高軟件安全性。
SEEA方法主要是識別重要軟件模塊和分析深度;對軟件模塊進(jìn)行錯誤分析,提出檢測軟件錯誤、增強軟件魯棒性的方法;對分析后的軟件進(jìn)行綜合確認(rèn)。
SEEA分析分3個階段完成。
1) 重要軟件模塊識別
對于每個軟件模塊,根據(jù)模塊規(guī)范說明決定軟件模塊需要的分析深度(在單指令行、指令組、模塊等水平上) 。
2) 軟件錯誤分析
這個階段的結(jié)果是一個表格,表格列出了下列信息。
a.模塊名(component name);
b.考慮到的錯誤(error considered),包括:錯誤類別;本模塊是否適用該錯誤類別;分析及結(jié)論。
c.在模塊級上的錯誤后果(consequences of the error at the module level);
d.系統(tǒng)級上的后果(consequences at the system level);
e.違反的安全準(zhǔn)則(violated safety criterion);
f.錯誤危害程度(error criticality);
g.建議的錯誤檢測方法(proposed error detection means);
h.如果檢測方法被執(zhí)行將會違反的準(zhǔn)則(violated criterion if the detection means is implemented);
i.檢測方法執(zhí)行后的殘余危害程度(residual criticality if the detection means is implemented)。
3) 綜合
給定每個模塊的關(guān)鍵程度,綜合識別殘余的不安全場景和所需的確認(rèn)工作。
3.1 應(yīng)用定義
3.1.1 錯誤類別定義
在某典型聯(lián)鎖軟件的開發(fā)過程中,根據(jù)參考文獻(xiàn)[2]定義了5種軟件模塊的錯誤類別,如表2所示。
表2 錯誤類別定義
3.1.2 安全準(zhǔn)則定義
在某典型聯(lián)鎖軟件的開發(fā)過程中,定義的安全準(zhǔn)則和可能違反安全準(zhǔn)則的行為和狀態(tài)如表3所示。
3.1.3 錯誤危害程度定義
采用EN50126:1999中“頻率-后果”矩陣的構(gòu)成以及ALARP原則,定義錯誤危害程度為危害性事件發(fā)生的頻率等級與后果的嚴(yán)重程度的乘積,即風(fēng)險等級。
“頻率-后果”矩陣(即風(fēng)險等級矩陣)定義如表4所示。
表3 安全準(zhǔn)則定義
錯誤危害程度(即風(fēng)險等級)及對應(yīng)的等級所采取的措施如表5所示。
3.2 重要軟件模塊識別
本節(jié)對某典型聯(lián)鎖軟件的所有模塊進(jìn)行分析,通過判斷該典型聯(lián)鎖軟件模塊的邏輯行為,識別出其中的重要軟件模塊和非重要軟件模塊。
承擔(dān)安全功能且邏輯功能復(fù)雜的模塊為重要軟件模塊,不承擔(dān)安全功能或者承擔(dān)安全功能但邏輯功能簡單為非重要軟件模塊。對于所有識別出的每個重要軟件模塊,從模塊水平進(jìn)行了軟件錯誤分析。
表4 “頻率-后果”矩陣
表5 定性的風(fēng)險等級
舉例如表6所示。
表6 列車進(jìn)路處理模塊M9
3.3 軟件錯誤分析
本節(jié)針對上節(jié)中分析出的某典型聯(lián)鎖軟件的重要模塊進(jìn)行錯誤分析。主要從模塊的功能點出發(fā),判斷模塊可能出現(xiàn)的錯誤類別,考慮某種錯誤類型可能導(dǎo)致的模塊級后果、系統(tǒng)級后果、違反的安全準(zhǔn)則、錯誤危險程度、被提議的錯誤檢測方法、如果檢測方法被執(zhí)行會被違反的準(zhǔn)則以及檢測方法執(zhí)行后的剩余危害程度等。結(jié)合各模塊的具體應(yīng)用場景,分析選取針對該模塊最有可能出現(xiàn)的錯誤類別進(jìn)行,對于模塊邏輯錯誤不進(jìn)行深入分析。
列車進(jìn)路處理模塊由聯(lián)鎖主程序進(jìn)行周期性調(diào)度執(zhí)行,該模塊的輸入為固定的各種控制表以及靜態(tài)數(shù)據(jù),輸出數(shù)據(jù)為各種固定的控制表,輸入輸出數(shù)據(jù)流如圖1所示。
圖1 列車進(jìn)路處理模塊輸入輸出數(shù)據(jù)流圖
列車進(jìn)路處理模塊主要完成列車進(jìn)路主要功能,包括:選路,鎖閉,開放信號,正常解鎖,人工解鎖,取消進(jìn)路等。該模塊考慮到的錯誤(error considered)及分析如如表7所示。
表7 考慮到的錯誤及分析
分析及結(jié)論A)、B)、C)三項在模塊級和系統(tǒng)級上的后果如表8所示。
表8)模塊級和系統(tǒng)級的錯誤后果
分析結(jié)論A)、B)、C)三項違反的安全準(zhǔn)則、錯誤危險程度及相應(yīng)的錯誤檢測方法如表9所示。
表9 違反的安全準(zhǔn)則及錯誤檢測方法
針對上述建議的錯誤檢測方法,如果該檢測方法被執(zhí)行將會違反的準(zhǔn)則(violated criterion if the detection means is implemented)為無,檢測方法執(zhí)行后的殘余危害程度(residual criticality if the detection means is implemented)為R4。
3.4 綜合
某典型聯(lián)鎖軟件所有模塊的重要程度分為重要、非重要兩種。在對所有重要模塊分析完畢后,項目組對分析過程進(jìn)行了總結(jié),該典型聯(lián)鎖軟件有6個軟件模塊中存在可能的錯誤,并提出錯誤檢測方法及對應(yīng)的軟件需求。
基于該典型聯(lián)鎖軟件多年的使用業(yè)績,項目組認(rèn)為如果檢測方法能夠執(zhí)行,則執(zhí)行后的殘余危害程度都為R4類,即不存在殘余的不安全場景,經(jīng)驗證和確認(rèn)后,可以接受。
通過在某典型聯(lián)鎖軟件項目中應(yīng)用SEEA方法,可以發(fā)現(xiàn)SEEA方法對于SIL4軟件的設(shè)計和開發(fā)存在一定的指導(dǎo)意義,使得設(shè)計人員能夠深入發(fā)現(xiàn)其軟件模塊中存在的可能錯誤,并通過提出建議的錯誤檢測方法及對應(yīng)的軟件需求,來提高軟件的可靠性和安全性。建議在以后的SIL4軟件開發(fā)項目中大力推廣此方法的應(yīng)用。
[1] EN50128:2011 軌道交通通信、信號和處理系統(tǒng)控制和防護(hù)系統(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)