郭紅康,趙 軍,徐 華
(1.寧夏大學(xué) 數(shù)學(xué)計(jì)算機(jī)學(xué)院 寧夏 銀川 750021;2.寧夏大學(xué) 經(jīng)濟(jì)管理學(xué)院,寧夏 銀川 750021
基于多視圖的面向Agent軟件設(shè)計(jì)模式分類(lèi)方法
郭紅康1,趙軍2,徐華1
(1.寧夏大學(xué) 數(shù)學(xué)計(jì)算機(jī)學(xué)院 寧夏 銀川 750021;2.寧夏大學(xué) 經(jīng)濟(jì)管理學(xué)院,寧夏 銀川 750021
摘要:傳統(tǒng)軟件開(kāi)發(fā)方法缺乏關(guān)于Agent的開(kāi)發(fā)細(xì)節(jié),使得在開(kāi)發(fā)多Agent系統(tǒng)時(shí),對(duì)于一般性設(shè)計(jì)問(wèn)題需要進(jìn)行大量的重復(fù)性勞動(dòng),難以從過(guò)去的解決方案中受益,最終可能導(dǎo)致系統(tǒng)設(shè)計(jì)的不一致性、脆弱性和不易于跟蹤性等問(wèn)題。為解決上述問(wèn)題,提出一種多視圖的面向Agent軟件設(shè)計(jì)模式分類(lèi)方法,該方法結(jié)合“自頂向下”的軟件開(kāi)發(fā)過(guò)程和“自底向上”的Agent設(shè)計(jì)方法對(duì)Agent設(shè)計(jì)模式進(jìn)行分類(lèi)匯總。
關(guān)鍵詞:多視圖;Agent;設(shè)計(jì)模式;分類(lèi);重用
中圖分類(lèi)號(hào):TP181
文獻(xiàn)標(biāo)志碼:碼:A
文章編號(hào):號(hào):2095-4824(2015)06-0045-07
收稿日期:2015-09-02
基金項(xiàng)目:國(guó)家自然科學(xué)基金資助項(xiàng)目(71461025)
作者簡(jiǎn)介:郭紅康(1990-),女,寧夏西吉人,寧夏大學(xué)數(shù)學(xué)計(jì)算機(jī)學(xué)院碩士研究生。
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技術(shù)越來(lái)越多地被用于構(gòu)建復(fù)雜應(yīng)用系統(tǒng),面向Agent系統(tǒng)設(shè)計(jì)問(wèn)題也逐漸增加。軟件設(shè)計(jì)模式的概念已成功應(yīng)用于面向?qū)ο蠓妒街校越鉀Q反復(fù)出現(xiàn)的設(shè)計(jì)問(wèn)題。雖然設(shè)計(jì)模式存在著不同的概念,但都表達(dá)了在特定語(yǔ)境下具體問(wèn)題的一般性可重用的解決方案。在Agent系統(tǒng)開(kāi)發(fā)中,已有研究對(duì)Agent設(shè)計(jì)模式進(jìn)行了識(shí)別和分類(lèi)[1-3]。然而,大多數(shù)Agent設(shè)計(jì)模式反映的是面向?qū)ο蟮囊恍└拍?,如?lèi)、對(duì)象、繼承等[4]。這些都表明已有模式描述更多的是具體解決方案,而不是解決方案的核心,且沒(méi)有適當(dāng)?shù)某橄髮哟?,使得設(shè)計(jì)者無(wú)法在特定語(yǔ)境下根據(jù)不同特性設(shè)計(jì)模式進(jìn)行選擇,也不允許設(shè)計(jì)者對(duì)現(xiàn)有設(shè)計(jì)模式進(jìn)行調(diào)整,以適應(yīng)特殊的設(shè)計(jì)要求。
傳統(tǒng)的開(kāi)發(fā)方法,如RUP(Rational United Process)、HAD(Hierarchical Development Architecture)等遵循“自頂向下”的開(kāi)發(fā)策略,側(cè)重于整個(gè)軟件架構(gòu)相關(guān)體系的設(shè)計(jì),采用目標(biāo)驅(qū)動(dòng)的方式將整體目標(biāo)進(jìn)行分解,直至分派到單個(gè)Agent上。但是上述方法缺乏對(duì)單個(gè)體Agent開(kāi)發(fā)細(xì)節(jié)的關(guān)注,導(dǎo)致在開(kāi)發(fā)多Agent系統(tǒng)時(shí),對(duì)于一般性的設(shè)計(jì)問(wèn)題仍然要進(jìn)行大量的重復(fù)勞動(dòng),難以從過(guò)去的解決方案中受益,最終可能會(huì)出現(xiàn)系統(tǒng)設(shè)計(jì)的不一致性、脆弱性和貧乏的可跟蹤性。因此,引入一種“自底向上”的機(jī)制來(lái)彌補(bǔ)傳統(tǒng)開(kāi)發(fā)方法的不足,使設(shè)計(jì)模式能夠清晰有效地闡述軟件開(kāi)發(fā)經(jīng)驗(yàn),有利于提高軟件設(shè)計(jì)的重用性。
本文針對(duì)軟件設(shè)計(jì)模式和Agent設(shè)計(jì)中存在的問(wèn)題,構(gòu)建針對(duì)Agent系統(tǒng)的設(shè)計(jì)過(guò)程框架,抽象出其設(shè)計(jì)過(guò)程中的設(shè)計(jì)模式,并提出一種多視圖的雙向分類(lèi)方法來(lái)描述Agent設(shè)計(jì)模式,以便開(kāi)發(fā)人員在Agent系統(tǒng)設(shè)計(jì)時(shí)選擇適當(dāng)?shù)脑O(shè)計(jì)模式,提高開(kāi)發(fā)效率,節(jié)省開(kāi)發(fā)成本。
1設(shè)計(jì)模式
1.1面向 Agent軟件設(shè)計(jì)模式的概念
設(shè)計(jì)模式最早來(lái)源于建筑學(xué),在 1990 年由 Erich Gamma 等人提出,當(dāng)時(shí)主要用于提煉和記錄軟件開(kāi)發(fā)人員或者文檔中多次出現(xiàn)的共性問(wèn)題和經(jīng)過(guò)多次驗(yàn)證的成功解,明確表達(dá)在特定語(yǔ)境下產(chǎn)生的、具有相似特點(diǎn)的問(wèn)題以及相應(yīng)的解決方案[5]。設(shè)計(jì)模式描述在人們周?chē)粩嘀貜?fù)發(fā)生的問(wèn)題,以及該問(wèn)題解決方案的核心,這樣人們就可以多次使用該方案而不必做重復(fù)的勞動(dòng)。設(shè)計(jì)模式包含三個(gè)層面的內(nèi)容,如圖1所示。設(shè)計(jì)模式為人們提供了一套通用的設(shè)計(jì)詞匯和學(xué)習(xí)手段,是現(xiàn)有方法的一種補(bǔ)充。在面向?qū)ο笤O(shè)計(jì)模式研究的基礎(chǔ)上,進(jìn)行面向Agent軟件設(shè)計(jì)模式的研究具有一定的基礎(chǔ)和優(yōu)勢(shì),是面向代理的軟件設(shè)計(jì)工程(Agent-oriented software engineering, AOSE)領(lǐng)域特有的問(wèn)題和設(shè)計(jì)實(shí)踐。其作為一種新的軟件開(kāi)發(fā)泛型,將軟件系統(tǒng)看成由多個(gè)Agent構(gòu)成的系統(tǒng),適應(yīng)于動(dòng)態(tài)、開(kāi)放、復(fù)雜、分布式的開(kāi)發(fā)環(huán)境,把Agent的思想融入到軟件工程的各個(gè)階段,如分析階段、設(shè)計(jì)階段及實(shí)施階段的每個(gè)細(xì)節(jié)中,把復(fù)雜分布式系統(tǒng)抽象成Agent簇。AOSE將 Agent 作為軟件系統(tǒng)的基本運(yùn)行單元,每個(gè) Agent 都是一個(gè)自主的行為實(shí)體,Agent 之間通過(guò)結(jié)構(gòu)相關(guān)性和行為相關(guān)性組成多Agent系統(tǒng),多Agent系統(tǒng)運(yùn)行在特定的環(huán)境中,環(huán)境的變化引起系統(tǒng)動(dòng)作的執(zhí)行,動(dòng)作的執(zhí)行又會(huì)進(jìn)一步影響環(huán)境狀態(tài)[6]。
趙軍(1971-),男,寧夏銀川人,寧夏大學(xué)經(jīng)濟(jì)管理學(xué)院教授,博士,碩士研究生導(dǎo)師。
徐華(1987-),女,河南商丘人,寧夏大學(xué)數(shù)學(xué)計(jì)算機(jī)學(xué)院碩士研究生。
圖1 設(shè)計(jì)模式內(nèi)容
1.2面向Agent軟件設(shè)計(jì)模式描述模板
設(shè)計(jì)模式描述模板從多個(gè)側(cè)面反映一個(gè)模式的特征,為模式描述提供了一個(gè)指南,不恰當(dāng)?shù)卦O(shè)計(jì)模式模板可能給設(shè)計(jì)模式的效用帶來(lái)不利影響,規(guī)范適當(dāng)?shù)哪0鍖?duì)于促進(jìn)開(kāi)發(fā)者之間的交流,方便開(kāi)發(fā)者在實(shí)際應(yīng)用中選擇合適模式來(lái)解決自己的問(wèn)題起著重要作用。越來(lái)越多的Agent設(shè)計(jì)模式用于分享AOSE經(jīng)驗(yàn),這些開(kāi)發(fā)經(jīng)驗(yàn)的分享有助于Agent系統(tǒng)的研究和發(fā)展。然而,已有模板對(duì)模式的描述不夠全面,而且對(duì)于具有相似性問(wèn)題的模式描述不一致。因此,提出一個(gè)全面一致的模式描述模板,對(duì)提高軟件開(kāi)發(fā)人員對(duì)模式的交流和理解能力至關(guān)重要。
Chacon(2000年)提出了兩個(gè)設(shè)計(jì)模式,但都沒(méi)有模板描述,而是采用連續(xù)的文本塊來(lái)描述模式。Tahara (1999年)描述了一組面向Agent的三元素模板,分別為目標(biāo)、適用性和動(dòng)機(jī)。盡管上述三元素模板解決了模式某些方面的問(wèn)題,但是沒(méi)有解決方案、結(jié)果語(yǔ)境元素,且不反映Agent的技術(shù)概念。Sauvage采用一個(gè)8元素設(shè)計(jì)模式模板來(lái)描述模式,模板元素包括模式名稱(chēng)、情景、動(dòng)機(jī)、實(shí)例、解決方案、檢驗(yàn)和相關(guān)模式,提出了同一設(shè)計(jì)模式模板不能適用于所有類(lèi)別的Agent設(shè)計(jì)模式的問(wèn)題,并用概念和實(shí)現(xiàn)替換動(dòng)機(jī)來(lái)描述另一類(lèi)模式,認(rèn)為簡(jiǎn)單地用問(wèn)題、語(yǔ)境和動(dòng)機(jī)描述設(shè)計(jì)模式已經(jīng)沒(méi)有明確的說(shuō)服力。Weiss (2003年)提出一個(gè)與Alexandrian模式元素相似的5元素模板,即語(yǔ)境、問(wèn)題、動(dòng)機(jī)、解決方案和結(jié)果語(yǔ)境,該模式的價(jià)值在于定義了模式的主要組件,但沒(méi)有提出具體元素用于體現(xiàn)Agent技術(shù)的概念,并且假定相同的模板足以描述任何類(lèi)型的面向Agent的設(shè)計(jì)模式。Lind(2002年)認(rèn)為一個(gè)通用的模板是不足以描述Agent模式的,并指出由通用部分和特定視圖兩部分構(gòu)成的模式描述模板,通用部分的模板元素有名稱(chēng)、別名、問(wèn)題、動(dòng)機(jī)、依賴(lài)性、動(dòng)態(tài)性、屬性、實(shí)例、實(shí)現(xiàn)、已知應(yīng)用、結(jié)果等,體系結(jié)構(gòu)的特定視圖部分元素包括資源限制、控制流、知識(shí)處理、推理能力、自主性、用戶(hù)交互、時(shí)間語(yǔ)境和決策制定。Malyankar(1999年)提出了一個(gè)Agent系統(tǒng)社會(huì)結(jié)構(gòu)模式模板,與Lind模板結(jié)構(gòu)一致。
從上述研究可以看出:(1)大多數(shù)現(xiàn)有的模板沒(méi)有體現(xiàn)Agent技術(shù)的概念,并且多數(shù)模板不具備明確表示Agent技術(shù)概念的元素。(2)大多數(shù)模板在已有模板元素基礎(chǔ)上引入或減少元素時(shí)缺乏依據(jù),使得很難組合不同模板元素應(yīng)用到新的模式中。(3)許多提出的模板都是基于同一模板,可以適于描述所有類(lèi)別Agent的假設(shè),但用通用模板描述不同的設(shè)計(jì)模式,很容易導(dǎo)致模板元素的冗余或不足。(4)在不同的模板中使用相同的元素來(lái)表示不同特征。上述不足之處降低了面向Agent設(shè)計(jì)模式在描述不同模板時(shí)的表現(xiàn)力。因此,面向Agent設(shè)計(jì)模式描述模板首先應(yīng)提出Agent技術(shù)的概念,然后圍繞模式的基本特征(如問(wèn)題、語(yǔ)境、動(dòng)機(jī)、解決方案、結(jié)果語(yǔ)境等)對(duì)不同類(lèi)別的Agent模式展開(kāi)描述,以促進(jìn)這些模式之間的交流、調(diào)整、集成和整合。
基于上述問(wèn)題,為更好地描述Agent的設(shè)計(jì)模式,本文結(jié)合已有Agent的設(shè)計(jì)模式描述模板屬性,具體方法如表1所示。
表1 Agent設(shè)計(jì)模式描述模板
2MAS軟件設(shè)計(jì)過(guò)程框架
2.1MAS設(shè)計(jì)可重用框架
框架在給定的范疇內(nèi)為一簇軟件抽象產(chǎn)物提供通用的結(jié)構(gòu)和行為,是一個(gè)可重用的體系結(jié)構(gòu),針對(duì)特定應(yīng)用領(lǐng)域可以實(shí)現(xiàn)代碼重用。在具體的應(yīng)用領(lǐng)域人們關(guān)注的不僅是MAS設(shè)計(jì)過(guò)程中對(duì)Agent的建模,而且能捕捉其領(lǐng)域本體,表示Agent之間的相互作用,更好地表現(xiàn)其智能行為。從某種程度上說(shuō),設(shè)計(jì)框架本質(zhì)上是一種設(shè)計(jì)方法的直觀體現(xiàn),與研究領(lǐng)域提出的Agent設(shè)計(jì)方法也不同,如人工智能領(lǐng)域的Gaia和BOD、軟件工程領(lǐng)域的MaSE和Tropos、智能機(jī)器人領(lǐng)域的Cassiopeia等,這些方法強(qiáng)調(diào)了不同應(yīng)用的不同側(cè)重點(diǎn)。
PASSI(Process for Agent Societies Specification and Implementation)是一種從需求到代碼的MAS系統(tǒng)設(shè)計(jì)過(guò)程框架,整合了面向?qū)ο筌浖こ毯蚆AS的設(shè)計(jì)模型與理念[11]。在嵌入式機(jī)器人應(yīng)用的理論和實(shí)驗(yàn)研究中已取得了較大的進(jìn)展,已成為視覺(jué)機(jī)器人中復(fù)雜應(yīng)用的設(shè)計(jì)方法,并擴(kuò)展到環(huán)境知識(shí)和本體的建模之中。此外,在信息系統(tǒng)設(shè)計(jì)中也取得了一定的成功,并且在復(fù)雜系統(tǒng)的建模與仿真領(lǐng)域也取得了一定成效。本文結(jié)合PASSI過(guò)程框架,給出了企業(yè)Agent軟件設(shè)計(jì)可重用過(guò)程框架,如圖2所示。
從圖2可以看出,本文提出的可重用框架模型包含六個(gè)過(guò)程模型,分別為需求模型、Agent組織模型、Agent實(shí)現(xiàn)模型、代碼模型、部署模型和規(guī)范庫(kù)/知識(shí)庫(kù)模型,是一個(gè)從問(wèn)題域到解決方案域的循序漸進(jìn)的設(shè)計(jì)過(guò)程,并通過(guò)編碼階段來(lái)完成整個(gè)Agent系統(tǒng)的建模與仿真。
(1)需求模型。該模型是系統(tǒng)需求中Agent和意圖方面的擬人化模型,該模型涉及四個(gè)階段。領(lǐng)域描述(Domain Description),即系統(tǒng)的功能描述,可用UML用例圖來(lái)描述;Agent識(shí)別,即對(duì)Agent的職責(zé)進(jìn)行分離,可用UML包圖來(lái)表示;角色識(shí)別,即用UML類(lèi)圖描述各Agent具有的功能及所承擔(dān)的角色的;任務(wù)說(shuō)明,通過(guò)UML活動(dòng)圖來(lái)描述各個(gè)Agent的職能。
(2)Agent組織模型。它涉及Agent之間的交互及其依賴(lài)關(guān)系。本體描述,即使用類(lèi)圖和OCL(Object Constraint Language)約束來(lái)描述MAS中不同實(shí)體、概念及術(shù)語(yǔ)之間的關(guān)系;角色描述,用類(lèi)圖來(lái)展示Agent扮演的角色,所涉及的任務(wù)及任務(wù)涉及的角色,交互能力和Agent間的依賴(lài)關(guān)系;協(xié)議描述,用順序圖描述Agent通信協(xié)議的語(yǔ)法,用協(xié)作圖描述Agent之間的交互協(xié)議。
(3)Agent實(shí)現(xiàn)模型。該模型是解決方案體系結(jié)構(gòu)中類(lèi)和方法的實(shí)現(xiàn)模型,包括Multi-Agent體系結(jié)構(gòu)模型和Single-Agent體系結(jié)構(gòu)模型,主要包括三個(gè)階段,即Agent結(jié)構(gòu)定義、Agent行為描述、Agent間交互協(xié)作。
(4)代碼模型(Code Model)。該模型是解決方案在編碼階段的模型,需要兩步來(lái)完成。第一步,建立代碼重用庫(kù),即可重用代碼的類(lèi)庫(kù)和活動(dòng)圖庫(kù);第二步,確定代碼完成基準(zhǔn),即目標(biāo)系統(tǒng)的源代碼。
(5)部署模型(Deployment Model)。該模型通過(guò)硬件處理單元配置系統(tǒng)各部件和處理單元之間遷移的模型,涉及部署配置,用部署圖來(lái)描述Agent在可用處理單元之間的分配和移動(dòng)。
(6)規(guī)范庫(kù)/知識(shí)庫(kù)模型。該模型中的規(guī)范和知識(shí)用于約束Agent行為,在Agent智能性設(shè)計(jì)中起到重要作用,是一組行為規(guī)則。Agent受到多個(gè)層面規(guī)范的約束和影響,且約束常常是多個(gè)層面規(guī)范融合的結(jié)果,因此規(guī)范庫(kù)/知識(shí)庫(kù)的建立需要經(jīng)過(guò)規(guī)范的收集、分類(lèi)分層和融合三個(gè)步驟來(lái)完成。
2.2可重用框架中的設(shè)計(jì)模式
關(guān)于Agent設(shè)計(jì)模式的研究已有了一定的進(jìn)展,概念模式涉及實(shí)體組成部分的設(shè)計(jì)和相應(yīng)的實(shí)現(xiàn)代碼,人們把Agent看作由Agent基類(lèi)和一組任務(wù)類(lèi)組成的計(jì)算機(jī)實(shí)體,包含結(jié)構(gòu)和行為兩個(gè)主要屬性。從討論中人們可以找到一組設(shè)計(jì)模式,相關(guān)描述如下:
(1)Agent組織結(jié)構(gòu)模式。在組織中,每個(gè) Agent 扮演著特定角色,起著特定的作用,實(shí)施著相應(yīng)行為[12]。該類(lèi)型模式旨在解決構(gòu)建多 Agent 系統(tǒng)組織結(jié)構(gòu)方面存在的常見(jiàn)問(wèn)題,如在社會(huì)關(guān)系網(wǎng)絡(luò)中,如何在Agent之間建立社會(huì)關(guān)系以及所形成的社會(huì)關(guān)系網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)對(duì)問(wèn)題解決和Agent組織的影響。
(2)Agent交互協(xié)作模式。由于 Agent 技術(shù)本身的特點(diǎn),導(dǎo)致它們的交互協(xié)作要比傳統(tǒng)的面向?qū)ο髲?fù)雜,由此也產(chǎn)生了許多新的問(wèn)題[13]。該類(lèi)型模式旨在解決如何實(shí)現(xiàn)、保持或方便 Agent 之間的交互,如何通過(guò)協(xié)調(diào)不同 Agent 之間的行為,從而達(dá)到消除沖突,提高系統(tǒng)運(yùn)行性能和實(shí)現(xiàn)復(fù)雜問(wèn)題合作求解的目的[14]。
(3)Agent協(xié)調(diào)模式。Malone將協(xié)調(diào)定義為組織行為之間依賴(lài)性的管理,而軟件工程則認(rèn)為協(xié)調(diào)是一種最有效的管理MAS交互空間的方法,而Agent在完成任務(wù)時(shí)會(huì)產(chǎn)生復(fù)雜的交互,從而使得問(wèn)題的解決變得困難,最有效的方法是將多Agent系統(tǒng)中處理協(xié)調(diào)問(wèn)題的方法通用化。從設(shè)計(jì)角度對(duì)協(xié)調(diào)進(jìn)行方法化時(shí),要使Agent匯聚于協(xié)調(diào)模式上,并使這些模式能夠充分解決依賴(lài)性檢測(cè)和決策任務(wù)。
(4)單個(gè)Agent模式。Agent 如何感知外部環(huán)境、如何根據(jù)自身狀態(tài)執(zhí)行不同的動(dòng)作 、Agent 與角色之間的對(duì)應(yīng)關(guān)系都是Single-Agent內(nèi)部結(jié)構(gòu)應(yīng)該解決的問(wèn)題[15],該類(lèi)型的設(shè)計(jì)模式就是用來(lái)解決Single-Agent內(nèi)部結(jié)構(gòu)設(shè)計(jì)中所存在的問(wèn)題。
(5)規(guī)范庫(kù)/知識(shí)庫(kù)設(shè)計(jì)模式。規(guī)范通常表示為一組規(guī)則,經(jīng)過(guò)語(yǔ)義處理后代表了Agent的主觀特性,規(guī)范庫(kù)主要用于存儲(chǔ)Agent的行為規(guī)范,代表可利用的知識(shí)和可能的行為選擇[16]。由于規(guī)范的不同,即使在相同的環(huán)境背景下,Agent也可能有不同的選擇。規(guī)范模式正是處理Agent受到不同層級(jí)規(guī)范的約束時(shí)所執(zhí)行何種動(dòng)作的問(wèn)題,并把相應(yīng)情景下Agent的行為規(guī)范存入規(guī)范庫(kù)中,以便下次遇到相同情景時(shí)直接采取行動(dòng),從而能夠有效提高Agent的智能性和解決問(wèn)題的效率。
3基于多視圖的面向Agent的軟件設(shè)計(jì)模式分類(lèi)方法
3.1基于軟件設(shè)計(jì)過(guò)程的Agent設(shè)計(jì)模式層次分類(lèi)
面向Agent的分析與設(shè)計(jì)階段來(lái)源于軟件工程的生命周期。為了結(jié)合自頂向下和自底向上的方法來(lái)開(kāi)發(fā)基于Agent的系統(tǒng),人們有必要理解Agent分析與設(shè)計(jì)過(guò)程中不同層次的抽象。MAS分析與設(shè)計(jì)和設(shè)計(jì)模式層次劃分如圖3所示。
從圖3可以看出,MAS系統(tǒng)分析與設(shè)計(jì)的最高層次為目標(biāo)模型,目標(biāo)模型是系統(tǒng)的全局視圖,用于描述系統(tǒng)的主要目標(biāo)。系統(tǒng)分析層,也稱(chēng)系統(tǒng)需求說(shuō)明層,用于對(duì)系統(tǒng)中定義的角色及角色之間的關(guān)系進(jìn)行分析。在系統(tǒng)分析的下一階段,Agent設(shè)計(jì)為設(shè)計(jì)的第一層。在這個(gè)層,Agent通過(guò)分解或聚合分析階段確定的不同角色進(jìn)行定義,包括Agents的功能和領(lǐng)域知識(shí)需求。此外,Agents間的關(guān)系和交互也在該階段定義。設(shè)計(jì)的第二層為系統(tǒng)設(shè)計(jì),也稱(chēng)軟件結(jié)構(gòu)層,主要描述Agent系統(tǒng)的邏輯組織和系統(tǒng)構(gòu)建策略。設(shè)計(jì)的第三層為Agent結(jié)構(gòu)設(shè)計(jì)層,包括個(gè)體Agent結(jié)構(gòu)的設(shè)計(jì),其內(nèi)部結(jié)構(gòu)是BDI、Layered或Reactive等代表Agent結(jié)構(gòu)和Agent組件間如何互聯(lián)的模型。設(shè)計(jì)的第三層是Agent實(shí)現(xiàn)層,包括Agent之間關(guān)系和交互協(xié)議的設(shè)計(jì)。
圖3 MAS分析與設(shè)計(jì)和設(shè)計(jì)模式層次劃分
3.2基于多視圖的面向Agent的軟件設(shè)計(jì)模式分類(lèi)
結(jié)合2.2節(jié)和3.1節(jié),本文提出一種多視圖的Agent設(shè)計(jì)模式分類(lèi)方法,如表2所示。自頂向下的分類(lèi)視角來(lái)源于MAS系統(tǒng)分析與設(shè)計(jì)的過(guò)程,也代表了面向Agent分析與設(shè)計(jì)的不同層次,而自底向上的分類(lèi)視角描述Agent設(shè)計(jì)的不同方面[16],為研究面向Agent的設(shè)計(jì)模式提供了框架。
為了方便人們?cè)谔囟ū尘跋逻x擇合適的設(shè)計(jì)模式對(duì)Agent進(jìn)行分析設(shè)計(jì),引入設(shè)計(jì)模式的目的是實(shí)現(xiàn)微觀設(shè)計(jì)[17]。本文在分析已有研究成果的基礎(chǔ)上,以Agent設(shè)計(jì)的不同方面為視點(diǎn),對(duì)已有面向Agent相關(guān)設(shè)計(jì)模式進(jìn)行歸納整理和分類(lèi)總結(jié),以提高開(kāi)發(fā)人員的開(kāi)發(fā)效率,節(jié)省開(kāi)發(fā)成本。多視圖Agent設(shè)計(jì)模式分類(lèi)與歸并方法如表3所示。
4結(jié)束語(yǔ)
本文對(duì)Agent軟件的設(shè)計(jì)過(guò)程進(jìn)行了描述,并提出了一種雙向的面向Agent的軟件設(shè)計(jì)模式分類(lèi)方法。該方法一方面彌補(bǔ)了傳統(tǒng)設(shè)計(jì)方法缺乏對(duì)Agent設(shè)計(jì)細(xì)節(jié)關(guān)注的不足,有效結(jié)合了“自頂向下”和“自底向上”的設(shè)計(jì)思想,使得Agent的設(shè)計(jì)更加全面。同時(shí),本文通過(guò)提取和應(yīng)用現(xiàn)有設(shè)計(jì)模式,對(duì)Agent設(shè)計(jì)模式進(jìn)行分類(lèi)匯總,方便軟件開(kāi)發(fā)者根據(jù)實(shí)際情況進(jìn)行選擇,以提高軟件產(chǎn)品的開(kāi)發(fā)效率,降低開(kāi)發(fā)成本。由于篇幅有限,本文未對(duì)相應(yīng)的Agent軟件設(shè)計(jì)模式進(jìn)行模板描述,也沒(méi)有提供各個(gè)層面設(shè)計(jì)模式的典型應(yīng)用供設(shè)計(jì)人員參考,但這些也是軟件設(shè)計(jì)人員在設(shè)計(jì)過(guò)程中需要充分考慮的方面。
表2 多視圖Agent設(shè)計(jì)模式分類(lèi)
表3 面向Agent設(shè)計(jì)模式的分類(lèi)歸并
[參考文獻(xiàn)]
[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].計(jì)算機(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 的軟件設(shè)計(jì)開(kāi)發(fā)方法[M].北京:電子工業(yè)出版社, 2009.
[13]毛新軍.面向主體的軟件開(kāi)發(fā)方法[M].北京:清華大學(xué)出版社, 2005.
[14]廖守億,戴金海.復(fù)雜適應(yīng)系統(tǒng)及基Agent的建模與仿真方法[J].系統(tǒng)仿真學(xué)報(bào), 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
(責(zé)任編輯:張凱兵)