摘要:針對當前ERP系統(tǒng)提高可重構(gòu)性研發(fā)中存在的不足,本文按照領(lǐng)域工程的實施過程,對新一代ERP系統(tǒng)分別進行了需求分析、軟件體系結(jié)構(gòu)設(shè)計和應(yīng)用系統(tǒng)實施方面的研究,重點分析領(lǐng)域內(nèi)變化性需求的處理,最后提出了響應(yīng)領(lǐng)域內(nèi)變化性需求的實施策略。
關(guān)鍵詞:新一代ERP系統(tǒng);領(lǐng)域工程;構(gòu)件;軟件體系結(jié)構(gòu);變化性需求
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)04-0973-03
Research of New ERP Based on Domain Engineering Methods
LU Hong-chao, XUE Sheng-jun
(College of Computer Science and Technology, Wuhan University of Technology, Wuhan 430070, China)
Abstract: Focusing on the deficiency of ERP system research and development about enhancing reconfigurable, the paper researches on requirement analysis, software architecture and application systems implementation on the new ERP system according to the domain engineering’s implementation procedure. It stresses on introducing, analyzing and illustrating variation requirements of the new ERP system, and proposes response strategies of variation requirements in the end.
Key words: NERP; domain engineering; components; software architecture; variation requirements
1 引言
新一代ERP系統(tǒng)(NERP)在傳統(tǒng)ERP基礎(chǔ)上,將面向企業(yè)內(nèi)部資源管理擴大到面向整個供應(yīng)鏈的管理,以動態(tài)市場需求為驅(qū)動,對企業(yè)資源利用作決策,調(diào)整企業(yè)組織、流程及生產(chǎn)活動。NERP具有可配制性、可重構(gòu)性、自適應(yīng)性三大特點,即在可快速變更的企業(yè)模型基礎(chǔ)上,依據(jù)企業(yè)的動態(tài)需求進行系統(tǒng)的動態(tài)配置和快速實施與應(yīng)用。目前,ERP系統(tǒng)的研究集中在通過引入構(gòu)件技術(shù)和工作流技術(shù)改善系統(tǒng)通用性和靈活性。文獻[1-3]通過分析構(gòu)件的析取、管理、部署及運行方面的相關(guān)技術(shù),實現(xiàn)基于構(gòu)件的ERP系統(tǒng)開發(fā)。文獻[1]對ERP系統(tǒng)的構(gòu)件分類及部署作了詳細介紹。文獻[4-6]引入工作流技術(shù),分析管理ERP業(yè)務(wù)流程,通過流程重組實現(xiàn)ERP系統(tǒng)開發(fā)階段的靈活性。文獻[6]引入事件管理器和事件訂閱器,提出一種改進的基于活動網(wǎng)絡(luò)圖的ERP工作流模型。上述研究對ERP系統(tǒng)研發(fā)的可復(fù)用性有一定提高,但難以解決應(yīng)用領(lǐng)域里一組ERP系統(tǒng)研發(fā)的復(fù)用性問題。針對這一現(xiàn)狀,本文提出基于領(lǐng)域工程方法的NERP研究。
2 領(lǐng)域工程
領(lǐng)域工程是為一組相似或相近系統(tǒng)的應(yīng)用工程建立基本能力和必備基礎(chǔ)的過程,它建立可復(fù)用的領(lǐng)域需求模型、特定領(lǐng)域的軟件構(gòu)架及構(gòu)件,覆蓋了軟件分析、設(shè)計、實現(xiàn)的全過程。一方面,領(lǐng)域工程產(chǎn)生的可復(fù)用信息來源于領(lǐng)域中現(xiàn)有的系統(tǒng),體現(xiàn)了領(lǐng)域中系統(tǒng)的本質(zhì)需求;另一方面,領(lǐng)域工程將關(guān)于領(lǐng)域的知識轉(zhuǎn)化為領(lǐng)域中系統(tǒng)共同的規(guī)約、設(shè)計和構(gòu)架,使得可復(fù)用信息的范圍擴大到抽象級別較高的分析和設(shè)計階段。因此領(lǐng)域工程為軟件開發(fā)提供更廣泛的可復(fù)用性。
領(lǐng)域工程可分為以下三個主要階段:領(lǐng)域分析、領(lǐng)域設(shè)計和領(lǐng)域?qū)崿F(xiàn)。
1) 領(lǐng)域分析:該階段的主要目標是獲得領(lǐng)域模型。通過分析領(lǐng)域中系統(tǒng)的需求,識別領(lǐng)域中被廣泛共享的共性需求和可變的需求,從而建立領(lǐng)域模型。
2) 領(lǐng)域設(shè)計:該階段的目標是獲得特定領(lǐng)域的軟件構(gòu)架(Domain Specific Software Architecture,簡寫DSSA)。DSSA是對領(lǐng)域模型表示的需求給出解決方案,它不是單個系統(tǒng)的表示,而是能夠適應(yīng)領(lǐng)域中多個系統(tǒng)需求的一個高層次的設(shè)計。由于領(lǐng)域模型中的領(lǐng)域需求具有一定的變化性,DSSA也要相應(yīng)地具有變化性。
3) 領(lǐng)域?qū)崿F(xiàn):該階段根據(jù)領(lǐng)域模型和DSSA,實現(xiàn)領(lǐng)域構(gòu)架和可重用構(gòu)件。
與領(lǐng)域工程相對,單個應(yīng)用系統(tǒng)的軟件工程過程為應(yīng)用工程。領(lǐng)域工程識別系統(tǒng)的領(lǐng)域共性與變化性,并建立相應(yīng)可復(fù)用模型或構(gòu)件;應(yīng)用工程實施開發(fā)每個階段從構(gòu)件庫中獲得領(lǐng)域工程結(jié)果,并將其作為本階段的開發(fā)基礎(chǔ)。下文將按照領(lǐng)域工程過程探討NERP的實現(xiàn)。
3 NERP的領(lǐng)域分析
領(lǐng)域分析針對領(lǐng)域中的共性需求及變化性需求,定義一套可重用的系統(tǒng)需求,并在此基礎(chǔ)上建立領(lǐng)域模型。根據(jù)我國863提出的NERP應(yīng)具備的基本功能模型[7],本文提出12功能模塊觀點的領(lǐng)域模型,如圖1所示:以進銷存、生產(chǎn)、財務(wù)以及人力資源系統(tǒng)為主線,管理物流、信息流、資金流以及人力資源;以客戶關(guān)系管理子系統(tǒng)為輔助,通過關(guān)注與企業(yè)經(jīng)營、生產(chǎn)活動相關(guān)的供應(yīng)商、客戶和合作伙伴信息,為企業(yè)決策提供相關(guān)資訊,是NERP面向供應(yīng)鏈管理的特征體現(xiàn);系統(tǒng)配置管理子系統(tǒng)提供相關(guān)業(yè)務(wù)功能的重定義或簡易流程重組功能,是NERP的定制和快速實施功能在客戶端的體現(xiàn)。
領(lǐng)域模型描述共性需求的同時,要表現(xiàn)領(lǐng)域內(nèi)應(yīng)用系統(tǒng)的需求變化性。應(yīng)用工程通過確定領(lǐng)域模型中變性需求得到相應(yīng)的應(yīng)用需求,達到對需求的復(fù)用。領(lǐng)域需求的變化性主要有兩方面:一是需求的可選性,指同一領(lǐng)域中,不同的應(yīng)用系統(tǒng)在需求上的差異;二是需求自身的變化性,指應(yīng)用系統(tǒng)中的需求由于封裝了不同的細節(jié),在不同情況下表現(xiàn)不同屬性或行為。以庫存子系統(tǒng)為例(如圖1):貨位管理相對于傳統(tǒng)粗放式的倉庫管理來說,體現(xiàn)了領(lǐng)域特征的可選性;按貨物盤點和按倉庫盤點可滿足用戶不同情況下的使用需求,體現(xiàn)盤點功能自身的變化性。
3 NERP的領(lǐng)域設(shè)計
領(lǐng)域設(shè)計根據(jù)領(lǐng)域模型派生出滿足領(lǐng)域需求的DSSA。DSSA是具有高度的靈活性、魯棒性和可定制性,能快速響應(yīng)需求變化的軟件體系結(jié)構(gòu)。本文基于面向構(gòu)件的軟件體系結(jié)構(gòu)模型,結(jié)合NERP的領(lǐng)域需求,建立NERP的DSSA。如圖2所示,該系統(tǒng)體系結(jié)構(gòu)自底向上分別為:環(huán)境層、數(shù)據(jù)層、運算層、邏輯層、展現(xiàn)層、表示層。
環(huán)境層:為NERP提供技術(shù)環(huán)境和軟件基礎(chǔ)設(shè)施支持,是系統(tǒng)運行的基礎(chǔ)。環(huán)境服務(wù)構(gòu)件把應(yīng)用中可以被標準化的部分從業(yè)務(wù)中移出,形成可復(fù)用的軟件基礎(chǔ)設(shè)施,并提供軟件運行環(huán)境。
數(shù)據(jù)層:為NERP提供數(shù)據(jù)訪問和存儲服務(wù)。數(shù)據(jù)構(gòu)件封裝數(shù)據(jù)庫訪問操作和數(shù)據(jù)存取細節(jié),執(zhí)行具體檢索和存儲數(shù)據(jù)的任務(wù),完成對持久數(shù)據(jù)的管理。
運算層:為NERP系統(tǒng)提供基礎(chǔ)計算功能及支持業(yè)務(wù)邏輯表達的原子處理操作。運算構(gòu)件對應(yīng)用開發(fā)人員所編寫的實現(xiàn)業(yè)務(wù)計算功能代碼進行自動封裝、提交。
邏輯層:為NERP系統(tǒng)提供業(yè)務(wù)對象、業(yè)務(wù)操作及業(yè)務(wù)流程的定義及處理功能。邏輯構(gòu)件通過組裝運算構(gòu)件,設(shè)置展現(xiàn)層控制信息,完成復(fù)雜的業(yè)務(wù)處理過程。封裝一組運算構(gòu)件、邏輯構(gòu)件及展現(xiàn)構(gòu)件,使其具有某項業(yè)務(wù)處理功能的構(gòu)件,叫做業(yè)務(wù)構(gòu)件。
展現(xiàn)層:負責NERP系統(tǒng)的頁面流轉(zhuǎn)控制和業(yè)務(wù)服務(wù)調(diào)用,并控制頁面和業(yè)務(wù)服務(wù)間的數(shù)據(jù)傳遞。
表示層:負責NERP客戶端信息展示,處理用戶界面事件及與外部系統(tǒng)間的數(shù)據(jù)接口。
NERP的DSSA層次結(jié)構(gòu)清晰簡潔,各層次構(gòu)件間具有高內(nèi)聚、低耦合特性。但要使其具有良好的可復(fù)用性,DSSA需對領(lǐng)域模型中的變化性進行跟蹤分析及識別。本文基于如下方式[8-9]提取NERP變化性需求:在用況建模過程中,識別具有變化性的用況;在領(lǐng)域建模過程中,識別具有變化性的需求特征。經(jīng)分析,按變化性需求涉及的業(yè)務(wù)范圍及響應(yīng)變化性設(shè)計的復(fù)雜度,將NERP的變化性需求(即變化點)劃分為高、中、低三個級別,如表1所示。
4 NERP領(lǐng)域?qū)崿F(xiàn)
領(lǐng)域?qū)崿F(xiàn)的主要目標是依據(jù)領(lǐng)域模型和DSSA開發(fā)領(lǐng)域特定的構(gòu)件與構(gòu)架。目前主要構(gòu)件實現(xiàn)技術(shù)標準有DCOM、CORBA、EJB以及被稱為下一代分布式系統(tǒng)的核心的Web服務(wù)。關(guān)于此方面的技術(shù)介紹,有大量文獻作了較詳細的介紹,如[10-12],在此不再贅述。
下面基于DSSA的響應(yīng)變化點設(shè)計,根據(jù)變化性的綁定時間[8],制定響應(yīng)變化的策略:第一種策略是編譯時綁定變化點,通過采用抽象類工廠和Facade模式對可裁剪的業(yè)務(wù)構(gòu)件進行封裝實現(xiàn)變化響應(yīng),該策略適用于中級以上變化需求;第二種策略是啟動時綁定變化點,通過改變業(yè)務(wù)構(gòu)件加載信息,在程序啟動時,由配置文件重新加載業(yè)務(wù)構(gòu)件實現(xiàn)變化響應(yīng),該策略適用于中級變化需求;第三種策略是運行時綁定變化點,通過采用JS、CSS、DOM、HTML/XHTML等前端開發(fā)技術(shù),在運行時客戶端重新加載樣式實現(xiàn)變化響應(yīng),該策略適用于低級變化需求。變化點的實施策略示例如表2。
響應(yīng)變化的策略不僅能夠描述領(lǐng)域中成員系統(tǒng)之間的差異(如編譯時綁定的變化點),而且能夠描述應(yīng)用系統(tǒng)本身具有的變化性(如運行時綁定的變化點)。響應(yīng)變化的策略是對系統(tǒng)靈活性的一種要求,綁定時間越靠后,系統(tǒng)體現(xiàn)的靈活性越高。
5 結(jié)束語
領(lǐng)域工程通過積累特定領(lǐng)域的企業(yè)管理和軟件研發(fā)經(jīng)驗,將領(lǐng)域知識轉(zhuǎn)化為可重用信息,為應(yīng)用工程的各階段提供可直接復(fù)用的集成開發(fā)基礎(chǔ),極大地提高應(yīng)用軟件的研發(fā)效率。領(lǐng)域工程為應(yīng)用工程提供高復(fù)用性和靈活性的領(lǐng)域模型的關(guān)鍵之處在于對領(lǐng)域內(nèi)需求變化性的識別、分析、設(shè)計。本文基于領(lǐng)域工程方法,圍繞NERP領(lǐng)域內(nèi)需求變化性的處理,對NERP進行分析設(shè)計并建模,對新一代ERP產(chǎn)品的研發(fā)有實際指導(dǎo)作用。
參考文獻:
[1] 胡嘉賢,常會友,衣楊.支持功能可重構(gòu)的ERP開發(fā)平臺中的構(gòu)件技術(shù)[J].計算機應(yīng)用,2006,26(7):1738-1740.
[2] Azevedo A L,Sousa J P.A component-based approach to support order planning in a distributed manufacturing enterprise[J].Journal of Materials Processing Technology,2000,107:431-438.
[3] 趙偉,周兵.基于ERP系統(tǒng)的消息中間件設(shè)計與實現(xiàn)[J].計算機工程,2008,34(10):98-100.
[4] 黃雙喜,范玉順.基于工作流的ERP系統(tǒng)開發(fā)與實施[J].計算機集成制造系統(tǒng),2004,10(2):139-143.
[5] 張祖平,彭坤.基于流驅(qū)動的ERP生產(chǎn)管理系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與應(yīng)用,2005(3):198-201.
[6] 張朝輝,劉大有.一種改進的面向ERP的工作流管理系統(tǒng)[J].計算機應(yīng)用研究,2008,25(4):1278-1280.
[7] 閃四清.ERP系統(tǒng)原理和實施[M].北京:清華大學(xué)出版社,2006:156-190.
[8] 張偉,梅宏.一種面向特征的領(lǐng)域模型及其建模過程[J].軟件學(xué)報,2003,14(8):1345-1356.
[9] Mehta A,Heineman G T.Evolving legacy system features into fine-grained components[C]//Proceedings of the 24th International Conference on Software Engineering.ACM,2002:417-427.
[10] 趙俊峰,謝冰,張路,等.一種支持領(lǐng)域特性的Web服務(wù)組裝方法[J].計算機學(xué)報,2005,28(4):731-738.
[11] 徐向英,楊鶴標,陳華.基于框架和組件技術(shù)的動態(tài)ERP系統(tǒng)設(shè)計[J].計算機工程,2005,31(1):231-233.
[12] 陳鑫.一種基于構(gòu)件演算的主動構(gòu)件精化方法[J].軟件學(xué)報,2008,19(5):1134-1148.