郭紅康,趙 軍,徐 華
(1.寧夏大學 數學計算機學院 寧夏 銀川 750021;2.寧夏大學 經濟管理學院,寧夏 銀川 750021
基于多視圖的面向Agent軟件設計模式分類方法
郭紅康1,趙軍2,徐華1
(1.寧夏大學 數學計算機學院 寧夏 銀川 750021;2.寧夏大學 經濟管理學院,寧夏 銀川 750021
摘要:傳統軟件開發方法缺乏關于Agent的開發細節,使得在開發多Agent系統時,對于一般性設計問題需要進行大量的重復性勞動,難以從過去的解決方案中受益,最終可能導致系統設計的不一致性、脆弱性和不易于跟蹤性等問題。為解決上述問題,提出一種多視圖的面向Agent軟件設計模式分類方法,該方法結合“自頂向下”的軟件開發過程和“自底向上”的Agent設計方法對Agent設計模式進行分類匯總。
關鍵詞:多視圖;Agent;設計模式;分類;重用
中圖分類號:TP181
文獻標志碼:碼:A
文章編號:號:2095-4824(2015)06-0045-07
收稿日期:2015-09-02
基金項目:國家自然科學基金資助項目(71461025)
作者簡介:郭紅康(1990-),女,寧夏西吉人,寧夏大學數學計算機學院碩士研究生。
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技術越來越多地被用于構建復雜應用系統,面向Agent系統設計問題也逐漸增加。軟件設計模式的概念已成功應用于面向對象范式中,以解決反復出現的設計問題。雖然設計模式存在著不同的概念,但都表達了在特定語境下具體問題的一般性可重用的解決方案。在Agent系統開發中,已有研究對Agent設計模式進行了識別和分類[1-3]。然而,大多數Agent設計模式反映的是面向對象的一些概念,如類、對象、繼承等[4]。這些都表明已有模式描述更多的是具體解決方案,而不是解決方案的核心,且沒有適當的抽象層次,使得設計者無法在特定語境下根據不同特性設計模式進行選擇,也不允許設計者對現有設計模式進行調整,以適應特殊的設計要求。
傳統的開發方法,如RUP(Rational United Process)、HAD(Hierarchical Development Architecture)等遵循“自頂向下”的開發策略,側重于整個軟件架構相關體系的設計,采用目標驅動的方式將整體目標進行分解,直至分派到單個Agent上。但是上述方法缺乏對單個體Agent開發細節的關注,導致在開發多Agent系統時,對于一般性的設計問題仍然要進行大量的重復勞動,難以從過去的解決方案中受益,最終可能會出現系統設計的不一致性、脆弱性和貧乏的可跟蹤性。因此,引入一種“自底向上”的機制來彌補傳統開發方法的不足,使設計模式能夠清晰有效地闡述軟件開發經驗,有利于提高軟件設計的重用性。
本文針對軟件設計模式和Agent設計中存在的問題,構建針對Agent系統的設計過程框架,抽象出其設計過程中的設計模式,并提出一種多視圖的雙向分類方法來描述Agent設計模式,以便開發人員在Agent系統設計時選擇適當的設計模式,提高開發效率,節省開發成本。
1設計模式
1.1面向 Agent軟件設計模式的概念
設計模式最早來源于建筑學,在 1990 年由 Erich Gamma 等人提出,當時主要用于提煉和記錄軟件開發人員或者文檔中多次出現的共性問題和經過多次驗證的成功解,明確表達在特定語境下產生的、具有相似特點的問題以及相應的解決方案[5]。設計模式描述在人們周圍不斷重復發生的問題,以及該問題解決方案的核心,這樣人們就可以多次使用該方案而不必做重復的勞動。設計模式包含三個層面的內容,如圖1所示。設計模式為人們提供了一套通用的設計詞匯和學習手段,是現有方法的一種補充。在面向對象設計模式研究的基礎上,進行面向Agent軟件設計模式的研究具有一定的基礎和優勢,是面向代理的軟件設計工程(Agent-oriented software engineering, AOSE)領域特有的問題和設計實踐。其作為一種新的軟件開發泛型,將軟件系統看成由多個Agent構成的系統,適應于動態、開放、復雜、分布式的開發環境,把Agent的思想融入到軟件工程的各個階段,如分析階段、設計階段及實施階段的每個細節中,把復雜分布式系統抽象成Agent簇。AOSE將 Agent 作為軟件系統的基本運行單元,每個 Agent 都是一個自主的行為實體,Agent 之間通過結構相關性和行為相關性組成多Agent系統,多Agent系統運行在特定的環境中,環境的變化引起系統動作的執行,動作的執行又會進一步影響環境狀態[6]。
趙軍(1971-),男,寧夏銀川人,寧夏大學經濟管理學院教授,博士,碩士研究生導師。
徐華(1987-),女,河南商丘人,寧夏大學數學計算機學院碩士研究生。

圖1 設計模式內容
1.2面向Agent軟件設計模式描述模板
設計模式描述模板從多個側面反映一個模式的特征,為模式描述提供了一個指南,不恰當地設計模式模板可能給設計模式的效用帶來不利影響,規范適當的模板對于促進開發者之間的交流,方便開發者在實際應用中選擇合適模式來解決自己的問題起著重要作用。越來越多的Agent設計模式用于分享AOSE經驗,這些開發經驗的分享有助于Agent系統的研究和發展。然而,已有模板對模式的描述不夠全面,而且對于具有相似性問題的模式描述不一致。因此,提出一個全面一致的模式描述模板,對提高軟件開發人員對模式的交流和理解能力至關重要。
Chacon(2000年)提出了兩個設計模式,但都沒有模板描述,而是采用連續的文本塊來描述模式。Tahara (1999年)描述了一組面向Agent的三元素模板,分別為目標、適用性和動機。盡管上述三元素模板解決了模式某些方面的問題,但是沒有解決方案、結果語境元素,且不反映Agent的技術概念。Sauvage采用一個8元素設計模式模板來描述模式,模板元素包括模式名稱、情景、動機、實例、解決方案、檢驗和相關模式,提出了同一設計模式模板不能適用于所有類別的Agent設計模式的問題,并用概念和實現替換動機來描述另一類模式,認為簡單地用問題、語境和動機描述設計模式已經沒有明確的說服力。Weiss (2003年)提出一個與Alexandrian模式元素相似的5元素模板,即語境、問題、動機、解決方案和結果語境,該模式的價值在于定義了模式的主要組件,但沒有提出具體元素用于體現Agent技術的概念,并且假定相同的模板足以描述任何類型的面向Agent的設計模式。Lind(2002年)認為一個通用的模板是不足以描述Agent模式的,并指出由通用部分和特定視圖兩部分構成的模式描述模板,通用部分的模板元素有名稱、別名、問題、動機、依賴性、動態性、屬性、實例、實現、已知應用、結果等,體系結構的特定視圖部分元素包括資源限制、控制流、知識處理、推理能力、自主性、用戶交互、時間語境和決策制定。Malyankar(1999年)提出了一個Agent系統社會結構模式模板,與Lind模板結構一致。
從上述研究可以看出:(1)大多數現有的模板沒有體現Agent技術的概念,并且多數模板不具備明確表示Agent技術概念的元素。(2)大多數模板在已有模板元素基礎上引入或減少元素時缺乏依據,使得很難組合不同模板元素應用到新的模式中。(3)許多提出的模板都是基于同一模板,可以適于描述所有類別Agent的假設,但用通用模板描述不同的設計模式,很容易導致模板元素的冗余或不足。(4)在不同的模板中使用相同的元素來表示不同特征。上述不足之處降低了面向Agent設計模式在描述不同模板時的表現力。因此,面向Agent設計模式描述模板首先應提出Agent技術的概念,然后圍繞模式的基本特征(如問題、語境、動機、解決方案、結果語境等)對不同類別的Agent模式展開描述,以促進這些模式之間的交流、調整、集成和整合。
基于上述問題,為更好地描述Agent的設計模式,本文結合已有Agent的設計模式描述模板屬性,具體方法如表1所示。

表1 Agent設計模式描述模板
2MAS軟件設計過程框架
2.1MAS設計可重用框架
框架在給定的范疇內為一簇軟件抽象產物提供通用的結構和行為,是一個可重用的體系結構,針對特定應用領域可以實現代碼重用。在具體的應用領域人們關注的不僅是MAS設計過程中對Agent的建模,而且能捕捉其領域本體,表示Agent之間的相互作用,更好地表現其智能行為。從某種程度上說,設計框架本質上是一種設計方法的直觀體現,與研究領域提出的Agent設計方法也不同,如人工智能領域的Gaia和BOD、軟件工程領域的MaSE和Tropos、智能機器人領域的Cassiopeia等,這些方法強調了不同應用的不同側重點。
PASSI(Process for Agent Societies Specification and Implementation)是一種從需求到代碼的MAS系統設計過程框架,整合了面向對象軟件工程和MAS的設計模型與理念[11]。在嵌入式機器人應用的理論和實驗研究中已取得了較大的進展,已成為視覺機器人中復雜應用的設計方法,并擴展到環境知識和本體的建模之中。此外,在信息系統設計中也取得了一定的成功,并且在復雜系統的建模與仿真領域也取得了一定成效。本文結合PASSI過程框架,給出了企業Agent軟件設計可重用過程框架,如圖2所示。
從圖2可以看出,本文提出的可重用框架模型包含六個過程模型,分別為需求模型、Agent組織模型、Agent實現模型、代碼模型、部署模型和規范庫/知識庫模型,是一個從問題域到解決方案域的循序漸進的設計過程,并通過編碼階段來完成整個Agent系統的建模與仿真。
(1)需求模型。該模型是系統需求中Agent和意圖方面的擬人化模型,該模型涉及四個階段。領域描述(Domain Description),即系統的功能描述,可用UML用例圖來描述;Agent識別,即對Agent的職責進行分離,可用UML包圖來表示;角色識別,即用UML類圖描述各Agent具有的功能及所承擔的角色的;任務說明,通過UML活動圖來描述各個Agent的職能。
(2)Agent組織模型。它涉及Agent之間的交互及其依賴關系。本體描述,即使用類圖和OCL(Object Constraint Language)約束來描述MAS中不同實體、概念及術語之間的關系;角色描述,用類圖來展示Agent扮演的角色,所涉及的任務及任務涉及的角色,交互能力和Agent間的依賴關系;協議描述,用順序圖描述Agent通信協議的語法,用協作圖描述Agent之間的交互協議。
(3)Agent實現模型。該模型是解決方案體系結構中類和方法的實現模型,包括Multi-Agent體系結構模型和Single-Agent體系結構模型,主要包括三個階段,即Agent結構定義、Agent行為描述、Agent間交互協作。
(4)代碼模型(Code Model)。該模型是解決方案在編碼階段的模型,需要兩步來完成。第一步,建立代碼重用庫,即可重用代碼的類庫和活動圖庫;第二步,確定代碼完成基準,即目標系統的源代碼。
(5)部署模型(Deployment Model)。該模型通過硬件處理單元配置系統各部件和處理單元之間遷移的模型,涉及部署配置,用部署圖來描述Agent在可用處理單元之間的分配和移動。
(6)規范庫/知識庫模型。該模型中的規范和知識用于約束Agent行為,在Agent智能性設計中起到重要作用,是一組行為規則。Agent受到多個層面規范的約束和影響,且約束常常是多個層面規范融合的結果,因此規范庫/知識庫的建立需要經過規范的收集、分類分層和融合三個步驟來完成。
2.2可重用框架中的設計模式
關于Agent設計模式的研究已有了一定的進展,概念模式涉及實體組成部分的設計和相應的實現代碼,人們把Agent看作由Agent基類和一組任務類組成的計算機實體,包含結構和行為兩個主要屬性。從討論中人們可以找到一組設計模式,相關描述如下:
(1)Agent組織結構模式。在組織中,每個 Agent 扮演著特定角色,起著特定的作用,實施著相應行為[12]。該類型模式旨在解決構建多 Agent 系統組織結構方面存在的常見問題,如在社會關系網絡中,如何在Agent之間建立社會關系以及所形成的社會關系網絡拓撲結構對問題解決和Agent組織的影響。
(2)Agent交互協作模式。由于 Agent 技術本身的特點,導致它們的交互協作要比傳統的面向對象復雜,由此也產生了許多新的問題[13]。該類型模式旨在解決如何實現、保持或方便 Agent 之間的交互,如何通過協調不同 Agent 之間的行為,從而達到消除沖突,提高系統運行性能和實現復雜問題合作求解的目的[14]。
(3)Agent協調模式。Malone將協調定義為組織行為之間依賴性的管理,而軟件工程則認為協調是一種最有效的管理MAS交互空間的方法,而Agent在完成任務時會產生復雜的交互,從而使得問題的解決變得困難,最有效的方法是將多Agent系統中處理協調問題的方法通用化。從設計角度對協調進行方法化時,要使Agent匯聚于協調模式上,并使這些模式能夠充分解決依賴性檢測和決策任務。
(4)單個Agent模式。Agent 如何感知外部環境、如何根據自身狀態執行不同的動作 、Agent 與角色之間的對應關系都是Single-Agent內部結構應該解決的問題[15],該類型的設計模式就是用來解決Single-Agent內部結構設計中所存在的問題。
(5)規范庫/知識庫設計模式。規范通常表示為一組規則,經過語義處理后代表了Agent的主觀特性,規范庫主要用于存儲Agent的行為規范,代表可利用的知識和可能的行為選擇[16]。由于規范的不同,即使在相同的環境背景下,Agent也可能有不同的選擇。規范模式正是處理Agent受到不同層級規范的約束時所執行何種動作的問題,并把相應情景下Agent的行為規范存入規范庫中,以便下次遇到相同情景時直接采取行動,從而能夠有效提高Agent的智能性和解決問題的效率。
3基于多視圖的面向Agent的軟件設計模式分類方法
3.1基于軟件設計過程的Agent設計模式層次分類
面向Agent的分析與設計階段來源于軟件工程的生命周期。為了結合自頂向下和自底向上的方法來開發基于Agent的系統,人們有必要理解Agent分析與設計過程中不同層次的抽象。MAS分析與設計和設計模式層次劃分如圖3所示。
從圖3可以看出,MAS系統分析與設計的最高層次為目標模型,目標模型是系統的全局視圖,用于描述系統的主要目標。系統分析層,也稱系統需求說明層,用于對系統中定義的角色及角色之間的關系進行分析。在系統分析的下一階段,Agent設計為設計的第一層。在這個層,Agent通過分解或聚合分析階段確定的不同角色進行定義,包括Agents的功能和領域知識需求。此外,Agents間的關系和交互也在該階段定義。設計的第二層為系統設計,也稱軟件結構層,主要描述Agent系統的邏輯組織和系統構建策略。設計的第三層為Agent結構設計層,包括個體Agent結構的設計,其內部結構是BDI、Layered或Reactive等代表Agent結構和Agent組件間如何互聯的模型。設計的第三層是Agent實現層,包括Agent之間關系和交互協議的設計。

圖3 MAS分析與設計和設計模式層次劃分
3.2基于多視圖的面向Agent的軟件設計模式分類
結合2.2節和3.1節,本文提出一種多視圖的Agent設計模式分類方法,如表2所示。自頂向下的分類視角來源于MAS系統分析與設計的過程,也代表了面向Agent分析與設計的不同層次,而自底向上的分類視角描述Agent設計的不同方面[16],為研究面向Agent的設計模式提供了框架。
為了方便人們在特定背景下選擇合適的設計模式對Agent進行分析設計,引入設計模式的目的是實現微觀設計[17]。本文在分析已有研究成果的基礎上,以Agent設計的不同方面為視點,對已有面向Agent相關設計模式進行歸納整理和分類總結,以提高開發人員的開發效率,節省開發成本。多視圖Agent設計模式分類與歸并方法如表3所示。
4結束語
本文對Agent軟件的設計過程進行了描述,并提出了一種雙向的面向Agent的軟件設計模式分類方法。該方法一方面彌補了傳統設計方法缺乏對Agent設計細節關注的不足,有效結合了“自頂向下”和“自底向上”的設計思想,使得Agent的設計更加全面。同時,本文通過提取和應用現有設計模式,對Agent設計模式進行分類匯總,方便軟件開發者根據實際情況進行選擇,以提高軟件產品的開發效率,降低開發成本。由于篇幅有限,本文未對相應的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 的軟件工程:現狀和挑戰[J].計算機研究與發展, 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 的軟件設計開發方法[M].北京:電子工業出版社, 2009.
[13]毛新軍.面向主體的軟件開發方法[M].北京:清華大學出版社, 2005.
[14]廖守億,戴金海.復雜適應系統及基Agent的建模與仿真方法[J].系統仿真學報, 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
(責任編輯:張凱兵)