[發(fā)明專利]基于層次依賴建模的軟件FMEA方法有效
| 申請(qǐng)?zhí)枺?/td> | 201310378809.3 | 申請(qǐng)日: | 2013-08-27 |
| 公開(公告)號(hào): | CN103473400A | 公開(公告)日: | 2013-12-25 |
| 發(fā)明(設(shè)計(jì))人: | 吳玉美;吳立金;劉斌 | 申請(qǐng)(專利權(quán))人: | 北京航空航天大學(xué) |
| 主分類號(hào): | G06F17/50 | 分類號(hào): | G06F17/50 |
| 代理公司: | 北京永創(chuàng)新實(shí)專利事務(wù)所 11121 | 代理人: | 趙文穎 |
| 地址: | 100191*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 層次 依賴 建模 軟件 fmea 方法 | ||
1.基于層次依賴建模的軟件FMEA方法,具體實(shí)現(xiàn)步驟如下:?
第一步,確定分析目標(biāo);?
通過目標(biāo)軟件的軟件需求規(guī)格說明文檔,利用需求關(guān)鍵性分析方法,識(shí)別目標(biāo)軟件的安全關(guān)鍵需求,根據(jù)安全關(guān)鍵需求得到安全關(guān)鍵功能;?
第二步,構(gòu)建系統(tǒng)級(jí)層次依賴關(guān)系模型;?
1)對(duì)目標(biāo)軟件進(jìn)行分解和數(shù)據(jù)精化;?
將安全關(guān)鍵功能進(jìn)行層次分解,分解出子功能;同時(shí)對(duì)軟件進(jìn)行結(jié)構(gòu)的層次分解,結(jié)構(gòu)分解出軟件模塊;數(shù)據(jù)精化辨別出數(shù)據(jù)在模塊之間的傳遞關(guān)系包括交換數(shù)據(jù)類型、數(shù)據(jù)取值范圍、實(shí)時(shí)性約束;?
2)基于分解結(jié)果,為節(jié)點(diǎn)添加屬性,構(gòu)建層次依賴模型控制依賴關(guān)系;?
(1)增添系統(tǒng)級(jí)別層次依賴模型節(jié)點(diǎn)的信息?
通過現(xiàn)有的軟件模塊關(guān)鍵性分析方法,辨別分解后的模塊與分解后功能對(duì)應(yīng)關(guān)系以及模塊的安全關(guān)鍵性,將功能作為模塊的屬性;約定:上層模塊功能屬性是下層功能屬性的綜合,下層節(jié)點(diǎn)的功能屬性是上層的功能分解;?
在層次依賴模型中每個(gè)節(jié)點(diǎn)采用一個(gè)八元組Na=(M,I,O,P,L,G,Q,C)來儲(chǔ)存信息,其中:?
a)M是節(jié)點(diǎn)的名稱(或編號(hào)),能唯一標(biāo)識(shí)這個(gè)節(jié)點(diǎn),且不為空值;?
b)I是節(jié)點(diǎn)代表的模塊的輸入變量集合,非空,集合中的每個(gè)變量又分別是一個(gè)變量模型,變量模型包括變量編號(hào)、變量名稱、變量類型、變量作用域?qū)傩裕?
c)O是節(jié)點(diǎn)代表的模塊的輸出變量集合,其屬性與輸入變量I相同,即,集合中的每個(gè)變量也是一個(gè)變量模型,變量模型包括變量編號(hào)、變量名稱、變量類型、變量作用域?qū)傩裕?
d)P是處理過程描述,描述節(jié)點(diǎn)所代表的模塊的功能流程,可以是文字性描述,也可以是流程圖形式,主要用于分析人員對(duì)功能有更深刻理解,P可以為空;?
e)L是層次依賴模型中上層相關(guān)聯(lián)節(jié)點(diǎn)的集合,即控制依賴本節(jié)點(diǎn)的上層節(jié)點(diǎn)集合,L包括上個(gè)橫向?qū)哟沃邢嘁蕾嚬?jié)點(diǎn)集合L1和上個(gè)縱向?qū)哟蜗嘁蕾嚬?jié)點(diǎn)集合L2;?
f)G是層次依賴模型中節(jié)點(diǎn)的功能屬性,包括詳細(xì)描述和功能關(guān)鍵詞兩個(gè)屬性,其中功?能關(guān)鍵詞屬性主要由分析人員的通用軟件失效模式集確定,功能關(guān)鍵詞用于FMEA自動(dòng)化查找失效模式,詳細(xì)描述是對(duì)功能關(guān)鍵詞進(jìn)行細(xì)致的描述,便于分析人員理解;?
g)Q是層次依賴模型中下一個(gè)層次相關(guān)聯(lián)節(jié)點(diǎn)的集合,Q包括下個(gè)橫向?qū)哟蜗嘁蕾嚬?jié)點(diǎn)集合Q1和下個(gè)縱向?qū)哟蜗嘁蕾嚬?jié)點(diǎn)集合Q2;?
h)C表示本節(jié)點(diǎn)所處的層次,包括橫向?qū)哟渭翱v向?qū)哟危捎脤哟螌?duì)<橫向?qū)哟危v向?qū)哟?gt;表示;?
(2)識(shí)別系統(tǒng)級(jí)別的層次依賴模型中依賴關(guān)系及增添屬性?
模塊間的控制依賴關(guān)系是指模塊間的調(diào)用關(guān)系或包含關(guān)系,用模塊間的控制依賴邊表示,從代表調(diào)用模塊或總模塊的節(jié)點(diǎn)指向代表被調(diào)用模塊或子模塊的節(jié)點(diǎn),用實(shí)箭頭表示;逆著箭頭方向是尋找失效的影響,順著箭頭是尋找失效的可能原因;?
模塊間的數(shù)據(jù)依賴關(guān)系是指模塊間的數(shù)據(jù)傳遞,在本模型中采用數(shù)據(jù)傳遞邊表示,數(shù)據(jù)傳遞邊從代表數(shù)據(jù)定義模塊的節(jié)點(diǎn)指向代表數(shù)據(jù)應(yīng)用模塊的節(jié)點(diǎn),用虛箭頭表示;順著箭頭是尋找失效的影響,逆著箭頭方向是尋找失效的原因;?
每個(gè)節(jié)點(diǎn)間的依賴關(guān)系采用一個(gè)七元組E=(I,Q,Z,L,P,C,Y)來儲(chǔ)存信息,其中:?
a)I表示的是依賴關(guān)系的編號(hào),每個(gè)依賴關(guān)系都有唯一的編號(hào);?
b)Q表示的是表示依賴關(guān)系箭頭的起點(diǎn)的名稱(或編號(hào)),由于不同依賴關(guān)系表示方式不同,起點(diǎn)是指箭頭連線的起始點(diǎn),而非依賴關(guān)系的起點(diǎn);?
c)Z表示的是表示依賴關(guān)系箭頭的終點(diǎn)的名稱(或編號(hào)),也是指箭頭連線的終點(diǎn),而非依賴關(guān)系的終點(diǎn);?
d)L表示的是依賴的類型,不同的依賴關(guān)系所使用的箭頭不同,箭頭的起點(diǎn)與終點(diǎn)的含義不同,如控制依賴的起點(diǎn)依賴終點(diǎn),數(shù)據(jù)傳遞是數(shù)據(jù)由起點(diǎn)傳遞到終點(diǎn),終點(diǎn)依賴于起點(diǎn),類型包括數(shù)據(jù)傳遞、控制依賴、同步依賴、通信依賴、控制流向,在系統(tǒng)級(jí)層次依賴模型中使用的是控制依賴與數(shù)據(jù)傳遞;?
e)P表示的是依賴的優(yōu)先級(jí),同一個(gè)節(jié)點(diǎn)有多條依賴關(guān)系時(shí),通過優(yōu)先級(jí)表示此節(jié)點(diǎn)被依賴的順序,默認(rèn)情況下為0,數(shù)值越大,優(yōu)先級(jí)越低。如果在循環(huán)依賴的情況下有不同的優(yōu)先級(jí),影響分析時(shí),優(yōu)先級(jí)越高的首選被遍歷,只有在沒有更低的依賴關(guān)系時(shí)循環(huán)依賴遍歷完成。主要是用于更清楚的表現(xiàn)傳播影響路徑。在分析失效原因時(shí),優(yōu)先級(jí)低的首選被遍?歷;?
f)C表示依賴關(guān)系代表的操作的描述,包括:調(diào)用、包含、控制流向、數(shù)據(jù)讀、數(shù)據(jù)寫;?
g)Y表示依賴關(guān)系的約束,控制依賴的約束有遞歸、條件調(diào)用,數(shù)據(jù)依賴的約束有數(shù)值限幅、實(shí)時(shí)性要求,對(duì)約束還可以進(jìn)行詳細(xì)描述;?
3)基于數(shù)據(jù)精化的結(jié)果,在只包含控制依賴關(guān)系的層次依賴模型中,節(jié)點(diǎn)間增加相應(yīng)的數(shù)據(jù)傳遞邊;?
為降低數(shù)據(jù)傳遞的冗余性,在系統(tǒng)級(jí)層次依賴模型中,數(shù)據(jù)傳遞邊只在模型的葉子節(jié)點(diǎn)之間構(gòu)建;通過對(duì)目標(biāo)軟件進(jìn)行分析,在葉子模塊間的數(shù)據(jù)依賴關(guān)系表現(xiàn)為以下五種形式:?
(1)全局變量和數(shù)組的數(shù)據(jù)傳遞;?
(2)函數(shù)調(diào)用形參傳遞;?
(3)函數(shù)內(nèi)部靜態(tài)局部變量的數(shù)值傳遞;?
(4)函數(shù)返回參數(shù)的傳遞;?
(5)其它公共數(shù)據(jù)交換模式,如文件、數(shù)據(jù)庫(kù);?
第三步,選取約定層次,確定約定層次中每個(gè)模塊的失效模式,由系統(tǒng)級(jí)層次依賴模型節(jié)點(diǎn)可達(dá)性分析,分析失效原因追蹤路徑和失效影響傳播路徑,確定失效原因和失效影響,提出改進(jìn)措施;?
1)與現(xiàn)有技術(shù)一樣,首先選定要分析的層次,確定出合理的初始約定層次和最低約定層次;?
(1)確定初始約定層次?
它是系統(tǒng)級(jí)軟件FMEA最終影響的對(duì)象;?
(2)確定約定層次?
它規(guī)定了系統(tǒng)級(jí)軟件FMEA所要分析的軟件的范圍,超出這個(gè)范圍的其他所涉及到的因素都應(yīng)該劃歸為軟件的運(yùn)行環(huán)境范疇;?
(3)確定最低約定層次?
為是最低約定層次能夠明確定義,采用如下規(guī)定:?
●所有可獲得分析數(shù)據(jù)的軟件單元中最低的層次,它能夠有完整的輸入,或能夠?qū)?yīng)到軟件中的一個(gè)或幾個(gè)有一定功能的函數(shù);?
●當(dāng)軟件中某模塊的失效將直接導(dǎo)致災(zāi)難的(I類)或致命的(II類)的后果時(shí),則最低約定層次至少劃分到這一模塊所在層次;?
●確定或預(yù)期需要單元測(cè)試的最低產(chǎn)品層次,這些軟件單元可能導(dǎo)致臨界的(III類)或輕度的(IV類)故障?
2)獲取通用軟件失效模式集與確定待分析節(jié)點(diǎn)具體失效模式的步驟如下:?
(1)定義故障判據(jù),它是根據(jù)產(chǎn)品的功能、性能指標(biāo)、使用環(huán)境等允許極限進(jìn)行確定的;本方法故障判據(jù)如下:?
a)軟件在規(guī)定的條件下和規(guī)定時(shí)間內(nèi),不能完成規(guī)定的功能;?
b)軟件在規(guī)定的條件下和規(guī)定時(shí)間內(nèi),某些性能指標(biāo)不能保持在規(guī)定的范圍內(nèi);?
c)軟件在規(guī)定的條件下和規(guī)定時(shí)間內(nèi),通過硬件引起對(duì)能源和物資等的消耗或人員、環(huán)境等的影響超出了允許范圍;?
d)技術(shù)協(xié)議或其他文件規(guī)定的故障判據(jù);?
(2)對(duì)通過故障判據(jù)判定的故障進(jìn)行分析和抽象,采取了“輸入-輸出-處理-性能”分類方式對(duì)軟件中常見失效模式進(jìn)行總結(jié)歸類,形成通用的失效模式集S;?
(3)基于通用的失效模式集S和已經(jīng)建立的軟件系統(tǒng)依賴關(guān)系模型中節(jié)點(diǎn)的功能屬性,分析當(dāng)前關(guān)注的節(jié)點(diǎn)所代表的的模塊所有可能發(fā)生的具體失效模式集T;具體失效模式確定方法有:?
a)啟發(fā)式,直接來自于通用失效模式集的失效模式或某些失效模式的進(jìn)一步細(xì)化或變種;對(duì)采用現(xiàn)有的軟件,可從該軟件在過去的使用中所發(fā)生的故障模式為基礎(chǔ),再根據(jù)該軟件使用環(huán)境條件的異同進(jìn)行分析修正,進(jìn)而得到該軟件的故障模式;?
b)借鑒式,從相似功能和相似結(jié)構(gòu)軟件中發(fā)生的故障模式作基礎(chǔ),分析判斷其故障模式;?
c)腦力激蕩式,通過調(diào)查分析軟件失效發(fā)生機(jī)理,即根據(jù)常見軟件缺陷來預(yù)測(cè)可能的失效;?
d)變異式,從軟件使用環(huán)境,功能、體系結(jié)構(gòu)和維護(hù)要求以及可靠性、安全性要求等方面入手理解目標(biāo)軟件系統(tǒng)提取特有失效模式;?
e)索取式,對(duì)引進(jìn)國(guó)外貨架軟件,應(yīng)向外商索取其故障模式?
(4)將特有失效模式總結(jié)抽象,歸結(jié)到通用失效模式集S中,為以后分析提供借鑒;?
3)基于系統(tǒng)層次依賴關(guān)系模型進(jìn)行失效原因分析?
在層次依賴模型中,按照其控制依賴箭頭的正方向,數(shù)據(jù)傳遞箭頭的反方向,采用深度優(yōu)先遍歷算法,來查找目標(biāo)軟件中導(dǎo)致某一模塊失效的所有可能模塊;?
低層次產(chǎn)品的故障模式是緊鄰上一層次的故障原因這樣對(duì)的高層影響的自動(dòng)生成高層節(jié)點(diǎn)的故障模式,同時(shí)高層的相應(yīng)的故障原因也通過低層節(jié)點(diǎn)的故障模式自動(dòng)生成;?
對(duì)于分析到最低層失效原因時(shí)將失效原因歸結(jié)到軟件設(shè)計(jì)缺陷,或者通過詳細(xì)級(jí)確定失效更本質(zhì)的原因;?
4)利用系統(tǒng)級(jí)層次依賴模型進(jìn)行軟件失效影響分析?
采用深度優(yōu)先遍歷方法按照其控制依賴箭頭的反方向,數(shù)據(jù)傳遞箭頭的正方向,來查找目標(biāo)軟件中該模塊的失效所影響到的所有可能模塊對(duì)應(yīng)的節(jié)點(diǎn);低層次的上級(jí)影響就是中間層次的故障模式,中間層次的上級(jí)影響又是更高層次的故障模式;中間層次和低層次的最終影響同對(duì)應(yīng)的最高層次的最終影響;根據(jù)影響到的節(jié)點(diǎn)的屬性,辨別影響到的節(jié)點(diǎn)的某一具體失效模式就是影響結(jié)果;?
每個(gè)節(jié)點(diǎn),都有屬性加以信息約束,進(jìn)行尋找可達(dá)節(jié)點(diǎn)遍歷時(shí)由功能關(guān)鍵字搜索通用軟件失效模式集,將與之相關(guān)的所有失效模式查找出來;在遍歷過程中需對(duì)相關(guān)聯(lián)的節(jié)點(diǎn)之間進(jìn)行功能關(guān)鍵字匹配,判斷是否有冗余;?
5)在系統(tǒng)級(jí)FMEA中對(duì)影響嚴(yán)酷度的判別?
首先由研制方從功能角度制定高層功能失效的嚴(yán)酷度,研制方制定功能失效嚴(yán)酷度層次應(yīng)在分解系統(tǒng)時(shí),功能與結(jié)構(gòu)開始出現(xiàn)不完全對(duì)應(yīng)的一層;?
分析人員利用層次依賴模型,將影響定位到結(jié)構(gòu)中的模塊,高層的模塊與功能對(duì)應(yīng),辨別影響到的高層功能,通過對(duì)高層功能的影響程度以及高層功能失效的嚴(yán)酷度確定底層失效的具體嚴(yán)酷度;如果底層失效引起高層功能完全失效,那么嚴(yán)酷度等級(jí)應(yīng)與高層一致,如果部分影響高層功能,即高層功能并未完全失效,那么嚴(yán)酷度等級(jí)應(yīng)該比高層功能失效低;?
6)改進(jìn)措施的提出?
對(duì)于軟件來講,改進(jìn)措施的提出方法主要結(jié)合現(xiàn)有的軟件可靠性設(shè)計(jì)方法,在系統(tǒng)級(jí)有以下方法:?
表1設(shè)計(jì)預(yù)防措施列表?
第四步,根據(jù)系統(tǒng)級(jí)軟件FMEA結(jié)果,選取詳細(xì)級(jí)FMEA分析對(duì)象?
為了降低分析人員選取分析模塊的隨意性,本方法針制定如下選取規(guī)則:?
1)功能重要性選取法,系統(tǒng)的核心模塊,實(shí)現(xiàn)其主要功能;?
2)體系重要性選取法,與其它模塊有較多的交互,通過耦合度計(jì)算度量;?
3)邏輯復(fù)雜性選取法,通過算法空間復(fù)雜度和時(shí)間復(fù)雜度度量;?
4)專家打分法,F(xiàn)MEA本身離不開分析人員的經(jīng)驗(yàn),有經(jīng)驗(yàn)分析人員直覺出問題的模塊也是分析的重點(diǎn);?
5)系統(tǒng)級(jí)軟件FMEA選取法,系統(tǒng)級(jí)軟件FMEA中查找到的會(huì)引起關(guān)鍵用例或功能發(fā)生失效的模塊,其嚴(yán)酷度或危害度在Ⅱ類(致命的,參見GJB1391)以上;?
第五步,以選取的分析對(duì)象的詳細(xì)設(shè)計(jì)或偽代碼為依據(jù),構(gòu)建詳細(xì)級(jí)層次依賴模型;?
1)辨別分析對(duì)象的控制流?
控制流圖是程序依賴圖中數(shù)據(jù)依賴和控制依賴信息的載體,控制流節(jié)點(diǎn)中包含對(duì)應(yīng)的存儲(chǔ)數(shù)據(jù)依賴和控制依賴信息的域;?
2)識(shí)別節(jié)點(diǎn),控制依賴關(guān)系與數(shù)據(jù)依賴關(guān)系?
(1)識(shí)別詳細(xì)級(jí)層次依賴模型中節(jié)點(diǎn)?
在詳細(xì)級(jí)依賴模型中包含幾種類型的結(jié)點(diǎn):?jiǎn)喂?jié)點(diǎn),表示軟件中的單語句或某變量;域結(jié)點(diǎn),概括了域中語句間的控制依賴;?
域節(jié)點(diǎn)可分為以下五大類型:1.模塊節(jié)點(diǎn),表示系統(tǒng)級(jí)結(jié)構(gòu)分解的模塊;2.函數(shù)節(jié)點(diǎn),用于表述函數(shù)整體功能以及相關(guān)參數(shù)之間傳遞;3.復(fù)合語句節(jié)點(diǎn),表述了一個(gè)復(fù)合語句整體?的實(shí)現(xiàn),實(shí)現(xiàn)一定算法功能的語句塊也可視為復(fù)合語句節(jié)點(diǎn);4.謂詞控制節(jié)點(diǎn),表示程序中的策略或分支條件,包括條件語句(包括switch語句)和循環(huán)語句的判斷部分等,用該語句謂詞的標(biāo)記表示;5.結(jié)構(gòu)化跳轉(zhuǎn)語句節(jié)點(diǎn),包括break、continue、return等語句;?
在詳細(xì)級(jí)層次依賴模型每個(gè)域節(jié)點(diǎn)從功能出發(fā),也約定上層節(jié)點(diǎn)功能屬性是下層功能屬性的綜合,用八元組Na=(M,I,O,P,L,G,Q,C)儲(chǔ)存信息,同系統(tǒng)級(jí)FMEA中模塊節(jié)點(diǎn)的定義;?
變量節(jié)點(diǎn),包括變量ID、變量名稱、數(shù)據(jù)類型、存儲(chǔ)類型、作用域、所處的域,別名屬性,采用一個(gè)七元組表示Nb=(ID,Name,L,CL,Y,SY,BN);其中,?
a)ID作為一個(gè)變量節(jié)點(diǎn)的唯一標(biāo)識(shí);?
b)Name表示變量的名稱,同一個(gè)名稱的變量可能因?yàn)樽饔糜虮硎静煌瑑?nèi)容;?
c)L表示數(shù)據(jù)類型,數(shù)據(jù)類型有整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、及公用體類型;數(shù)據(jù)類型決定了變量值的數(shù)據(jù)類型、表現(xiàn)形式和分配空間的大小以及對(duì)變量能執(zhí)行的操作;每個(gè)變量數(shù)據(jù)類型還應(yīng)標(biāo)識(shí)是否與時(shí)間相關(guān)以及時(shí)間約束特性;?
d)CL表示變量的存儲(chǔ)類型,在C/C++語言中,變量的存儲(chǔ)類型有4種:自動(dòng)類(auto)、靜態(tài)類(static)、寄存器類(register)來和外部類(extern);?
e)Y表示變量的作用域,包括局部變量和全局變量,參數(shù)變量視為局部變量;?
f)SY表示變量屬于某個(gè)域節(jié)點(diǎn)內(nèi),表示變量與某個(gè)域節(jié)點(diǎn)的從屬關(guān)系;?
g)BN表示數(shù)組變量、指針變量或全局變量、靜態(tài)變量的別名屬性,主要是因?yàn)槌霈F(xiàn)在不同的語句中,改變一處其他都會(huì)改變;別名屬性表示方法為<p,<t,i>,d,r>,并定義如下約束規(guī)則:?
(a)p、t是互為別名的變量編號(hào);它們沒有先后順序之分,但如果其中一個(gè)是數(shù)組元素,則要把它放在t的位置;?
(b)i是數(shù)組元素t的下標(biāo),如果t是普通的指針變量,則i=-1;如果t為多維數(shù)組元素,則可以用將i擴(kuò)展為多元組的方法,精確表示其下標(biāo)信息;?
(c)d是p的解引用級(jí)別,p=-1表示取地址;p=1表示指向;?
(d)r表示別名關(guān)系,r=D表示必然別名,r=P表示可能別名;?
(e)<*p,<*t,i>,d,r>與<p,<t,i>,d,r>等價(jià),因此在集合中均表示為<p,<t,i>,d,r>;?
(f)p≠t,即不表示自反性導(dǎo)出的別名對(duì);?
別名可以準(zhǔn)確地表示數(shù)組和指針的別名信息;別名問題主要指示了同名變量之間、參數(shù)傳遞之間或指針引用之間的依賴關(guān)系;?
(2)識(shí)別詳細(xì)級(jí)層次依賴模型中依賴關(guān)系?
定義1(控制依賴)?
令G是一個(gè)控制流圖,u和w是G中的節(jié)點(diǎn);結(jié)點(diǎn)u是控制依賴w的,當(dāng)且僅當(dāng):?
①在一條從u到w的有向路徑P,v(不包括結(jié)點(diǎn)U和w)是p中任意一個(gè)結(jié)點(diǎn),w是v的后必經(jīng)結(jié)點(diǎn);?
②w不是u的后必經(jīng)結(jié)點(diǎn);?
③控制依賴箭頭指向由u指向w;?
其簡(jiǎn)單理解為:如果結(jié)點(diǎn)u是控制依賴w,那么u必須有兩個(gè)出口;沿著其中的一個(gè)出口,總是導(dǎo)致執(zhí)行w,而另外一個(gè)出口則導(dǎo)致w不被執(zhí)行;?
定義2(數(shù)據(jù)依賴)?
設(shè)u與v為給定程序中兩條不同的語句,如果有一條從u到v的執(zhí)行路徑,同時(shí)存在一個(gè)在u處定義、v處引用的變量,且該變量在從u到v的執(zhí)行路徑上的其他位置沒有被重新定義,則稱v數(shù)據(jù)依賴于u;數(shù)據(jù)依賴在層次依賴模型中用數(shù)據(jù)傳遞表示,由u指向v;?
定義3同步依賴:設(shè)u與v為給定程序不同線程中的兩條語句,如果u執(zhí)行的開始或終止通過線程間同步直接決定v執(zhí)行的開始或終止,則稱v同步依賴于u;?
定義4通信依賴:設(shè)u與v為給定程序不同線程中的兩條語句,如果u計(jì)算的變量的值通過線程間通信直接影響在v計(jì)算的變量的值,則稱v通信依賴于u;?
在詳細(xì)級(jí)層次依賴模型中依賴屬性與系統(tǒng)級(jí)依賴關(guān)系屬性定義完全一樣,采用一個(gè)七元組E=(I,Q,Z,L,P,C,Y)表示;?
2)節(jié)點(diǎn)與依賴關(guān)系的精簡(jiǎn)?
(1)如果x是條件謂詞節(jié)點(diǎn),在信息的傳遞過程中只充當(dāng)中介,以它為基礎(chǔ)對(duì)依賴圖進(jìn)行傳遞轉(zhuǎn)換,同時(shí)刪除這個(gè)節(jié)點(diǎn)以及它依賴于其他節(jié)點(diǎn)的依賴邊;?
(2)詳細(xì)級(jí)FMEA中關(guān)注的是待分析變量之間的依賴關(guān)系,所以依賴模型中的中間媒介變量就可以省略;?
(3)對(duì)全局變量和局部變量的不需要區(qū)別處理,只要把沒有對(duì)外可見性的局部變量節(jié)點(diǎn)從依賴模型圖中刪除即可;?
(4)兩個(gè)方法的參數(shù)結(jié)點(diǎn)之間的數(shù)據(jù)依賴關(guān)系用方法之間的數(shù)據(jù)依賴來表示;每個(gè)過程依賴圖只需用過程入口結(jié)點(diǎn)表示即可,而不必再展開表示;?
3)關(guān)于變量的依賴關(guān)系構(gòu)建?
如果從變量定義節(jié)點(diǎn)到使用變量的節(jié)點(diǎn)之間沒有該變量的重新定義并且使用變量的節(jié)點(diǎn)包含變量定義節(jié)點(diǎn)定義的變量,則稱該變量使用節(jié)點(diǎn)數(shù)據(jù)依賴于該變量定義結(jié)點(diǎn);添加數(shù)據(jù)流邊由變量定義節(jié)點(diǎn)指向使用變量的節(jié)點(diǎn);?
在C/C++程序中主要是引用和指針導(dǎo)致別名;對(duì)于靜態(tài)變量、全局變量、靜態(tài)參數(shù)變量,通過別名表示,按別名屬性以暗線形式搜索路徑;對(duì)于變量傳遞到另一個(gè)域節(jié)點(diǎn)中,利用變量節(jié)點(diǎn)的屬于(SY)屬性將變量與相關(guān)域節(jié)點(diǎn)進(jìn)行相關(guān)聯(lián),辨別同名變量的依賴關(guān)系;?
4)關(guān)于謂詞控制節(jié)點(diǎn)的控制依賴構(gòu)建?
軟件中有三種主要的控制結(jié)構(gòu),分別為順序結(jié)構(gòu),判斷結(jié)構(gòu)與循環(huán)結(jié)構(gòu);對(duì)各種控制節(jié)點(diǎn)的構(gòu)建;?
5)關(guān)于函數(shù)的依賴關(guān)系構(gòu)建?
(1)辨別函數(shù)調(diào)用關(guān)系?
在每個(gè)調(diào)用位置節(jié)點(diǎn)和相應(yīng)的過程入口節(jié)點(diǎn)之間加入調(diào)用邊;如果是條件依賴在依賴約束屬性Y中要加以限定;?
(2)調(diào)用關(guān)系中構(gòu)建參數(shù)依賴或輸入、輸出依賴;?
變量對(duì)函數(shù)的依賴有四種形式,一種是傳值,另一種是傳址或傳引用;第三種是通過全局變量或靜態(tài)變量來聯(lián)系;第四種,被調(diào)函數(shù)返回值賦值給變量;?
(3)將形參視為內(nèi)部局部變量,構(gòu)建被調(diào)用函數(shù)內(nèi)部依賴關(guān)系;參數(shù)和函數(shù)調(diào)用點(diǎn)之間規(guī)定為形參控制依賴于函數(shù)定義入口;?
(4)對(duì)于控制節(jié)點(diǎn)和復(fù)合語句等,可以視為多入口和多出口的函數(shù),出口是通過同名變量;?
6)內(nèi)聯(lián)與遞歸函數(shù)構(gòu)建方法?
(1)多態(tài)函數(shù)時(shí)可當(dāng)做一般函數(shù)處理,只是將調(diào)用的函數(shù)名稱展開成幾個(gè)橫向?qū)哟危?每個(gè)橫向?qū)哟蚊枋雒恳粋€(gè)多態(tài)函數(shù)的內(nèi)部層次模型;分析失效影響和原因時(shí)等同的每個(gè)多態(tài)函數(shù)遍歷;?
(2)用函數(shù)內(nèi)聯(lián)的方法處理將調(diào)節(jié)點(diǎn)用被調(diào)用的函數(shù)體替換,在層次依賴模型中,可以視為傳引用方式的函數(shù);?
(3)確定函數(shù)之間調(diào)用關(guān)系以及標(biāo)記是否條件調(diào)用之后,模擬遞歸子程序的執(zhí)行過程,分兩步分析遞歸函數(shù)A的依賴關(guān)系:?
a)去掉S1到S2且通過call?A的路徑上的所有語句,然后搭建A的依賴模型圖,并求出參數(shù)之間的依賴關(guān)系;這相當(dāng)于模擬了遞歸過程中最后一次對(duì)A的調(diào)用由于語句S1中的條件不能滿足而跳過了call?A的執(zhí)行;?
b)恢復(fù)第一步去掉的語句,建立callA輸入與輸出的數(shù)據(jù)傳遞,增加call?A指向A的控制依賴,并標(biāo)記依賴約束為遞歸;根據(jù)遞歸中的返回過程,增加call?A前面節(jié)點(diǎn)到S2后節(jié)點(diǎn)的數(shù)據(jù)傳遞;?
(4)間接遞歸建模過程和處理算法?
a)求出這些子函數(shù)分析的順序;?
(a)在調(diào)用回路中,逐條斷開條件調(diào)用邊直到某一節(jié)點(diǎn)的出度為0;如果去掉所有能去掉的條件調(diào)用邊,沒有找到出度為0的節(jié)點(diǎn),則此遞歸調(diào)用一定不能終止,出現(xiàn)死循環(huán);?
(b)如果節(jié)點(diǎn)A的出度為0,則去除節(jié)點(diǎn)A和所有指向A的邊,包括條件調(diào)用邊,然后找下一個(gè)出度0的節(jié)點(diǎn),直到列出所有節(jié)點(diǎn)為止,如果在此過程中,又出現(xiàn)了回路,轉(zhuǎn)(1);設(shè)A0,A1,…,AZ是求得的分析序列;?
b)計(jì)算所有子程序的參數(shù)依賴集.?
(a)按第一步求得的分析順序算出各個(gè)子程序程序依賴圖PDG和形參依賴集.在計(jì)算Ai時(shí),如果Ai→Aj(c)是在a)的(a)中被斷開的條件調(diào)用邊,則在這次計(jì)算中將不考慮Ai對(duì)Aj的調(diào)用,具體處理與直接遞歸a)相似,如果是被斷開的不是條件調(diào)用邊,直接按關(guān)于函數(shù)的依賴構(gòu)建方法;?
(b)逐次加上在a)的(a)中被斷開的條件調(diào)用邊,增加Ai與Aj之間輸入與輸出的數(shù)據(jù)傳遞,具體處理與直接遞歸b)相似?
7)并發(fā)程序?qū)哟我蕾嚱?
(1)描述程序P的并發(fā)程序流圖;用cobegin和coend分別表示線程的創(chuàng)建和終止,將cobegin、coend以及共享變量讀寫語句統(tǒng)稱為交互語句;?
(2)根據(jù)交互語句將線程分塊,稱為線程域;每個(gè)線程域用一個(gè)節(jié)點(diǎn)表示,節(jié)點(diǎn)間的邊表示交互活動(dòng),由此生成線程交互圖將每個(gè)線程域用一個(gè)節(jié)點(diǎn)表示,節(jié)點(diǎn)間的邊表示相應(yīng)的交互活動(dòng),由此生成的圖稱做線程域交互示意圖;?
(3)給定p個(gè)線程{t0,t1,…,tp1}的線程域交互示意圖(<Ni,Ei,nsi,Fi,Li>,0≤i<p,主程序作為t0處理),根據(jù)交互活動(dòng)的標(biāo)簽,可對(duì)由這組線程所構(gòu)成的并發(fā)程序進(jìn)行可達(dá)性分析,生成線程交互可達(dá)圖;?
程交互可達(dá)圖的節(jié)點(diǎn),表示并發(fā)程序在執(zhí)行一系列交互活動(dòng)后所到達(dá)的程序狀態(tài),用p元組表示,第i個(gè)分量為第i個(gè)線程即將執(zhí)行的線程域;可達(dá)性分析從初始可達(dá)標(biāo)志ms開始,,其中⊥表示任務(wù)未激活或已終止,根據(jù)可能發(fā)生的交互活動(dòng),生成所有可能的后繼可達(dá)標(biāo)志,后繼可達(dá)標(biāo)志與前驅(qū)可達(dá)標(biāo)志除發(fā)生交互的線程的分量發(fā)生變化外,其余分量不變;?
(4)對(duì)任意可達(dá)標(biāo)志m,在m的各線程域分量中出現(xiàn)的語句都有可能在m下執(zhí)行,m只能與這些語句進(jìn)行組合;同一語句與不同的程序狀態(tài)組合生成不同的M-S對(duì);在依賴模型中表現(xiàn)形式是對(duì)節(jié)點(diǎn)S進(jìn)行屬性擴(kuò)充,增加一個(gè)程序狀態(tài)屬性(M);同一個(gè)語句根據(jù)所處的不同狀態(tài)可能產(chǎn)生不同的失效影響路徑;?
第六步,根據(jù)詳細(xì)級(jí)層次依賴模型,選取要分析的關(guān)鍵變量?
1)變量類型選取法?
在軟件開發(fā)過程中,根據(jù)不同需要定義不同類型變量,所以不同類型的變量有著不同的作用以及重要性,F(xiàn)MEA中重點(diǎn)關(guān)注一下類型變量:?
(1)有多個(gè)函數(shù)進(jìn)行調(diào)用的全局變量;?
(2)外部的參數(shù)變量;?
(3)算法輸出變量;?
(4)軟件接口變量,尤其是硬件輸入的變量?
2)體系結(jié)構(gòu)“度”值選取法?
根據(jù)依賴關(guān)系對(duì)變量節(jié)點(diǎn)、域節(jié)點(diǎn)采用內(nèi)聚度和耦合度算法進(jìn)行“度”的度量:?
(1)圖的體積(用V表示)?
假設(shè)圖中節(jié)點(diǎn)的總個(gè)數(shù)為n個(gè),圖的層次為m層(這里的層次類似于樹的深度),那么這個(gè)圖的體積V=n*m;?
(2)內(nèi)聚度(用COH表示)?
假設(shè)圖中邊的條數(shù)為e條,圖的體積為V,那么這個(gè)圖所代表的模塊的內(nèi)聚度COH=e/V;(3)依賴率(用G表示)?
用一個(gè)依賴圖的兩個(gè)子圖A,B分別代表兩個(gè)模塊;假設(shè)圖A中有n1個(gè)節(jié)點(diǎn)與B中的節(jié)點(diǎn)存在邊,圖B中有n2個(gè)節(jié)點(diǎn)與A中的節(jié)點(diǎn)存在邊;則A對(duì)B的依賴率GA=n2/n1,B對(duì)A的依賴率GB=n1/n2;?
(4)耦合度(用COU表示)?
假設(shè)子圖A中的節(jié)點(diǎn)與子圖B中的節(jié)點(diǎn)存在的邊的條數(shù)為e1條,A對(duì)B的依賴率為ηA,那么A對(duì)B的耦合度為COUA=e1×ηA;假設(shè)子圖B中的節(jié)點(diǎn)與子圖A中的節(jié)點(diǎn)存在的邊的條數(shù)為e2,B對(duì)A的依賴率為ηB,那么B對(duì)A的耦合度為COUB=e2×ηB
內(nèi)聚度越大,內(nèi)部越復(fù)雜,其內(nèi)部體系重要度越高;節(jié)點(diǎn)間的相關(guān)聯(lián)程度越大,則耦合度越強(qiáng),反之亦然;通過分析各個(gè)變量與其他節(jié)點(diǎn)之間的耦合度,耦合度比較大的其外部依賴關(guān)系越復(fù)雜,其外部體系重要度更高;如果兩個(gè)節(jié)點(diǎn)耦合度相同,可以計(jì)算與之相連節(jié)點(diǎn)耦合度之和,與之相連節(jié)點(diǎn)耦合度之和越大,則本節(jié)點(diǎn)體系重要度越大;?
3)系統(tǒng)級(jí)FMEA選取法?
對(duì)系統(tǒng)級(jí)FMEA選取的重要模塊,向下追蹤原因,逐漸追蹤到一組變量集,選擇這些波及到的變量作為分析對(duì)象,然后逐漸對(duì)每個(gè)變量進(jìn)行失效模式分析;?
第七步,確定待分析變量的具體失效模式,由詳細(xì)級(jí)別依賴模型可達(dá)性節(jié)點(diǎn)分析,分析變量的產(chǎn)生原因及失效影響,提出改進(jìn)措施?
1)詳細(xì)級(jí)變量的失效模式確定?
詳細(xì)級(jí)分析對(duì)象是變量,失效模式的確定依據(jù)變量的屬性確定;變量具有名字、地址、值、作用域、生存期屬性;與現(xiàn)有分析方式一樣,根據(jù)變量的相關(guān)屬性,查找詳細(xì)級(jí)通用失效模式集,確定變量的具體失效模式;?
2)基于詳細(xì)級(jí)層次依賴模型的失效原因分析?
在對(duì)軟件失效原因的遍歷與失效影響的遍歷恰好相反,以當(dāng)前節(jié)點(diǎn)開始,按控制依賴箭頭方向,按數(shù)據(jù)傳遞箭頭反方向遍歷;再以下一層被依賴的節(jié)點(diǎn)進(jìn)行迭代搜索,一直搜索到下層沒有相依賴的節(jié)點(diǎn)或者達(dá)到最低約定層次為止;遍歷方法與分析方法與系統(tǒng)級(jí)一樣,下層失效模式是上層的失效原因;軟件失效原因是由于軟件缺陷在運(yùn)行時(shí)被觸發(fā)而產(chǎn)生的;?
3)基于詳細(xì)級(jí)層次依賴模型的失效影響分析?
此軟件失效影響分析問題可以被轉(zhuǎn)化為在系統(tǒng)層次依賴關(guān)系模型中圖的遍歷算法;?
以當(dāng)前節(jié)點(diǎn)開始,按控制依賴反箭頭方向,按數(shù)據(jù)傳遞箭頭方向遍歷;再以上一層所依賴的節(jié)點(diǎn)進(jìn)行迭代搜索,一直搜索到上層沒有相依賴的節(jié)點(diǎn)或者達(dá)到初始約定層次為止;遍歷分析方法與過程和系統(tǒng)級(jí)一樣;?
4)改進(jìn)措施提出方法?
主要利用軟件的故障判斷和故障處理;?
軟件故障處理包括信息容錯(cuò)和時(shí)間容錯(cuò);?
表2詳細(xì)級(jí)改進(jìn)措施方法?
。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京航空航天大學(xué),未經(jīng)北京航空航天大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310378809.3/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F17-00 特別適用于特定功能的數(shù)字計(jì)算設(shè)備或數(shù)據(jù)處理設(shè)備或數(shù)據(jù)處理方法
G06F17-10 .復(fù)雜數(shù)學(xué)運(yùn)算的
G06F17-20 .處理自然語言數(shù)據(jù)的
G06F17-30 .信息檢索;及其數(shù)據(jù)庫(kù)結(jié)構(gòu)
G06F17-40 .數(shù)據(jù)的獲取和記錄
G06F17-50 .計(jì)算機(jī)輔助設(shè)計(jì)
- 一種面向制造領(lǐng)域的MDA建模工具的實(shí)現(xiàn)方法
- 一種基于統(tǒng)一建模環(huán)境的建模方法
- 一種統(tǒng)一建模平臺(tái)
- 用于管理數(shù)據(jù)建模的系統(tǒng)及其方法
- 建模裝置、建模方法以及建模程序
- 一種提供思維導(dǎo)圖式的模型評(píng)價(jià)方法和系統(tǒng)
- 一種動(dòng)態(tài)交互建模工具的實(shí)現(xiàn)方法及裝置
- 電力設(shè)備建模方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種基于瀏覽器傳輸?shù)慕7椒把b置
- 數(shù)據(jù)建模方法、裝置、存儲(chǔ)介質(zhì)及處理器





