專利名稱:一種運行時自適應軟件體系結構的形式化描述方法
技術領域:
本發(fā)明涉及軟件的建模技術,尤其是一種運行時軟件體系結構的形式化描述方法。
背景技術:
形式化方法在基于構件軟件系統(tǒng)設計的研究中也用的比較廣,一類是直接運用通用的形式方法描述體系結構,另一類是提出專門的體系結構描述語言描述體系結構。1、通用的形式方法描述體系結構運用通用的形式化方法對軟件體系結構規(guī)格進行說明,近年來出現(xiàn)了許多的研究工作。目前這方面的工作大致分為四類(1)基于模型的方法基于模型的形式化方法是通過構建一個數(shù)學模型支持系統(tǒng)的規(guī)范,給出系統(tǒng)的狀態(tài)和狀態(tài)變換的顯式操作。通常,一個規(guī)范描述一個系統(tǒng)的狀態(tài)及其狀態(tài)上的操作,以及描述和下一個狀態(tài)的關系。因此,特定的數(shù)學對象(如數(shù)據(jù)結構、關系或功能)在結構上類似于詳細描述的計算機軟件需求,這些語言的語義是基于集合論,在系統(tǒng)的整個設計過程和實現(xiàn)中,指定的數(shù)學對象在保留初始規(guī)范的基本特征情況下是可調(diào)整的。這樣的規(guī)范語言的代表是Vienna Development Method(VDM)和Z概念。VDM語言雖然可以準確地構造一個系統(tǒng)的規(guī)范說明,但它不支持面向對象的系統(tǒng)開發(fā)方法。為了獲得面向對象開發(fā)方法的優(yōu)點,對VDM進行了擴充。VDM++是VDM結合面向對象概念的擴展,它包含了連續(xù)時間變量,在VDM基礎上擴展了類的聲明、類型,增加了動態(tài)和并發(fā)行為,包括實時屬性的機制,可用來描述并發(fā)和實時系統(tǒng)。Z是20世紀80年代由Oxford大學程序設計研究組(PRG)提出的一種形式規(guī)范說明語言和開發(fā)方法。Z和面向對象方法的結合,典型的有0bject-Z、Z++。 前者將狀態(tài)和操作封裝起來,作為類進行模塊化,引入面向對象的基本概念。后者Z++中引入了對象引用的語義。VDM和Z是采用面向模型的方法,重點放在抽象數(shù)據(jù)類型的描述上, 抽象數(shù)據(jù)類型是通過公理來描述的,這些公理定義了抽象數(shù)據(jù)類型上的操作之間的關系?;谀P偷男问交椒ㄖ饕且孕问秸Z言為基礎的描述與分析方法,它們具有嚴格的定義,并且可借鑒形式語言中完善的分析技術??衫脴藴蔬壿嫷亩ɡ碜C明或化簡工具實施系統(tǒng)的形式化驗證。但是,這類方法有一定的局限性。Z概念建立在集合論和一階邏輯的數(shù)學基礎上,它本身有著成熟的形式化表示體系,模式可以很自然地表達類的概念。但 Z概念描述異構系統(tǒng)并發(fā)問題也存在一定的困難,VDM也不可避免地落入同一范疇。(2)基于邏輯的方法基于邏輯的方法主要用邏輯描述系統(tǒng)的特性,包括程序行為的低級規(guī)范和系統(tǒng)時間行為的規(guī)范。在分布式系統(tǒng)形式化分析中,常用的邏輯模型檢查方法主要有P. Wolper 等人的基于模態(tài)邏輯的方法、K. Heljanko等人的基于計算樹邏輯CTL(Computation Tree Logic)的方法、國內(nèi)唐稚松教授等人的基于時序邏輯XYZ/E的方法等。Fisher等人定義了一種時序信念邏輯TBL用于分布式多代理系統(tǒng)的描述與驗證。TBL這種方法與其他形式化方法相比,在定義邏輯語言語義方面具有簡潔性,并且具有較強的推理功能。TBL的時序部分適合于模擬響應系統(tǒng)。TBL能夠用來分析驗證分布式系統(tǒng)及其他具有協(xié)同結構的系統(tǒng)。 Hirai等人提出了應用命題時序線性邏輯模擬驗證實時并發(fā)系統(tǒng)。他將時間的概念引入到線性邏輯中,并稱為時序線性邏輯。同時給出了時間Petri網(wǎng)的可達性問題等價于對應時序線性邏輯相繼式的可證明性問題,并討論了時序線性邏輯體系中可達性的判定性問題。 此外,應用時序線性邏輯描述了同步通信系統(tǒng)。時序線性邏輯也可用于分布式系統(tǒng)的描述與驗證?;谶壿嫷南到y(tǒng)描述方法的共同特點是為分布式系統(tǒng)的描述和性質證明提供了一種簡潔方式,并具有嚴格的推理機制。但是,由于它們都需要對系統(tǒng)進行高級抽象,其應用范圍受到一定的限制。像一般形式化方法那樣,它們是針對系統(tǒng)運行機制處理的,不能很好地體現(xiàn)系統(tǒng)的物理結構。(3)基于進程演算的方法基于進程演算的方法是給出系統(tǒng)并發(fā)行為模型,并通過進程的通信約束表示行為,其核心通常是一種簡單的語言,由帶標號的變遷系統(tǒng)給出其操作語義,當實現(xiàn)與規(guī)格說明都用該語言描述時,行為等效性建立了兩者之間的聯(lián)系,而行為等效性則為系統(tǒng)驗證及推導的復合提供了方便。進程演算的基本特點是建立了并發(fā)系統(tǒng)潛在不確定性模型。通信順序進程 CSP(Communication Sequentialprocesses, CSP)、通信系統(tǒng)演算 CCS(Caleulus of Communicating Systems,CCS)、π演算等是進程演算方法的代表,廣泛用于并發(fā)系統(tǒng)的規(guī)格說明與驗證,特別是通信協(xié)議領域。CSP是很多并發(fā)分布式語言的思想基礎,是對并發(fā)程序設計語言的一次重要概念整理,它可看作是一種命令式程序設計語言。通信系統(tǒng)演算 CCS可看作為一種建立在極小原語集上的函數(shù)式程序設計語言。CSP和CCS兩種模型都基于相同的出發(fā)點,它們都將進程作為構造系統(tǒng)的基本構件,認為一個系統(tǒng)由若干進程構件通過各種方式(選擇、復合、隱藏等)組合而成,而新形成的系統(tǒng)又可作為一個進程構件用于構造更大、更復雜的系統(tǒng)。π演算是在CCS模型上發(fā)展起來的,其最大特點是允許進程之間將信道名字作為值來傳遞,從而可描述通信拓撲結構可動態(tài)變化的并發(fā)系統(tǒng),但η演算描述系統(tǒng)很抽象, 因此,相比其他形式化方法而言,進程演算方法對于實現(xiàn)開發(fā)的人員可能較難理解和掌握, 也不能給出邏輯公式和證明。2、專門的體系結構描述語言方面目前,國外具有一定影響力的 ADLs 有Aesop、ACME、Rapide、C2、Darwin、SADL, UniCon和feight。目前在ADL方面還沒有形成一致的觀點,因此各種ADL關注點和研究方法都有比較大的差別,例如Wright主要描述聯(lián)接關系的語義,而Rapide更關注構件接口和行為建模分析,進一步,即使在原理接近的形式化語言之間,形式規(guī)約、模塊互連、程序語言也不一定相同。(I)Aesop =Aesop是個支持體系結構風格設計的環(huán)境。該語言采用面向對象類型框架并提供體系結構描述的詞匯表。在體系結構中基本類型(元類)有“組件”、“連接件”、 “端口”、“角色”、“配置”和“綁定”。如果需要定義組件類型,則需要將此定義為“組件”類型的子類。該體系結構描述語言提供體系結構風格的設計空間,但不提供語義方面的支持。(2) ACME =ACME的目的在于抽取諸多ADL的共同點,比如系統(tǒng)組件以及它們之間的對應關系,以此作為交換的基礎,與此同時,還允許增加一些相關信息,作為輔助信息。當前 ACME在語法上已經(jīng)相對完善,但在語義上還有比較大的局限性。雖然ACME以語言的身份出現(xiàn),由于它所關注的為ADL共性,所以還是屬于同類工作。(3) Rapide =Rapide是種可執(zhí)行的ADL,通過定義并模擬執(zhí)行基于事件的行為建模分布式并發(fā)系統(tǒng)。基于事件的偏序集合描述系統(tǒng)行為。構件接受到的事件觸發(fā)構件計算,同時根據(jù)計算結果產(chǎn)生相關事件并傳送給其它構件,并觸發(fā)相關構件的計算。Rapide關注原型設計的快速建立,基于事件、并發(fā)、面向對象的語言。該模型的執(zhí)行結果為事件集合,里面的事件滿足特定時序或因果關系。其優(yōu)點在于提供多種輔助分析工具。分析模型在于檢測在某個特定模擬過程中的事件是否違反了上述次序關系。該模型僅僅基于接口定義體系結構,在開發(fā)的下一個階段再考慮利用具有特定行為的構件對接口進行替換,由此可以看出, 開發(fā)人員可以在體系結構中使用新的構件,只要這個新構件符合前面規(guī)定的接口就行。由Richard N. Taylor等開發(fā)的體系結構描述語言。C2基于消息,最初提出的目標為適合描述圖形用戶界面軟件的體系結構。構件模型分為上下兩端,分別負責消息發(fā)送和接收,其連接機制是消息總線,實現(xiàn)對消息的過濾和轉發(fā)。該模型的ADL提供體系結構規(guī)約的語法標記符號,并沒有提供相應的語義規(guī)約,不支持體系結構風格規(guī)約和分析。(5)Darwin 該體系結構描述語言由Magee和Kramer開發(fā)。它通過接口來定義構件類型,接口主要分為提供服務的接口和請求服務的接口,通過系統(tǒng)配置定義構件實例同時建立提供服務接口和請求服務接口之間的綁定。模型中提供延遲實例化和直接動態(tài)實例化兩種技術支持軟件的動態(tài)演化。該模型采用η演算提供系統(tǒng)結構規(guī)約的語義,構件提供的服務表現(xiàn)為名字,綁定表現(xiàn)為進程,它傳輸該服務名字到請求該服務的構件中。該模型的開發(fā)者采用該語義模型分析實現(xiàn)Darwin配置的分布式算法。但在該模型中并未提供任何方法和技術刻畫構件及其相關服務的性質,該模型服務類型的語義由底層平臺實現(xiàn),并沒有相關的語義解釋。在該模型中也沒提供顯式連接件的概念。Darwin里的請求連接模型只支持非對稱的交互模式,不能獨立于構件進行相關描述。在定義體系結構風格時,需要定義它的交互模型,構件的定義由體系結構師完成,所以它不能很好的支持體系結構風格規(guī)約。 該模型采用參數(shù)化配置方式描述系統(tǒng)規(guī)約,這方面也一樣存在局限,不能很好的支持體系結構風格。(6) SADL 該模型提出了能夠確保正確性和可組合性的體系結構精化模式概念,在該模型中精化模式的實例能夠確保精化過程的正確性。采用該方法能夠有效地降低體系結構設計過程錯誤,并能廣泛、系統(tǒng)地實現(xiàn)對設計領域的知識和正確性證明過程的復用。由于該模型工作的前提假設為大型復雜軟件系統(tǒng)體系結構是由一組相關的層次化的體系結構進行描述,其中高層是低層的抽象,低層是高層的精化,在模型中具有不同種類和數(shù)量的構件和連接件。如果這種層次化和結構缺少正規(guī)的描述方法,則精化過程就容易出錯,在本文中所提到的抽象狀態(tài)機理論同樣需要解決類似的問題。(7)Unicon 該模型具有一個可執(zhí)行的配置工具,同時提供一個高層體系結構設計編譯器,支持異構構件及某些特殊的連接件類型的組合。構件和連接件都有接口,從更高抽象層次來看,它們都屬于構件,其中構件又名“扮演者”(Player),連接件可名為“角色”(Role),通過配置使它們相互連接。但該模型的擴展性不好,里面增加新的連接件類型比較麻煩,而且它并不支持描述體系結構風格。
(8)feight:該體系結構描述語言由Robert Allen等人開發(fā)。該模型的形式語義基礎是通信順序進程CSP。它具有和Unicon類似的規(guī)約框架,即從構件、連接件和配置三個角度對體系結構進行刻畫。與Unicon所不同的為,它不面向實現(xiàn),而是在高抽象層次描述體系結構。該模型采用CSP并對其進行相關的擴展,用來刻畫構件端口的行為交互及計算行為,描述連接件的交互協(xié)議和角色規(guī)約。因此,它提供顯式、獨立的連接件規(guī)約以及支持任意復雜連接件的規(guī)約。該模型通過定義連接件和構件實例,在對應角色和端口之間建立連接,實現(xiàn)系統(tǒng)配置,同時在該系統(tǒng)配置的基礎上推導得出描述該系統(tǒng)配置行為的CSP進程。通過綁定機制實現(xiàn)系統(tǒng)的層次化構造。這個模型的突出特征在于不僅支持單個系統(tǒng)體系結構的規(guī)約和分析,還支持體系結構風格規(guī)約和相關分析,更好為產(chǎn)品族的規(guī)約和生產(chǎn)提供支持。在體系結構描述語言方面,國內(nèi)研究領域也提出幾種較有代表性的描述語言,如支持面向構件軟件開發(fā)方法的ABC/ADL、基于框架和角色模型體系結構規(guī)約語言FRADL、基于層次消息總線的JB/ADL、基于時序邏輯的XYZ/ADL、基于主動連接件的體系結構描述語 Tracer 等。(1) ABC/ADL :ABC/ADL是種基于XML的體系結構描述語言,具有多數(shù)ADL描述軟件系統(tǒng)高層結構的能力,同時支持系統(tǒng)的逐步精化與演化,并對自動化組裝和驗證方面提供支持。該描述語言以標準XML作為元語言定義數(shù)據(jù)的互操作,它不僅使ABC/ADL具有與其它 ADL的互操作的能力同時還有助于實現(xiàn)設計過程中階段性產(chǎn)品與其它軟件生命周期階段性產(chǎn)品之間的可追蹤性。(2) FRADL =FRADL的首要的規(guī)約對象為體系結構基本元素,這種設計思想認為框架也是構件,包含主動連接機制的角色模型連接器,構件實例與連接器實例的配置最終形成軟件體系結構。這種模型雖然提供了描述體系結構基本要素如構件、連接件和配置等的語法,但在形式語義模型還是欠缺,并沒有提供系統(tǒng)的體系結構描述和分析方法。(3) JB/SADL:北大青鳥以青鳥軟件生產(chǎn)線的實踐為背景,提出基于層次消息總線的軟件體系結構風格,同時設計了對應的體系結構描述語言JB/SADL,該語言從接口、靜態(tài)結構和動態(tài)行為三個角度描述構件。通過JB/SADL,可以方便地實現(xiàn)軟件體系結構的構造、 精化和驗證,具有原型的快速生成能力,同時還在代碼框架的自動生成和系統(tǒng)體系結構的動態(tài)演化方面提供支持。(4)Tracer:它是種基于主動連接件的體系結構描述語言。這種方法在連接件中引入了引擎機制,使它在與相關組件連接的過程中成為運行活動的觸發(fā)元素,同時在目標系統(tǒng)實現(xiàn)中對應轉化為可見部分。體系結構描述語言通常運用相互連接的軟件來描述系統(tǒng)的結構,并且支持系統(tǒng)結構的層次化配置。它們給出體系結構規(guī)格說明的統(tǒng)一框架,直接提供相應的標記方法和符號,用規(guī)格說明體系結構的基本元素。但這些體系結構描述語言缺少體系結構規(guī)格說明的形式化分析技術,不能有效支持體系結構風格規(guī)格說明、描述構件交互的能力不足,不能描述軟件運行時動態(tài)體系結構。
發(fā)明內(nèi)容
為了克服已有運行時軟件體系結構的形式化描述方法的自適應較差、可理解性較差、執(zhí)行性較差的不足,本發(fā)明提供一種具可良好執(zhí)行性,可推理性和易讀性的運行時自適應軟件體系結構的形式化描述方法。本發(fā)明解決其技術問題所采用的技術方案是一種運行時自適應軟件體系結構的形式化描述方法,所述形式化描述方法包括以下步驟(1)對自適應軟件體系結構框架進行描述設定形式化描述的體系結構框架,框架包括構件,連接件和體系結構配置,構件由外部端口和內(nèi)部行為構成,外部端口是構件與外界環(huán)境或者其他連接件交互的紐帶,而一個端口由一條或者多條通道組成,所述通道包括發(fā)送數(shù)據(jù)通道,接收數(shù)據(jù)通道以及既發(fā)送又接收數(shù)據(jù)通道,構件通過通道與外界進行數(shù)據(jù)交換;連接件由外部端口和內(nèi)部行為組成,連接件的內(nèi)部行為由路由行為組成,而動態(tài)行為是指導構件間通信的交互規(guī)則和約束,構件之間通過連接件才能交互,依附在構件和連接件端口上的通道構成他們之間的一個連接;(2)建立基于Agent網(wǎng)構軟件的自適應構件模型將自適應構件作為網(wǎng)構軟件中的構件形式,自適應構件內(nèi)部由完成計算行為的計算模塊和完成動態(tài)行為的自適應模型構成,自適應構件模型又包括處理預設演化的自適應策略和處理非預設演化的EBDI模型,EBDI模型中新增了意見函數(shù)和過濾器,意見函數(shù)功能是依據(jù)當前的對環(huán)境的感知和當前的信念再確定一個新的目標集合,過濾器是依據(jù)當前信念和目標更新實體的意圖,丟棄無法完成或已無意義的意圖,并為其選擇新的實現(xiàn)方法;(3)自適應構件模型SAM的形式化表示所述自適應構件模型SAM包括時鐘、信念、目標和意圖,依次對自適應構件的各種心智態(tài)度予以形式化描述,給出形式化定義.時鐘是一種給各種心智狀態(tài)的相關進程提供系統(tǒng)時間的進程Clock(t)=\time(t)自適應構件模型SAM總是處在某個或某段時間,如過去、現(xiàn)在或將來,該進程通過端口 time向外界提供系統(tǒng)時間;信念是關于這個世界的信息,信息分為客觀事實知識和主觀態(tài)度知識,事實類信念定義成一個知識的查詢過程,F(xiàn)actBasedBelief {id) = factid (x).Fact(x)它表示進程通過端口 factid獲取變量X,然后通過子進程!^actid找到與χ相關的事實類知識,其中id是SAM實例的標志符,主觀態(tài)度類信念表示相信某種狀態(tài)或事件已經(jīng)或將要發(fā)生,AttitudeBasedBelief {id) = time(t). [t = T](believeid (nid, Tt,s).nid ( , τ))它表示在時間τ,標志符為nid的SAM實例會處于狀態(tài)s,其中s是一個向量,SAM 的信念進程為Belief(id) = FactBasedBelief(id) AttitudeBasedBelief(id)能力是指SAM能進入何種狀態(tài),SAM能力與它所涉及到的信念知識相關,Goal {id) = goalld{x).factld (χ)它表示當SAM實例從端口 goalid獲取所欲實現(xiàn)的目標χ時,通過端口 factid查詢要實現(xiàn)該目標所需的信念知識。意圖表示SAM對自身的能力即能實現(xiàn)的目標做出的承諾,并將付諸行動;SAM的意圖是伴隨所要達到的目標而產(chǎn)生的,Intentioniid) = in tentionid ( , g).time(t) | believe id (id, i, g) | goal id (g)其含義為當SAM實例通過端口化切肚化!^感知到外界環(huán)境在時間t發(fā)生的事件或狀態(tài)所蘊含的意圖g后,判斷SAC是否相信在該時刻能實現(xiàn)該目標,然后向SAM實例提出實現(xiàn)目標的請求;SAM實例進程形式化地定義如下SAC (id) = Belief (id) Goal (d) Intention (id)從SAM看來,環(huán)境是提供外部事件的場所,而它自身是提供內(nèi)部事件的場所;某個SAM實例對應的環(huán)境進程可以定義為Enviid) = (vt, c)envid inspectι (τ, c)其中,erwid獲取環(huán)境中發(fā)生的事件,然后等待SAM實例來感知,SAM內(nèi)部產(chǎn)生時間的進程可以定義為 Self (id) = (ν , c)selfid .inspectid (r, c)其中,Self(id)獲取SAM實例內(nèi)部發(fā)生的事件;由SAM實例及其環(huán)境所組成的自適應軟件系統(tǒng)定義成如下進程SASystem = Σ SAC (id》| Self (id》| Env ( φ)(4)根據(jù)π演算與構件及構件行為規(guī)約的對應關系,完成運行時軟件體系結構的形式化描述,再依據(jù)η演算的可執(zhí)行性和EBDI動態(tài)的推理體系結構行為,從而實現(xiàn)軟件運行時的自適應。本發(fā)明的技術構思為隨著hternet的日益普及和廣泛應用,越來越多的軟件系統(tǒng)運行和部署在網(wǎng)絡環(huán)境上,新的軟件形態(tài)——網(wǎng)構軟件(Internetware)隨之產(chǎn)生,它要求具有自主性、協(xié)同性、反應性、演化性和多目性等特征,其共性可以歸結為自適應性,同時網(wǎng)構軟件的運行環(huán)境hternet具有開放性、動態(tài)性和多變性以及不斷變更的用戶需求,這就要求網(wǎng)構軟件必須能根據(jù)不斷變化的環(huán)境和用戶需求進行自調(diào)整。網(wǎng)構軟件的主體是構件,這就促使了我們對實現(xiàn)自適應的網(wǎng)構軟件的研究應該從構件實體入手。在現(xiàn)階段,基于CBSD(Component Based Software Development)的軟件開發(fā)方法已經(jīng)成為新一代的軟件開發(fā)范型,以體系結構為藍圖把構件組裝成系統(tǒng),構件與構件之間的依賴關系通過接口規(guī)約來實現(xiàn),構件在整個組裝過程中處于被動的地位,且在運行時這種規(guī)約和構件自身保持不變,因而傳統(tǒng)構件缺乏對開放、動態(tài)和多變的環(huán)境和多變的用戶需求的適應能力。如何設計和實現(xiàn)自適應的構件,并將構件依據(jù)體系結構描述組裝成網(wǎng)構軟件系統(tǒng),這一系列問題給我們提出了挑戰(zhàn)。傳統(tǒng)的開發(fā)方法中,用戶需求的規(guī)格說明采用的是非形式的自然語言以及圖表結構描述,由于非形式描述的模糊性和歧義性,產(chǎn)生的規(guī)格說明往往不夠精確和完整,規(guī)格說明的不同使用者對于同一規(guī)格說明會有不同的理解,從而造成系統(tǒng)的不完善。許多軟件項目的經(jīng)驗表明,程序錯誤的很大一部分來自需求分析和設計階段的失誤。而形式方法的基本思想是對系統(tǒng)建立一個數(shù)學模型,研究和提供一種基于數(shù)學和形式語義學的軟件規(guī)格說明語言,用這種語言嚴格地描述所開發(fā)軟件的功能,然后將它轉換成可以執(zhí)行的代碼,最后證明實現(xiàn)的代碼是否符合其規(guī)格說明,于是產(chǎn)生了現(xiàn)在的軟件形式化方法。軟件形式化方法是作為軟件工程的一個分支而發(fā)展起來,目標是為軟件開發(fā)服務提供輔助分析驗證,從而提高軟件正確性和可靠性。目前完全將之用于實際的軟件開發(fā)過程仍存在比較大的困難,主要表現(xiàn)在以下幾個方面手工證明容易出錯,而且形式化方法也相對難以掌握,輔助工具不是特別完善等因素。但是這方面的研究一直有眾多人參與,而且取得了比較多的成果。傳統(tǒng)的軟件系統(tǒng)可靠性保證的方式是對目標系統(tǒng)進行反復測試和試用,這種情況即使對系統(tǒng)測試成功,只能說明目前為止沒有發(fā)現(xiàn)錯誤,不能確保沒有錯誤。 相反,作為一種以數(shù)學、邏輯為嚴格基礎的形式化分析方法因其精確性和嚴格性,而受到工業(yè)界和學術界的青睞,并逐漸在實際系統(tǒng)的開發(fā)中起指導或輔助作用。形式化描述語言(Formal Description Languages)在計算機科學及其相關領域都有著廣泛的應用,它是對系統(tǒng)進行形式化描述的主要工具和載體,同時又是聯(lián)系純粹形式化理論技術與其現(xiàn)實應用價值的之間的紐帶。F. Oquendo等人提出的π -ADL能從運行時角度對體系結構的結構和行為兩個視圖進行描述,同時行為又可根據(jù)功能分為計算行為和動態(tài)行為,計算行為面向系統(tǒng)的業(yè)務邏輯,動態(tài)行為面向系統(tǒng)預定義的演化邏輯,但在應付難以預測和多變的環(huán)境和用戶需求時,這種預定義的動態(tài)演化邏輯顯得捉襟見肘。設計出一種具有嚴密形式化基礎的體系結構描述語言,并且刻畫軟件系統(tǒng)運行時的行為和結構語義,同時利用其相關的形式化工具來協(xié)助系統(tǒng)的設計、驗證和演化,不失為解決軟件自適應問題的一條好途徑。對Agent研究,經(jīng)過十幾年的發(fā)展已經(jīng)取得了一些優(yōu)秀的成果,在開發(fā)環(huán)境方面, 具有代表性的成果有JADE,JACK工程,并在工程上實現(xiàn)了很多基于Agent的應用系統(tǒng),將 Agent技術弓I入構件化軟件系統(tǒng)日益得到關注。軟件Agent通過對自身行為的控制規(guī)定了 Agent在不同環(huán)境狀態(tài)下應采取不同對策,但是一方面軟件Agent技術尚不成熟,也沒得到業(yè)界的認可;另一方面軟件Agent對不同協(xié)議支持有限,同時并不是每個軟件實體都是軟件Agent,所以從軟件Agent技術方面去解決網(wǎng)構軟件的自主、協(xié)同、反應、演化等方面的問題顯得很困難。網(wǎng)構軟件的實體具有相對獨立性、主動性和自適應性,具有感知外部系統(tǒng)運行和使用環(huán)境的能力,針對構件化開發(fā)方法中傳統(tǒng)構件難以應付不斷變化的環(huán)境和用戶需求, 我們提出自適應構件這一概念。在自適應構件實現(xiàn)方面,現(xiàn)有的Agent技術或者是人工智能技術,難以實現(xiàn)與主流技術之間的集成,如果將Agent技術的研究成果,包括反應式結構、BDI邏輯和模型,基于情景演算的結構等應用到構件技術中,這樣既能發(fā)揮Agent計算的靈活性和技術潛力,又能與主流技術集成,實現(xiàn)自適應的軟件系統(tǒng),增強了軟件的生命力,同時對提高網(wǎng)構軟件的質量和可信度有著重要意義。在自適應構件的實現(xiàn)過程中,構件如何來應對多變的外界環(huán)境和推理自身行為也是一個難題,形式化描述方法給我們提供一條解決該問題的很好的途徑,一般的,形式化描述語言都具有明確規(guī)范的語法和嚴格精確的語義,所以一方面可以為相應的形式化描述提供標準的語法分析工具,另一方面還可以采用計算機輔助等手段實施不同程度的語義自動分析。因此亟需一種支持軟件自適應的體系結構描述方法,來分析和推理具有智能性的自適應構件的行為,也可用于體系結構模型的形式化驗證、求精和演化,支持實現(xiàn)網(wǎng)構軟件系統(tǒng)的自適應特性。本發(fā)明借鑒Agent的反應和智能特性,構建了一種自適應構件模型,再在已有的研究成果D-ADL體系結構描述語言的基礎上發(fā)明了一種描述運行時自適應軟件體系結構的形式化方法(Formal Description Approach for Runtime SoftwareArchitecture),以下簡稱FDA4RSA。具體創(chuàng)造的技術方案以高階多型π演算為理論基礎,對自適應軟件的框架和構件模型進行描述,在此基礎上提出一套針對運行時體系結構自適應行為的形式化表述方式,然后對該形式化方法的語法規(guī)約及形式語義做介紹,同時開發(fā)了有一個可視化的輔助工具原型,證明了方法的可行性。利用分布式對象技術開發(fā)網(wǎng)構軟件相對傳統(tǒng)的方法具有一定難度。對于網(wǎng)構軟件來說,需要有一系列方法論、軟件工程方法和工具來支持。形式化方法是指具有完備的數(shù)學基礎,并且這種數(shù)學基礎不僅提供了精確定義的方法,具有一致性、完整性等特征,而且也提供了不需運行系統(tǒng)就可模擬證明其性質的方法。因此。形式化方法無論是從最初的用戶需求到系統(tǒng)設計、實現(xiàn)、驗證都能夠為系統(tǒng)提供必要的支持。也有人提出通用ADL,但通用的ADL的描述能力也有限制,所以提出一種描述運行時軟件體系結構的形式化方法來解決網(wǎng)構軟件的形式化描述問題,F(xiàn)DA4RSA應該能夠描述自適應構件的自主行為,其中包括預設的和非預設的演化行為。FDA4RSA應該考慮的目標包括①能夠有效反映計算機網(wǎng)絡系統(tǒng)的分布、并發(fā)、交互等本質特性;②能夠從運行時角度刻畫體系結構,以及具有描述預設的和非預設的自適應行為的能力;③支持對網(wǎng)構軟件的建模元素自適應構件模型進行形式化描述,并能將各種建模元素裝配成實際的網(wǎng)構軟件系統(tǒng);④具有可執(zhí)行性。具有一定的推理、分析和驗證能力,還支持系統(tǒng)的逐步求精和演化,并適于開發(fā)相應的CASE工具;⑤應保持簡單性和易理解性之間的平衡。結合以上目標,在原有的體系結構描述語言D-ADL的基礎上,F(xiàn)DA4RSA增加了對自適應構件描述的語義和語法知識,能對動態(tài)行為規(guī)約進行形式化解釋。在運行時,軟件能根據(jù)環(huán)境的變化動態(tài)的進行自適應調(diào)整,同時,通過FDA4RSA輔助工具,系統(tǒng)維護人員能指導構件的端口連接,組裝復合構件或自適應軟件系統(tǒng),等進行一系列顯示化的操作。伴隨通信系統(tǒng)和網(wǎng)絡分布式計算的發(fā)展,許多計算機涉及交互,并因此設計具有多個并發(fā)活動構件的軟件系統(tǒng),而傳統(tǒng)的計算模型,如圖靈機和λ演算,它們在交互系統(tǒng)建模方面存在不足,它們的基本活動是讀取存儲或函數(shù)應用,它們也無力描述交互和并發(fā)執(zhí)行的軟件系統(tǒng)。20世紀90年代由MiIner等人對CCS進行擴充得到了 π演算。π演算是計算機并行領域的最重要的并發(fā)計算模型,高階多型η演算由Sangiorgi在一階π演算的基礎上發(fā)展,旨在描述結構和行為不斷變化的并發(fā)系統(tǒng)。Ji演算具有3個基本的實體進程(process)、名(name)和抽象(abstraction)。 進程是并發(fā)運行實體的單位,并以名來統(tǒng)一定義通道(channel)以及在通道中傳送的對象 (object),每個進程都有諾干與其它進程聯(lián)系的通道,進程通過它們共享的通道進行交互。 高階多型η演算和一階η演算不同的關鍵在于對象名本身也可以是進程,這就使得交互中通信的數(shù)據(jù)可以是進程,進程可以被傳遞。抽象建立在進程的基礎上,是帶參數(shù)的進程。 對抽象的參數(shù)進行具體化,得到一般的進程。在高階多型η演算中,參數(shù)以及通道中傳送的對象都具有類型,對抽象的參數(shù)進行具體化以及進程交互時要注意類型兼容。
定義1.設N表示名(name)的集合,名由小寫字母表示,&間《e W),P,Q 表示高階η演算進程,則高階多型η演算進程可定義為·Ρ::=0| Χ.尸 |在少.尸| 尸+ ρι 尸 ιρι&χ)尸 |[x = y]尸卜,其中 π::= X ⑴ li.其意義解釋如下0表示非活動進程,它不能與任何進程交互;α χ. P 這里,α指某一通道的輸入端,此進程的行為是先通過通道名α從接收對象y,再激活進程P[y/x],其中X為局部名(local name), [y/x]表示a換名操作;^yi3:這里正指某一通道的輸出端,此進程的行為是先通過通道名α輸出對象名 y,再激活進程P,其中y為全域名(global name);P+Q 這是進程的不確定計算形式,此進程將根據(jù)一定的誘因來激活進程P或Q,它的行為僅為這個被激活的進程的行為;P I Q 這是一個并行操作形式的進程,此式中進程P和Q并行地存在,它們可以獨立地同其他的進程進行交互操作,也可以彼此通過共享的通道進行通信; (vx). P 該進程中,χ是進程P的局域名,它使得進程P不能通過通道χ與其他進程進行通信;[x = y]P 這是一個條件進程,如果χ = y,它將激活進程P,否則將不進行任何操作,成為非活動進程0;在多價π演算中,通道上傳輸?shù)臄?shù)據(jù)可以是一個名字向量,例如X(yi...yn).p或 x(y).p,明…JvjP或砂.尸等。我們將 χ (υι· .. yn) · P 記作 χ (入 y” .. yn)P,而將、..υ記作, 并定義,進程抽象k= ( Ay1... yn) P,進程具體化C= [λΥι...Υη]ρ.本發(fā)明的有益效果主要表現(xiàn)在動態(tài)ACME可用于描述體系結構中可選或者多重的體系結構元素,進而達到一定程度的動態(tài)特性。同時利用Armani規(guī)約語言對體系結構的拓撲結構和元素進行了基于不變式的約束。C2使用專門的體系結構變更語言 AML (Architecture Modification Language)。在 AML 中,定義了一組在運行時可插入、刪除和重新關聯(lián)體系結構元素的操作,如addcomponent,weld等。ABC/ADL強調(diào)體系結構模型到程序設計語言的轉換。ABC/ADL包含以體系結構元素的對象的增加、刪除、替換等操作, 可以為運行實體提供內(nèi)部狀態(tài)和外部環(huán)境的信息,比如線程數(shù)目、構件實例的個數(shù)等。但這些ADL沒有嚴密的理論基礎,不能對體系結構的動態(tài)行為進行嚴格的分析和推演。Rapide基于偏序事件集對構件的計算行為和交互行為進行建模,允許在條件語句中通過link和unlink操作符重新建立結構關聯(lián)。但是Rapide不允許單獨對連接子進行描述和分析。Dynamic Wright使用標簽事件技術對Wright進行擴展,從而支持對動態(tài)體系結構建模和分析。Dynamic Wright雖然長于進行諸如死鎖檢測、模型一致性驗證等工作,但對動態(tài)的行為變化表達力不足。同時,基于CSP的特點,難以進行行為模擬和等價性判定工作。Darwin提供延遲實例化和直接動態(tài)實例化兩種技術,支持動態(tài)體系結構建模,允許事先規(guī)劃好的運行時構件復制、刪除和重新綁定。Darwin的動態(tài)機制并不提供任何π演
算語義。歐盟的ArchWare項目提出了一個動態(tài)體系結構描述語言π-ADL。π-ADL是一個基于高階η演算的形式化語言,支持動態(tài)體系結構建模、體系結構分析和約束檢測。 π-ADL具有形式化、可執(zhí)行、可演化和抽象性等特點。然而,π-ADL太過抽象和形式化,難以理解和使用。Michel Wermelinger.等人通過CHAM驗證某個體系結構實例是否遵從其風格的約束等。Daniel Le Metayer.等人介紹了用圖來描述體系結構動態(tài)性的方法,用節(jié)點表示構件,邊表示連接子,并引入?yún)f(xié)調(diào)機制管理體系結構,動態(tài)性則體現(xiàn)在圖的重寫規(guī)則上。但它們都無法表示上下文信息,無法處理帶參數(shù)的變化形式。我們可以發(fā)現(xiàn)這些形式化方法大多注重體系結構的動態(tài)性,而不是自適應性,因此這些方法很少關注對環(huán)境的描述。其次,這些形式化方法要么只關注連接,難以表示結構的嵌套關系以及結構的變化;要么只關注位置,難以對行為進行合適的描述。第三,這些形式化方法很少關注體系結構在演化中性質的分析和驗證。第四,大多形式化方法過于抽象, 缺乏圖形化支持,難以理解。FDA4RSA以構件為研究對象,在構件接口層加入了預設演化行為策略和處理非預設演化行為的EBDI智能模型,實現(xiàn)了構件層次上的自適應。自適應構件是面向自適應的軟件系統(tǒng)的主體,它在顧及軟件設計者的設計策略之外還能根據(jù)非預料的情況做出自我調(diào)整,從而實現(xiàn)了軟件系統(tǒng)自適應性。
圖1是描述運行時自適應軟件體系結構的形式化方法的體系結構框架示意圖。圖2是自適應構件模型的示意圖。
具體實施例方式下面對結合附圖本發(fā)明作進一步描述。參照圖1和圖2,一種描述運行時自適應軟件體系結構的形式化方法,根據(jù)形式化描述的體系結構,其內(nèi)容包括構件1、連接件2和體系結構配置,本發(fā)明圍繞以上實體建模, 如圖1所示。FDA4RSA是以高階多型π演算作為描述行為語義的基礎,給運行時角度描述 SA的并發(fā)、交互等特性提供支持。構件(component)是SA的基本要素之一,從結構視圖來看,它由外部端口(ports) 和內(nèi)部行為(behavior)構成,外部端口是構件與外界環(huán)境或者其他連接件交互的紐帶,而一個端口由一條或者多條通道(channel)組成,這些通道包括發(fā)送數(shù)據(jù)通道,接收數(shù)據(jù)通道以及既發(fā)送又接收數(shù)據(jù)通道,因此端口可以看作通道的集合。構件通過通道與外界進行數(shù)據(jù)交換。引入端口概念,從而使構件的交互功能結構化、局部化,從而方便對其分析。構件的內(nèi)部行為是實現(xiàn)系統(tǒng)業(yè)務邏輯的載體,其中內(nèi)部行為在邏輯上又可分為計算行為和動態(tài)行為,這將在后續(xù)部分介紹。連接件也是SA的一個組成部分,是一種特殊的構件,旨在建立構件間的交互以及支配這些交互規(guī)則。同構件一樣,連接件也由外部端口和內(nèi)部行為組成,唯一不同的地方是,連接件的內(nèi)部行為是只由路由行為組成,而動態(tài)行為是指導構件間通信的交互規(guī)則和約束。構件間不能直接連接,他們之間必須有連接件才能交互。依附在構件和連接件端口上的通道(channels)就構成他們之間的一個連接(connection),connection內(nèi)部傳輸?shù)臄?shù)據(jù)可以是數(shù)值也可以是connection本身,甚至是任意體系結構元素。
復合構件由外部端口和內(nèi)部元素構成,其中內(nèi)部元素是一系列成員構件及連接他們的一系列成員連接件,外部端口是內(nèi)部元素通過配置顯示的暴露在外的端口。在本發(fā)明中,軟件系統(tǒng)本身就可以看成是一個復合構件。傳統(tǒng)的構件是通過接口向外提供服務的,是可以獨立部署并組裝的,并能實現(xiàn)固定功能的軟件實體,但不能對外界環(huán)境做出反應。針對網(wǎng)構軟件面臨的問題,在 FDA4RSA中,我們提出了一個基于Agent網(wǎng)構軟件的自適應構件模型,將自適應構件 (Self-Adaptive Component),以下簡稱SAC,作為網(wǎng)構軟件中的構件形式。如圖2。SAC內(nèi)部由完成計算行為(computation behavior)的計算模塊 (computationmodule)禾口完成云力態(tài)行為(dynamic behavior)的自適應模型 (self-adaptation model)構成,簡稱SAM其中自適應模型又包括處理預設演化的自適應策略(strategy)和處理非預設演化的EBDI。動態(tài)行為的本質是對體系結構的動態(tài)重配置, 無論是通過自適應策略還是通過EBDI控制模型得到的行為規(guī)約,在最后都需要通過行為指導(choreographer)來處理,choreographer是一種行為的序列。EBDI模型中新增了意見函數(shù)(opinion)和過濾器(filter),意見函數(shù)功能是依據(jù)當前的對環(huán)境的感知和當前的信念再確定一個新的目標集合,過濾器是依據(jù)當前信念和目標更新實體的意圖,丟棄無法完成或已無意義的意圖,并為其選擇新的實現(xiàn)方法,即新的動作序列。EBDI模型理論定義有多種心智狀態(tài),包括時鐘(Clock)、信念(Belief)、目標 (Goal)、意圖antention)。下面我們依次對自適應構件的各種心智態(tài)度予以形式化描述, 給出形式化定義。定義2.時鐘(Clock)是一種給EBDI的各種心智狀態(tài)的相關進程提供系統(tǒng)時間的進程Clock(t)=\time(t)一般地,SAM總是處在某個或某段時間,如過去、現(xiàn)在或將來,該進程通過端口 time向外界提供系統(tǒng)時間。定義3.信念(Belief)是SAM所具有的關于這個世界的信息,它們可能不完整也可能不正確,信息分為客觀事實知識和主觀態(tài)度知識。事實類信念定義成一個知識的查詢過程, FactBasedBelief {id) = factid (x).Fact(x) 它表示進程通過端口 factid獲取變量X,然后通過子進程!^ctid找到與χ相關的事實類知識,其中id是SAM實例的標志符。主觀態(tài)度類信念表示相信某種狀態(tài)或事件已經(jīng)或將要發(fā)生, AttitudeBasedBelief {id) = time(t).[t = r\(believeid (nid, Tt, s).nid (t, rj)它表示SAM實例相信在時間τ,標志符為nid的SAM實例會處于狀態(tài)s,其中s是一個向量。這樣,SAM的信念進程為Belief(id) = FactBasedBelief(id) AttitudeBasedBelief(id)定義4.能力(Goal)是指SAM能進入何種狀態(tài),SAM能力與它所涉及到的信念知識相關,Goal {id) = goalld{x).factld (χ)它表示當SAM實例從端口 goalid獲取所欲實現(xiàn)的目標χ時,通過端口 factid查詢要實現(xiàn)該目標所需的信念知識。 定義5.意圖antention)表示SAM對自身的能力即能實現(xiàn)的目標做出的承諾,并將付諸行動。SAM的意圖是伴隨所要達到的目標而產(chǎn)生的,
權利要求
1. 一種運行時自適應軟件體系結構的形式化描述方法,其特征在于所述形式化描述方法包括以下步驟(1)對自適應軟件體系結構框架進行描述設定形式化描述的體系結構框架,框架包括構件,連接件和體系結構配置,構件由外部端口和內(nèi)部行為構成,外部端口是構件與外界環(huán)境或者其他連接件交互的紐帶,而一個端口由一條或者多條通道組成,所述通道包括發(fā)送數(shù)據(jù)通道,接收數(shù)據(jù)通道以及既發(fā)送又接收數(shù)據(jù)通道,構件通過通道與外界進行數(shù)據(jù)交換;連接件由外部端口和內(nèi)部行為組成,連接件的內(nèi)部行為由路由行為組成,而動態(tài)行為是指導構件間通信的交互規(guī)則和約束,構件之間通過連接件才能交互,依附在構件和連接件端口上的通道構成他們之間的一個連接;(2)建立基于Agent網(wǎng)構軟件的自適應構件模型將自適應構件作為網(wǎng)構軟件中的構件形式,自適應構件內(nèi)部由完成計算行為的計算模塊和完成動態(tài)行為的自適應模型構成,自適應構件模型又包括處理預設演化的自適應策略和處理非預設演化的EBDI模型,EBDI模型中新增了意見函數(shù)和過濾器,意見函數(shù)功能是依據(jù)當前的對環(huán)境的感知和當前的信念再確定一個新的目標集合,過濾器是依據(jù)當前信念和目標更新實體的意圖,丟棄無法完成或已無意義的意圖,并為其選擇新的實現(xiàn)方法;(3)自適應構件模型SAM的形式化表示所述自適應構件模型SAM包括時鐘、信念、目標和意圖,依次對自適應構件的各種心智態(tài)度予以形式化描述,給出形式化定義時鐘是一種給各種心智狀態(tài)的相關進程提供系統(tǒng)時間的進程C lock {t) = \time{t)自適應構件模型SAM總是處在某個或某段時間,如過去、現(xiàn)在或將來,該進程通過端口 time向外界提供系統(tǒng)時間;信念是關于這個世界的信息,信息分為客觀事實知識和主觀態(tài)度知識,事實類信念定義成一個知識的查詢過程,F(xiàn)actBasedBelief (id) = factid (x) .Fact{ χ)它表示進程通過端口 factid獲取變量X,然后通過子進程!^actid找到與χ相關的事實類知識,其中id是SAM實例的標志符,主觀態(tài)度類信念表示相信某種狀態(tài)或事件已經(jīng)或將要發(fā)生,AttitudeBasedBelief (id) = time(t). [t = r](believejd (nid, Tt,s).nid ( , τ))它表示在時間τ,標志符為nid的SAM實例會處于狀態(tài)s,其中s是一個向量,SAM的信念進程為Belief(id) = FactBasedBelief(id) AttitudeBasedBelief(id)能力是指SAM能進入何種狀態(tài),SAM能力與它所涉及到的信念知識相關,Goal {id) = goalld{x).factld (χ)它表示當SAM實例從端口 goalid獲取所欲實現(xiàn)的目標χ時,通過端口 factid查詢要實現(xiàn)該目標所需的信念知識。意圖表示SAM對自身的能力即能實現(xiàn)的目標做出的承諾,并將付諸行動;SAM的意圖是伴隨所要達到的目標而產(chǎn)生的,Intention{id) = in Ientionid ( , g).time(t) | believetd (id, , g) | goal id (g)其含義為當SAM實例通過端口化切肚化!^感知到外界環(huán)境在時間t發(fā)生的事件或狀態(tài)所蘊含的意圖g后,判斷SAC是否相信在該時刻能實現(xiàn)該目標,然后向SAM實例提出實現(xiàn)目標的請求;SAM實例進程形式化地定義如下SAC (id) = Belief (id) Goal (d) Intention (id)從SAM看來,環(huán)境是提供外部事件的場所,而它自身是提供內(nèi)部事件的場所;某個SAM實例對應的環(huán)境進程可以定義為Env(JcP) = (vt, c)envid inspectid (r, c)其中,envid獲取環(huán)境中發(fā)生的事件,然后等待SAM實例來感知,SAM內(nèi)部產(chǎn)生時間的進程可以定義為Self (id) = (vt, c) selfid .inspectid (r,c)其中,Self (id)獲取SAM實例內(nèi)部發(fā)生的事件;由SAM實例及其環(huán)境所組成的自適應軟件系統(tǒng)定義成如下進程SASystem =Σ SAC(Idi) Self(Idi) Env(Idi)(4)根據(jù)π演算與構件及構件行為規(guī)約的對應關系,完成運行時軟件體系結構的形式化描述,再依據(jù)η演算的可執(zhí)行性和EBDI動態(tài)的推理體系結構行為,從而實現(xiàn)軟件運行時的自適應。
2.如權利要求1所述的一種運行時自適應軟件體系結構的形式化描述方法,其特征在于所述步驟(3)中,動態(tài)行為的形式化描述過程如下動態(tài)行為分為兩種預設的和非預設的,對構件進行choreographer處理,所述 choreographer處理的動作包括1)動態(tài)構件新的構件實例和連接件實例,以及新的端口和通道;2)動態(tài)刪除構件實例和連接件實例,以及端口和通道;3)體系結構元素之間連接的改變。
全文摘要
一種運行時自適應軟件體系結構的形式化描述方法,包括以下步驟(1)對自適應軟件體系結構框架進行描述設定形式化描述的體系結構框架,框架包括構件,連接件和體系結構配置;(2)建立基于Agent網(wǎng)構軟件的自適應構件模型將自適應構件作為網(wǎng)構軟件中的構件形式,自適應構件內(nèi)部由完成計算行為的計算模塊和完成動態(tài)行為的自適應模型構成;(3)依次對自適應構件的各種心智態(tài)度予以形式化描述,給出原子構件和連接件的形式化定義;(4)完成自適應構件計算行為和動態(tài)行為規(guī)約定義,給出其π演算的對應關系,再依據(jù)π演算的可執(zhí)行性和EBDI動態(tài)的推理體系結構行為。本發(fā)明具有可執(zhí)行性,可推理性和易讀性。
文檔編號G06F9/44GK102270130SQ20111017526
公開日2011年12月7日 申請日期2011年6月27日 優(yōu)先權日2011年6月27日
發(fā)明者高俊 申請人:浙江工業(yè)職業(yè)技術學院