(湖南工業大學 計算機與通信學院 湖南 株洲 412008)
摘 要:結合軟件agent技術,從構件角度出發,通過對傳統構件進行包裝,加入行為規則驅動和行為推導兩大機制,提出了一種能夠在運行時實時適應用戶需求變化和運行環境變化的自適應構件。在自適應構件的運行和支撐方面,實現了一個可動態定制自適應構件行為規則的工具,改進了現有的構件支撐平臺使得能滿足自適應構件的運行需求;最后通過一個例子說明了自適應構件的設計、實現、運行和演化等一系列工作流程。初步實踐表明,上述機制和整套框架為開發具有自適應性的網構軟件提供了有效支持。
關鍵詞:網構軟件; 自適應構件; 代理; 行為規則
中圖分類號:TP311文獻標志碼:A
文章編號:1001-3695(2009)05-1749-05
Study on selfadaption mechanism for component oriented internetware
GAO Jun LI Changyun WEN Zhihua RAO Juhua
(School of Computer Communication Hunan University of Technology Zhuzhou Hunan 412008 China)
Abstract:Combined with the technology of agent from component perspective through the way of packing the traditional component adding behavior rule driven and behavior deduced mechanism into the traditional component this paper presented a selfadaption component which could adapt itself to the varieties of user’s requirements and runtime environment. In the area of selfadaption component’s running environment and its support platform implemented a tool which could dynamically customize selfadaption component’s behavior and improved the existing component’s support platform to meet the needs of selfadaption component of running. In the end explained the selfadaption component’s designing implementation running and evolution through an example. Some development examples imply that this mechanism and the whole support framework can support the development of the selfadaption internetware effectively.
Key words:internetware; selfadaption component; agent; behavior rule
0 引言
近年來,隨著Internet的日益普及和廣泛應用,越來越多的軟件系統運行和部署在網絡環境上,新的軟件形態——網構軟件[1](internetware)隨之產生。由于Internet的開放性、動態性和多變性以及不斷變更的用戶需求,這就要求網構軟件能根據不斷變化的環境和用戶需求進行自調整。
在現階段,基于CBSD(component based software development)[2]的軟件開發方法已經成為新一代的軟件開發范型,以體系結構為藍圖將構件組裝成系統,構件與構件之間的依賴關系通過接口規約來實現,構件在整個過程中處于被動的地位,且在運行時這種規約和構件自身保持不變,因而傳統構件缺乏對開放、動態和多變的環境和多變的用戶需求的適應能力。
對agent研究,經過十幾年的發展已經取得了一些優秀的成果,在開發環境方面,具有代表性的成果有JADE、JACK工程[3],并在工程上實現了很多基于agent的應用系統[4],將agent技術引入構件化軟件系統日益得到關注。軟件agent通過對自身行為的控制規定了agent在不同環境狀態下應采取不同對策[5],但是一方面軟件agent技術尚不成熟,也沒得到業界的認可;另一方面軟件agent對不同協議支持有限,同時并不是每個軟件實體都是軟件agent,所以從軟件agent技術方面去解決網構軟件的自主、協同、反應、演化等方面的問題顯得很困難。
目前,構件技術和基于構件的軟件開發方法在業界受到廣泛的認可和支持,并且構件庫、構件的運行支撐中間件技術[6~8]也都達到比較成熟的階段。結合agent在解決軟件實體對環境感知和自適應方面的優勢,通過對現有的構件進行包裝,實現構件層次的自適應,進而實現網構軟件自主、協同、反應和演化等特性不再成為難題。將現有的構件運行支撐平臺進行改進使之適合自適應構件的運行,并使構件運行時能隨用戶需求的變更而變化而無須重新編譯和部署,這對提高網構軟件的質量和可信度有著重要意義。
本文提出的構件自適應機制是在agent的行為規則和行為動態推理的基礎上提出的。在實現構件自適應機制方面,采用改裝傳統構件,即在傳統構件上加入行為規則驅動和行為動態推理以適應預設的和非預設的變更[8],在自適應構件SAComponent(selfadaption component)實現問題上,開發出一種工具rule builder,它能在運行時定制構件的行為規則以適應不斷變化的環境和用戶需求,自適應構件的運行環境采用改進的構件支撐平臺,即SASM支撐平臺[8]。
本文提供了網構軟件中自適應構件的模型和實現機制,其中包括行為規則驅動和行為動態推理,描述了自適應構件的行為規則定制工具和運行支撐平臺。通過網上交易系統的案例闡述自適應構件的運行過程。
1 自適應構件模型及實現機制
1.1 自適應構件模型
傳統的構件是通過接口向外提供服務的,是可以獨立部署并組裝的,并能實現固定功能的軟件實體,但不能對外界環境作出反應[9]。本文在自主構件[10]基礎上提出了自適應構件。自適應構件能根據環境變化動態調整自身行為,采用在傳統構件接口處加入行為規則驅動和行為動態推理來實現。因此自適應構件與傳統構件的差別在于其實現接口的方式發生了改變,從而其展現給用戶的行為也隨之發生了變化,即自適應構件與傳統構件的差別主要體現在其實現結構和運行時刻的行為語義上。構件模型如圖1所示,首先由感應器(sensors)獲取自適應構件感興趣的環境信息,將信息存入環境信息庫(env info)中(如各類系統資源的使用狀況,環境變量信息等),同時保持信息庫與外界的一致性。
自適應構件根據環境信息庫的內容分別對待。如果是預設的變化,規則引擎(rule engine)[10]根據規則庫中存儲的驅動行為的規則執行相應的動作行為(behavior)。規則采用事實(fact)+動作(action)的表述方式,當感應環境信息為真,或環境進入某種狀態時,構件就執行相應的動作,如調用某個方法,或修改環境屬性值,或觸發某個策略即動作序列的執行,甚至修改規則庫本身。規則庫中的規則可以劃分為兩類,即行為驅動和行為限制。前者描述當條件滿足時,自主構件應采取的行為;后者描述對自主構件行為的約束條件,即構件的行為只有首先符合這種約束條件,才能得以授權順利執行。
對于非預設的變化,利用改進的BDI(beliefsdesiresintentions)[11]模型進行行為推導(圖1中虛線部分)來制定滿足要求的策略(strategy),即動作序列。Beliefs、desires、intentions分別稱為信念、期望、意圖。BDI主體模型被研究人員認為是最健壯和最靈活的智能主體模型,改進的BDI結構的運行實體通過環境信息庫能夠感知外部環境,環境變化可能引起信念發生改變,信念的變化首先通過意見函數(opinion)依據當前對環境的感知和當前信念再確定一個新信念集合,與此同時,信念的改變可能又會導致新期望的產生。實體將當前的信念、期望通過過濾器(filter)依據主體當前的意圖、當前的信念和期望更新主體的意圖,它會丟棄無法完成或已無意義的意圖,為無法實現的意圖選擇新的實現方法及選擇新的意圖。最后由意圖確定一組可行的動作序列來完成適應非預設的變化。在實現服務的過程中,特定的動作執行受到構件規則的限制。例如,當行為與限制性規則相沖突的情況下,該動作將無法執行。
1.2 自適應構件實現機制
在自適應構件的具體實現中,筆者通過集成開源規則引擎(Drools)和設計相應的BDI構件模型,以提供自適應構件所需的規則引擎驅動和行為推導能力,適應環境的變化和客戶需求的變更。 Drools是一個基于Rete匹配算法[12]的改進形式ReteⅡ算法,是Java規則引擎開源項目的實現,對外提供面向對象的接口,從而很容易集成到基于Java的軟件系統中。在Drools 中,規則由條件和結果構成,均可以用一種類Java語句來描述,便于程序員編寫和理解。另外,Drools 支持規則的聲明式編程,即用戶通過XML 文件聲明和定義規則,Drools則實現對規則的解釋和執行。這也為下文的規則定制工具的實現提供了基礎和可能。
BDI模型的理論基礎起源于Bratman的實用推理理論以及Dennett的意圖理論。區別于早期agent 結構領域所流行的理論推理,實用推理是直接針對行動的推理。實用推理實質上是對人的思維與行動的過程的模擬,即人類某一時刻的思考可能決定今后的一系列行動過程。按照實用推理的觀點,一個agent在從感知到行動的決策過程中應當首先進行慎思,即決定在今后的行動中要達到什么目的狀態(ends),然后再進行從目的到方法的推理(meansends reasoning),即選擇合適的方法來實現確定的目的,最后要對所選的目的和方法進行承諾[13]。通俗地說就是首先決定做什么,然后再確定怎么做,最后一直做下去,突出了BDI模型的規劃、學習、最優調度等特性。
這里給出了一種改進的BDI模型,并用ASL(agent script language)[14]來描述這個模型。ASL是基于模態邏輯的,用于描述agent之間的交互。為了描述基于BDI模型的自適應構件,引入算子Bel(信念)、Des(目的)、Int(意圖)、Env(環境)、符號ρ、×。其中:ρ表示冪集;×表示笛卡爾乘積。
下面分別給出形式化的定義:
定義1 SAComponent={B,D,I}。BBel,DDes,IInt。
定義2 感知函數sense。ρ(Bel)×e→ρ(Bel),該函數依據當前對環境的感知和當前信念確定一個新的信念集合。
定義3 意見函數opinion。ρ(Bel)×ρ(Int) →ρ(Des),該函數依據當前環境感知當前意圖的執行情況確定新的目標。
定義4 過濾函數filter。ρ(Bel)×ρ(Des)×ρ(Int) →ρ(Int),該函數依據主體當前意圖、當前信念和當前愿望更新主體的意圖。它會丟失無法完成或已無意義的意圖,為無法實現的意圖選擇新實現方法及選擇新的意圖,從而產生新的行為序列來滿足構件的自適應。
自適應構件工作過程為收到從接口傳來的服務請求,規則引擎根據當前的環境信息及規則庫觸發合適的行為。如果不存在匹配的規則,則不采取任何行為,即拒絕服務請求;否則,啟動行為推導模塊,推導出行為序列,從策略中選擇并執行可行的行為序列來實現服務。
2 自適應構件行為規則定制工具和運行平臺
2.1 規則定制工具
Drools規則引擎應用ReteⅡ算法的核心思想是將分離的匹配項根據內容動態構造匹配樹[12],以達到顯著降低計算量的效果。Drools是Rete算法的一個面向對象的Java實現,同時Drools支持規則的聲明式編程,即用戶可以通過編寫XML文件來聲明和定義規則,Drools引擎則實現規則的解釋和執行。將傳統的構件包裝成自適應構件時,需要為自適應構件預定義行為規則庫(rules repository)。
為了實現構件最大程度的靈活性,開發了一個可以動態定制自適應構件行為規則的可視化管理工具(rule builder),如圖2所示。該工具能夠在不終止構件的運行也無須重新部署構件的情況下對規則進行編輯,以達到動態修改自適應構件行為規則的目的,滿足多變的用戶需求。
2.2 自適應構件運行支撐平臺
SASM支撐平臺[8]是一個面向應用的、開放的、軟件體系結構驅動的軟件基本運行環境,也是應用軟件的開發、部署、演化的基礎。SASM支撐平臺由提供構造服務的構造工具集、提供執行服務的執行工具集和支持動態演化的動態演化工具集組成。所有這些工具集都相互協作,為所有符合SASM模型開發、運行、演化的應用軟件提供支持。SASM平臺是一個基于體系結構的軟件運行時的可視化工具,用戶可以瀏覽運行在SASM平臺上構件系統的體系結構,并可以任意選擇某個模塊,對系統行為進行修改。SASM平臺采用開放式的結構,可以通過自定義工具來擴展平臺的功能。
自適應構件與傳統構件相比,在功能上具備了一些新的特性,而對需要其提供服務的調用者來說,其外部視圖并沒有顯著變化,從某種程度上說,自適應構件與傳統構件在使用方式上是兼容的。正因為自適應構件與傳統構件在表現形式上的一致,自適應構件運行平臺采用改進的傳統構件的運行支撐平臺SASM,如圖3所示。SASM支撐平臺的設計其重點包括設計與實現新的自適應構件容器,用于管理自適應構件的生命周期及其相關的公共服務,并同時為自適應構件的實例提供運行空間。容器內的通信截取器負責自適應構件與外界的通信,它一方面負責截獲自適應構件之間的交互,為支持不同交互協議的自主構件的互操作提供支持;另一方面還協助自適應構件的環境感知器捕捉環境狀態信息,維護環境信息庫。
3 應用案列
本章為了說明自適應構件(以下簡稱SA構件)的自適應性和SASM支撐平臺對SA構件的運行支撐,以一個電子商務系統(electronic commerce)為例來模擬商家和客戶在網上購物的交易行為。 在這個模擬的交易行為中,設定了兩種場景:賣家對商品如何最優標價的場景;買家在購買商品時資金不夠時如何完成交易的場景。
3.1 自適應行為規則
商家希望通過動態調整暢銷與不暢銷的商品價格來取得最大利潤,自適應構件能根據規則動態靈活地調整商品的價格。制定規則,對銷售情況不好的商品、某些處于淡季的商品采取降價處理或實行優惠活動;在某些特殊日子,如情人節前的鮮花,商品的價格可以適當調高。整個調價的過程中,無須人工干預也無須停止系統運行,真正實現軟件系統對環境的自適應。此外,賣家也可以不實行規則的政策臨時自主地制定價格。
對于以上情況,都可以用rule builder工具動態地制定這些規則,如表1所示。
表1 自適應構件的行為規則
降價規則提價規則
〈rule name=\"price_down\"〉〈rule name=\"price_up\"〉
〈parameter id=\"commerce.function.deal.vender\"〉〈parameterid=\"commerce.function.deal.vender\"〉
〈owner〉shoppingcart〈/owner〉〈owner〉shoppingcart〈/owner〉
〈state〉active〈/state〉〈state〉active〈/state〉
〈class〉auto〈/class〉〈class〉auto〈/class〉
〈/parameter〉〈/parameter〉
〈java:condition〉unSale〈/java:condition〉〈java:condition〉isSale〈/java:condition〉
〈java:condition〉grade〈/java:condition〉〈java:condition〉grade〈/java:condition〉
〈java:condition〉isHoliday〈/java:condition〉〈java:condition〉notHoliday〈/java:condition〉
〈java:condition〉noStock 〈/java:condition〉〈java:condition〉haveStock〈/java:condition〉
〈java:consequence〉loadDecreasedPriceStrategy()〈java:consequence〉loadIncreasedPriceStrategy()
〈/java:consequence〉〈/java:consequence〉
〈/rule〉〈/rule〉
表1中,〈rule name〉是規則名稱;〈parameter〉段描述規則的一些屬性,如惟一標志ID(commerce.function.deal.vender)、所屬構件、狀態、是否可修改等;〈java:condition〉為自適應行為觸發規則,其值有的為boolean類型,有的為數值類型,如該商品當前是否為暢銷商品isSale、商品的過時等級grade(某些季節性很強的商品,如衣服)、是否是節日假期isHoliday、庫存數量havaStock等,這些條件參數由分析銷售日志和計算當前日期等環境信息來得到;〈java:consequence〉是規則滿足時所應觸發的動作,即執行loadIncreasedPriceStrategy()方法。其中某些條件參數值也可通過rule builder工具來動態地設定。
3.2 自適應行為推理
為了說明自適應構件的策略自主生成機制,借助買家在購買商品時資金不夠的場景來詳細表述其原理。在這個場景中,顧客(customer)在商家(vender)網店里找到合適商品(commodity)并將其放進購物車(cart),買家在結賬付錢(money)時發現賬戶余額不足,不能進行此次交易;根據行為動態推理機制提示買家可向某銀行申請貸款來完成交易,買家向其提供貸款條件的銀行(bank)的代理點(blankAgent)、辦理貸款的方式完成此次交易。從系統的角度來看,只是在買家付錢時暫時鈍化買家的購物車,然后獲得銀行貸款后再激活這個購物車實例,完成購買商品交易。
這個事實可以用以下謂詞和操作完成問題的求解,買家購買商品過程的四個操作可用謂詞描述如下:
venderHave(x),商家有下文中顧客喜歡的商品x;
customerHave(z),顧客在某個銀行開通了賬戶,并且擁有信譽z;
blankHave(y),銀行有相應數額的貨幣y;
venderIn(y),商家通過交易得到錢y;
venderOut(x),商家出售商品x;
customerIn(x),商家與顧客之間,顧客通過買賣得到商品x;
customerOut(y),商家與顧客之間,顧客付給商家錢y;
customerIn(y),顧客與銀行之間,顧客得到貸款y;
customerOut(z),顧客與銀行之間 顧客通過貸款申請付出信譽z;
blankIn(z),銀行得到顧客的擁有信譽度z的賬單;
blankOut(y),銀行借出錢y;
cart(x,y),購物車在交易過程中實現商品和貨幣的交換;
apply(y,z),顧客與銀行之間通過申請動作實現信譽和貨幣的交換。
其中:x、y和z的個體域分別是商家提供的商品{commodity}、{money}和{credit}。
問題的初始狀態是:venderHave(commodity),customerHave(credit),bankHave(money)。
問題的目標狀態是:venderIn(money),customerIn(commodity)。
從整個交易過程來看,整個活動發生在cart和銀行代理apply這兩個點上,其目標是把問題的初始狀態轉換為目標狀態。Cart和apply的操作均可由條件和動作兩部分組成,在本問題中,cart和apply的操作可用如下謂詞來描述:
cart(x,y),顧客在付賬時,購物車實現從顧客賬戶上扣除相應金額并將商品交給顧客。
apply(y,z),顧客向銀行代理點申請貸款時,代理點負責從顧客那里得到信譽(虛擬的貨幣,即賬目)并同時將錢轉給顧客。
這些動作所對應的先決條件如下:
customerIn(x)
條件:venderHave(x)∧customerHave(y)
動作:
刪除:venderHave(x)∧customerHave(y)∧cart(x,y)
添加:venderIn(y)∧venderOut(x)∧customerIn(x)∧customerOut(y)∧apply(y,z)
customerIn(y)
條件:customerHave(z)∧bankHave(y)
動作:
刪除:customerHave(z)∧bankHave(y)
添加:blankIn(z)∧blankOut(y)∧customerOut(z)∧customerIn(y)
利用上述謂詞和操作,即可完成顧客購物余額不足問題的求解。為了說明推理過程中目標的變化,在本例中將目標venderHave(x)∧customerHave(y)分解成兩個子目標的venderIn(y)∧venderOut(x)∧customerIn(x)∧customerOut(y)和apply(y,z),在第二個目標成功執行完畢后,會引發第一個子目標的執行。下面是求解過程:
B0: venderHave(x)∧customerHave(z)∧blankHave(y)
D0: venderIn(y)∧customerIn(x)∧blankIn(z)∧customerIn(y)
I0: cart(x,y)
B1: venderIn(y)∧customerIn(x)∧blankIn(z)∧customerIn(y)
D1: blankIn(z)∧blankOut(y)∧customerOut(z)∧customerIn(y)
I1: apply(y,z)
(S0) B0 、D0、I0是信念、目標、意圖的初始狀態
(S1) B1=sense(B0,e′)e′∈E//信念發生變化
(S2) D1 = opinion(B1,I0)//目標發生變化
(S3) I1 = filter(B1,D1,I0) //意圖發生變化
(S4)SAComponent1×e″= Strategy(SAComponent1×ρ(I′))
在這個求解過程中,開始的信念是B0: venderHave(x)∧customerHave(z)∧blankHave(y),其滿足條件為venderHave(x)∧customerHave(y),然后執行動作刪除venderHave(x)∧customerHave(y)∧cart(x,y),添加venderIn(y)∧venderOut(x)∧customerIn(x)∧customerOut(y)∧apply(y,z)。此時信念變為venderIn(y)∧customerIn(x)∧blankIn(z)∧customerIn(y)并生成一個子目標apply(y,z),等待完成子目標后,再回到主目標執行完動作。在整個動作執行及目標生成過程中,新環境的信息由sense函數在信念庫中生成新的信念,使當前信念發生變化;而這種新的信念和原先的意圖成功執行通過opinion函數,引發第二個子目標的生成,信念的變化和新的目標的產生通過filter函數得到新的意愿,繼而生成新目標找到問題的解決方案。由此看出自適應構件對環境變化產生自適應策略,表現出強烈的自適應性。
4 相關工作
從動態agent理論及實現、網構軟件的構件模型、網構軟件開發方法三個方面的相關工作與本文進行比較。
1)動態agent理論及實現方面 在軟件agent領域,自適應的研究在模型構造、運行平臺取得一些成果[15,16],文獻[17]引入agent的過程模型來適應軟件過程環境的變化,軟件過程能夠自治地調整自身的行為;文獻[18]基于caste提出了形式化規約語言SLABS,但其動態演化策略定義在caste內部,在agent運行期間很難動態改變演化策略。本文的主要工作是借鑒了agent自適應方面的概念和技術,并將其整合到當前的構件模型和支撐平臺中。
2)網構軟件的構建模型方面 文獻[19]基于移動agent的原理、方法和技術,在面向對象方法與技術的基礎上,從基礎軟件模型、關鍵支撐技術、主流技術應用三個層面提出了適合網構軟件需求的開放協同模型。文獻[10]提出了自主構件理論,自主構件保留傳統構件特性,并具有agent的自主行為能力;此外自主構件能夠通過感知環境變化從而在行為上進行調整,文獻[7]提出了EBDI結構的模型表示構件,利用動態綁定關系解釋了自適應和動態演化特征。與前兩者的構件理論相比,本文從一種更細粒度的層次上對構件自適應行為進行了研究。并且文獻[10]的自主構件在面對非預設的環境變化時,即超出行為規則范疇時,不能進行行為的自推理,也就不能產生出可行的行為策略。
3)網構軟件開發方法方面 文獻[20]以軟件構件為基本實體,以體系結構為中心,以軟件中間件技術為運行支撐的軟件開發方法學ABC用于支撐網構軟件的開發,該方法反映了網構軟件在問題空間實現自底向上、從無序到有序的構造過程,從軟件體系結構角度分析和設計軟件的自適應。相比較而言,本文的工作更注重于從微觀的角度,而且更關注于構件模型和支撐機制,利用現有成熟的構件技術來滿足網構軟件的需求。
5 結束語
Internet已得到快速發展與普及,如何在開放、動態、難控的網絡環境下實現各類資源的共享和集成已經成為計算機軟件技術面臨的重要挑戰之一。為了應對挑戰,網構軟件應運而生。但是,網構軟件仍然面臨著環境顯式化、實體主體化、運行自適應等問題。對這些問題,本文從構件的角度出發,結合agent技術提出SA構件,并將其作為網構軟件的構件形式,其內部的行為規則驅動模塊和行為推導模塊能很好地適應周圍環境和用戶需求的變化;開發了自適應構件的行為規則動態定制工具rule builder;在運行環境方面,改裝和完善已有的構件運行支撐平臺SASM使之適合自適應構件的運行。
現階段筆者的工作還存在許多要解決的問題,包括在自適應構件的行為推導模塊中,復雜的環境和難以預測的用戶需求的形式化表述問題。在下一階段,將進一步研究更可行的行為描述邏輯,其應該具有豐富的表達能力且語法簡潔。其次,本文采用的案例過于簡單,僅用于闡述自適應構件的思想,今后將開發更多的案例。此外,支撐運行平臺目前也處于研究和實驗階段,需要進一步的完善。
參考文獻:
[1]楊芙清.軟件工程技術發展思索[J].軟件學報 2005,16(1):1-7.
[2]梅宏,陳鋒,馮耀東,等. ABC:基于體系結構、面向構件的軟件開發方法[J].軟件學報,2003,14(4):721-732.
[3]BELLIFEMINE F POGGI A RIMASSA G. JADE:a FIPAcompliant agent framework[C]//Proc of the 4th International Conference on the Practical Applications of Agents and MultiAgent Systems. London: Practical Application Company 1999:97-108.
[4]WOOLDRIDGE M JENNINGS N. Intelligent agent: theory and practice[J]. Knowledge Engineering Review 1995,10(2):116-151.
[5]LIU Jiming JIN Xiaolong TSUI K C. Autonomyoriented computing(AOC): formulating computational systems with autonomous components[J]. IEEE Trans on Systems Man and CyberneticsPart A: Systems and Humans 2005,35(6):879-902.
[6]MEI Hong HUANG Gang. PKUAS:an architecturebased reflective component operating platform[C]//Proc of the 10th IEEE International Workshop on Future Trends of Distributed Computing Systems.Washington DC:IEEE Computer Society 2004:163-169.
[7]PAN Ying WANG Lei ZHANG Lu et al. Relevancy based semantic interoperation of reuse repositories[C]//Proc of the 12th ACM SIGSOFT Symposium on Foundations of Software Engineering. New York: ACM Press,2004:211-220.
[8]李長云. 基于體系結構的軟件動態演化研究[D].杭州:浙江大學,2005.
[9]SZYPERSKI C. Component softwarebeyond objectoriented programming[M]. 2nd ed. NewYork: ACM Press ,2003:80-125.
[10]孫熙,莊磊,劉文,等. 一種可定制的自主構件運行支撐框架[J].軟件學報,2008,19(6):1340-1348.
[11]COHEN P LEVESQUE H. Intention is choice with commitment[J]. Artificial Intelligence 1990,42(3): 213-261.
[12]LI Guole.Java rule engine and its API(JSR-94) [EB/OL](2008-02).http://www128.ibm.com/developerworks/cn/java/jjavarules/index.html?ca=dwcnnewsletterjava.
[13]van RIEMSDIJK M B DASTANI M MEYER J C. Semantics of declarative goals in agent programming[C]//Proc of the 4th Int’l Joint Conference on Autonomous agents and multiagent system 2005:205-216.
[14]HADDADI A. Communication and cooperation in agent systems:a pragmatic theory[M]. New York:SpringerVerlag 1996.
[15]COHEN R FLEMING M. Adjusting the autonomy in mixedinitiative systems by reasoning about interaction[M]//HEXMOOR H FALCONE R CASTELFRANCHI C. Agent Autonomy. Dordrecht Netherlands: Kluwer Publisher,2002: 105-122.
[16]BRADSHAW J M FELTOVICH P JUNG H et al. Dimensions of adjustable autonomy and mixedinitiative interaction[M]//Agents and Computational Autonomy:NICKLES M ROVATSOS M WEISS G. Potential Risks and Solutions. Berlin: Springer 2003:17-39.
[17]趙欣培,李明樹,王青,等. 一種基于Agent的自適應軟件過程模型[J].軟件學報,2004,15(3):348-359.
[18]ZHU Hong. A formal specification language for agentoriented software engineering[C]//Proc of the 2nd International Conference on Autonomous Agents and Multiagent Systems. New York: ACM Press 2003:1174-1175.
[19]呂建,馬曉星,陶先平,等. 網構軟件的研究與發展[J].中國科學(E輯),2006,36(10):1037-1079.
[20]梅宏,黃罡,趙海燕 等.一種以軟件體系結構為中心的網構軟件開發方法[J]. 中國科學(E輯),2006,36(10):1100-1126.
[21]常志明,毛新軍,齊治昌. 基于Agent的網構軟件構件模型及實現[J].軟件學報,2008,19(5):1113-1124.