江海挺,劉 洋,林華山,王茂光,焦文品+
1.北京大學(xué)信息科學(xué)技術(shù)學(xué)院軟件研究所,北京1008712.北京大學(xué)高可信軟件技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,北京1008713.中央財(cái)經(jīng)大學(xué)信息學(xué)院,北京100081
ISSN 1673-9418 CODEN JKYTA8
Journal of Frontiers of Computer Science and Technology 1673-9418/2016/10(03)-0301-10
?
自適應(yīng)軟件的環(huán)境模型及實(shí)現(xiàn)*
江海挺1,2,劉洋1,2,林華山1,2,王茂光3,焦文品1,2+
1.北京大學(xué)信息科學(xué)技術(shù)學(xué)院軟件研究所,北京100871
2.北京大學(xué)高可信軟件技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,北京100871
3.中央財(cái)經(jīng)大學(xué)信息學(xué)院,北京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 (國家自然科學(xué)基金); the National Basic Research Program of China under Grant No. 2015CB352200 (國家重點(diǎn)基礎(chǔ)研究發(fā)展計(jì)劃(973計(jì)劃)).
Received 2015-06,Accepted 2015-09.
CNKI網(wǎng)絡(luò)優(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
摘要:隨著軟件及其運(yùn)行環(huán)境的復(fù)雜性和不確定性的上升,軟件要求能夠及時(shí)地感知環(huán)境的變化,并做出相應(yīng)的反應(yīng)。由于環(huán)境具有開放、動態(tài)、不可控、不可預(yù)測等特點(diǎn),為了實(shí)現(xiàn)軟件對不同環(huán)境的自動感知和適應(yīng),環(huán)境被獨(dú)立建模,并定義為能夠自維護(hù)和自演化的一級實(shí)體。為了簡化軟件與環(huán)境之間的交互,環(huán)境被實(shí)現(xiàn)為一個(gè)層次結(jié)構(gòu),為軟件提供面向應(yīng)用的抽象資源到環(huán)境資源之間的自動映射和配置機(jī)制,從而提高了環(huán)境和軟件的復(fù)用性,同時(shí)也減輕了軟件開發(fā)人員的負(fù)擔(dān)。
關(guān)鍵詞:自適應(yīng);軟件環(huán)境;軟件建模;軟件復(fù)用
隨著軟件運(yùn)行環(huán)境的復(fù)雜性和不確定性的上升,傳統(tǒng)的軟件已經(jīng)不能很好地適應(yīng)環(huán)境的變化。自適應(yīng)軟件(self-adaptive software)會動態(tài)評估自身的行為,當(dāng)評估顯示其自身的行為并非接近其傾向完成的目標(biāo),或有可能提供更好的功能或性能時(shí),軟件會改變自身的行為[1]。
環(huán)境是自適應(yīng)系統(tǒng)中的重要組成部分,環(huán)境的顯式表示和感知是實(shí)現(xiàn)復(fù)雜自適應(yīng)系統(tǒng)的前提[2]。環(huán)境從本質(zhì)上來說應(yīng)該是獨(dú)立于軟件的,它會自主、獨(dú)立地變化,并非都由軟件的行為操控。一個(gè)環(huán)境應(yīng)當(dāng)能夠被復(fù)用,可以應(yīng)用于多個(gè)軟件系統(tǒng);相對的,軟件也有獨(dú)立性,并不依附于環(huán)境而存在,可以應(yīng)用于不同的環(huán)境中。因此,將環(huán)境模型建立在自適應(yīng)軟件內(nèi)部并不合理,這種解決手段會很大程度上限制軟件系統(tǒng)及環(huán)境的復(fù)用,使得軟件系統(tǒng)只能適應(yīng)單一的特定環(huán)境,軟件系統(tǒng)內(nèi)部的環(huán)境模型也難以被其他軟件系統(tǒng)使用。而環(huán)境所具有的開放、動態(tài)、不可控、不可預(yù)測等特點(diǎn)[3](如Internet、戰(zhàn)場環(huán)境、社會環(huán)境),導(dǎo)致即使在自適應(yīng)軟件內(nèi)部建立了環(huán)境模型,也難以做到全面和靈活,故將環(huán)境獨(dú)立建模是必要的。但是,怎樣對環(huán)境進(jìn)行建模,以及如何更好地支持環(huán)境被使用甚至復(fù)用,仍然是需要進(jìn)一步研究的問題。
為解決上述問題,本文對環(huán)境進(jìn)行了獨(dú)立建模,提出了一種自適應(yīng)軟件的環(huán)境模型,該模型可以支持環(huán)境的動態(tài)變化,并為開發(fā)者和使用者提供簡便的接口。本文主要有以下幾點(diǎn)貢獻(xiàn):第一,提供了環(huán)境自身維護(hù)和演化的機(jī)制,使其真正成為一級實(shí)體,并且可以被復(fù)用。第二,將軟件對環(huán)境的表示與環(huán)境的具體實(shí)現(xiàn)分開,從而減輕了軟件開發(fā)人員的負(fù)擔(dān)。第三,為軟件對環(huán)境的感知和效應(yīng)提供了簡潔的接口。
本文組織結(jié)構(gòu)如下:第2章介紹了環(huán)境的抽象模型,給出了環(huán)境的組成成分以及形式化表示;第3章闡述了一種層次型的環(huán)境實(shí)現(xiàn)方案,對環(huán)境的4個(gè)層次分別進(jìn)行了介紹;第4章描述了一個(gè)簡單的應(yīng)用實(shí)例(SmartRoom),用來展示應(yīng)用系統(tǒng)是如何與環(huán)境進(jìn)行交互,并感知和效應(yīng)環(huán)境的;第5章描述了相關(guān)工作;第6章為結(jié)束語,總結(jié)全文并對未來工作進(jìn)行了展望。
自適應(yīng)軟件的環(huán)境包含了軟件所需的各種資源,同時(shí)也是軟件訪問或操縱資源的媒介[4]。在定義環(huán)境時(shí),除了指出環(huán)境中包含哪些資源外,還需要描述環(huán)境是如何變化的。因此,將環(huán)境(ENV)定義成時(shí)鐘(C)和資源(R)的組合。時(shí)鐘是環(huán)境的一個(gè)基礎(chǔ)屬性,用于維持環(huán)境運(yùn)行時(shí)序。資源是環(huán)境的基礎(chǔ)成分,用于表示環(huán)境中的某個(gè)變量,資源都有名稱和類型。時(shí)鐘和資源定義了環(huán)境的各種特征,如狀態(tài)(S)、事件(E)、更新(U)和規(guī)則(L)。環(huán)境時(shí)鐘及當(dāng)前時(shí)鐘下資源的取值構(gòu)成了環(huán)境的一個(gè)狀態(tài)。環(huán)境從一個(gè)狀態(tài)遷移到另外一個(gè)狀態(tài)表明環(huán)境中發(fā)生了一個(gè)事件。更新是時(shí)鐘和資源的函數(shù),用來規(guī)定如何根據(jù)時(shí)鐘的變化改變資源的取值,本質(zhì)上規(guī)定了環(huán)境的自變化方法。規(guī)則表示在一定的環(huán)境狀態(tài)下,當(dāng)一個(gè)事件發(fā)生后,如何調(diào)用更新函數(shù)來實(shí)現(xiàn)環(huán)境的自變化。本文將時(shí)鐘、資源、狀態(tài)、事件、更新和規(guī)則統(tǒng)稱為環(huán)境元素。環(huán)境由這些環(huán)境元素組成,可形式化表示為:
ENV=(C, R, S, E, U, L)
在進(jìn)行完整的形式化表示之前,首先聲明本文系統(tǒng)中使用的基本元素集合VALUE,用來表示元素的取值(即定義域)。VALUE可以分為NUMBER、STRING、DICT 3個(gè)子集合。其中NUMBER是所有數(shù)值的集合,STRING是所有字符串的集合,DICT是字典(或<鍵,值>)的集合,可采用遞歸定義:DICT= 2(NUMBER∪STRING)×(NUMBER∪STRING∪DICT)。在這些集合的基礎(chǔ)上,記TYPE={NUMBER, STRING, DICT},為元素值的類型。環(huán)境元素可以按照如下方式定義:
(1)時(shí)鐘C={c|c∈NUMBER,c≥0},時(shí)鐘是數(shù)值型的變量,隨著環(huán)境的運(yù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中包含了所有可能的事件。然而在一個(gè)特定的應(yīng)用場景中,人們往往只會關(guān)心其中的一部分。因此,在應(yīng)用環(huán)境時(shí),可以定義一個(gè)環(huán)境實(shí)例,實(shí)例中的每個(gè)環(huán)境元素都是ENV中對應(yīng)環(huán)境元素的一個(gè)子集,表示環(huán)境中應(yīng)用實(shí)例所關(guān)心的那部分。以一個(gè)房間作為應(yīng)用場景為例,可以定義如下環(huán)境實(shí)例ENVa=(Ca, Ra,Sa,Ea,Ua,La)。
(1)時(shí)鐘Ca={c|c∈自然數(shù)},表示ENVa根據(jù)實(shí)際應(yīng)用的需求只關(guān)心整點(diǎn)時(shí)刻資源的取值。
(2)資源Ra={rt=<“temperature”, NUMBER>, rac=<“AC”,STRING>},rt表示房間中的溫度值,rac表示房間中空調(diào)的狀態(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)境一方面負(fù)責(zé)維護(hù)資源的狀態(tài)及其變化,另一方面作為媒介為自適應(yīng)軟件提供感知和效應(yīng)環(huán)境的機(jī)制(即訪問資源的接口)。但自適應(yīng)軟件對資源的認(rèn)知可能與環(huán)境本身所定義的不一致,例如對資源的表示方式和粒度不同,對資源之間關(guān)系的定義不同等原因,導(dǎo)致軟件無法直接訪問環(huán)境資源。另外,環(huán)境對資源的定義一般都比較細(xì)節(jié),直接調(diào)用環(huán)境定義的資源訪問接口會使自適應(yīng)軟件的開發(fā)變得非常煩瑣。因此,為了簡化環(huán)境和自適應(yīng)軟件之間的交互,必須在環(huán)境的實(shí)現(xiàn)中引入一些映射和配置機(jī)制。 為了達(dá)到這些目的,本文參照網(wǎng)絡(luò)協(xié)議的OSI模型,將環(huán)境實(shí)現(xiàn)為一種4層的層次結(jié)構(gòu),由底向上分別為數(shù)據(jù)層、管理層、表示層和服務(wù)層。環(huán)境的實(shí)現(xiàn)結(jié)構(gòu)如圖1所示。其中,資源層用于存儲環(huán)境中的時(shí)鐘(C)和資源(R)以及相應(yīng)的取值(S的一個(gè)元素)。管理層負(fù)責(zé)狀態(tài)(S)、事件(E)、更新(U)的存儲管理,以及規(guī)則(L)的執(zhí)行。管理層除了對數(shù)據(jù)層的內(nèi)容進(jìn)行管理外,還提供一些輔助機(jī)制,以幫助自適應(yīng)軟件更好地獲取并理解環(huán)境信息及環(huán)境變化。表示層主要用于面向應(yīng)用的數(shù)據(jù)(即自適應(yīng)軟件系統(tǒng)所認(rèn)知的資源)與環(huán)境資源間的轉(zhuǎn)換。表示層向自適應(yīng)軟件提供環(huán)境的配置和資源映射的接口以及環(huán)境定義的動態(tài)修改功能。服務(wù)層是整個(gè)環(huán)境與外界(包括自適應(yīng)軟件和開發(fā)者)進(jìn)行交互的中樞,自適應(yīng)軟件通過調(diào)用服務(wù)層提供的接口感知和效應(yīng)環(huán)境。 Fig.1 Structural model of environment圖1 環(huán)境的結(jié)構(gòu)模型 3.1資源層 資源層主要承擔(dān)數(shù)據(jù)倉庫的功能,并對上層提供相應(yīng)的增、刪、查、改資源的接口。環(huán)境系統(tǒng)中,資源在這一層只有狀態(tài),沒有動態(tài)的特征,時(shí)鐘以及所有資源的取值構(gòu)成了一個(gè)狀態(tài)。狀態(tài)之間的切換需要上層(管理層)去操縱。另外,這一層還會存儲數(shù)據(jù)的所有歷史記錄,并將數(shù)據(jù)持久化。應(yīng)用軟件系統(tǒng)可以研究環(huán)境中資源變化的歷史記錄,具有很高的實(shí)用價(jià)值。 3.2管理層 這一層主要負(fù)責(zé)管理環(huán)境中的動態(tài)信息,包括環(huán)境的狀態(tài)、事件的觸發(fā),并執(zhí)行規(guī)則來維護(hù)資源層的資源更新等。利用資源層和管理層就能定義一個(gè)完整的環(huán)境。管理層使用資源層提供的資源操作接口,對上層提供了定義和使用環(huán)境的完整接口。這些接口是最原始最基本的接口,主要包含對R、S、E、U、L這些集合的增刪查改,達(dá)到定義和使用一個(gè)完整環(huán)境的基本功能。 實(shí)現(xiàn)上,管理層主要包含訪問控制器、狀態(tài)校驗(yàn)器、事件監(jiān)聽器、規(guī)則執(zhí)行器4大功能塊。管理層的架構(gòu)和運(yùn)行流程如圖2所示(為了避免圖過于復(fù)雜,這里只保留了管理層及其上下文相關(guān)的表示層和資源層)。訪問控制器是管理層內(nèi)和上層訪問資源層的入口。上層對環(huán)境定義的修改操作都會被映射到相應(yīng)的功能塊,即狀態(tài)相關(guān)的操作都會被狀態(tài)校驗(yàn)器接收處理,對事件的所有操作都會交給事件監(jiān)聽器進(jìn)行處理,更新和規(guī)則的相關(guān)操作都會由規(guī)則執(zhí)行器處理。規(guī)則的執(zhí)行是管理層最重要的功能,其完整的執(zhí)行流程需要經(jīng)過全部4個(gè)功能塊。首先狀態(tài)校驗(yàn)器使用訪問管理器獲取資源取值,檢查相關(guān)狀態(tài)是否生效,并且標(biāo)記所有生效狀態(tài)。事件監(jiān)聽器查看狀態(tài)校驗(yàn)器中標(biāo)記生效的狀態(tài),判斷其中存儲的事件是否被觸發(fā),并標(biāo)記已經(jīng)被觸發(fā)的事件。規(guī)則執(zhí)行器則根據(jù)規(guī)則的定義,利用狀態(tài)校驗(yàn)器和事件監(jiān)聽器判斷需要執(zhí)行哪些更新,并將更新對應(yīng)的資源修改命令發(fā)送給訪問控制器,由訪問控制器最終執(zhí)行對資源的修改。 Fig.2 Architecture of manager layer and its runtime processes圖2 管理層架構(gòu)及運(yùn)行流程 3.3表示層 表示層的作用主要是在資源層和管理層提供的原始環(huán)境定義方法之上,對環(huán)境的元素抽象出更高層次的表示方法。表示層提供了一種應(yīng)用軟件所認(rèn)知的環(huán)境元素到真實(shí)環(huán)境元素之間的映射方法,并實(shí)現(xiàn)了應(yīng)用軟件對資源的表示到環(huán)境中實(shí)際資源的表示的自動轉(zhuǎn)換,使得應(yīng)用軟件系統(tǒng)能夠根據(jù)應(yīng)用的上下文定義應(yīng)用相關(guān)的環(huán)境。 通常來說,應(yīng)用軟件系統(tǒng)對環(huán)境的認(rèn)知與真實(shí)環(huán)境會有所不同,很難直接使用環(huán)境定義的接口來訪問資源。為此,提供了一套環(huán)境元素的映射機(jī)制。映射機(jī)制提供的功能主要包括: (1)名稱映射??梢越o環(huán)境元素(包括資源、狀態(tài)、事件、規(guī)則)重命名。比如自適應(yīng)軟件需要一個(gè)名稱為AirCondition的資源,而現(xiàn)在只有一個(gè)名稱為AC的資源,很明顯它們是同一個(gè),使用一個(gè)名稱映射就能直接使用這個(gè)資源了。 (2)組合(或聚類)映射??梢詫⒍鄠€(gè)同類的環(huán)境元素組合成一個(gè)新的元素。比如在環(huán)境中有兩種與溫度相關(guān)的資源(如早晚溫度),可以通過組合映射,將兩個(gè)溫度映射到一個(gè)新的溫度資源中去(如平均氣溫)。 (3)串聯(lián)映射。可以將多個(gè)環(huán)境元素(包括更新方法和事件)串聯(lián)組成一個(gè)新的元素。經(jīng)過串聯(lián)的更新在執(zhí)行時(shí)會依次執(zhí)行被串聯(lián)的所有更新。經(jīng)過串聯(lián)的事件,當(dāng)且僅當(dāng)被串聯(lián)的子事件全部生效才能算是生效。 3.4服務(wù)層 服務(wù)層負(fù)責(zé)所有與外界直接交互相關(guān)的功能,包括對外提供了定義環(huán)境的接口、感知和效應(yīng)環(huán)境的接口、事件通知機(jī)制等。 定義環(huán)境的服務(wù)接口是基于表示層的。應(yīng)用軟件系統(tǒng)根據(jù)自身需求,通過調(diào)用環(huán)境的定義服務(wù)接口,實(shí)現(xiàn)應(yīng)用系統(tǒng)對環(huán)境的表示與環(huán)境元素的自動映射。服務(wù)層的事件機(jī)制通過一個(gè)對外的消息隊(duì)列實(shí)現(xiàn)。應(yīng)用軟件系統(tǒng)能從這個(gè)消息隊(duì)列中接收環(huán)境推送的通知。通知可以是環(huán)境中的運(yùn)行異常報(bào)告,也可以是應(yīng)用系統(tǒng)主動注冊的事件被激活的消息。 環(huán)境開始運(yùn)行后,服務(wù)層開始為應(yīng)用軟件系統(tǒng)提供感知和效應(yīng)環(huán)境的接口: (1)Sensor( r ),讀取資源r的值; (2)Effect( r,v ),修改資源r的值為v; (3)Listen( e,tag ),監(jiān)聽一個(gè)事件e,如果事件激活,那么對應(yīng)的tag就會被推送給應(yīng)用系統(tǒng)。 本文實(shí)現(xiàn)了一個(gè)模擬智能房間(SmartRoom)的自適應(yīng)軟件系統(tǒng)。該軟件系統(tǒng)的主要功能是調(diào)節(jié)房屋中的能耗(TotalPower)和房屋的舒適度(Comfort)之間的平衡。軟件系統(tǒng)一方面需要時(shí)刻獲取房屋內(nèi)各種電器的功耗數(shù)據(jù),另一方面還需要房屋內(nèi)各類傳感數(shù)據(jù)用來評估房屋的舒適度。軟件系統(tǒng)會時(shí)刻關(guān)注房屋(即環(huán)境)的舒適度和能耗,根據(jù)感知到的信息來調(diào)整房間的舒適度和能耗(即效應(yīng)環(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行是一個(gè)方法,定義的兩個(gè)資源名稱分別為TotalPower和Comfort。前者表示環(huán)境的總功耗,數(shù)值類型;后者表示環(huán)境的舒適度,最大為1,數(shù)值越大,越舒適。DefineRes方法內(nèi)部將會詳細(xì)描述如何使用環(huán)境系統(tǒng)中已有的資源以及環(huán)境提供的接口定義資源,4.2節(jié)將詳細(xì)描述。之后的幾行表示軟件系統(tǒng)會不斷從環(huán)境中感知兩個(gè)資源的值(第3、第4行),并且判斷如果環(huán)境的舒適度小于MIN_COMFORT(一個(gè)可調(diào)節(jié)的系統(tǒng)參數(shù)),就將環(huán)境中的總功耗調(diào)高20%(第6行),否則表示房屋的舒適度已經(jīng)達(dá)到了要求,那就將功耗調(diào)整為原來的90%。 4.2環(huán)境模型的定義 在環(huán)境系統(tǒng)(ENV)中,已經(jīng)存在很多資源,包括亮度(Brightness)、溫度(Temperature)、濕度(Humidity)、空調(diào)(AirCondition)、電燈(Light)、加濕器(Humidifier)等,前3個(gè)資源為數(shù)值型,表示房屋內(nèi)部的狀態(tài),后3個(gè)資源也為數(shù)值型,表示屋內(nèi)電器的功耗。同時(shí)還有它們之間的規(guī)則,包括: (1)每個(gè)時(shí)鐘,溫度趨近BEST_TEMPERATURE,空調(diào)的功耗越大,趨近速率越大。 (2)每個(gè)時(shí)鐘,濕度趨近BEST_HUMIDITY,加濕器功耗越大,趨近速率越大。 (3)每個(gè)時(shí)鐘,亮度趨近BEST_BRIGHTNESS,電燈功耗越大,趨近速率越大。 軟件系統(tǒng)需要定義其所需要的資源到環(huán)境中實(shí)際已經(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個(gè)環(huán)境資源組合而成。第2行定義了Total-Power的感知映射,表明它的取值是底層3個(gè)資源取值的和。第3~7行定義了TotalPower的效應(yīng)映射,即外界修改它的值后,對應(yīng)到底層的3個(gè)資源的取值會變?yōu)樾碌腡otalPower值的1/3。第8行將定義完的TotalPower發(fā)送給環(huán)境系統(tǒng)。 第10~14行定義了Comfort資源。類似的,第9行定義了Comfort資源與原始資源的組合關(guān)系,第10~13行定義了感知映射,其中DP函數(shù)定義如下: 其含義是資源r的取值偏離目標(biāo)值T的比例。Comfort的直觀含義就是如果溫度、濕度、亮度3個(gè)資源的取值都在預(yù)先設(shè)定的目標(biāo)值上,那么舒適度為最大值1,否則減去每個(gè)資源偏移目標(biāo)值的比例。第14行,類似第8行,將Comfort的定義傳送給環(huán)境系統(tǒng)。 4.3環(huán)境內(nèi)部運(yùn)行狀態(tài) 本節(jié)將基于這個(gè)實(shí)例,描述運(yùn)行時(shí)軟件系統(tǒng)在與環(huán)境系統(tǒng)交互過程中,環(huán)境系統(tǒng)內(nèi)部的運(yùn)行狀態(tài)。下面分別以Sensor(Comfort)和Effect(TotalPower, 1.2*tp)為例進(jìn)行說明。 4.3.1 Sensor(Comfort) 如圖3所示,Sensor(Comfort)的流程可以分為5步。盡管前面提到環(huán)境實(shí)際上是一個(gè)4層結(jié)構(gòu),但是為了簡化圖形描述,服務(wù)層和管理層在感知Comfort的過程中并沒有起到關(guān)鍵作用,只是將上層任務(wù)轉(zhuǎn)發(fā)給下層而已,因此在圖示中略去。具體的5步如下: (1)軟件系統(tǒng)向環(huán)境系統(tǒng)發(fā)送Sensor(Comfort)命令,環(huán)境的服務(wù)層接受命令,并把命令傳遞給表示層。 (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行,讀取組合資源當(dāng)前時(shí)刻的值。調(diào)用管理層的接口,分別執(zhí)行Sensor(Brightness)、Sensor(Temperature)和Sensor(Humidity),用3.1/3.2/3.3虛線流程表示。 (4)表示層得到依賴的子資源的當(dāng)前值后,執(zhí)行代碼的第4~7行,計(jì)算Comfort的值,并返回給服務(wù)層。 (5)服務(wù)層將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一樣,為了簡化圖形描述,略去了功能單一的服務(wù)層部分,不同的是,這里引入了管理層的詳細(xì)流程。因?yàn)楫?dāng)?shù)讓淤Y源被修改后,會導(dǎo)致環(huán)境的狀態(tài)發(fā)生變化,有些更新操作就有可能被動地觸發(fā)。具體過程如下: (1)軟件系統(tǒng)向環(huán)境系統(tǒng)發(fā)送Effect命令,環(huán)境的服務(wù)層接收到命令后,傳遞給表示層。 (2)表示層得到效應(yīng)命令后,讀取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í)行相應(yīng)的命令(4.1~ 4.3),修改這3個(gè)資源的取值為0.4*tp。 (5)管理層檢查當(dāng)前的系統(tǒng)狀態(tài),找出生效的規(guī)則: ①根據(jù)加濕器功率,修改濕度值。 ②根據(jù)空調(diào)功率,修改溫度值。 ③根據(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仿真實(shí)驗(yàn) 按照如上實(shí)例所述進(jìn)行仿真實(shí)驗(yàn),圖5是系統(tǒng)前400個(gè)時(shí)刻內(nèi)TotalPower和Comfort的變化關(guān)系,圖6是相應(yīng)的AirCondition和Temperature這兩個(gè)環(huán)境內(nèi)資源的變化圖(此次實(shí)驗(yàn)中,其他兩對資源變化規(guī)律與之相同)。圖中的值是每個(gè)時(shí)鐘開始時(shí)的值。 Fig.5 TotalPower and Comfort vs clock圖5 總功率和舒適度隨時(shí)鐘變化圖 Fig.6 AirCondition and Temperature vs clock圖6 空調(diào)和溫度隨時(shí)鐘變化圖 (1)每100個(gè)時(shí)鐘會對Temperature、Humidity、Brightness這3個(gè)資源的取值進(jìn)行隨機(jī)的擾動,其中Temperature的取值展示在圖6中,與之對應(yīng)的Comfort的變化在圖5中。 (2)環(huán)境內(nèi)部資源更新規(guī)則是電器功率越大,相應(yīng)的感應(yīng)數(shù)值就越快到達(dá)目標(biāo)值。而且3組規(guī)則的變化方式相同,這里只列出了AirCondition和Temperature隨時(shí)鐘的變化圖(見圖6)。 (3)因?yàn)門otalPower的變化方式都是按比例變化,所以在圖中使用相應(yīng)的對數(shù)值作為變化的參考。 (4)AirCondition、Humidifier、Light的取值都是TotalPower的1/3,因此并沒有用專門的對比變化圖表示。而Temperature、Humidity、Brightness這3個(gè)資源與Comfort的關(guān)系也是前3者越接近目標(biāo)值,Comfort越接近1,同樣沒有使用單獨(dú)的圖進(jìn)行描述。 從圖5可以看出對于軟件系統(tǒng),只是簡單地調(diào)整了TotalPower的取值,就實(shí)現(xiàn)了對Comfort的動態(tài)調(diào)整。而從環(huán)境系統(tǒng)的內(nèi)部來看,整體的數(shù)據(jù)變化流程則是TotalPower→AirCondition、Humidifier、Light→Temperature、Humidity、Brightness→Comfort,要完成這個(gè)過程,對于外部的軟件系統(tǒng)來說只需要定義好TotalPower和Comfort到環(huán)境中已有資源的映射關(guān)系即可,至于映射關(guān)系的實(shí)現(xiàn)以及資源內(nèi)部的更新規(guī)則則完全不用關(guān)心,全部交給環(huán)境系統(tǒng)就可以了。這一點(diǎn)也是將自適應(yīng)軟件系統(tǒng)的環(huán)境進(jìn)行單獨(dú)建模的最大好處。一方面能實(shí)現(xiàn)環(huán)境模型的復(fù)用,另一方面又極大地簡化了自適應(yīng)軟件使用環(huán)境的方法。 最近,對于環(huán)境在多agent系統(tǒng)中扮演的角色,人們的認(rèn)識有了根本性的改變。最近的研究提出在多agent系統(tǒng)中,應(yīng)當(dāng)將環(huán)境作為一級設(shè)計(jì)抽象,并創(chuàng)造性地使用環(huán)境[5]。 文獻(xiàn)[6]介紹了多agent系統(tǒng)研究的現(xiàn)狀,給出了環(huán)境研究方面的概述,并闡述了環(huán)境作為一級設(shè)計(jì)抽象在多agent系統(tǒng)中的地位,為本文對于環(huán)境的建模提供了參考。文獻(xiàn)[7]將環(huán)境作為一級設(shè)計(jì)抽象整合進(jìn)了Agent-Group-Role(AGR)模型,能夠?qū)χ悄荏w提供3種不同層次的支持。本文為進(jìn)一步方便多agent系統(tǒng)對環(huán)境的訪問,將環(huán)境實(shí)現(xiàn)為服務(wù)層、表示層、管理層和資源層的4層結(jié)構(gòu),通過加入表示層,提供了一種應(yīng)用軟件所認(rèn)知的環(huán)境元素到真實(shí)環(huán)境元素之間的映射機(jī)制。文獻(xiàn)[8]主張用新的形式化方法來明確表示環(huán)境中的間接互動,并提出一套消息傳遞機(jī)制。該文主要關(guān)注的是智能體之間的消息傳遞以及協(xié)作,而本文更加關(guān)注自適應(yīng)系統(tǒng)環(huán)境與agent之間的消息傳遞。文獻(xiàn)[9]闡述了環(huán)境在多agent系統(tǒng)中的管理角色,由環(huán)境來驅(qū)動agent的行為。本文更進(jìn)一步,賦予了環(huán)境自主變化的能力,以便于研究不同環(huán)境配置下,多agent系統(tǒng)的行為。上述工作雖然意識到將環(huán)境作為一級設(shè)計(jì)抽象的重要性,但卻忽視了環(huán)境的動態(tài)特性,或者對其提供的支持較少,使其難以自演化和維護(hù)。 目前針對自適應(yīng)軟件系統(tǒng)駐留環(huán)境的研究,大多側(cè)重于對環(huán)境的表示和感知,特別是呂建[10-13]、毛新軍[2,14]等人的團(tuán)隊(duì)都取得了不錯(cuò)的進(jìn)展,但是對于環(huán)境的自主變化以及復(fù)用的關(guān)注還不夠。 agent和環(huán)境職責(zé)的不同可以有助于實(shí)現(xiàn)關(guān)注點(diǎn)分離。關(guān)注點(diǎn)分離技術(shù)一方面使得代碼更加清晰、便于理解,另一方面促進(jìn)了代碼的復(fù)用,從而有利于軟件的開發(fā)和維護(hù)[15]。文獻(xiàn)[16]闡述了環(huán)境作為一級設(shè)計(jì)抽象在多agent系統(tǒng)中的職能。 在多agent系統(tǒng)環(huán)境領(lǐng)域,另一個(gè)重要的研究主題是環(huán)境工程。目前面向agent的方法學(xué)很少提供這方面的支持。SODA[17]和GAIA[4]雖然涉及到了環(huán)境,但是對于環(huán)境的支持也只限于資源的表示和簡單訪問控制等。 本文將自適應(yīng)軟件的環(huán)境作為一級實(shí)體單獨(dú)建模,提出了一種環(huán)境的抽象模型及其層次化的實(shí)現(xiàn)模型。本文主要的貢獻(xiàn)有以下幾點(diǎn):將環(huán)境作為一級實(shí)體獨(dú)立建模,并提供環(huán)境自身維護(hù)和演化的機(jī)制,實(shí)現(xiàn)了一種可復(fù)用的環(huán)境。實(shí)現(xiàn)了一種層次結(jié)構(gòu)的環(huán)境,尤其是在環(huán)境的實(shí)現(xiàn)中,增加了一個(gè)表示層,使得軟件的開發(fā)與實(shí)現(xiàn)和環(huán)境的開發(fā)與實(shí)現(xiàn)可以獨(dú)立進(jìn)行。軟件開發(fā)人員只需從應(yīng)用軟件系統(tǒng)的角度來表示環(huán)境,并感知和效應(yīng)環(huán)境,環(huán)境則負(fù)責(zé)實(shí)現(xiàn)不同抽象程度的資源之間的自動映射。 在未來的研究工作中,將在目前環(huán)境模型的基礎(chǔ)上,進(jìn)一步細(xì)化相關(guān)概念,完善環(huán)境元素的映射機(jī)制,使得本文模型能夠更加有效地支持環(huán)境和軟件的復(fù)用。 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. 附中文參考文獻(xiàn): [2]董孟高,毛新軍,郭毅,等.復(fù)雜自適應(yīng)多Agent系統(tǒng)的環(huán)境表示及感知[J].計(jì)算機(jī)研究與發(fā)展, 2012, 49(2): 402-412. [10]呂建,馬曉星,陶先平,等.面向網(wǎng)構(gòu)軟件的環(huán)境顯式化技術(shù)[J].中國科學(xué):信息科學(xué), 2013, 43(1): 1-23. [11]黃宇,余建平,馬曉星,等.開放環(huán)境特性感知技術(shù)[J].軟件學(xué)報(bào), 2011, 22(5): 865-876. [12]馬駿,陶先平,朱懷宏,等.多Agent系統(tǒng)的上下文感知增強(qiáng)[J].軟件學(xué)報(bào), 2012, 23(11): 2905-2922. [13]馬駿,曹建農(nóng),馬超,等.普適計(jì)算中基于集合的上下文建模和操作[J].軟件學(xué)報(bào), 2011, 22(S2): 105-119. [14]曹江,毛新軍,王懷民,等.復(fù)雜自適應(yīng)多Agent系統(tǒng)的模型驅(qū)動開發(fā)方法[J].計(jì)算機(jī)科學(xué), 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—),男,浙江臺州人,北京大學(xué)信息科學(xué)技術(shù)學(xué)院軟件研究所碩士研究生,主要研究領(lǐng)域?yàn)樽赃m應(yīng)軟件。 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—),男,江蘇泰州人,北京大學(xué)信息科學(xué)技術(shù)學(xué)院軟件研究所博士研究生,主要研究領(lǐng)域?yàn)樽赃m應(yīng)軟件。 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—),男,福建泉州人,北京大學(xué)信息科學(xué)技術(shù)學(xué)院軟件研究所碩士研究生,主要研究領(lǐng)域?yàn)樽赃m應(yīng)軟件。 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—),男,山東招遠(yuǎn)人,2007年于中國科學(xué)院計(jì)算技術(shù)研究所獲得博士學(xué)位,現(xiàn)為中央財(cái)經(jīng)大學(xué)副教授,主要研究領(lǐng)域?yàn)檐浖こ?,人工智能等。發(fā)表學(xué)術(shù)論文50多篇,承擔(dān)過中國博士后基金、國家科技支撐計(jì)劃等多項(xiàng)課題。 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年于中國科學(xué)院軟件研究所獲得博士學(xué)位,現(xiàn)為北京大學(xué)教授、博士生導(dǎo)師,主要研究領(lǐng)域?yàn)檐浖こ蹋嘀黧w系統(tǒng),自適應(yīng)軟件,軟件形式化方法等。發(fā)表學(xué)術(shù)論文70多篇,主持過多項(xiàng)國家自然科學(xué)基金、863計(jì)劃等項(xiàng)目。 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 文獻(xiàn)標(biāo)志碼:A 中圖分類號:TP3013 環(huán)境的實(shí)現(xiàn)
4 實(shí)例研究
5 相關(guān)工作
6 結(jié)束語
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