江海挺,劉 洋,林華山,王茂光,焦文品+
1.北京大學信息科學技術學院軟件研究所,北京1008712.北京大學高可信軟件技術教育部重點實驗室,北京1008713.中央財經(jīng)大學信息學院,北京100081
ISSN 1673-9418 CODEN JKYTA8
Journal of Frontiers of Computer Science and Technology 1673-9418/2016/10(03)-0301-10
?
自適應軟件的環(huán)境模型及實現(xiàn)*
江海挺1,2,劉洋1,2,林華山1,2,王茂光3,焦文品1,2+
1.北京大學信息科學技術學院軟件研究所,北京100871
2.北京大學高可信軟件技術教育部重點實驗室,北京100871
3.中央財經(jīng)大學信息學院,北京100081
ISSN 1673-9418 CODEN JKYTA8
Journal of Frontiers of Computer Science and Technology 1673-9418/2016/10(03)-0301-10
E-mail: fcst@vip.163.com
http://www.ceaj.org
Tel: +86-10-89056056
* The National Natural Science Foundation of China under Grant Nos. 91318301, U1201252 (國家自然科學基金); the National Basic Research Program of China under Grant No. 2015CB352200 (國家重點基礎研究發(fā)展計劃(973計劃)).
Received 2015-06,Accepted 2015-09.
CNKI網(wǎng)絡優(yōu)先出版:2015-10-09, http://www.cnki.net/kcms/detail/11.5602.TP.20151009.1544.006.html
Key words: self-adaptive; software environment; software modeling; software reuse
摘要:隨著軟件及其運行環(huán)境的復雜性和不確定性的上升,軟件要求能夠及時地感知環(huán)境的變化,并做出相應的反應。由于環(huán)境具有開放、動態(tài)、不可控、不可預測等特點,為了實現(xiàn)軟件對不同環(huán)境的自動感知和適應,環(huán)境被獨立建模,并定義為能夠自維護和自演化的一級實體。為了簡化軟件與環(huán)境之間的交互,環(huán)境被實現(xiàn)為一個層次結構,為軟件提供面向應用的抽象資源到環(huán)境資源之間的自動映射和配置機制,從而提高了環(huán)境和軟件的復用性,同時也減輕了軟件開發(fā)人員的負擔。
關鍵詞:自適應;軟件環(huán)境;軟件建模;軟件復用
隨著軟件運行環(huán)境的復雜性和不確定性的上升,傳統(tǒng)的軟件已經(jīng)不能很好地適應環(huán)境的變化。自適應軟件(self-adaptive software)會動態(tài)評估自身的行為,當評估顯示其自身的行為并非接近其傾向完成的目標,或有可能提供更好的功能或性能時,軟件會改變自身的行為[1]。
環(huán)境是自適應系統(tǒng)中的重要組成部分,環(huán)境的顯式表示和感知是實現(xiàn)復雜自適應系統(tǒng)的前提[2]。環(huán)境從本質上來說應該是獨立于軟件的,它會自主、獨立地變化,并非都由軟件的行為操控。一個環(huán)境應當能夠被復用,可以應用于多個軟件系統(tǒng);相對的,軟件也有獨立性,并不依附于環(huán)境而存在,可以應用于不同的環(huán)境中。因此,將環(huán)境模型建立在自適應軟件內部并不合理,這種解決手段會很大程度上限制軟件系統(tǒng)及環(huán)境的復用,使得軟件系統(tǒng)只能適應單一的特定環(huán)境,軟件系統(tǒng)內部的環(huán)境模型也難以被其他軟件系統(tǒng)使用。而環(huán)境所具有的開放、動態(tài)、不可控、不可預測等特點[3](如Internet、戰(zhàn)場環(huán)境、社會環(huán)境),導致即使在自適應軟件內部建立了環(huán)境模型,也難以做到全面和靈活,故將環(huán)境獨立建模是必要的。但是,怎樣對環(huán)境進行建模,以及如何更好地支持環(huán)境被使用甚至復用,仍然是需要進一步研究的問題。
為解決上述問題,本文對環(huán)境進行了獨立建模,提出了一種自適應軟件的環(huán)境模型,該模型可以支持環(huán)境的動態(tài)變化,并為開發(fā)者和使用者提供簡便的接口。本文主要有以下幾點貢獻:第一,提供了環(huán)境自身維護和演化的機制,使其真正成為一級實體,并且可以被復用。第二,將軟件對環(huán)境的表示與環(huán)境的具體實現(xiàn)分開,從而減輕了軟件開發(fā)人員的負擔。第三,為軟件對環(huán)境的感知和效應提供了簡潔的接口。
本文組織結構如下:第2章介紹了環(huán)境的抽象模型,給出了環(huán)境的組成成分以及形式化表示;第3章闡述了一種層次型的環(huán)境實現(xiàn)方案,對環(huán)境的4個層次分別進行了介紹;第4章描述了一個簡單的應用實例(SmartRoom),用來展示應用系統(tǒng)是如何與環(huán)境進行交互,并感知和效應環(huán)境的;第5章描述了相關工作;第6章為結束語,總結全文并對未來工作進行了展望。
自適應軟件的環(huán)境包含了軟件所需的各種資源,同時也是軟件訪問或操縱資源的媒介[4]。在定義環(huán)境時,除了指出環(huán)境中包含哪些資源外,還需要描述環(huán)境是如何變化的。因此,將環(huán)境(ENV)定義成時鐘(C)和資源(R)的組合。時鐘是環(huán)境的一個基礎屬性,用于維持環(huán)境運行時序。資源是環(huán)境的基礎成分,用于表示環(huán)境中的某個變量,資源都有名稱和類型。時鐘和資源定義了環(huán)境的各種特征,如狀態(tài)(S)、事件(E)、更新(U)和規(guī)則(L)。環(huán)境時鐘及當前時鐘下資源的取值構成了環(huán)境的一個狀態(tài)。環(huán)境從一個狀態(tài)遷移到另外一個狀態(tài)表明環(huán)境中發(fā)生了一個事件。更新是時鐘和資源的函數(shù),用來規(guī)定如何根據(jù)時鐘的變化改變資源的取值,本質上規(guī)定了環(huán)境的自變化方法。規(guī)則表示在一定的環(huán)境狀態(tài)下,當一個事件發(fā)生后,如何調用更新函數(shù)來實現(xiàn)環(huán)境的自變化。本文將時鐘、資源、狀態(tài)、事件、更新和規(guī)則統(tǒng)稱為環(huán)境元素。環(huán)境由這些環(huán)境元素組成,可形式化表示為:
ENV=(C, R, S, E, U, L)
在進行完整的形式化表示之前,首先聲明本文系統(tǒng)中使用的基本元素集合VALUE,用來表示元素的取值(即定義域)。VALUE可以分為NUMBER、STRING、DICT 3個子集合。其中NUMBER是所有數(shù)值的集合,STRING是所有字符串的集合,DICT是字典(或<鍵,值>)的集合,可采用遞歸定義:DICT= 2(NUMBER∪STRING)×(NUMBER∪STRING∪DICT)。在這些集合的基礎上,記TYPE={NUMBER, STRING, DICT},為元素值的類型。環(huán)境元素可以按照如下方式定義:
(1)時鐘C={c|c∈NUMBER,c≥0},時鐘是數(shù)值型的變量,隨著環(huán)境的運行而增大。
(2)資源R=STRING×TYPE,?r∈R,可令r=
(3)狀態(tài)S={
(4)事件E={
(5)更新U={u:R×S→VALUE|u(
(6)規(guī)則L=E×S→2U,?l∈L,l(
上述環(huán)境元素的形式化定義中包含了所有可能存在的情況,比如S中包含了所有可能的狀態(tài),E中包含了所有可能的事件。然而在一個特定的應用場景中,人們往往只會關心其中的一部分。因此,在應用環(huán)境時,可以定義一個環(huán)境實例,實例中的每個環(huán)境元素都是ENV中對應環(huán)境元素的一個子集,表示環(huán)境中應用實例所關心的那部分。以一個房間作為應用場景為例,可以定義如下環(huán)境實例ENVa=(Ca, Ra,Sa,Ea,Ua,La)。
(1)時鐘Ca={c|c∈自然數(shù)},表示ENVa根據(jù)實際應用的需求只關心整點時刻資源的取值。
(2)資源Ra={rt=<“temperature”, NUMBER>, rac=<“AC”,STRING>},rt表示房間中的溫度值,rac表示房間中空調的狀態(tài)。
(3)狀態(tài)Sa={
(4)事件Ea={et,eac},其中{et= (5)更新Ua={ut:{rt}×S→NUMBER,uac:{rac}×S→STRING},其中ut( (6)規(guī)則La=Ea×Sa→2Ua,滿足La( 環(huán)境一方面負責維護資源的狀態(tài)及其變化,另一方面作為媒介為自適應軟件提供感知和效應環(huán)境的機制(即訪問資源的接口)。但自適應軟件對資源的認知可能與環(huán)境本身所定義的不一致,例如對資源的表示方式和粒度不同,對資源之間關系的定義不同等原因,導致軟件無法直接訪問環(huán)境資源。另外,環(huán)境對資源的定義一般都比較細節(jié),直接調用環(huán)境定義的資源訪問接口會使自適應軟件的開發(fā)變得非常煩瑣。因此,為了簡化環(huán)境和自適應軟件之間的交互,必須在環(huán)境的實現(xiàn)中引入一些映射和配置機制。 為了達到這些目的,本文參照網(wǎng)絡協(xié)議的OSI模型,將環(huán)境實現(xiàn)為一種4層的層次結構,由底向上分別為數(shù)據(jù)層、管理層、表示層和服務層。環(huán)境的實現(xiàn)結構如圖1所示。其中,資源層用于存儲環(huán)境中的時鐘(C)和資源(R)以及相應的取值(S的一個元素)。管理層負責狀態(tài)(S)、事件(E)、更新(U)的存儲管理,以及規(guī)則(L)的執(zhí)行。管理層除了對數(shù)據(jù)層的內容進行管理外,還提供一些輔助機制,以幫助自適應軟件更好地獲取并理解環(huán)境信息及環(huán)境變化。表示層主要用于面向應用的數(shù)據(jù)(即自適應軟件系統(tǒng)所認知的資源)與環(huán)境資源間的轉換。表示層向自適應軟件提供環(huán)境的配置和資源映射的接口以及環(huán)境定義的動態(tài)修改功能。服務層是整個環(huán)境與外界(包括自適應軟件和開發(fā)者)進行交互的中樞,自適應軟件通過調用服務層提供的接口感知和效應環(huán)境。 Fig.1 Structural model of environment圖1 環(huán)境的結構模型 3.1資源層 資源層主要承擔數(shù)據(jù)倉庫的功能,并對上層提供相應的增、刪、查、改資源的接口。環(huán)境系統(tǒng)中,資源在這一層只有狀態(tài),沒有動態(tài)的特征,時鐘以及所有資源的取值構成了一個狀態(tài)。狀態(tài)之間的切換需要上層(管理層)去操縱。另外,這一層還會存儲數(shù)據(jù)的所有歷史記錄,并將數(shù)據(jù)持久化。應用軟件系統(tǒng)可以研究環(huán)境中資源變化的歷史記錄,具有很高的實用價值。 3.2管理層 這一層主要負責管理環(huán)境中的動態(tài)信息,包括環(huán)境的狀態(tài)、事件的觸發(fā),并執(zhí)行規(guī)則來維護資源層的資源更新等。利用資源層和管理層就能定義一個完整的環(huán)境。管理層使用資源層提供的資源操作接口,對上層提供了定義和使用環(huán)境的完整接口。這些接口是最原始最基本的接口,主要包含對R、S、E、U、L這些集合的增刪查改,達到定義和使用一個完整環(huán)境的基本功能。 實現(xiàn)上,管理層主要包含訪問控制器、狀態(tài)校驗器、事件監(jiān)聽器、規(guī)則執(zhí)行器4大功能塊。管理層的架構和運行流程如圖2所示(為了避免圖過于復雜,這里只保留了管理層及其上下文相關的表示層和資源層)。訪問控制器是管理層內和上層訪問資源層的入口。上層對環(huán)境定義的修改操作都會被映射到相應的功能塊,即狀態(tài)相關的操作都會被狀態(tài)校驗器接收處理,對事件的所有操作都會交給事件監(jiān)聽器進行處理,更新和規(guī)則的相關操作都會由規(guī)則執(zhí)行器處理。規(guī)則的執(zhí)行是管理層最重要的功能,其完整的執(zhí)行流程需要經(jīng)過全部4個功能塊。首先狀態(tài)校驗器使用訪問管理器獲取資源取值,檢查相關狀態(tài)是否生效,并且標記所有生效狀態(tài)。事件監(jiān)聽器查看狀態(tài)校驗器中標記生效的狀態(tài),判斷其中存儲的事件是否被觸發(fā),并標記已經(jīng)被觸發(fā)的事件。規(guī)則執(zhí)行器則根據(jù)規(guī)則的定義,利用狀態(tài)校驗器和事件監(jiān)聽器判斷需要執(zhí)行哪些更新,并將更新對應的資源修改命令發(fā)送給訪問控制器,由訪問控制器最終執(zhí)行對資源的修改。 Fig.2 Architecture of manager layer and its runtime processes圖2 管理層架構及運行流程 3.3表示層 表示層的作用主要是在資源層和管理層提供的原始環(huán)境定義方法之上,對環(huán)境的元素抽象出更高層次的表示方法。表示層提供了一種應用軟件所認知的環(huán)境元素到真實環(huán)境元素之間的映射方法,并實現(xiàn)了應用軟件對資源的表示到環(huán)境中實際資源的表示的自動轉換,使得應用軟件系統(tǒng)能夠根據(jù)應用的上下文定義應用相關的環(huán)境。 通常來說,應用軟件系統(tǒng)對環(huán)境的認知與真實環(huán)境會有所不同,很難直接使用環(huán)境定義的接口來訪問資源。為此,提供了一套環(huán)境元素的映射機制。映射機制提供的功能主要包括: (1)名稱映射??梢越o環(huán)境元素(包括資源、狀態(tài)、事件、規(guī)則)重命名。比如自適應軟件需要一個名稱為AirCondition的資源,而現(xiàn)在只有一個名稱為AC的資源,很明顯它們是同一個,使用一個名稱映射就能直接使用這個資源了。 (2)組合(或聚類)映射。可以將多個同類的環(huán)境元素組合成一個新的元素。比如在環(huán)境中有兩種與溫度相關的資源(如早晚溫度),可以通過組合映射,將兩個溫度映射到一個新的溫度資源中去(如平均氣溫)。 (3)串聯(lián)映射。可以將多個環(huán)境元素(包括更新方法和事件)串聯(lián)組成一個新的元素。經(jīng)過串聯(lián)的更新在執(zhí)行時會依次執(zhí)行被串聯(lián)的所有更新。經(jīng)過串聯(lián)的事件,當且僅當被串聯(lián)的子事件全部生效才能算是生效。 3.4服務層 服務層負責所有與外界直接交互相關的功能,包括對外提供了定義環(huán)境的接口、感知和效應環(huán)境的接口、事件通知機制等。 定義環(huán)境的服務接口是基于表示層的。應用軟件系統(tǒng)根據(jù)自身需求,通過調用環(huán)境的定義服務接口,實現(xiàn)應用系統(tǒng)對環(huán)境的表示與環(huán)境元素的自動映射。服務層的事件機制通過一個對外的消息隊列實現(xiàn)。應用軟件系統(tǒng)能從這個消息隊列中接收環(huán)境推送的通知。通知可以是環(huán)境中的運行異常報告,也可以是應用系統(tǒng)主動注冊的事件被激活的消息。 環(huán)境開始運行后,服務層開始為應用軟件系統(tǒng)提供感知和效應環(huán)境的接口: (1)Sensor( r ),讀取資源r的值; (2)Effect( r,v ),修改資源r的值為v; (3)Listen( e,tag ),監(jiān)聽一個事件e,如果事件激活,那么對應的tag就會被推送給應用系統(tǒng)。 本文實現(xiàn)了一個模擬智能房間(SmartRoom)的自適應軟件系統(tǒng)。該軟件系統(tǒng)的主要功能是調節(jié)房屋中的能耗(TotalPower)和房屋的舒適度(Comfort)之間的平衡。軟件系統(tǒng)一方面需要時刻獲取房屋內各種電器的功耗數(shù)據(jù),另一方面還需要房屋內各類傳感數(shù)據(jù)用來評估房屋的舒適度。軟件系統(tǒng)會時刻關注房屋(即環(huán)境)的舒適度和能耗,根據(jù)感知到的信息來調整房間的舒適度和能耗(即效應環(huán)境)。 4.1軟件與環(huán)境的交互 軟件系統(tǒng)的功能以及與環(huán)境交互的方式可以用如下偽代碼表示: 1. DefineRes(TotalPower,Comfort) 2. While True 3. comfort = ENV.Sensor(Comfort) 4. tp = ENV.Sensor(TotalPower) 5. if comfort < MIN_COMFORT 6. ENV.Effect(TotalPower,1.2*tp) 7. else 8. ENV.Effect(TotalPower,0.9*tp) 9. wait until next clock 在上述偽代碼中,第1行是一個方法,定義的兩個資源名稱分別為TotalPower和Comfort。前者表示環(huán)境的總功耗,數(shù)值類型;后者表示環(huán)境的舒適度,最大為1,數(shù)值越大,越舒適。DefineRes方法內部將會詳細描述如何使用環(huán)境系統(tǒng)中已有的資源以及環(huán)境提供的接口定義資源,4.2節(jié)將詳細描述。之后的幾行表示軟件系統(tǒng)會不斷從環(huán)境中感知兩個資源的值(第3、第4行),并且判斷如果環(huán)境的舒適度小于MIN_COMFORT(一個可調節(jié)的系統(tǒng)參數(shù)),就將環(huán)境中的總功耗調高20%(第6行),否則表示房屋的舒適度已經(jīng)達到了要求,那就將功耗調整為原來的90%。 4.2環(huán)境模型的定義 在環(huán)境系統(tǒng)(ENV)中,已經(jīng)存在很多資源,包括亮度(Brightness)、溫度(Temperature)、濕度(Humidity)、空調(AirCondition)、電燈(Light)、加濕器(Humidifier)等,前3個資源為數(shù)值型,表示房屋內部的狀態(tài),后3個資源也為數(shù)值型,表示屋內電器的功耗。同時還有它們之間的規(guī)則,包括: (1)每個時鐘,溫度趨近BEST_TEMPERATURE,空調的功耗越大,趨近速率越大。 (2)每個時鐘,濕度趨近BEST_HUMIDITY,加濕器功耗越大,趨近速率越大。 (3)每個時鐘,亮度趨近BEST_BRIGHTNESS,電燈功耗越大,趨近速率越大。 軟件系統(tǒng)需要定義其所需要的資源到環(huán)境中實際已經(jīng)存在的資源之間的映射。具體映射定義過程在DefineRes中,用如下偽代碼表示: 1. TotalPower = {AirCondition, Light, Humidifier}; 2. TotalPower AirCondition+Light+Humidifier; 3. TotalPower?{ 4. AirCondition = TotalPower/3; 5. Light = TotalPower/3; 6. Humidifier = TotalPower/3; 7. }; 8. ENV.Define(TotalPower); 9. Comfort = {Brightness,Temperature,Humidity}; 10. Comfort 11. 1.0-DP(Brightness, BEST_BRIGHTNESS) 12. - DP(Temperature, BEST_TEMPERATURE) 13. - DP(Humidity, BEST_HUMIDITY); 14. ENV.Define(Comfort); 其中第1~8行定義了TotalPower到AirCondition、Light、Humidifier的映射。第1行定義了TotalPower是這3個環(huán)境資源組合而成。第2行定義了Total-Power的感知映射,表明它的取值是底層3個資源取值的和。第3~7行定義了TotalPower的效應映射,即外界修改它的值后,對應到底層的3個資源的取值會變?yōu)樾碌腡otalPower值的1/3。第8行將定義完的TotalPower發(fā)送給環(huán)境系統(tǒng)。 第10~14行定義了Comfort資源。類似的,第9行定義了Comfort資源與原始資源的組合關系,第10~13行定義了感知映射,其中DP函數(shù)定義如下: 其含義是資源r的取值偏離目標值T的比例。Comfort的直觀含義就是如果溫度、濕度、亮度3個資源的取值都在預先設定的目標值上,那么舒適度為最大值1,否則減去每個資源偏移目標值的比例。第14行,類似第8行,將Comfort的定義傳送給環(huán)境系統(tǒng)。 4.3環(huán)境內部運行狀態(tài) 本節(jié)將基于這個實例,描述運行時軟件系統(tǒng)在與環(huán)境系統(tǒng)交互過程中,環(huán)境系統(tǒng)內部的運行狀態(tài)。下面分別以Sensor(Comfort)和Effect(TotalPower, 1.2*tp)為例進行說明。 4.3.1 Sensor(Comfort) 如圖3所示,Sensor(Comfort)的流程可以分為5步。盡管前面提到環(huán)境實際上是一個4層結構,但是為了簡化圖形描述,服務層和管理層在感知Comfort的過程中并沒有起到關鍵作用,只是將上層任務轉發(fā)給下層而已,因此在圖示中略去。具體的5步如下: (1)軟件系統(tǒng)向環(huán)境系統(tǒng)發(fā)送Sensor(Comfort)命令,環(huán)境的服務層接受命令,并把命令傳遞給表示層。 (2)表示層得到感知命令后,讀取Comfort資源的定義,自動生成如下代碼: 1. b = Sensor(Brightness) 2. h = Sensor(Humidity) 3. t = Sensor(Temperature) 4. Comfort = 1.0 5. - DP(b, BEST_BRIGHTNESS) 6.- DP(t, BEST_TEMPERATURE) 7.- DP(h, BEST_HUMIDITY); (3)執(zhí)行代碼的第1~3行,讀取組合資源當前時刻的值。調用管理層的接口,分別執(zhí)行Sensor(Brightness)、Sensor(Temperature)和Sensor(Humidity),用3.1/3.2/3.3虛線流程表示。 (4)表示層得到依賴的子資源的當前值后,執(zhí)行代碼的第4~7行,計算Comfort的值,并返回給服務層。 (5)服務層將Comfort的取值返回軟件系統(tǒng)。 Fig.3 Flow chart of Sensor(Comfort)圖3 Sensor(Comfort)流程圖 4.3.2 Effect(TotalPower,1.2*tp) 如圖4所示,Effect(TotalPower, 1.2*tp)可以分為6步。與圖3一樣,為了簡化圖形描述,略去了功能單一的服務層部分,不同的是,這里引入了管理層的詳細流程。因為當?shù)讓淤Y源被修改后,會導致環(huán)境的狀態(tài)發(fā)生變化,有些更新操作就有可能被動地觸發(fā)。具體過程如下: (1)軟件系統(tǒng)向環(huán)境系統(tǒng)發(fā)送Effect命令,環(huán)境的服務層接收到命令后,傳遞給表示層。 (2)表示層得到效應命令后,讀取TotalPower資源的定義(見4.2節(jié)偽代碼中的第1~7行),自動生成如下代碼: 1. Effect(Humidifier, 0.4*tp) 2. Effect(Light, 0.4*tp) 3. Effect(AirCondition, 0.4*tp) (3)根據(jù)之前生成的代碼,將Effect(Humidifier, 0.4*tp)、Effect(Light, 0.4*tp)和Effect(AirCondition, 0.4*tp)發(fā)送給管理層中的訪問控制器(3.1~3.3)。 (4)管理層的訪問控制器執(zhí)行相應的命令(4.1~ 4.3),修改這3個資源的取值為0.4*tp。 (5)管理層檢查當前的系統(tǒng)狀態(tài),找出生效的規(guī)則: ①根據(jù)加濕器功率,修改濕度值。 ②根據(jù)空調功率,修改溫度值。 ③根據(jù)電燈功率,修改亮度值。 (6)執(zhí)行生效的規(guī)則,修改Brightness、Humidity、Temperature的值。 Fig.4 Flow chart of Effect(TotalPower,1.2*tp)圖4 Effect(TotalPower, 1.2*tp)流程圖 4.4仿真實驗 按照如上實例所述進行仿真實驗,圖5是系統(tǒng)前400個時刻內TotalPower和Comfort的變化關系,圖6是相應的AirCondition和Temperature這兩個環(huán)境內資源的變化圖(此次實驗中,其他兩對資源變化規(guī)律與之相同)。圖中的值是每個時鐘開始時的值。 Fig.5 TotalPower and Comfort vs clock圖5 總功率和舒適度隨時鐘變化圖 Fig.6 AirCondition and Temperature vs clock圖6 空調和溫度隨時鐘變化圖 (1)每100個時鐘會對Temperature、Humidity、Brightness這3個資源的取值進行隨機的擾動,其中Temperature的取值展示在圖6中,與之對應的Comfort的變化在圖5中。 (2)環(huán)境內部資源更新規(guī)則是電器功率越大,相應的感應數(shù)值就越快到達目標值。而且3組規(guī)則的變化方式相同,這里只列出了AirCondition和Temperature隨時鐘的變化圖(見圖6)。 (3)因為TotalPower的變化方式都是按比例變化,所以在圖中使用相應的對數(shù)值作為變化的參考。 (4)AirCondition、Humidifier、Light的取值都是TotalPower的1/3,因此并沒有用專門的對比變化圖表示。而Temperature、Humidity、Brightness這3個資源與Comfort的關系也是前3者越接近目標值,Comfort越接近1,同樣沒有使用單獨的圖進行描述。 從圖5可以看出對于軟件系統(tǒng),只是簡單地調整了TotalPower的取值,就實現(xiàn)了對Comfort的動態(tài)調整。而從環(huán)境系統(tǒng)的內部來看,整體的數(shù)據(jù)變化流程則是TotalPower→AirCondition、Humidifier、Light→Temperature、Humidity、Brightness→Comfort,要完成這個過程,對于外部的軟件系統(tǒng)來說只需要定義好TotalPower和Comfort到環(huán)境中已有資源的映射關系即可,至于映射關系的實現(xiàn)以及資源內部的更新規(guī)則則完全不用關心,全部交給環(huán)境系統(tǒng)就可以了。這一點也是將自適應軟件系統(tǒng)的環(huán)境進行單獨建模的最大好處。一方面能實現(xiàn)環(huán)境模型的復用,另一方面又極大地簡化了自適應軟件使用環(huán)境的方法。 最近,對于環(huán)境在多agent系統(tǒng)中扮演的角色,人們的認識有了根本性的改變。最近的研究提出在多agent系統(tǒng)中,應當將環(huán)境作為一級設計抽象,并創(chuàng)造性地使用環(huán)境[5]。 文獻[6]介紹了多agent系統(tǒng)研究的現(xiàn)狀,給出了環(huán)境研究方面的概述,并闡述了環(huán)境作為一級設計抽象在多agent系統(tǒng)中的地位,為本文對于環(huán)境的建模提供了參考。文獻[7]將環(huán)境作為一級設計抽象整合進了Agent-Group-Role(AGR)模型,能夠對智能體提供3種不同層次的支持。本文為進一步方便多agent系統(tǒng)對環(huán)境的訪問,將環(huán)境實現(xiàn)為服務層、表示層、管理層和資源層的4層結構,通過加入表示層,提供了一種應用軟件所認知的環(huán)境元素到真實環(huán)境元素之間的映射機制。文獻[8]主張用新的形式化方法來明確表示環(huán)境中的間接互動,并提出一套消息傳遞機制。該文主要關注的是智能體之間的消息傳遞以及協(xié)作,而本文更加關注自適應系統(tǒng)環(huán)境與agent之間的消息傳遞。文獻[9]闡述了環(huán)境在多agent系統(tǒng)中的管理角色,由環(huán)境來驅動agent的行為。本文更進一步,賦予了環(huán)境自主變化的能力,以便于研究不同環(huán)境配置下,多agent系統(tǒng)的行為。上述工作雖然意識到將環(huán)境作為一級設計抽象的重要性,但卻忽視了環(huán)境的動態(tài)特性,或者對其提供的支持較少,使其難以自演化和維護。 目前針對自適應軟件系統(tǒng)駐留環(huán)境的研究,大多側重于對環(huán)境的表示和感知,特別是呂建[10-13]、毛新軍[2,14]等人的團隊都取得了不錯的進展,但是對于環(huán)境的自主變化以及復用的關注還不夠。 agent和環(huán)境職責的不同可以有助于實現(xiàn)關注點分離。關注點分離技術一方面使得代碼更加清晰、便于理解,另一方面促進了代碼的復用,從而有利于軟件的開發(fā)和維護[15]。文獻[16]闡述了環(huán)境作為一級設計抽象在多agent系統(tǒng)中的職能。 在多agent系統(tǒng)環(huán)境領域,另一個重要的研究主題是環(huán)境工程。目前面向agent的方法學很少提供這方面的支持。SODA[17]和GAIA[4]雖然涉及到了環(huán)境,但是對于環(huán)境的支持也只限于資源的表示和簡單訪問控制等。 本文將自適應軟件的環(huán)境作為一級實體單獨建模,提出了一種環(huán)境的抽象模型及其層次化的實現(xiàn)模型。本文主要的貢獻有以下幾點:將環(huán)境作為一級實體獨立建模,并提供環(huán)境自身維護和演化的機制,實現(xiàn)了一種可復用的環(huán)境。實現(xiàn)了一種層次結構的環(huán)境,尤其是在環(huán)境的實現(xiàn)中,增加了一個表示層,使得軟件的開發(fā)與實現(xiàn)和環(huán)境的開發(fā)與實現(xiàn)可以獨立進行。軟件開發(fā)人員只需從應用軟件系統(tǒng)的角度來表示環(huán)境,并感知和效應環(huán)境,環(huán)境則負責實現(xiàn)不同抽象程度的資源之間的自動映射。 在未來的研究工作中,將在目前環(huán)境模型的基礎上,進一步細化相關概念,完善環(huán)境元素的映射機制,使得本文模型能夠更加有效地支持環(huán)境和軟件的復用。 References: [1] Laddaga R. Guest editor?s introduction: creating robust software through self-adaptation[J]. IEEE Intelligent Systems, 1999, 14(3): 26-29. [2] Dong Menggao, Mao Xinjun, Guo Yi, et al. Representing and perceiving environment of complex self-adaptive multiagent systems[J]. Journal of Computer Research and Development, 2012, 49(2): 402-412. [3] Cicirelli F, Giordano A, Nigro L. Efficient environment management for distributed simulation of large-scale situated multi-agent systems[J]. Concurrency and Computation: Practice and Experience, 2015, 27(3): 610-632. [4] Zambonelli F, Jennings N R, Wooldridge M. Developing multiagent systems: the Gaia methodology[J]. ACM Transactions on Software Engineering and Methodology, 2003, 12(3): 317-370. [5] Weyns D, Helleboogh A, Schumacher M, et al. Research on environments in multiagent systems: reflection on the stateof-the-art[R]. 2006. [6] Weyns D, Parunak H V D, Michel F, et al. Environments for multiagent systems state-of-the-art and research challenges[C]//LNCS 3374: Proceedings of the 1st International Workshop on Environments for Multi-Agent Systems, New York, USA, Jul 19, 2004. Berlin, Heidelberg: Springer, 2005: 1-47. [7] Ferber J, Michel F, Báez J. AGRE: integrating environments with organizations[C]//LNCS 3374: Proceedings of the 1st International Workshop on Environments for Multi-Agent Systems, New York, USA, Jul 19, 2004. Berlin, Heidelberg: Springer, 2005: 48-56. [8] Keil D, Goldin D. Indirect interaction in environments for multi-agent systems[C]//LNCS 3830: Proceedings of the 2nd International Workshop on Environments for Multi-Agent Systems II, Utrecht, The Netherlands, Jul 25, 2005. Berlin, Heidelberg: Springer, 2006: 68-87. [9] Schumacher M, Ossowski S. The governing environment [C]//LNCS 3830: Proceedings of the 2nd International Workshop on Environments for Multi-Agent Systems II, Utrecht, The Netherlands, Jul 25, 2005. Berlin, Heidelberg: Springer, 2006: 88-104. [10] Lv Jian, Ma Xiaoxing, Tao Xianping, et al. Explicit environmental constructs for Internetware[J]. Scientia Sinica: Informationis, 2013, 43(1): 1-23. [11] Huang Yu, Yu Jianping, Ma Xiaoxing. Monitoring properties of open environments[J]. Journal of Software, 2011, 22 (5): 865-876. [12] Ma Jun, Tao Xianping, Zhu Huaihong, et al. Enhancing multi-agent system with context-awareness[J]. Journal of Software, 2012, 23(11): 2905-2922. [13] Ma Jun, Cao Jiannong, Ma Chao, et al. Modeling and manipulating context in pervasive computing based on set theory[J]. Journal of Software, 2011, 22(S2): 105-119. [14] Cao Jiang, Mao Xinjun, Wang Huaimin, et al. Model-driven development methodology for complex self-adaptive multiagent systems[J]. Computer Science, 2012, 39(2): 126-131. [15] McKinley P K, Sadjadi S M, Kasten E P, et al. Composing adaptive software[J]. IEEE Computer, 2004, 37(7): 56-64. [16] Weyns D, Schumacher M, Ricci A, et al. Environments in multiagent systems[J]. The Knowledge Engineering Review, 2005, 20(2): 127-141. [17] Omicini A. SODA: societies and infrastructures in the analysis and design of agent-based systems[C]//LNCS 1957: Proceedings of the 1st International Workshop on Agent-Oriented Software Engineering, Limerick, Ireland, Jun 10, 2000. Berlin, Heidelberg: Springer, 2001: 185-193. 附中文參考文獻: [2]董孟高,毛新軍,郭毅,等.復雜自適應多Agent系統(tǒng)的環(huán)境表示及感知[J].計算機研究與發(fā)展, 2012, 49(2): 402-412. [10]呂建,馬曉星,陶先平,等.面向網(wǎng)構軟件的環(huán)境顯式化技術[J].中國科學:信息科學, 2013, 43(1): 1-23. [11]黃宇,余建平,馬曉星,等.開放環(huán)境特性感知技術[J].軟件學報, 2011, 22(5): 865-876. [12]馬駿,陶先平,朱懷宏,等.多Agent系統(tǒng)的上下文感知增強[J].軟件學報, 2012, 23(11): 2905-2922. [13]馬駿,曹建農,馬超,等.普適計算中基于集合的上下文建模和操作[J].軟件學報, 2011, 22(S2): 105-119. [14]曹江,毛新軍,王懷民,等.復雜自適應多Agent系統(tǒng)的模型驅動開發(fā)方法[J].計算機科學, 2012, 39(2): 126-131. JIANG Haiting was born in 1991. He is an M.S. candidate at Institute of Software, School of Electronics Engineering and Computer Science, Peking University. His research interest is adaptive software.江海挺(1991—),男,浙江臺州人,北京大學信息科學技術學院軟件研究所碩士研究生,主要研究領域為自適應軟件。 LIU Yang was born in 1991. He is a Ph.D. candidate at Institute of Software, School of Electronics Engineering and Computer Science, Peking University. His research interest is adaptive software.劉洋(1991—),男,江蘇泰州人,北京大學信息科學技術學院軟件研究所博士研究生,主要研究領域為自適應軟件。 LIN Huashan was born in 1991. He is an M.S. candidate at Institute of Software, School of Electronics Engineering and Computer Science, Peking University. His research interest is adaptive software.林華山(1991—),男,福建泉州人,北京大學信息科學技術學院軟件研究所碩士研究生,主要研究領域為自適應軟件。 WANG Maoguang was born in 1974. He received the Ph.D. degree from Institute of Computing Technology, Chinese Academy of Sciences in 2007. Now he is an associate professor at Central University of Finance and Economics. His research interests include software engineering and artificial intelligence, etc.王茂光(1974—),男,山東招遠人,2007年于中國科學院計算技術研究所獲得博士學位,現(xiàn)為中央財經(jīng)大學副教授,主要研究領域為軟件工程,人工智能等。發(fā)表學術論文50多篇,承擔過中國博士后基金、國家科技支撐計劃等多項課題。 JIAO Wenpin was born in 1969. He received the Ph.D. degree from Institute of Software, Chinese Academy of Sciences in 2000. Now he is a professor and Ph.D. supervisor at Peking University. His research interests include software engineering, multi-agent systems, adaptive software and formal methods, etc.焦文品(1969—)男,湖北天門人,2000年于中國科學院軟件研究所獲得博士學位,現(xiàn)為北京大學教授、博士生導師,主要研究領域為軟件工程,多主體系統(tǒng),自適應軟件,軟件形式化方法等。發(fā)表學術論文70多篇,主持過多項國家自然科學基金、863計劃等項目。 Environment Model of Self-Adaptive Software and Its Implementation? JIANG Haiting1,2, LIU Yang1,2, LIN Huashan1,2, WANG Maoguang3, JIAO Wenpin1,2+ JIANG Haiting, LIU Yang, LIN Huashan, et al. Environment model of self-adaptive software and its implementation. Journal of Frontiers of Computer Science and Technology, 2016, 10(3):301-310. Abstract:With the increment of complexity and uncertainty in the software runtime environment, software requires the ability to perceive and react to the changes in the environment in time. Since the environment is open, dynamic, uncontrollable and unpredictable, for facilitating software?s automatic perception and adaptation to different environments, environments are defined as first-class entities, which are self-maintainable and self-evolvable, and modelled independently. For simplifying the interaction between software and runtime environments, environments are implemented in a hierarchical structure and provide an automatic mapping and configuration mechanism for software systems to sense and effect environmental resources from the perspectives of applications. The approach presented in this paper improves the reusability of environments and software, and reduces the burden on software developers. doi:10.3778/j.issn.1673-9418.1506070 文獻標志碼:A 中圖分類號:TP3013 環(huán)境的實現(xiàn)
4 實例研究
5 相關工作
6 結束語
1. Institute of Software, School of Electronics Engineering and Computer Science, Peking University, Beijing 100871, China
2. Key Lab of High Confidence of Software Technologies (Peking University), Ministry of Education, Beijing 100871, China
3. School of Information, Central University of Finance and Economics, Beijing 100081, China
+ Corresponding author: E-mail: jwp@sei.pku.edu.cn