郭紅康,趙 軍,徐 華
(1.寧夏大學 數(shù)學計算機學院 寧夏 銀川 750021;2.寧夏大學 經(jīng)濟管理學院,寧夏 銀川 750021
基于多視圖的面向Agent軟件設計模式分類方法
郭紅康1,趙軍2,徐華1
(1.寧夏大學 數(shù)學計算機學院 寧夏 銀川 750021;2.寧夏大學 經(jīng)濟管理學院,寧夏 銀川 750021
摘要:傳統(tǒng)軟件開發(fā)方法缺乏關于Agent的開發(fā)細節(jié),使得在開發(fā)多Agent系統(tǒng)時,對于一般性設計問題需要進行大量的重復性勞動,難以從過去的解決方案中受益,最終可能導致系統(tǒng)設計的不一致性、脆弱性和不易于跟蹤性等問題。為解決上述問題,提出一種多視圖的面向Agent軟件設計模式分類方法,該方法結(jié)合“自頂向下”的軟件開發(fā)過程和“自底向上”的Agent設計方法對Agent設計模式進行分類匯總。
關鍵詞:多視圖;Agent;設計模式;分類;重用
中圖分類號:TP181
文獻標志碼:碼:A
文章編號:號:2095-4824(2015)06-0045-07
收稿日期:2015-09-02
基金項目:國家自然科學基金資助項目(71461025)
作者簡介:郭紅康(1990-),女,寧夏西吉人,寧夏大學數(shù)學計算機學院碩士研究生。
Abstract:The traditional software development methods are lack of details about Agent's development. Thus, when developing a multi-agent system, it is difficult to benefit from the past schemes when there is lots of repeated work for general designs, which leads to the problems of inconsistency, vulnerability, and difficulty in tracking in the system design. To find solutions to the above problems, a multi-agent-oriented software design pattern based on multi-view is proposed. The proposed method combines the “top-down” software development process with the “bottom-up” design to subtotal the agent design patterns.
隨著Agent技術越來越多地被用于構(gòu)建復雜應用系統(tǒng),面向Agent系統(tǒng)設計問題也逐漸增加。軟件設計模式的概念已成功應用于面向?qū)ο蠓妒街?,以解決反復出現(xiàn)的設計問題。雖然設計模式存在著不同的概念,但都表達了在特定語境下具體問題的一般性可重用的解決方案。在Agent系統(tǒng)開發(fā)中,已有研究對Agent設計模式進行了識別和分類[1-3]。然而,大多數(shù)Agent設計模式反映的是面向?qū)ο蟮囊恍└拍?,如類、對象、繼承等[4]。這些都表明已有模式描述更多的是具體解決方案,而不是解決方案的核心,且沒有適當?shù)某橄髮哟?,使得設計者無法在特定語境下根據(jù)不同特性設計模式進行選擇,也不允許設計者對現(xiàn)有設計模式進行調(diào)整,以適應特殊的設計要求。
傳統(tǒng)的開發(fā)方法,如RUP(Rational United Process)、HAD(Hierarchical Development Architecture)等遵循“自頂向下”的開發(fā)策略,側(cè)重于整個軟件架構(gòu)相關體系的設計,采用目標驅(qū)動的方式將整體目標進行分解,直至分派到單個Agent上。但是上述方法缺乏對單個體Agent開發(fā)細節(jié)的關注,導致在開發(fā)多Agent系統(tǒng)時,對于一般性的設計問題仍然要進行大量的重復勞動,難以從過去的解決方案中受益,最終可能會出現(xiàn)系統(tǒng)設計的不一致性、脆弱性和貧乏的可跟蹤性。因此,引入一種“自底向上”的機制來彌補傳統(tǒng)開發(fā)方法的不足,使設計模式能夠清晰有效地闡述軟件開發(fā)經(jīng)驗,有利于提高軟件設計的重用性。
本文針對軟件設計模式和Agent設計中存在的問題,構(gòu)建針對Agent系統(tǒng)的設計過程框架,抽象出其設計過程中的設計模式,并提出一種多視圖的雙向分類方法來描述Agent設計模式,以便開發(fā)人員在Agent系統(tǒng)設計時選擇適當?shù)脑O計模式,提高開發(fā)效率,節(jié)省開發(fā)成本。
1設計模式
1.1面向 Agent軟件設計模式的概念
設計模式最早來源于建筑學,在 1990 年由 Erich Gamma 等人提出,當時主要用于提煉和記錄軟件開發(fā)人員或者文檔中多次出現(xiàn)的共性問題和經(jīng)過多次驗證的成功解,明確表達在特定語境下產(chǎn)生的、具有相似特點的問題以及相應的解決方案[5]。設計模式描述在人們周圍不斷重復發(fā)生的問題,以及該問題解決方案的核心,這樣人們就可以多次使用該方案而不必做重復的勞動。設計模式包含三個層面的內(nèi)容,如圖1所示。設計模式為人們提供了一套通用的設計詞匯和學習手段,是現(xiàn)有方法的一種補充。在面向?qū)ο笤O計模式研究的基礎上,進行面向Agent軟件設計模式的研究具有一定的基礎和優(yōu)勢,是面向代理的軟件設計工程(Agent-oriented software engineering, AOSE)領域特有的問題和設計實踐。其作為一種新的軟件開發(fā)泛型,將軟件系統(tǒng)看成由多個Agent構(gòu)成的系統(tǒng),適應于動態(tài)、開放、復雜、分布式的開發(fā)環(huán)境,把Agent的思想融入到軟件工程的各個階段,如分析階段、設計階段及實施階段的每個細節(jié)中,把復雜分布式系統(tǒng)抽象成Agent簇。AOSE將 Agent 作為軟件系統(tǒng)的基本運行單元,每個 Agent 都是一個自主的行為實體,Agent 之間通過結(jié)構(gòu)相關性和行為相關性組成多Agent系統(tǒng),多Agent系統(tǒng)運行在特定的環(huán)境中,環(huán)境的變化引起系統(tǒng)動作的執(zhí)行,動作的執(zhí)行又會進一步影響環(huán)境狀態(tài)[6]。
趙軍(1971-),男,寧夏銀川人,寧夏大學經(jīng)濟管理學院教授,博士,碩士研究生導師。
徐華(1987-),女,河南商丘人,寧夏大學數(shù)學計算機學院碩士研究生。
圖1 設計模式內(nèi)容
1.2面向Agent軟件設計模式描述模板
設計模式描述模板從多個側(cè)面反映一個模式的特征,為模式描述提供了一個指南,不恰當?shù)卦O計模式模板可能給設計模式的效用帶來不利影響,規(guī)范適當?shù)哪0鍖τ诖龠M開發(fā)者之間的交流,方便開發(fā)者在實際應用中選擇合適模式來解決自己的問題起著重要作用。越來越多的Agent設計模式用于分享AOSE經(jīng)驗,這些開發(fā)經(jīng)驗的分享有助于Agent系統(tǒng)的研究和發(fā)展。然而,已有模板對模式的描述不夠全面,而且對于具有相似性問題的模式描述不一致。因此,提出一個全面一致的模式描述模板,對提高軟件開發(fā)人員對模式的交流和理解能力至關重要。
Chacon(2000年)提出了兩個設計模式,但都沒有模板描述,而是采用連續(xù)的文本塊來描述模式。Tahara (1999年)描述了一組面向Agent的三元素模板,分別為目標、適用性和動機。盡管上述三元素模板解決了模式某些方面的問題,但是沒有解決方案、結(jié)果語境元素,且不反映Agent的技術概念。Sauvage采用一個8元素設計模式模板來描述模式,模板元素包括模式名稱、情景、動機、實例、解決方案、檢驗和相關模式,提出了同一設計模式模板不能適用于所有類別的Agent設計模式的問題,并用概念和實現(xiàn)替換動機來描述另一類模式,認為簡單地用問題、語境和動機描述設計模式已經(jīng)沒有明確的說服力。Weiss (2003年)提出一個與Alexandrian模式元素相似的5元素模板,即語境、問題、動機、解決方案和結(jié)果語境,該模式的價值在于定義了模式的主要組件,但沒有提出具體元素用于體現(xiàn)Agent技術的概念,并且假定相同的模板足以描述任何類型的面向Agent的設計模式。Lind(2002年)認為一個通用的模板是不足以描述Agent模式的,并指出由通用部分和特定視圖兩部分構(gòu)成的模式描述模板,通用部分的模板元素有名稱、別名、問題、動機、依賴性、動態(tài)性、屬性、實例、實現(xiàn)、已知應用、結(jié)果等,體系結(jié)構(gòu)的特定視圖部分元素包括資源限制、控制流、知識處理、推理能力、自主性、用戶交互、時間語境和決策制定。Malyankar(1999年)提出了一個Agent系統(tǒng)社會結(jié)構(gòu)模式模板,與Lind模板結(jié)構(gòu)一致。
從上述研究可以看出:(1)大多數(shù)現(xiàn)有的模板沒有體現(xiàn)Agent技術的概念,并且多數(shù)模板不具備明確表示Agent技術概念的元素。(2)大多數(shù)模板在已有模板元素基礎上引入或減少元素時缺乏依據(jù),使得很難組合不同模板元素應用到新的模式中。(3)許多提出的模板都是基于同一模板,可以適于描述所有類別Agent的假設,但用通用模板描述不同的設計模式,很容易導致模板元素的冗余或不足。(4)在不同的模板中使用相同的元素來表示不同特征。上述不足之處降低了面向Agent設計模式在描述不同模板時的表現(xiàn)力。因此,面向Agent設計模式描述模板首先應提出Agent技術的概念,然后圍繞模式的基本特征(如問題、語境、動機、解決方案、結(jié)果語境等)對不同類別的Agent模式展開描述,以促進這些模式之間的交流、調(diào)整、集成和整合。
基于上述問題,為更好地描述Agent的設計模式,本文結(jié)合已有Agent的設計模式描述模板屬性,具體方法如表1所示。
表1 Agent設計模式描述模板
2MAS軟件設計過程框架
2.1MAS設計可重用框架
框架在給定的范疇內(nèi)為一簇軟件抽象產(chǎn)物提供通用的結(jié)構(gòu)和行為,是一個可重用的體系結(jié)構(gòu),針對特定應用領域可以實現(xiàn)代碼重用。在具體的應用領域人們關注的不僅是MAS設計過程中對Agent的建模,而且能捕捉其領域本體,表示Agent之間的相互作用,更好地表現(xiàn)其智能行為。從某種程度上說,設計框架本質(zhì)上是一種設計方法的直觀體現(xiàn),與研究領域提出的Agent設計方法也不同,如人工智能領域的Gaia和BOD、軟件工程領域的MaSE和Tropos、智能機器人領域的Cassiopeia等,這些方法強調(diào)了不同應用的不同側(cè)重點。
PASSI(Process for Agent Societies Specification and Implementation)是一種從需求到代碼的MAS系統(tǒng)設計過程框架,整合了面向?qū)ο筌浖こ毯蚆AS的設計模型與理念[11]。在嵌入式機器人應用的理論和實驗研究中已取得了較大的進展,已成為視覺機器人中復雜應用的設計方法,并擴展到環(huán)境知識和本體的建模之中。此外,在信息系統(tǒng)設計中也取得了一定的成功,并且在復雜系統(tǒng)的建模與仿真領域也取得了一定成效。本文結(jié)合PASSI過程框架,給出了企業(yè)Agent軟件設計可重用過程框架,如圖2所示。
從圖2可以看出,本文提出的可重用框架模型包含六個過程模型,分別為需求模型、Agent組織模型、Agent實現(xiàn)模型、代碼模型、部署模型和規(guī)范庫/知識庫模型,是一個從問題域到解決方案域的循序漸進的設計過程,并通過編碼階段來完成整個Agent系統(tǒng)的建模與仿真。
(1)需求模型。該模型是系統(tǒng)需求中Agent和意圖方面的擬人化模型,該模型涉及四個階段。領域描述(Domain Description),即系統(tǒng)的功能描述,可用UML用例圖來描述;Agent識別,即對Agent的職責進行分離,可用UML包圖來表示;角色識別,即用UML類圖描述各Agent具有的功能及所承擔的角色的;任務說明,通過UML活動圖來描述各個Agent的職能。
(2)Agent組織模型。它涉及Agent之間的交互及其依賴關系。本體描述,即使用類圖和OCL(Object Constraint Language)約束來描述MAS中不同實體、概念及術語之間的關系;角色描述,用類圖來展示Agent扮演的角色,所涉及的任務及任務涉及的角色,交互能力和Agent間的依賴關系;協(xié)議描述,用順序圖描述Agent通信協(xié)議的語法,用協(xié)作圖描述Agent之間的交互協(xié)議。
(3)Agent實現(xiàn)模型。該模型是解決方案體系結(jié)構(gòu)中類和方法的實現(xiàn)模型,包括Multi-Agent體系結(jié)構(gòu)模型和Single-Agent體系結(jié)構(gòu)模型,主要包括三個階段,即Agent結(jié)構(gòu)定義、Agent行為描述、Agent間交互協(xié)作。
(4)代碼模型(Code Model)。該模型是解決方案在編碼階段的模型,需要兩步來完成。第一步,建立代碼重用庫,即可重用代碼的類庫和活動圖庫;第二步,確定代碼完成基準,即目標系統(tǒng)的源代碼。
(5)部署模型(Deployment Model)。該模型通過硬件處理單元配置系統(tǒng)各部件和處理單元之間遷移的模型,涉及部署配置,用部署圖來描述Agent在可用處理單元之間的分配和移動。
(6)規(guī)范庫/知識庫模型。該模型中的規(guī)范和知識用于約束Agent行為,在Agent智能性設計中起到重要作用,是一組行為規(guī)則。Agent受到多個層面規(guī)范的約束和影響,且約束常常是多個層面規(guī)范融合的結(jié)果,因此規(guī)范庫/知識庫的建立需要經(jīng)過規(guī)范的收集、分類分層和融合三個步驟來完成。
2.2可重用框架中的設計模式
關于Agent設計模式的研究已有了一定的進展,概念模式涉及實體組成部分的設計和相應的實現(xiàn)代碼,人們把Agent看作由Agent基類和一組任務類組成的計算機實體,包含結(jié)構(gòu)和行為兩個主要屬性。從討論中人們可以找到一組設計模式,相關描述如下:
(1)Agent組織結(jié)構(gòu)模式。在組織中,每個 Agent 扮演著特定角色,起著特定的作用,實施著相應行為[12]。該類型模式旨在解決構(gòu)建多 Agent 系統(tǒng)組織結(jié)構(gòu)方面存在的常見問題,如在社會關系網(wǎng)絡中,如何在Agent之間建立社會關系以及所形成的社會關系網(wǎng)絡拓撲結(jié)構(gòu)對問題解決和Agent組織的影響。
(2)Agent交互協(xié)作模式。由于 Agent 技術本身的特點,導致它們的交互協(xié)作要比傳統(tǒng)的面向?qū)ο髲碗s,由此也產(chǎn)生了許多新的問題[13]。該類型模式旨在解決如何實現(xiàn)、保持或方便 Agent 之間的交互,如何通過協(xié)調(diào)不同 Agent 之間的行為,從而達到消除沖突,提高系統(tǒng)運行性能和實現(xiàn)復雜問題合作求解的目的[14]。
(3)Agent協(xié)調(diào)模式。Malone將協(xié)調(diào)定義為組織行為之間依賴性的管理,而軟件工程則認為協(xié)調(diào)是一種最有效的管理MAS交互空間的方法,而Agent在完成任務時會產(chǎn)生復雜的交互,從而使得問題的解決變得困難,最有效的方法是將多Agent系統(tǒng)中處理協(xié)調(diào)問題的方法通用化。從設計角度對協(xié)調(diào)進行方法化時,要使Agent匯聚于協(xié)調(diào)模式上,并使這些模式能夠充分解決依賴性檢測和決策任務。
(4)單個Agent模式。Agent 如何感知外部環(huán)境、如何根據(jù)自身狀態(tài)執(zhí)行不同的動作 、Agent 與角色之間的對應關系都是Single-Agent內(nèi)部結(jié)構(gòu)應該解決的問題[15],該類型的設計模式就是用來解決Single-Agent內(nèi)部結(jié)構(gòu)設計中所存在的問題。
(5)規(guī)范庫/知識庫設計模式。規(guī)范通常表示為一組規(guī)則,經(jīng)過語義處理后代表了Agent的主觀特性,規(guī)范庫主要用于存儲Agent的行為規(guī)范,代表可利用的知識和可能的行為選擇[16]。由于規(guī)范的不同,即使在相同的環(huán)境背景下,Agent也可能有不同的選擇。規(guī)范模式正是處理Agent受到不同層級規(guī)范的約束時所執(zhí)行何種動作的問題,并把相應情景下Agent的行為規(guī)范存入規(guī)范庫中,以便下次遇到相同情景時直接采取行動,從而能夠有效提高Agent的智能性和解決問題的效率。
3基于多視圖的面向Agent的軟件設計模式分類方法
3.1基于軟件設計過程的Agent設計模式層次分類
面向Agent的分析與設計階段來源于軟件工程的生命周期。為了結(jié)合自頂向下和自底向上的方法來開發(fā)基于Agent的系統(tǒng),人們有必要理解Agent分析與設計過程中不同層次的抽象。MAS分析與設計和設計模式層次劃分如圖3所示。
從圖3可以看出,MAS系統(tǒng)分析與設計的最高層次為目標模型,目標模型是系統(tǒng)的全局視圖,用于描述系統(tǒng)的主要目標。系統(tǒng)分析層,也稱系統(tǒng)需求說明層,用于對系統(tǒng)中定義的角色及角色之間的關系進行分析。在系統(tǒng)分析的下一階段,Agent設計為設計的第一層。在這個層,Agent通過分解或聚合分析階段確定的不同角色進行定義,包括Agents的功能和領域知識需求。此外,Agents間的關系和交互也在該階段定義。設計的第二層為系統(tǒng)設計,也稱軟件結(jié)構(gòu)層,主要描述Agent系統(tǒng)的邏輯組織和系統(tǒng)構(gòu)建策略。設計的第三層為Agent結(jié)構(gòu)設計層,包括個體Agent結(jié)構(gòu)的設計,其內(nèi)部結(jié)構(gòu)是BDI、Layered或Reactive等代表Agent結(jié)構(gòu)和Agent組件間如何互聯(lián)的模型。設計的第三層是Agent實現(xiàn)層,包括Agent之間關系和交互協(xié)議的設計。
圖3 MAS分析與設計和設計模式層次劃分
3.2基于多視圖的面向Agent的軟件設計模式分類
結(jié)合2.2節(jié)和3.1節(jié),本文提出一種多視圖的Agent設計模式分類方法,如表2所示。自頂向下的分類視角來源于MAS系統(tǒng)分析與設計的過程,也代表了面向Agent分析與設計的不同層次,而自底向上的分類視角描述Agent設計的不同方面[16],為研究面向Agent的設計模式提供了框架。
為了方便人們在特定背景下選擇合適的設計模式對Agent進行分析設計,引入設計模式的目的是實現(xiàn)微觀設計[17]。本文在分析已有研究成果的基礎上,以Agent設計的不同方面為視點,對已有面向Agent相關設計模式進行歸納整理和分類總結(jié),以提高開發(fā)人員的開發(fā)效率,節(jié)省開發(fā)成本。多視圖Agent設計模式分類與歸并方法如表3所示。
4結(jié)束語
本文對Agent軟件的設計過程進行了描述,并提出了一種雙向的面向Agent的軟件設計模式分類方法。該方法一方面彌補了傳統(tǒng)設計方法缺乏對Agent設計細節(jié)關注的不足,有效結(jié)合了“自頂向下”和“自底向上”的設計思想,使得Agent的設計更加全面。同時,本文通過提取和應用現(xiàn)有設計模式,對Agent設計模式進行分類匯總,方便軟件開發(fā)者根據(jù)實際情況進行選擇,以提高軟件產(chǎn)品的開發(fā)效率,降低開發(fā)成本。由于篇幅有限,本文未對相應的Agent軟件設計模式進行模板描述,也沒有提供各個層面設計模式的典型應用供設計人員參考,但這些也是軟件設計人員在設計過程中需要充分考慮的方面。
表2 多視圖Agent設計模式分類
表3 面向Agent設計模式的分類歸并
[參考文獻]
[1]Aridor Y, Lange D B. Agent design patterns: elements of agent application design[C]// Second International Conference on Autonomous Agents, 1998:108-115.
[2]Weiss M. On the use of patterns in agent system design [J].Aois, 2002:16-19.
[3]Lind J .Patterns in agent-oriented software engineering[C]//Proceedings of the 3rd Int'l Workshop on Agent Oriented Software Engineering, 2003 :47-58 .
[4]Vanmeerbeeck G, Schaumont P, Vernalde S, et al. Hardware/software partitioning of embedded system in OCAPI-xl[C]//Proceedings of the Ninth Int. Symposium on Hardware/Software Codesign,2009:26-29.
[5]Wooldridge M, Jennings N R, Kinny D. The Gaia methodology for agent-oriented analysis and design[J].Autonomous Agents and Multi-Agent Systems, 2000, 3(3):285-312.
[6]Gamma E, Helm R, Johnson R, et al. Design patterns: Elements of reusable object-oriented software[J].Oreilly Media, 1995(2):241-276.
[7]Sandra C. Hayden Christina Carrick Qiang Yang. Architectural design patterns for multiagent coordination[C]//Proceedings of Int. Conf. on Autonomous Agents Agents', 1999.
[8]Gamma E,Helm R,Johnson R, et al. Design patterns: Elements of reusable object-oriented software[M].Addison-Wesley Longman Publishing Co., Inc., 1995.
[9]Cossentino M, Potts C. A case tool supported methodology for the design of multi-agent systems[C]//Software Engineering Research and Practice, 2002.
[10]毛新軍,常志明,王戟,等.面向 Agent 的軟件工程:現(xiàn)狀和挑戰(zhàn)[J].計算機研究與發(fā)展, 2006, 43(10):1782-1789.
[11]Chella A, Cossentino M, Pirrone R, et al.A multi-agent distributed architecture for a museum guide robot[C]//Proceedings of the GLR worshop at the 2001 AI*IA, 2001.
[12]薛霄.面向 Agent 的軟件設計開發(fā)方法[M].北京:電子工業(yè)出版社, 2009.
[13]毛新軍.面向主體的軟件開發(fā)方法[M].北京:清華大學出版社, 2005.
[14]廖守億,戴金海.復雜適應系統(tǒng)及基Agent的建模與仿真方法[J].系統(tǒng)仿真學報, 2004, 16(1): 113-117.
[15]Li S, Colson V, Lejeune P, et al. Agent-based modelling of the spatial pattern of leisure visitation in forests: A case study in Wallonia, south Belgium[J].Environmental Modelling and Software, 2015, 71:111-125.
[16]Chella A, Cossentino M, Gaglio S, et al. Agent-oriented software patterns for rapid and affordable robot programming[J].Journal of Systems & Software, 2010, 83(4):557-573.
[17]Lucena C, Nunes I. Contributions to the emergence and consolidation of agent-oriented software engineering[J].Journal of Systems & Software, 2013, 86(4):890-904.
Agent-Oriented Software Design Pattern Classification
Based on Multi-View
Guo Hongkang1,Zhao Jun2,Xu Hua1
(1.SchoolofMathematicsandComputerScience,NingxiaUniversity,Yinchuan,Ningxia750021,China;
2.SchoolofEconomicsandManagement,NingxiaUniversity,Yinchuan,Ningxia750021,China)
Key Words:multi-view; agent;design pattern; classification;reuse
(責任編輯:張凱兵)