一種提高軟件通路可靠性的實現方法
【專利摘要】本發(fā)明提出了一種提高軟件通路可靠性的實現方法,該方法首先在程序中加入起始碼、中間碼和匹配碼,當程序運行時則后面繼承前面的碼,以形成一個碼來唯一標識一條通路,并在末尾與匹配碼匹配。匹配成功為有效通路,失敗為潛通路。本發(fā)明可以有效地發(fā)現和處理潛通路,提高了軟件通路的可靠性。
【專利說明】一種提高軟件通路可靠性的實現方法
【技術領域】
[0001]本發(fā)明涉及一種提高軟件通路可靠性實現方法,具體來講是編寫程序時,在關鍵路徑處加入標識符且生成唯一碼,程序運行時可根據生成的唯一碼來確定程序運行是否進入可靠路徑;屬于計算機【技術領域】。
【背景技術】
[0002]早在20世紀80年代,人們已經開始著手對軟件潛通路的分析研究。潛通路指的是在軟件系統(tǒng)中某些潛在的路徑,它們屬于不在計劃中的路徑,是我們不希望出現的。潛通路總是存在,因為子系統(tǒng)設計人員缺乏整體系統(tǒng)的全局觀念或者是某些疏忽的行為,有一些則是軟件設計時的邏輯問題,還有一些數據交互很難被提前預測,甚至還有一些潛通路是由于電磁干擾或者其它因素造成的。
[0003]造成軟件潛通路的因素有很多,這里可以舉一個可能會產生軟件潛通路的例子。目前在實時軟件設計中,對中斷的處理通常是依據其優(yōu)先級,優(yōu)先級高的中斷可以搶占系統(tǒng)資源,這是應該對被搶占的處理過程的狀態(tài)進行保存,在中斷處理完成后繼續(xù)完成被掛起的處理過程。但是,這些都需要開發(fā)人員一個個去處理,很多時候可能出現未保存被搶占處理過程的狀態(tài)或保存不完整。如圖1所示是一個由于中斷產生的潛通路,如果設計時未考慮到這種情況,很可能程序調用沒有返回。潛通路問題的出現會給程序執(zhí)行帶來諸多不可預見和不可控制的因素。若在程序運行中不對潛通路做必要的處理,將會給整體的軟件項目工程帶來巨大的風險。
【發(fā)明內容】
[0004]本發(fā)明的技術解決問題:克服現有技術只能發(fā)現軟件出現不符合編碼規(guī)范、內存超限等技術相關的問題,以及出現錯誤必須修改代碼的問題,提供一種提高軟件通路可靠性實現方法,可以有效地發(fā)現和處理潛通路,提高軟件通路的可靠性。
[0005]本發(fā)明技術解決問題:本發(fā)明的核心思想是在程序關鍵位置加入標示符,來生成標示可靠通路的唯一碼。而潛通路則沒有或者有一部分的標示符。這樣,在末尾匹配可發(fā)現是否有潛通路,并進行合理的處理。
[0006]本發(fā)明解決其技術難題所采用的技術方案的步驟如下:
[0007]1、使用者編碼后,在關鍵或者可能出現潛通路的開頭,加上一個唯一標記的起始碼,在運行的通路中加上中間碼,在末尾加上匹配碼。
[0008]2、在程序運行時,在經過中間碼時,中間碼繼承前面的碼變?yōu)槠鹗即a加上中間碼,這樣將碼不斷的繼承疊加,以生成一個碼來唯一標示通路,在末尾如果和匹配碼匹配,則是正確的通路,如果出現不匹配的情況,則有潛通路存在。
[0009]3、如果出現潛通路,將會把錯誤信息和錯誤的代碼位置返回給用戶。用戶可以修改代碼,也可以直接在匹配碼處加入控制函數,判斷出現潛通路時,直接終止程序或者停止?jié)撏贰?br>
[0010]本發(fā)明與現有技術相比的優(yōu)點在于:本發(fā)明在編寫程序時,給程序的關鍵路徑比如分支和循環(huán)處插入標識程序通路的唯一編碼,在程序運行的同時,對這一編碼進行驗證,就能夠判斷程序是否進入了程序設計人員預期的通路。如果編碼正確,程序正常運行,如果編碼錯誤,則認為程序運行進入了錯誤路徑即潛通路中,這樣程序就會報錯,同時把錯誤信息和錯誤代碼的位置信息返回給用戶,讓用戶針對反饋信息進一步處理,從而提高軟件通路的可靠性。
【專利附圖】
【附圖說明】
[0011]圖1為中斷產生潛通路的情況;
[0012]圖2為本發(fā)明實現流程圖。
【具體實施方式】
[0013]參考結合附圖所作的下列描述更容易理解本發(fā)明的前述、邏輯結構、功能和工作原理、目標、特性及其優(yōu)勢。
[0014]以下包括術語、首字母縮寫詞和縮寫的簡單詞匯,將有助于理解下面的實施例的詳細描述,但是這些細節(jié)并不是為了限制本發(fā)明。本領域的技術人員顯然可以在偏離這些具體細節(jié)的其它實施方案中實踐本發(fā)明。
[0015]術語“繼承”表示獲得前面部分的內容,并加上自己的部分,形成一新的和原來部分性質相同但內容不同的東西。
[0016]如圖2所示,本發(fā)明提出了一種提高軟件通路可靠性實現方法,按以下步驟進行,以提聞通路的可罪性。
[0017]1、開發(fā)人員在完成軟件的詳細設計后,在可能出現分支、循環(huán)和函數調用等地方,判斷該處通路是否完全可靠、是否可能會出現潛通路。具體的判斷方法需根據軟件的需求,以及軟件在邏輯上的復雜程度。一般在出現分支、循環(huán)和函數調用的地方會出現邏輯復雜的情況。在邏輯復雜或者需求多樣以及思路不清晰的地方容易出現潛通路。并且在重要的節(jié)點或整個框架的核心地方,即使邏輯清晰、需求簡單,也可以假設會出現潛通路,以確保此關鍵部分的通路可靠性。
[0018]2、開發(fā)人員在初步判斷的基礎上,在可能出現潛通路的起始位置加上一個生成唯一的起始碼的函數,在通路的中間關鍵節(jié)點加入生成中間碼的函數,在通路出口出加入生成匹配碼的函數。以上生成起始碼、中間碼和匹配碼的函數可以根據軟件的涉及領域和軟件的大小等,而采取不同的方法。例如圖2是某一較小軟件的其中可能出現潛通路的某一通路,其節(jié)點數量為6,則可以規(guī)定從I到6為節(jié)點各自的編碼,則起始碼可以為1,中間節(jié)點一的中間碼為2,判斷節(jié)點可不加碼,中間節(jié)點二的中間碼為3,中間節(jié)點三的中間碼為4,則由此生成的結束節(jié)點的匹配碼可以為123和124。各自的碼可以分別用全局變量儲存,在程序中加入賦值的函數即可。如果通路較大,也可以采用不同的編碼方式存儲,只需在軟件中出現碼的所有通路中各自的碼唯一就行,以此防止各通路之間出現不希望出現的跳入跳出。
[0019]3、在加完碼的基礎上,當程序運行時,第一個中間節(jié)點會繼承起始碼,由此第一個節(jié)點的碼會變成中間碼和起始碼的組合,第二個節(jié)點則繼承第一個節(jié)點的碼,變?yōu)榈谝恢虚g碼、第二中間碼和起始碼的組合。由此不斷的繼承,以生成一個可以標示該通路的唯一碼。在圖2的例子中,分別可以用123和124來標示兩條可靠的通路,而潛通路則會用12來標示。
[0020]4、在通路出口出,生成的標示通路的唯一碼與匹配碼匹配。在圖2的例子中,可以采用字符船匹配即可,但是當通路大時會影響程序的運行速度。所以可以一些編碼方式和匹配方法來大大增加匹配以及編碼的生成速度。匹配成功說明該通路是合理可靠的。如果出現不匹配的情況,則說明有不合理的通路,即潛通路出現。生成匹配碼的函數會返回錯誤信息和出現錯誤的位置,以便開發(fā)人員修改。開發(fā)人員也可在生成匹配碼函數的位置,直接加入終止程序或者終止?jié)撏返拇a。
[0021]經過相關軟件以及測試發(fā)現,采用以上方法確實可以有效地發(fā)現和處理潛通路。并且當要驗證的通路較小時對程序的運行時間幾乎沒有影響,驗證的通路較大時,可以采用一些方法來有效地降低因采用本發(fā)明而產生的額外運行時間。
[0022]提供以上實施例僅僅是為了描述本發(fā)明的目的,而并非要限制本發(fā)明的范圍。本發(fā)明的范圍由所附權利要求限定。不脫離本發(fā)明的精神和原理而做出的各種等同替換和修改,均應涵蓋在本發(fā)明的范圍之內。
【權利要求】
1.一種提高軟件通路可靠性的實現方法,其特性征在于實現步驟如下; (1)使用者編碼后,在關鍵或者可能出現潛通路的開頭,加上一個唯一標記的起始碼,在運行的通路中加上中間碼,在末尾加上匹配碼; (2)在程序運行時,在經過中間碼時,中間碼繼承前面的碼變?yōu)槠鹗即a加上中間碼,這樣將碼不斷的繼承疊加,以生成一個碼來唯一標示通路,在末尾如果和匹配碼匹配,則是正確的通路,如果出現不匹配的情況,則有潛通路存在; (3)如果出現潛通路,將會把錯誤信息和錯誤的代碼位置返回給用戶;用戶可以修改代碼,也可以直接在匹配碼處加入控制函數,判斷出現潛通路時,直接終止程序或者停止?jié)撏贰?br>
【文檔編號】G06F9/44GK104199658SQ201410432724
【公開日】2014年12月10日 申請日期:2014年8月28日 優(yōu)先權日:2014年8月28日
【發(fā)明者】康一梅, 黃杰 申請人:北京航空航天大學