本發(fā)明涉及一種并發(fā)系統(tǒng)模型的檢測方法,具體屬于軟件檢測技術。
背景技術:
模型檢測是基于對狀態(tài)空間的窮舉搜索,對于并發(fā)系統(tǒng),其狀態(tài)的數目往往隨并發(fā)分量的增加而呈指數增長。因此,當系統(tǒng)的并發(fā)分量較多時,直接對其狀態(tài)空間進行搜索實際上是不可能的,這就是所謂的狀態(tài)爆炸問題。由于軟件涉及無窮數據域上的運算,因此狀態(tài)爆炸問題十分突出,已成為模型檢測方法應用于軟件可信評價及驗證的一個具有挑戰(zhàn)性同時又無法回避的難題。
目前,研究人員提出了一些方法緩解“狀態(tài)空間爆炸”問題。這些方法基本上都減少了或壓縮了系統(tǒng)狀態(tài)空間,許多實際系統(tǒng)都已經成功地使用了這些方法,也極大地提高了模型檢測工具能夠驗證的系統(tǒng)規(guī)模。這些方法主要包括符號模型檢測、抽象技術、偏序歸約、分解與組合以及對稱、歸納、On-the-fly方法等。但仍然存在以下技術難題:隨著軟件功能日益強大,其規(guī)模和復雜度也越來越大,在模型檢測過程中容易產生狀態(tài)爆炸問題。
技術實現要素:
為了解決現有技術中存在的問題,本發(fā)明提出了一種基于測地距的并發(fā)系統(tǒng)模型檢測方法,針對模型檢測中的狀態(tài)爆炸問題,采用假設保證組合驗證方法,研究組合驗證出現的多種挑戰(zhàn),解決假設保證組合驗證出現的分解問題。
一種基于測地距的并發(fā)系統(tǒng)模型檢測方法,包括以下步驟:
①建立系統(tǒng)關系圖:把整個系統(tǒng)看作一個圖,每個子系統(tǒng)看作圖中的一個頂點;某兩個子系統(tǒng)之間有共享變量,則這兩個子系統(tǒng)之間有條邊;
②求圖中任意兩頂點的測地距:圖中兩個頂點之間最短路徑的邊數作為兩個頂點之間的測地距;對于圖中兩個非連通的頂點,測地距為無窮大;
③求各頂點的離心率:給定圖G=(V,E),其中V是頂點集,E是邊集,對于頂點v∈V,v的離心率是v與其他頂點u∈V-{v}之間的最大測地距;
④將圖中每個頂點的分組編號初始化為0;
⑤通過循環(huán)求出每個頂點的分組編號:
(1)求出未分組頂點中的最大離心率;
(2)找出未分組頂點中離心率等于本輪最大離心率的頂點i;
1)設置頂點i的分組編號為Gno,Gno的初始值為1;
A)找出頂點i的未分組鄰居j;
B)將j的分組編號保存為Gno;
a)找出j的未分組且離心率和i相同的鄰居jn;
b)將jn的分組編號也保存為Gno;
c)轉到a);
C)轉到A);
2)將Gno的值增加1;
(3)轉到(1);
⑥輸出每個分組的頂點號。
由于并發(fā)的各子系統(tǒng)之間可能會有關系,因此本發(fā)明建立了各子系統(tǒng)之間的關系圖,對圖進行分解,進而將分解問題轉化成系統(tǒng)關系圖的聚類或分解問題。當驗證過程中出現虛假反例時,本發(fā)明基于系統(tǒng)關系圖的細化過程。性質涉及的子系統(tǒng)會對性質產生直接影響,該子系統(tǒng)的直接鄰居會對產生間接影響,可以通過不斷地尋找相應子系統(tǒng)的鄰居進行細化。
具體實施方式
本發(fā)明根據系統(tǒng)關系圖,設計子系統(tǒng)分解方案,保證分解后每組中子系統(tǒng)之間的關系盡可能緊密。反例存在時,設計判斷反例是否虛假的方案;對于虛假反例,設計細化方案,使得細化次數少的情況下就可以快速得到驗證結果。
一種基于測地距的并發(fā)系統(tǒng)模型檢測方法,包括以下步驟:
①建立系統(tǒng)關系圖:把整個系統(tǒng)看作一個圖,每個子系統(tǒng)看作圖中的一個頂點;某兩個子系統(tǒng)之間有共享變量,則這兩個子系統(tǒng)之間有條邊;
②求圖中任意兩頂點的測地距:圖中兩個頂點之間最短路徑的邊數作為兩個頂點之間的測地距;對于圖中兩個非連通的頂點,測地距為無窮大;
③求各頂點的離心率:給定圖G=(V,E),其中V是頂點集,E是邊集,對于頂點v∈V,v的離心率是v與其他頂點u∈V-{v}之間的最大測地距;
④將圖中每個頂點的分組編號初始化為0;
⑤通過循環(huán)求出每個頂點的分組編號:
(1)求出未分組頂點中的最大離心率;
(2)找出未分組頂點中離心率等于本輪最大離心率的頂點i;
1)設置頂點i的分組編號為Gno,Gno的初始值為1;
A)找出頂點i的未分組鄰居j;
B)將j的分組編號保存為Gno;
a)找出j的未分組且離心率和i相同的鄰居jn;
b)將jn的分組編號也保存為Gno;
c)轉到a);
C)轉到A);
2)將Gno的值增加1;
(3)轉到(1);
⑥輸出每個分組的頂點號。
上述步驟得到系統(tǒng)的初始分解,然后采用假設保證推理(AGR)對系統(tǒng)進行組合驗證。AGR需要將系統(tǒng)分解成M1和M2兩部分。上述測地距的分解方法得到的組,若和驗證性質相關,則將這些組包含的子系統(tǒng)放入M1中。M1保存的都是和驗證性質相關的子系統(tǒng)。驗證過程中出現虛假反例時,通過逐步增加測地距的方法尋找和性質相關的子系統(tǒng)細化M1。
通過測地距將整個系統(tǒng)分解成若干個組,每個組中的子系統(tǒng)之間的關系盡可能親密,從而解決了模型檢測過程中容易產生的狀態(tài)爆炸問題;當系統(tǒng)比較龐大,包含的子系統(tǒng)比較多時,可以減少分解所花的時間;當系統(tǒng)的遷移關系比較復雜時,可以減少重新分解的次數。