[摘 要] 本文研究如何采用面向Agent分析設計方法對百貨業商務智能系統進行分析、設計和實現。系統建模過程首先采用KAOS方法獲取系統的功能性需求和非功能性需求,然后采用Gaia方法在KAOS方法所獲取的目標模型的基礎上進一步完成系統建模工作,并采用基于Java的Agent開發框架來完成系統功能的實現,實現了系統的平臺無關性,良好的可移植性。
[關鍵詞] 主體 商務智能 Gaia方法 KAOS方法
一、引言
目前有很多面向Agent軟件工程方法,包括Gaia方法、KAOS方法,AUML方法等。Gaia方法是一種通用的Agent系統建模方法,既支持對Agent社會性的分析,又支持對單個Agent的分析。KAOS方法是對傳統的軟件工程的一種延續,它主要研究如何從用戶提出的粗糙多義的需求目標中分析出實現這些目標所需求的基本組件及其交互關系,以及與實現這些組件相關的各類資源和約束條件等,采用目標驅動的方式獲取用戶需求,可以比較全面地獲取系統的功能需求和非功能需求。但由于Gaia方法并沒有考慮如何更好地進行需求獲取,在系統建模的過程中對整個系統和組織的需求把握不完整。KAOS方法并不是一種純粹的面向Agent軟件開發方法,Agent只是作為一種輔助概念引入該方法的,在獲取系統Agent時容易產生冗余定義。因此將KAOS方法和Gaia方法相結合,從組織以及用戶兩個角度共同來處理用戶需求問題,使其既能夠捕獲系統的功能需求,也能夠捕獲系統的非功能需求,既能夠對目標建立模型,也能夠對Agent建立模型,從而更加準確的捕獲用戶需求。基于上述原因,本文以百貨業商務智能系統為對象,探索了以Gaia方法為主,KAOS方法在需求獲取階段對Gaia方法進行補充的途徑,并借鑒傳統軟件開發方法建模過程,定義KAOS-Gaia方法的生命周期,擴充Gaia方法原有的工作范圍。
二、KAOS方法與Gaia方法
KAOS方法的目的是為需求工程的整個過程提供一個有效的需求分解、精化、建模的分析方法。KAOS方法以目標為核心分析對象,通過對需求目標的分析建立需求描述模型。為了使這個方法更接近于風險承擔者之間交流和分析需求的方式,KAOS給予一個面向目標的過程。目標易于理解和交流,它描述了問題而不是解決方案,可以在不同的抽象層次上改進,它允許進行局部的和漸增的分析過程,這樣可以保持全局的一致性。
KAOS方法具有以下優點:(1)以目標為核心的分析方法。(2)目標表達需求的抽象形式與具有更高抽象程度的Agent相一致。(3)目標作為用戶提出需求的一種直接方式,讓用戶和開發者雙方都能夠很好地理解。(4)通過“HOW”和“WHY”的提問,自上而下和自下而上地分解初始目標,較好地保證了需求目標的完整性。(5)采用多層描述語言,易于理解、方便修改、擴展靈活。
三、KAOS方法與Gaia方法的結合
KAOS-Gaia方法是將KAOS方法和Gaia方法在一定程度上的結合,同時借鑒現有的軟件工程方法和建模語言對這兩種方法的一種改進和完善。KAOS-Gaia方法整體包括兩大階段:系統分析階段和系統設計階段,所涉及的模型包括目標模型、組織模型、環境模型、角色模型、交互模型、結構模型、Agent模型以及服務模型(見圖1)。
面向Agent的KAOS-Gaia方法是KAOS方法和Gaia方法在系統建模方面的結合。KAOS Gaia方法在系統分析和設計過程中建立目標模型、組織模型、環境模型、角色模型、交互模型、Agent模型和服務模型。在模型描述上,該方法還借鑒了UML進行完善。將兩者結合對系統建模具有以下優勢:(1)通過目標驅動的KAOS方法來對系統整體目標進行需求獲取,在需求方面既獲取了功能性需求,也獲取了非功能性需求,建立了目標模型,可以整體地把握分析的目標是否與用戶目標一致。(2)目標模型有利于需求變更和軟件復用。(3)KAOS-Gaia將Gaia方法的工作范圍擴大,包括需求獲取、分析、結構設計、詳細設計四個階段。(4)根據目標模型可以更完整地獲取系統中的環境資源、角色以及角色之間的關系,從而建立環境模型、角色模型和交互模型。(5)Gaia方法以Agent作為主要研究對象,在分析的過程中注重角色和Agent之間的關系,從而避免了KAOS方法本身在面向Agent建模的過程中沒有將Agent作為主要研究對象的不足。(6)采用傳統軟件工程的方法完善Gaia方法在詳細設計階段的設計。
四、基于Agent的商務智能系統分析與設計
建立全局目標模型。根據系統的業務需求和用戶需求,建立系統全局目標模型。根據系統目標模型,將商務智能系統的組織分解成:前臺收銀(POS)系統、信息管理系統、中央結算系統、人事系統、財務系統、決策支持系統以及客戶關系管理系統。各個子組織擁有各自相對獨立的目標。
建立系統的環境模型。環境是指系統中的資源。對于中央結算MAS中,費用(包括費用的各種單據)、合同(與供應商簽訂的合同)、銷售明細(每天銷售的小票或者其它銷售單據)、結算單(作為供應商的付款憑證)、促銷檔案(根據供應商或者商場的需求,業務部門或者其它部門會有一定的促銷計劃以促進商品的銷售)等都可以看成是該系統的環境。
建立初級的角色模型和交互模型。從目標分解以及環境模型中可以分析出和結算單和聯營核算目標相關的角色。為了表示這些角色,采用了一種抽象的、半形式化的方法來描述角色的能力以及行為,通過定義權利和責任兩種屬性來表示角色。可以利用角色模式來描述角色。根據角色模型中涉及的協議,詳細地對協議進行描述,即確定協議的合作者、協議的輸入和輸出以及對于協議的簡單描述。
選擇和設計組織結構,并完善角色模型和交互模型。目前大多數的系統的管理模式屬于串行管理模式,這種模式對于靜態的企業結構和相對平穩的外部環境是適用的,但是,在競爭、合作、動態的環境中,由于串行的計劃與控制過程往往滯后于環境的變化,所以這種方式已不再適用。而且,在各個角色之間存在著各種交互,如果采取串行結構通訊量比較大,構造的系統就會比較復雜。通過分析,選擇層次式的拓撲結構來構造中央結算系統,而且由于各個角色具有不同的特長,因此采用工作專業化的控制體制,即各個不同的角色具有自己獨特的技能和專長。整體來說本組織將采用基于協調中心(Coordinator)的管理模式,通過協調中心,實現任意兩個實體之間的信息通信,從而實現整個系統協調、調度與控制,更好的降低了系統的協調成本。
建立Agent模型。根據系統結構設計階段設計的組織結構,可以清晰地知道各個角色之間的關系,加上以往系統的設計經驗,將中央結算MAS系統中的Agent分為信息資源Agent、業務活動Agent、計算分析Agent、協調控制Agent和接口Agent五類。在Agent模型中,確定Agent與角色之間的關系,根據Agent所執行的角色的協議和活動屬性的定義,可以分析清楚Agent的工作流程,從而建立Agent的服務模型(見圖2)。
五、基于Java的Agent開發框架與Agent實現
由于Java語言天然的平臺無關系屬性,采用JADE來開發Agent系統可以增加系統的可移植性。JADE中的Agent采用ACL的語言來實現通訊。ACL中定義了Agent間的通訊目的,也就是Agent行為方式的描述,表示發送者希望通過發送該消息而達到的目的。在ACL中定義的描述有REQUEST(發送者希望接受者執行該行動),INFORM(發送者希望接受者知道這個事實),QUERY_IF(發送者希望知道是否達到既定的狀態),CFP(需要接受者給出建議和意見),ACCEPT_PROPOSAL,PROPOSE,REJECT_PROPOSAL表示發送者和接受者在進行協商。
在JADE框架下實現部分Agent系統,以下列舉了實現系統中抽象Agent類,聯營核算Agent類的核心代碼。該系統中所有的Agent類都繼承了JADE中所定義的Agent基類。
六、結束語
本文采用KAOS-Gaia方法對基于主體的商務智能系統進行系統分析和設計,采用目標驅動的KAOS方法對系統進行需求獲取。以百貨業商務智能系統為研究目標,對該商業系統中的中央結算MAS進行詳細的需求獲取、分析、設計和實現。KAOS-GAIA方法在整個系統建模的過程中基本上是采用了線性模式。
參考文獻:
[1]F. Zambonelli, NR Jennings, MJ Wooldridge. Developing Multiagent Systems:the Gaia Methodology, ACM Transactions on Software Engineering and Methodology. September 2003, 12(3):317~370
[2]Wooldridge M,Jennings N. R,Kinny D. The Gaia methodology for agent-oriented analysis and design. Journal of Autonomous Agents and Multi-Agent Systems. 2000,3(3)
[3]郭 峰 姚淑珍:面向agent軟件開發方法比較與應用原則.計算機科學,2004,31(8):190~193
[4]向鄭濤 繆育平 魯東明:面向Agent的軟件分析和設計方法.計算機科學,2004,30(6):127~131