本發(fā)明屬于軟件安全性評估技術(shù)領(lǐng)域,涉及一種基于證據(jù)合成理論的軟件體系結(jié)構(gòu)安全性評估方法。
背景技術(shù):
近年來,隨著計算機技術(shù)的發(fā)展越來越廣泛,軟件已廣泛應(yīng)用于航空電子領(lǐng)域的安全關(guān)鍵系統(tǒng)。越來越多的功能被轉(zhuǎn)移到軟件來代替機械系統(tǒng),因此軟件變得越來越復(fù)雜,導(dǎo)致對安全性的要求很高。長期以來,由于安全關(guān)鍵系統(tǒng)軟件的故障問題,造成了生命財產(chǎn)的損失,甚至導(dǎo)致嚴重的災(zāi)害,環(huán)境案件層出不窮。按照傳統(tǒng)的軟件安全性評估方法,是在軟件分析的后期對軟件進行安全性評估,若軟件安全性論證出問題,修改的時間和成本代價會難以承受。同時在軟件系統(tǒng)的安全性評估工作中,不應(yīng)該只考慮到構(gòu)件以及子系統(tǒng)的安全性分析本身,還應(yīng)該關(guān)注構(gòu)件及子系統(tǒng)軟件的體系結(jié)構(gòu)以及構(gòu)件的使用環(huán)境。目前,把獨立構(gòu)件的安全性設(shè)定為一個固定值對系統(tǒng)進行安全性評估,會導(dǎo)致安全性分析上的不完全性。
目前軟件安全性保障工作的評估主要體現(xiàn)在兩個方面,基于風(fēng)險的評估和基于缺陷的評估。Fenton認為測量軟件的安全性應(yīng)該考慮影響風(fēng)險:如控制事件和觸發(fā)事件的因素,而且要考慮對安全措施后果的影響。并且Fenton開發(fā)了一個安全性評估的系統(tǒng)AgenaRisk(Fenton于2006年發(fā)表的安全性評估系統(tǒng)),但是他的評估模型需要輸入一些軟件失效概率和控制事件成功概率等,這在軟件的早期是很難得到的信息。在系統(tǒng)AgenaRisk中,作者分析了會導(dǎo)致風(fēng)險的缺陷,并且在McCall模型基礎(chǔ)上開發(fā)了一個安全關(guān)鍵軟件安全性度量框架。但是值得指出的是軟件的安全性不一定與系統(tǒng)中的剩余缺陷數(shù)成反比,應(yīng)該還涉及到軟件的運行剖面。只要這些缺陷沒有被激活,不會對系統(tǒng)造成安全威脅。
基于構(gòu)件的軟件開發(fā)(CBSD)可以降低開發(fā)成本和上市時間,并提高維護性和軟件系統(tǒng)的可靠性。在構(gòu)件化軟件開發(fā)方法中,構(gòu)件是在系統(tǒng)中可以獨立完成某功能的一個組件,構(gòu)件工作在一個良好的上下文定義的架構(gòu)中,構(gòu)件之間通過接口進行通信。由于構(gòu)件的特性,軟件工程工作中,軟件設(shè)計者使用自底向上的方法來開發(fā)軟件系統(tǒng);類似的可以借鑒這樣的思路來評估構(gòu)件化軟件系統(tǒng)的安全性。為了確保構(gòu)件化的軟件系統(tǒng)準確而又有效的運行,系統(tǒng)體系結(jié)構(gòu)是一個很重要的要素,根據(jù)構(gòu)件化軟件工程開發(fā)的特點,構(gòu)件化系統(tǒng)的體系結(jié)構(gòu)是模塊化和層次化的。
目前軟件安全性預(yù)計模型存在的難以解決的問題是:不少軟件安全性預(yù)計模型都是在軟件設(shè)計實現(xiàn)完畢后,對軟件進行系統(tǒng)級的測試與軟件安全性分析工作,難以實現(xiàn)在軟件設(shè)計階段的軟件安全性評估工作,從而指導(dǎo)軟件的安全性設(shè)計。因此如何在軟件架構(gòu)設(shè)計階段綜合一些軟件構(gòu)件的安全信息:如構(gòu)件的故障率,故障發(fā)生后果的嚴重程度以及故障導(dǎo)致安全事故發(fā)生的可能性等歷史信息,建立一個綜合模型考慮軟件的安全性,力圖全面考慮影響軟件安全性的各種信息進行軟件安全性的建模與評估,使之成為一種新的思路。然而這些信息或因素通常屬于主觀信息,很難準確、客觀的描述出來;這就使得現(xiàn)存的安全性評估模型:如基于概率的模型,建模和評估具有很大的局限性。
能夠處理主觀評價的模糊集理論可以作為安全性評估的數(shù)學(xué)模型,這一方法近年來也引起人們的注意并取得了一些研究成果。目前對于軟件的安全性描述,大多數(shù)屬于等級劃分的思想,采用自然語言變量對其進行模糊的定性描述。比如DO-178B就規(guī)定軟件的安全性分五級,按照發(fā)生故障后導(dǎo)致的后果嚴重程度分為:A級Catastrophic、B級Hazardous、C級Major、D級Minor以及E級No effect,對這種安全性的主觀描述語言進行模糊數(shù)學(xué)化。
定義1:給定論域U到[0,1]閉區(qū)間的任一映射μA(U),確定U的模糊子集A={(u,μA(u))|u∈U},則稱μA為模糊子集A的隸屬度函數(shù),μA{u}稱之為u對A的隸屬度。論域之上的模糊子集A由隸屬函數(shù)μA表征。
單個構(gòu)件的失效模式可由失效率FR、危險后果嚴重程度CS和失效后果發(fā)生概率FCP進行描述。上述參數(shù)可以分級評估以模糊化,失效率、危險后果嚴重程度和失效后果發(fā)生概率對應(yīng)的參數(shù)模糊集分別用L、C、E來表示,對應(yīng)地隸屬函數(shù)為μc、μe和μL。
構(gòu)件的安全度可以用這些參數(shù)模糊集操作組合加以描述:
式中代表組合操作,而×代表笛卡爾乘積;為安全度隸屬于第j類的程度;S和μs是某一失效模式下危險因素導(dǎo)致的安全度等級的一種模糊描述。
定義2:給定命題Θ,若有函數(shù)m:2Θ→[0,1],符合可以稱m為Θ上的基本概率分配函數(shù);而稱為X的基本置信度或者Mass函數(shù)m(X)。
在軟件系統(tǒng)的安全性評估工作中,不應(yīng)該只考慮到構(gòu)件的安全性分析本身還應(yīng)該關(guān)注構(gòu)件軟件的體系結(jié)構(gòu)以及構(gòu)件使用環(huán)境。把獨立構(gòu)件的安全性設(shè)定為一個固定值對系統(tǒng)進行安全性評估,這樣必然會導(dǎo)致安全性分析上的不完全性。
技術(shù)實現(xiàn)要素:
本發(fā)明為了解決傳統(tǒng)的軟件系統(tǒng)在設(shè)計建模階段工作時,難以利用軟件架構(gòu)對軟件進行動態(tài)安全性評估的問題;提出了一種基于證據(jù)合成理論的軟件體系結(jié)構(gòu)安全性評估方法;
包括以下幾個步驟:
步驟一、針對某個軟件系統(tǒng),利用模塊構(gòu)建該軟件系統(tǒng)的體系結(jié)構(gòu)模型;
體系結(jié)構(gòu)模型包括構(gòu)件和體系結(jié)構(gòu)配置;構(gòu)件指組成該軟件系統(tǒng)的獨立單元,由軟件系統(tǒng)的特點和需要分析的軟件層次決定;體系結(jié)構(gòu)配置是指構(gòu)件與構(gòu)件之間的連接關(guān)系;
步驟二、針對每個構(gòu)件,根據(jù)安全性需求規(guī)格說明,計算該構(gòu)件的三個模糊集;
每個構(gòu)件的模糊集包括:失效率對應(yīng)的參數(shù)模糊集L;危險后果嚴重程度對應(yīng)的參數(shù)模糊集C;以及失效后果發(fā)生概率對應(yīng)的參數(shù)模糊集E;對應(yīng)地隸屬函數(shù)為μL、μc和μe。
三個模糊集的自然語言分類等級包括:
模糊集L的安全等級描述為:高度頻繁、頻繁、合理頻繁、平常、比較低、相當(dāng)?shù)秃秃艿停?/p>
模糊集C的安全等級描述,在自然語言的等級分為:可忽略的、最低限度的、危險的、災(zāi)難性的;
模糊集E的安全等級描述為:極不可能、不可能、不太可能、可能、比較可能、極度可能和一定發(fā)生。
步驟三、針對某個構(gòu)件i,根據(jù)三個模糊集計算該構(gòu)件的安全性模糊集合成值Si;
μci代表模糊集C的安全性描述隸屬于該模糊集安全等級的程度;μei代表模糊集E的安全性描述隸屬于該模糊集安全等級的程度;μLi代表模糊集L的安全性描述隸屬于該模糊集安全等級的程度;構(gòu)件i總體的安全性描述隸屬于自然語言變量的程度共有Hn類;n是指自然語言變量的分類;代表構(gòu)件i的安全性描述隸屬于第Hn類的程度。
步驟四、針對構(gòu)件i的安全性模糊集合成值Si,分別計算該構(gòu)件到五個安全度等級的五個閔可夫斯基距離;
五個安全度等級是指:對軟件的安全性綜合評估結(jié)果按5個等級進行劃分,為1級災(zāi)難的、2級危險的、3級中等的、4級極低的和5級無影響;用集合表示為:j=(1,2,3,4,5);
閔可夫斯基距離dij公式如下:
dij表示構(gòu)件i到第j個安全度等級的閔可夫斯基距離。是指根據(jù)構(gòu)件i的安全性模糊集合成值Si中對應(yīng)的第n個元素值;是指機載軟件適航標準DO-178B中第j個安全度等級對應(yīng)的第n個自然語言變量分類值。
構(gòu)件i到五個安全度等級的閔可夫斯基距離dij為一行五列的向量;
步驟五、對五個閔可夫斯基距離分別標準化,得到構(gòu)件i到五個安全度等級之間的安全性等級估計值;
構(gòu)件i到第j個安全度等級之間的標準化安全性等級估計值βij計算如下:
aij是閔可夫斯基距離dij的倒數(shù),計算如下:
diJ(J=1,2,3,4,5)為構(gòu)件i到五個安全度等級的閔可夫斯基距離值中的最小值;
步驟六、分析當(dāng)前軟件系統(tǒng)的體系結(jié)構(gòu)模型中的所有運行路徑;
每個軟件系統(tǒng)的運行過程是:一個構(gòu)件經(jīng)過一個體系結(jié)構(gòu)配置和另一個構(gòu)件進行數(shù)據(jù)傳輸?shù)倪^程,對軟件進行動態(tài)運行分析,得到系統(tǒng)在運行過程中由構(gòu)件和體系結(jié)構(gòu)配置組成的不同的運行路徑。
步驟七、根據(jù)所有運行路徑分別計算任意兩個相鄰構(gòu)件的轉(zhuǎn)移概率;
構(gòu)件a與相鄰構(gòu)件b之間的轉(zhuǎn)移概率vab計算如下:
vab=tab/ta
其中tab表示從構(gòu)件a到相鄰構(gòu)件b的使用頻率,而表示從構(gòu)件a傳出的且到與構(gòu)件a有交互關(guān)系的所有相鄰構(gòu)件的使用頻率之和,M表示從構(gòu)件a傳出的且與構(gòu)件a有交互關(guān)系的所有相鄰構(gòu)件的數(shù)量。
步驟八、針對每個運行路徑,利用該運行路徑上每個構(gòu)件的轉(zhuǎn)移概率和五個安全性等級估計值,運用證據(jù)合成理論計算該運行路徑的安全等級評估結(jié)果;
具體步驟如下:
步驟801、針對某個運行路徑p上的構(gòu)件i,計算構(gòu)件i與相鄰構(gòu)件的轉(zhuǎn)移概率vi;
構(gòu)件i在M條運行路徑中都存在,則轉(zhuǎn)移概率vi計算如下:
vi1+vi2+...+viM=1
步驟802、根據(jù)構(gòu)件i的轉(zhuǎn)移概率vi和標準化安全性等級估計值βij,計算分配后安全性等級估計值
步驟803、利用分配后安全性等級估計值計算構(gòu)件i和相鄰構(gòu)件i+1的安全性評估結(jié)果的沖突程度系數(shù)Ki,i+1;
代表構(gòu)件i到第T個安全度等級之間的分配后安全性等級估計值;代表構(gòu)件i+1到第R個安全度等級之間的分配后安全性等級估計值。
步驟804、利用構(gòu)件i的分配后安全性等級估計值和證據(jù)合成理論,計算歸一化參數(shù)
H表示代表構(gòu)件i到第H個安全度等級之間的分配后安全性等級估計值;
步驟805、將第i+1個構(gòu)件與前i個構(gòu)件進行合成處理,得到運行路徑p的安全性等級評估結(jié)果
初始設(shè)置
步驟806、將運行路徑p的安全性等級評估結(jié)果映射為集合S(p);
Hj表示運行路徑p的安全性等級評估結(jié)果對應(yīng)的第j個安全度等級。
步驟九、利用證據(jù)合成公式,將每條運行路徑的安全等級評估結(jié)果進行合成,得到系統(tǒng)安全性等級;
具體步驟如下:
步驟901、設(shè)定運行路徑p的安全性等級評估結(jié)果用表示;
步驟902、利用運行路徑p和相鄰運行路徑p+1的安全性等級評估結(jié)果,計算沖突程度系數(shù)Kp,p+1;
其中代表運行路徑p到第T個安全度等級之間的安全性等級評估結(jié)果;代表運行路徑p+1到第R個安全度等級之間的安全性等級評估結(jié)果。
步驟903、利用運行路徑p的安全性等級評估結(jié)果和證據(jù)合成理論,計算歸一化參數(shù)
H表示代表運行路徑p到第H個安全度等級之間的安全性等級評估結(jié)果;
步驟904、將第p+1個運行路徑與前p個運行路徑進行合成處理,得到系統(tǒng)所有的安全性等級評估結(jié)果
初始設(shè)置
步驟905、將所有運行路徑的安全性等級評估結(jié)果映射為集合S(System);
Hj表示所有運行路徑的安全性等級評估結(jié)果對應(yīng)的第j個安全度等級。
本發(fā)明的優(yōu)點在于:
(1)一種基于證據(jù)合成理論的軟件體系結(jié)構(gòu)安全性評估方法,利用模糊數(shù)學(xué)的處理方法使得主觀化的安全性描述客觀化,便于分析過程中的客觀運算。
(2)一種基于證據(jù)合成理論的軟件體系結(jié)構(gòu)安全性評估方法,利用軟件運行剖面的分析信息,評估軟件的動態(tài)運行過程中的安全性,使得評估結(jié)果更符合真實運行中的軟件安全性。
(3)一種基于證據(jù)合成理論的軟件體系結(jié)構(gòu)安全性評估方法,考慮到了軟件構(gòu)件中的幾個對安全性有影響的關(guān)鍵因素,使得對構(gòu)件安全性的評估更全面客觀。
附圖說明
圖1為本發(fā)明一種基于證據(jù)合成理論的軟件體系結(jié)構(gòu)安全性評估方法原理圖;
圖2為本發(fā)明一種基于證據(jù)合成理論的軟件體系結(jié)構(gòu)安全性評估方法流程圖;
圖3為本發(fā)明運用證據(jù)合成理論計算每條運行路徑的安全等級評估結(jié)果流程圖;
圖4為本發(fā)明將所有運行路徑的安全等級評估結(jié)果合成得到系統(tǒng)安全性等級流程圖;
圖5為本發(fā)明實施例中簡單飛控系統(tǒng)結(jié)構(gòu)實例模型圖。
具體實施方式
下面將結(jié)合附圖對本發(fā)明作進一步的詳細說明。
在軟件體系結(jié)構(gòu)設(shè)計階段,在體系結(jié)構(gòu)模型的最小單位構(gòu)件元素中加入安全性關(guān)鍵特征的屬性,并且對模型和關(guān)鍵特征的屬性進行數(shù)學(xué)的形式化轉(zhuǎn)化,在得到航空電子體系結(jié)構(gòu)的轉(zhuǎn)化后模型后,利用基于體系結(jié)構(gòu)的軟件安全性評估的方法,對轉(zhuǎn)化后的評估模型進行基于航電體系結(jié)構(gòu)關(guān)鍵特征的安全性評估方法,形成了基于航電體系結(jié)構(gòu)AADL模型的軟件安全性評估方法。
本發(fā)明一種基于證據(jù)合成理論的軟件體系結(jié)構(gòu)安全性評估方法,如圖1所示,本發(fā)明首先根據(jù)構(gòu)件軟件體系結(jié)構(gòu)模型分析系統(tǒng)中的構(gòu)建和連接的關(guān)系,利用系統(tǒng)安全性需求規(guī)格說明書從構(gòu)件的失效可能性、構(gòu)件失效后果嚴重程度和構(gòu)件的失效后果嚴重程度三個維度分析構(gòu)件的安全性,建立系統(tǒng)的構(gòu)件安全性模糊集合,接下來將建立的系統(tǒng)構(gòu)件安全性模糊集合進行模糊數(shù)學(xué)計算處理得到合成的構(gòu)件的安全性評估模糊集,利用閔可夫斯基距離公式和模糊數(shù)學(xué)計算方法得到構(gòu)件的安全性評估等級。然后利用系統(tǒng)運行剖面分析信息,得到系統(tǒng)構(gòu)件和運行路徑的使用概率。
接下來通過系統(tǒng)的運行使用概率信息和構(gòu)件安全性評估等級結(jié)合,得到加權(quán)處理后的安全性評估等級,利用D-S證據(jù)合成理論,將構(gòu)件的安全性評估等級進行合成,最終得到系統(tǒng)每個運行路徑的安全性評估等級。遵循同樣的思路,將路徑的安全性評估等級利用D-S證據(jù)合成理論進行合成,得到系統(tǒng)的安全性評估等級的結(jié)果。
具體是指基于軟件的體系結(jié)構(gòu),利用模糊數(shù)學(xué)理論和D-S證據(jù)合成理論結(jié)合軟件的運行剖面信息,對軟件安全性進行建模并評估的方法。在軟件系統(tǒng)中,單個構(gòu)件i的安全度S(i)可以被認為是擁有置信度βij,j=1,2,…s的一個假設(shè),多個構(gòu)件的安全度可以被不同的假設(shè)證據(jù)合成。然后軟件使用場景的安全度可以再次通過合成和推理,加入軟件的使用信息進行合成最終得到整個軟件系統(tǒng)的安全度。
如圖2所示,具體步驟如下:
步驟一、針對某個軟件系統(tǒng),利用模塊構(gòu)建該軟件系統(tǒng)的體系結(jié)構(gòu)模型;
體系結(jié)構(gòu)模型包括構(gòu)件和體系結(jié)構(gòu)配置;通過建模軟件建立體系結(jié)構(gòu)模型,該模型描述了系統(tǒng)構(gòu)件的動態(tài)交互行為。
構(gòu)件指組成該軟件系統(tǒng)的獨立單元,可以是子系統(tǒng)、模塊、對象、庫、產(chǎn)品、數(shù)據(jù)庫或其它更加廣泛的概念,具體的劃分方法由軟件系統(tǒng)的特點和需要分析的軟件層次來決定。
體系結(jié)構(gòu)配置是指構(gòu)件與構(gòu)件之間的連接關(guān)系,包括子系統(tǒng)構(gòu)件模塊、對象構(gòu)件模塊、庫構(gòu)件模塊、產(chǎn)品構(gòu)件模塊或者數(shù)據(jù)庫構(gòu)件模塊;
針對各軟件系統(tǒng),可以在設(shè)計階段開始利用軟件詳細設(shè)計文檔,分析該軟件系統(tǒng)的軟件體系結(jié)構(gòu),仔細劃分軟件體系結(jié)構(gòu)中的構(gòu)件和體系結(jié)構(gòu)配置;軟件體系結(jié)構(gòu)是關(guān)于軟件的系統(tǒng)級層次上的組成和行為的設(shè)計,是設(shè)計過程中不可缺少的一個階段,對復(fù)雜軟件的后期設(shè)計活動起著重要的決定作用。
步驟二、針對每個構(gòu)件,根據(jù)安全性需求規(guī)格說明,計算該構(gòu)件的三個模糊集;
每個構(gòu)件的模糊集包括:失效率對應(yīng)的參數(shù)模糊集L,該參數(shù)表征的是在一定時期內(nèi)失效發(fā)生的頻率;危險后果嚴重程度對應(yīng)的參數(shù)模糊集C,該參數(shù)為可能發(fā)生危險后果的嚴重性;以及失效后果發(fā)生概率對應(yīng)的參數(shù)模糊集E,該參數(shù)表示導(dǎo)致嚴重后果的概率。
根據(jù)機載軟件適航標準DO-178B,針對安全性分析需求,在該體系結(jié)構(gòu)模型中的構(gòu)件上加入了本發(fā)明方法自定義的安全性分析的基本屬性參數(shù),每個構(gòu)件的安全性評估參數(shù)由失效率FR、危險后果嚴重程度CS和失效后果發(fā)生概率FCP共同描述;根據(jù)軟件系統(tǒng)的安全性評估需求規(guī)格說明書要求,對定性的安全性評估需求進行分析,將之模糊數(shù)學(xué)化處理,對應(yīng)構(gòu)件的安全性評估參數(shù);在AADL的連接構(gòu)件上加入本發(fā)明方法自定義的轉(zhuǎn)移概率屬性參數(shù),用以描述軟件系統(tǒng)的動態(tài)行為。
模糊集構(gòu)建的方法如下:U={1,2,…,n-1,n}代表一個自然語言變量分類等級的集合;如“可能,很可能…,一定發(fā)生”等,則這些語言變量就可以用以下的模糊子集來表示:
Hazardous={1/0,2/0,…,n-1/0.5,n/1.0}式中,每一個分子代表分類,分母代表該模糊集合的隸屬度。
根據(jù)常用的安全性描述自然語言,安全度模糊集的自然語言分類等級為:
模糊集L的安全等級描述為:高度頻繁、頻繁、合理頻繁、平常、比較低、相當(dāng)?shù)秃秃艿停荒:疌的安全等級描述:可忽略的、最低限度的、危險的、災(zāi)難性的;模糊集E的安全等級描述為:極不可能、不可能、不太可能、可能、比較可能、極度可能和一定發(fā)生。
比如一個構(gòu)件的失效率對應(yīng)的參數(shù)模糊集L,在構(gòu)建模糊集L過程中可以進行判斷,如果這個構(gòu)件通過配置項測試是一個很可靠的構(gòu)件,平均無故障時間很長,對該構(gòu)件進行失效率的模糊集建模如下:失效可能性={1,0.75,0,0,0,0,0}。
通過建模軟件建立體系結(jié)構(gòu)模型,該模型描述了本發(fā)明自定義的安全性分析的基本屬性參數(shù),分別是失效率FR、危險后果嚴重程度CS系統(tǒng)構(gòu)件的動態(tài)交互行為。針對安全性分析需求,在該分析模型中的體系結(jié)構(gòu)構(gòu)件上加入了和失效后果發(fā)生概率FCP的模糊集合;連接構(gòu)件上加入本發(fā)明自定義的轉(zhuǎn)移概率屬性參數(shù),用以描述軟件系統(tǒng)的動態(tài)行為。
步驟三、針對某個構(gòu)件i,根據(jù)三個模糊集計算該構(gòu)件的安全性模糊集合成值Si;
針對每個構(gòu)件,采用模糊集組合計算方法和安全度合成算法,根據(jù)三個模糊集計算該構(gòu)件的模糊集合成值Si,該合成的結(jié)果也是一個帶有7個類別的模糊集合;
μci代表模糊集C的安全性描述隸屬于該模糊集安全等級的程度;μei代表模糊集E的安全性描述隸屬于該模糊集安全等級的程度;μLi代表模糊集L的安全性描述隸屬于該模糊集安全等級的程度;構(gòu)件i總體的安全性描述隸屬于自然語言變量的程度共有Hn類;n是指自然語言變量的分類;代表構(gòu)件i的安全性描述隸屬于第Hn類的程度。
結(jié)果是該構(gòu)件在某一失效模式下的安全性因素導(dǎo)致的安全度等級的一種模糊描述。
步驟四、針對構(gòu)件i的安全性模糊集合成值Si,分別計算該構(gòu)件到五個安全度等級的五個閔可夫斯基距離;
五個安全度等級是指:對軟件的安全性綜合評估結(jié)果按5個等級進行劃分,為1級災(zāi)難的、2級危險的、3級中等的、4級極低的和5級無影響;用集合表示為:j=(1,2,3,4,5);
閔可夫斯基距離dij公式如下:
dij表示構(gòu)件i到第j個安全度等級的閔可夫斯基距離。是指根據(jù)構(gòu)件i的安全性模糊集合成值Si中對應(yīng)的第n個元素值;是指機載軟件適航標準DO-178B中第j個安全度等級對應(yīng)的第n個自然語言變量分類值。
構(gòu)件i到五個安全度等級的閔可夫斯基距離dij為一行五列的向量;
例如:
利用最優(yōu)擬合法,計算安全性模糊集合成值Si和每一個安全度等級之間的,即兩個模糊集合的閔可夫斯基距離,即歐幾里得距離。式中,dij表示構(gòu)件i的安全度評估值對模糊語言變量Catastrophic的確信程度;dij越小說明模糊安全度Si距離第j個模糊語言變量越近。
步驟五、對五個閔可夫斯基距離分別標準化,得到構(gòu)件i到五個安全度等級之間的安全性等級估計值;
構(gòu)件i到第j個安全度等級之間的標準化安全性等級估計值βij計算如下:
aij是閔可夫斯基距離dij的倒數(shù),ai1,ai2,ai3,ai4,ai5代表相對閔可夫斯基距離的倒數(shù);計算如下:
diJ(J=1,2,3,4,5)為構(gòu)件i到五個安全度等級的閔可夫斯基距離值中的最小值;
假設(shè)Hn代表一系列自然語言變量的集合,用于安全性表達和評估,Hj表示構(gòu)件i的標準化安全性等級估計值βij對應(yīng)的第j個安全度等級;所以映射集合S(i)={(βij,Hj)}。
步驟六、針對當(dāng)前軟件系統(tǒng)的體系結(jié)構(gòu)模型,分析該模型的所有運行路徑;
在軟件系統(tǒng)的設(shè)計階段,除了設(shè)計軟件的體系結(jié)構(gòu)靜態(tài)模型外,還會有軟件的順序圖來描述軟件的動態(tài)運行情況,以及用例圖,從使用的視角來描述軟件所處的動態(tài)運行環(huán)境以及軟件的執(zhí)行條件等。
由于在軟件的體系結(jié)構(gòu)設(shè)計中,軟件的構(gòu)件和體系結(jié)構(gòu)配置都是做了嚴格的定義的,每個軟件系統(tǒng)的運行過程可以看成是:一個構(gòu)件經(jīng)過一個體系結(jié)構(gòu)配置和另一個構(gòu)件進行數(shù)據(jù)傳輸?shù)倪^程,對軟件進行動態(tài)運行分析,得到系統(tǒng)在運行過程中由構(gòu)件和體系結(jié)構(gòu)配置組成的不同的運行路徑。
步驟七、根據(jù)所有運行路徑分別計算任意兩個相鄰構(gòu)件的轉(zhuǎn)移概率;
在用例圖中,構(gòu)件a的下一個執(zhí)行構(gòu)件可能有很多個,因此考慮從構(gòu)件a到構(gòu)件b的轉(zhuǎn)移概率,如公式:vab=tab/ta
其中tab表示從構(gòu)件a到相鄰構(gòu)件b的傳遞消息的次數(shù),也就是使用頻率;而表示從構(gòu)件a傳出的且到與構(gòu)件a有交互關(guān)系的所有相鄰構(gòu)件的消息總數(shù),也就是使用頻率之和;M表示從構(gòu)件a傳出的且與構(gòu)件a有交互關(guān)系的所有相鄰構(gòu)件的數(shù)量。
步驟八、針對每個運行路徑,利用該運行路徑上每個構(gòu)件的轉(zhuǎn)移概率和五個安全性等級估計值,運用證據(jù)合成理論計算該運行路徑的安全等級評估結(jié)果;
加入帶有構(gòu)件使用頻度權(quán)重的信息,本發(fā)明提出的安全性合成的分層的算法模型,如圖3所示,步驟如下:
步驟801、針對某個運行路徑p上的構(gòu)件i,計算構(gòu)件i在該運行路徑上與相鄰構(gòu)件的轉(zhuǎn)移概率vi;
其中構(gòu)件i在M條運行路徑中都存在,則轉(zhuǎn)移概率vi計算如下:
vi1+vi2+...+viM=1
步驟802、根據(jù)構(gòu)件i的轉(zhuǎn)移概率vi和標準化安全性等級估計值βij,計算分配后安全性等級估計值
步驟803、利用分配后安全性等級估計值計算構(gòu)件i和相鄰構(gòu)件i+1的安全性評估結(jié)果的沖突程度系數(shù)Ki,i+1;
其中代表構(gòu)件i到第T個安全度等級之間的分配后安全性等級估計值;代表構(gòu)件i+1到第R個安全度等級之間的分配后安全性等級估計值。
步驟804、利用構(gòu)件i的分配后安全性等級估計值和證據(jù)合成理論,計算歸一化參數(shù)
H表示代表構(gòu)件i到第H個安全度等級之間的分配后安全性等級估計值;
步驟805、將第i+1個構(gòu)件與前i個構(gòu)件進行合成處理,得到該條運行路徑的安全性等級評估結(jié)果
初始設(shè)置
根據(jù)D-S理論的基本算法,兩個模糊集合成的算法如下:
將運行路徑p中的所有構(gòu)件的安全性評估結(jié)果進行合成,合成的步驟是兩兩合成,先得到第一個和第二個的合成結(jié)果,再將該結(jié)果與第三個進行合成,以此類推。
步驟806、將運行路徑p的安全性等級評估結(jié)果映射為集合S(p);
Hj表示運行路徑p的安全性等級評估結(jié)果對應(yīng)的第j個安全度等級。
步驟九、利用證據(jù)合成公式,將每個運行路徑的安全等級評估結(jié)果進行合成,得到系統(tǒng)安全性等級;
利用和步驟八一樣的算法,將構(gòu)件的安全性等級評估結(jié)果替換成路徑的安全性等級評估結(jié)果進行合成,可以得到系統(tǒng)的安全性等級評估結(jié)果。
如圖4所示,具體步驟如下:
步驟901、設(shè)定運行路徑p的安全性等級評估結(jié)果用表示;
用代表路徑p的安全性等級評估結(jié)果,替代構(gòu)件的安全性評估等級的結(jié)果
定義Vk=(v1,v2,…vp)代表路徑p在軟件系統(tǒng)中的使用概率向量,該參數(shù)用于提供基本使用概率為安全度的賦值函數(shù)進行動態(tài)信任評估,從而可以由下式計算:
步驟902、利用運行路徑p和相鄰運行路徑p+1的安全性等級評估結(jié)果,計算沖突程度系數(shù)Kp,p+1;
其中代表運行路徑p到第T個安全度等級之間的安全性等級評估結(jié)果;代表運行路徑p+1到第R個安全度等級之間的安全性等級評估結(jié)果。
步驟903、利用運行路徑p的安全性等級評估結(jié)果和證據(jù)合成理論,計算歸一化參數(shù)
H表示代表運行路徑p到第H個安全度等級之間的安全性等級評估結(jié)果;
步驟904、將第p+1個運行路徑與前p個運行路徑進行合成處理,得到系統(tǒng)所有的安全性等級評估結(jié)果
初始設(shè)置
步驟905、將所有運行路徑的安全性等級評估結(jié)果映射為集合S(System);
其中,代表最后一條路徑p+1與之前p條路徑進行安全性評估結(jié)果合成之后的值,計算出系統(tǒng)的安全度之后可以映射到DO-178B所規(guī)定的軟件安全性等級表達中。Hj表示所有運行路徑的安全性等級評估結(jié)果對應(yīng)的第j個安全度等級。
利用運行路徑的安全性等級評估結(jié)果合成得到系統(tǒng)的安全性等級評估結(jié)果;在得到每個運行路徑的安全性等級評估結(jié)果后,利用每個路徑不同的轉(zhuǎn)移概率作為權(quán)重,在進行D-S證據(jù)合成計算的時候加入該權(quán)重,由于加入了軟件運行路徑的轉(zhuǎn)移概率這一動態(tài)信息,就可以得到軟件系統(tǒng)的動態(tài)安全性評估結(jié)果。
實施例:
以某飛控系統(tǒng)為例,體系結(jié)構(gòu)模型如圖5所示,其中,“飛控操縱臺”O(jiān)perating)是飛控系統(tǒng)的人機接口,具有駕駛員對系統(tǒng)工作狀態(tài)的設(shè)置功能及對系統(tǒng)工作狀態(tài)的指示功能。系統(tǒng)由增穩(wěn)/控制增穩(wěn)子系統(tǒng)(pcs,lcs)、自動飛行子系統(tǒng)(ap_manage)和自動配平子系統(tǒng)(pap)構(gòu)成,增穩(wěn)/控制增穩(wěn)子系統(tǒng)為三余度配置(rm);同時系統(tǒng)還有控線分系統(tǒng),主要是飛行狀態(tài)選擇器(CDS);以及系統(tǒng)的bit幾個主要模塊組成。
步驟一、針對某個軟件系統(tǒng),利用模塊構(gòu)建該軟件系統(tǒng)的體系結(jié)構(gòu)模型;
在本發(fā)明中將以上幾個模塊視為該軟件系統(tǒng)的構(gòu)件,建立飛控子系統(tǒng)體系結(jié)構(gòu)安全性模型。根據(jù)軟件系統(tǒng)體系架構(gòu)分析,假設(shè)構(gòu)件c1是飛控操作臺模塊,構(gòu)件c2是啟動程序模塊,構(gòu)件c3是系統(tǒng)BIT模塊,構(gòu)件c4是三余度控制模塊,構(gòu)件c5是飛行狀態(tài)選擇器模塊。
步驟二、針對每個構(gòu)件,分析軟件安全性需求規(guī)格說明,計算該構(gòu)件的三個模糊集;
根據(jù)軟件需求規(guī)格說明書,對照DO-178B標準將軟件構(gòu)件的失效率FR、危險后果嚴重程度CS和失效后果發(fā)生概率FCP進行安全性分析,用模糊集描述這幾個屬性的安全性等級,模糊集的建立如表1,表2和表3所示;該模糊集的建立是通過W Karwowski于1986年在《Fuzzy Sets&Systems》上發(fā)表的文獻《Potential applications of fuzzy sets in industrial safety engineering》里提出的安全性模糊集的建立方法,該方法由于對安全性集合進行科學(xué)的分類并進行了計算的證明,在安全性的模糊評價工作中一直被沿用。
失效可能性模糊度如表1所示:
表1
失效后果嚴重程度模糊度如表2所示:
表2
失效后果發(fā)生可能性模糊度如表3所示,
表3
根據(jù)軟件的飛控操作臺的安全性需求分析文檔,構(gòu)件c1的失效概率介于“比較低”等級和“相當(dāng)?shù)汀钡燃壷g,并且可以認為非常接近“相當(dāng)?shù)汀钡燃?;由于?gòu)件c1影響到子系統(tǒng)的每個運行路徑,故安全后果嚴重程度被認為是“危險的”,該構(gòu)件c1是系統(tǒng)的一個關(guān)鍵構(gòu)件,內(nèi)部有備份冗余設(shè)置,故該構(gòu)件的失效后果發(fā)生可能性被判定為接近“不太可能”和“不可能”之間,最后構(gòu)件c1的安全性屬性的模糊集構(gòu)建結(jié)果如下:
L1={1/0.5,2/0.75,3/0.5,4/0,5/0,6/0,7/0}
C1={1/0,2/0,3/0,4/0.75,5/1,6/0.25,7/0}
E1={1/0.1,2/0.5,3/0.5,4/0,5/0,6/0,7/0}
遵循同樣的分析思路,得到c2-c5的構(gòu)件安全性屬性模糊集合:
構(gòu)件c2的失效概率介于“比較低”等級和“相當(dāng)?shù)汀钡燃壷g,并且根據(jù)失效率得到該模塊可以認為非常接近“比較低”等級;由于構(gòu)件c2是啟動程序影響到子系統(tǒng)的每個運行路徑,故安全后果嚴重程度被認為是“危險的”,該構(gòu)件c2是系統(tǒng)的一個關(guān)鍵構(gòu)件并且邏輯復(fù)雜目前沒有做備份,故該構(gòu)件的失效后果發(fā)生可能性被判定為接近“比較可能”和“極度可能”之間。
構(gòu)件c2的安全性屬性的模糊集構(gòu)建結(jié)果如下:
L2={1/0,2/0.25,3/1,4/0.75,5/0,6/0,7/0}
C2={1/0,2/0,3/0,4/0.75,5/1,6/0.25,7/0}
E2={1/0,2/0,3/0,4/0,5/0.8,6/1,7/0.2}
構(gòu)件c3是系統(tǒng)BIT模塊,該模塊的失效概率介于“很低”等級和“相當(dāng)?shù)汀钡燃壷g,并且根據(jù)失效率得到該模塊可以認為非常接近“很低”等級;由于構(gòu)件c3是BIT程序并不影響到子系統(tǒng)的每個運行路徑,故安全后果嚴重程度被認為是“可接受的”和“可忽略的”,該構(gòu)件c3是系統(tǒng)的測試性設(shè)計模塊,故該構(gòu)件的失效后果發(fā)生可能性被判定為接近“可能”和“不太可能”之間。
構(gòu)件c3的安全性屬性的模糊集構(gòu)建結(jié)果如下:
L3={1/0.1,2/0.75,3/0.7,4/0.3,5/0,6/0,7/0}
C3={1/0,2/0,3/0,4/0.6,5/0.8,6/0.4,7/0.1}
E3={1/0,2/0,3/0,4/0.7,5/0.8,6/0.4,7/0.1}
構(gòu)件c4是系統(tǒng)三余度模塊,由于是通過配置項測試該模塊的失效概率介于“比較低”等級和“平?!钡燃壷g,并且根據(jù)失效率得到該模塊可以認為非常接近“比較低”等級;由于構(gòu)件c4是三余度控制程序并不影響到子系統(tǒng)的每個運行路徑,故安全后果嚴重程度被認為是“危險的”,該構(gòu)件c4是系統(tǒng)的備份冗余功能設(shè)計模塊,故該構(gòu)件的失效后果發(fā)生可能性被判定為接近“不可能”和“不太可能”之間。
構(gòu)件c4的安全性屬性的模糊集構(gòu)建結(jié)果如下:
L4={1/0,2/0.3,3/1.0,4/0.7,5/0,6/0,7/0}
C4={1/0,2/0,3/0,4/0.75,5/1,6/0.25,7/0}
E4={1/0,2/0,3/0,4/0,5/0.7,6/1,7/0.3}
構(gòu)件c5是系統(tǒng)飛行狀態(tài)選擇器模塊,通過配置項測試該模塊屬于系統(tǒng)的關(guān)鍵模塊,該的失效概率為“很低”等級;構(gòu)件c5是系統(tǒng)關(guān)鍵模塊,影響到子系統(tǒng)的每個運行路徑,故安全后果嚴重程度被認為是“危險的”和“災(zāi)難的”之間,該構(gòu)件具有備份冗余,故失效后果發(fā)生可能性被判定為接近“不可能”和“極不可能”之間。
構(gòu)件c5的安全性屬性的模糊集構(gòu)建結(jié)果如下:
L5={1/0.25,2/1,3/0.25,4/0,5/0,6/0,7/0}
C5={1/0,2/0,3/0,4/0.75,5/0,6/1,7/0.25}
E5={1/0.25,2/1,3/0,4/0,5/0,6/0,7/0}
步驟三、根據(jù)三個模糊集計算各構(gòu)件的安全性模糊集合成值;
用安全度合成算法,計算三個安全度模糊集的模糊集合成值,對構(gòu)件c1有以下:
對其余構(gòu)件構(gòu)件c2,構(gòu)件c3,構(gòu)件c4和構(gòu)件c5采用同樣方法計算。
步驟四、針對構(gòu)件i的安全性模糊集合成值Si,分別計算該構(gòu)件到五個安全度等級的五個閔可夫斯基距離;
參考表4計算各安全性模糊集合成值到安全度表達模糊集的閔可夫斯基Minkowski距離。該表的安全度等級是根據(jù)DO-178B給出的飛機適航驗證中的安全度分析等級。
表4
利用最優(yōu)擬合算法,利用下列公式計算每個構(gòu)件的安全度模糊集到五個安全度等級的閔可夫斯基距離。
針對構(gòu)件c1到第一個安全度等級“Catastrophic”的閔可夫斯基距離為:
結(jié)果為:
同理,構(gòu)件c1到第二個安全度等級的閔可夫斯基距離為d12,構(gòu)件c1到第三個安全度等級的閔可夫斯基距離為d13;構(gòu)件c1到第四個安全度等級的閔可夫斯基距離為d14;構(gòu)件c1到第五個安全度等級的閔可夫斯基距離為d15;結(jié)果為:d12=0.901,d13=1.089,d14=1.030,d15=0.968。
步驟五、對五個閔可夫斯基距離分別標準化,得到構(gòu)件c1到五個安全度等級之間的安全性等級估計值;
首先,根據(jù)五個閔可夫斯基距離分別計算倒數(shù)a11,a12,a13,a14,a15,結(jié)果依次如下:
a11=0.681,a12=1,a13=1.208,a14=1.143,a15=1.074
然后,根據(jù)五個倒數(shù)計算構(gòu)件c1到五個安全度等級之間的標準化安全性等級估計值β11,β12,β13,β14,β15,結(jié)果為:β11=0.133,β12=0.196,β13=0.237,β14=0.224,β15=0.210。
最后,構(gòu)件c1的安全性等級估計值集合結(jié)果為:
可以看到,構(gòu)件c1的安全性等級估計值中以13.3%的置信度符合災(zāi)難的等級“catastrophic”;以19.6%的置信度符合危險的等級“hazardous”,以23.7%的置信度符合中等的等級“major”,以22.4%的置信度符合極低的等級“minor”,以21%的置信度符合無影響等級“no effect”。
遵循同樣的計算思路,得到其余幾個構(gòu)件的安全度等級集合:
構(gòu)件c2的安全性等級估計值集合結(jié)果為:
S(c2)={(0.104,Catastrophic),(0.100,Hazardous),(0.523,Major),
(0.126,Minor),(0.147,Noeffect)}
構(gòu)件c3的安全性等級估計值集合結(jié)果為:
構(gòu)件c4的安全性等級估計值集合結(jié)果為:
構(gòu)件c5的安全性等級估計值集合結(jié)果為:
以上分別得到五個構(gòu)件的安全性等級估計值集合。
步驟六、對軟件的運行路徑進行路徑分析。
分析系統(tǒng)的運行路徑,假設(shè)運行路徑p1是c1-c2-c3,運行路徑p2是c1-c2-c4-c5。
步驟七、根據(jù)所有運行路徑分別計算任意兩個相鄰構(gòu)件的轉(zhuǎn)移概率;
根據(jù)系統(tǒng)分析人員分析,結(jié)合軟件系統(tǒng)的使用情況,構(gòu)件c2-c3和構(gòu)件c2-c4在運行路徑p1和p2的轉(zhuǎn)移概率分別為:v23=0.6666和v24=0.3333。
步驟八、分別計算兩條運行路徑的安全等級評估結(jié)果;
針對第一條路徑,利用D-S合成理論,綜合構(gòu)件c1,c2,c3的安全置信等級S(c1),S(c2),S(c3)得到軟件運行路徑p1的安全等級評估結(jié)果Sp1為:
利用公式:
n=1,…,n-1
首先,計算構(gòu)件c1和相鄰構(gòu)件c2的安全性評估結(jié)果的沖突程度系數(shù)Kc1,c2為:Kc1,c2=1.747
并假定
然后,計算構(gòu)件c2在運行路徑p1中的分配后的安全性評估結(jié)果為:得到
最后,將構(gòu)件c1與構(gòu)件c2進行合成處理,得到前兩個構(gòu)件的安全性等級評估結(jié)果合成值;
同理,利用分配后的構(gòu)件c2的安全性等級評估結(jié)果和相鄰構(gòu)件c3的安全性等級評估結(jié)果計算沖突程度系數(shù)Kc2,c3;再利用前兩個構(gòu)件的安全性等級評估結(jié)果合成值與構(gòu)件c3進行合成,得到路徑p1的安全性等級評估結(jié)果:
映射為集合:
即路徑p1的安全性等級評估結(jié)果中,以12.82%的置信度符合災(zāi)難的等級“catastrophe”,以17.58%的置信度符合危險的等級“hazardous”,以20.52%的置信度符合中等的等級“major”,以28.90%的置信度符合極低的等級“minor”,以17.94%的置信度符合無影響等級“no effect”。
針對第二條路徑,遵循同樣的思路計算p2的安全度等級集合為:
S(P2)={(0.1103,Catastrophic),(0.1051,Hazardous),(0.3002,Major),
(0.3571,Minor),(0.1273,Noeffect)}
即路徑p2的安全性等級評估結(jié)果中,以11.03%的置信度符合災(zāi)難的等級“catastrophe”,以10.51%的置信度符合危險的等級“hazardous”,以30.02%的置信度符合中等的等級“major”,以35.71%的置信度符合極低的等級“minor”,以12.73%的置信度符合無影響等級“no effect”。
步驟九、利用兩條運行路徑的安全等級評估結(jié)果合成,得到系統(tǒng)的安全等級評估結(jié)果。
根據(jù)綜合算法,首先計算運行路徑p1和p2的沖突程度系數(shù)Kp1p2=1.80775;假定所以將運行路徑p1和p2進行合成處理,得到系統(tǒng)的安全性等級評估結(jié)果合成值;
綜合軟件動態(tài)運行路徑的使用概率的軟件系統(tǒng)的安全等級評估結(jié)果S(System)為:
S(System)={(0.1420,Catastrophic),(0.1826,Hazardous),(0.1954,Major),
(0.34965,Minor),(0.12688,Noeffect)}
根據(jù)以上結(jié)果,該飛控軟件系統(tǒng)的安全等級以34.965%的置信度被評價為Minor。該結(jié)果可以作為系統(tǒng)安全度量結(jié)果的決策參考。在整個構(gòu)件安全等級的分析過程中,結(jié)合該軟件的安全需求規(guī)格說明書分析構(gòu)件的安全等級,絕大多數(shù)的構(gòu)件在進行安全度模糊集的安全性評估時被評價為安全評估等級為Minor,少部分的構(gòu)件在進行安全度模糊集合評估時被評價為等級Catastrophic,該評估結(jié)果也是符合該軟件在適航認證時得到的安全度評估評價為Minor 等級的結(jié)果。