本發明專利技術公開了一種基于SoaML的云應用正確性驗證方法,主要用于處理云應用的建模與驗證問題,本發明專利技術采用SoaML對云應用進行建模,并將所建SoaML模型轉換為簡單進程元語言解釋器SPIN支持的建模語言PROMELA和線性時序邏輯LTL。首先使用層次自動機來描述SoaML中的ServiceInterface,根據層次自動機的操作語義將ServiceInterface轉換為PROMELA;然后采用LTL來描述SoaML中的ServiceContract。本發明專利技術將得到的PROMELA輸入SPIN中,驗證是否滿足LTL所描述的系統約束,即云應用的正確性。
【技術實現步驟摘要】
【技術保護點】
一種基于SoaML的云應用正確性驗證方法,其特征在于,該方法包括如下步驟:步驟1)建立給定的ServiceInterface元模型到PROMELA元模型的同態映射;步驟2)將給定的ServiceInterface狀態機采用層次自動機來描述,即以一個四元組SM=<<S,H>,E,T,D>來表示ServiceInterface狀態機,其中<S,H>表示一個狀態層次,S為有限狀態集合,H為子狀態關系,E為有限狀態集合,T為有限轉換集合,D為缺省狀態集合;步驟3)定義ServiceInterface狀態機的活動狀態配置C∈2S和事件隊列Q,所述活動狀態配置C為某一時刻ServiceInterface狀態機所有活動狀態的集合,所述事件隊列Q為觸發事件的隊列;步驟4)定義一個對偶,用以表示ServiceInterface狀態機的活動狀態配置C與事件隊列Q的格局;步驟5)定義對偶轉換的約束,(1)若substates(s)≠Φ,則kind(s)∈{composite,orthogonal};(2)若kind(s)=orthogonal,則#substates(s)≥2,并且對于所有s的后繼節點s′,都有kind(s′)=composite;(3)若kind(s)=composite,則#{s∈substates(s)|kind(s′)=initial}≤1。(4)kind(source(t))≠final(5)kind(target(t))≠initial(6)若kind(source(t)){initial,fork,join},則guard(t)=true;(7)若kind(source(t))=initial,則target(t)是非偽狀態(non?pseudostate);(8)若kind(source(t))=initial,則container(target(t))=container(source(t));(9)若kind(source(t))=initial,則effect(t)=skip;(10)若kind(source(t))=fork,則target(t)是偽狀態;(11)若kind(target(t))=join,則guard(t)=true;步驟6)根據所述步驟5)中定義的約束,得到對偶轉換的集合記為FT,具體過程如下:遍歷有限轉換集合T,對每個轉換t進行以下處理:a)如果轉換t∈FT,則enabled(t,e,C)=true,并進入步驟d),否則進入條件b),b)如果t1,t2∈FT,且t1≠t2,則t1||t2,并進入步驟d),否則進入條件c),c)如果t′∈T\FT,t∈FT且enabled(t′,e,C)=true,則清除FT中的t||t′和t⊥t′后進入步驟d),否則直接進入步驟d);d)將該轉換t加入到返回的結果中;其中FT初始化為<false,Φ>,函數enabled(t,e,C)判斷ServiceInterface狀態機格局的轉換是否是使能的;有限轉換集合T中所有的轉換t進行完以上處理后,最終得到的返回的結果即為對偶轉換的集合FT;步驟7)根據所述步驟1)中建立的SoaML元模型到PROMELA元模型的同態映射,將四元組SM=<<S,H>,E,T,D>中的事件、類、狀態、轉換以及對偶轉換的過程采用PROMELA語言表示,作為簡單進程元語言解釋器SPIN的輸入代碼;步驟8)根據給定的ServiceContract消息編號,寫出線性時序邏輯公式,作為輸入簡單進程元語言解釋器SPIN的代碼;步驟9)將步驟7)和步驟8)得到的代碼輸入簡單進程元語言解釋器SPIN進行驗證,如兩個代碼一致,則判定云應用正確,否則,判定云應用不正確。FDA00003315551600011.jpg...
【技術特征摘要】
【專利技術屬性】
技術研發人員:李必信,耿國清,王璐璐,陶傳奇,蘭陽陽,司靜文,
申請(專利權)人:東南大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。