羅明山
摘 要:軟件工廠技術(shù)是提高軟件生產(chǎn)效率的重要方法,軟件體系結(jié)構(gòu)的規(guī)范化及Eclipse開放式的開發(fā)環(huán)境為軟件工廠技術(shù)的研究提供了重要的基礎(chǔ)。文章以ERP系統(tǒng)為管理信息系統(tǒng)的架構(gòu)藍本,深入研究了ERP系統(tǒng)的功能架構(gòu)及Java EE的軟件體系結(jié)構(gòu),利用代碼自動生成技術(shù),提出了管理信息系統(tǒng)工廠化插件研發(fā)的方法。
關(guān)鍵詞:管理信息系統(tǒng);系統(tǒng)架構(gòu);軟件工廠;ERP
0 引言
由于軟件自身的許多特殊性[1],軟件的工廠化的技術(shù)研究一直沒有取得太大的進展。隨著人們對軟件的認知日益深入,軟件技術(shù)人員對特定領(lǐng)域的軟件架構(gòu)不斷達成共識,軟件開發(fā)過程中的標準與規(guī)范不斷形成,為軟件工廠技術(shù)的研究創(chuàng)造了條件。近年來,微軟、IBM等國際軟件巨頭都提出了自己的軟件工廠解決方案,微軟的COM/COM+技術(shù)在Window平臺開發(fā)中得到廣泛應(yīng)用[2],IBM公司研發(fā)的軟件設(shè)計工具Rose提供了“正向工程”機制,能通過形式化的設(shè)計模型自動生成目標系統(tǒng)的架構(gòu)和局部代碼;開源集成開發(fā)工具Eclipes/MyEclipes則提供了“反向工程”機制。通過反向工程,可以從數(shù)據(jù)庫表快速地生成目標系統(tǒng)的DAO架構(gòu)模型及Hibernate配置。這些都是軟件工廠應(yīng)用研究取得進展的表現(xiàn)。利用JEE系統(tǒng)架構(gòu)模型及代碼自動生成原理,結(jié)合ERP系統(tǒng)功能架構(gòu),深化Eclipes 環(huán)境下的軟件工廠技術(shù)研究,則可以在Eclipes開發(fā)環(huán)境中實現(xiàn)企業(yè)信息系統(tǒng)工廠化開發(fā),提高開發(fā)效率。
軟件工廠一是要面向某種特定應(yīng)用,二是自動化及快速配置[3]。因此,面向ERP領(lǐng)域的軟件工廠技術(shù)研究,首先要深入ERP系統(tǒng)的功能架構(gòu)和業(yè)務(wù)邏輯。其次深入研究信息系統(tǒng)的層次架構(gòu)及代碼自動化原理。
1 ERP系統(tǒng)功能架構(gòu)
國內(nèi)ERP領(lǐng)導廠商金蝶國際軟件集團將ERP的業(yè)務(wù)范圍劃分為資本市場、供應(yīng)市場、消費市場和知識市場等四大管理領(lǐng)域。資本市場主要涉及財務(wù)管理,供應(yīng)市場主要涉及供應(yīng)商管理,消費市場涉及客戶關(guān)系管理,知識市場涉及人力資源管理(辦公自動化、信息門戶均屬于這塊內(nèi)容)。這四個市場的中間是供應(yīng)鏈管理和制造管理,其中,供應(yīng)鏈管理又包括采購管理、倉存管理、銷售管理和分銷管理;制造管理又包含計劃管理、車間管理、設(shè)備管理和質(zhì)量管理。因此,一個完整的ERP系統(tǒng)主要包含:財務(wù)管理、銷售管理、客戶關(guān)系管理、采購管理、供應(yīng)商管理、倉存管理、計劃管理、車間管理、質(zhì)量管理、設(shè)備管理、人力資源管理等功能模塊。
在企業(yè)運營中,銷售部門根據(jù)市場需求或銷售歷史數(shù)據(jù)制定銷售計劃,形成企業(yè)的主生產(chǎn)計劃的數(shù)據(jù)來源。而企業(yè)主生產(chǎn)計劃制定則是其他各部門制定各自計劃的依據(jù)。比如,采購部門根據(jù)主生產(chǎn)計劃制定采購計劃,生產(chǎn)車間根據(jù)主生產(chǎn)計劃制定車間生產(chǎn)計劃和設(shè)備維護計劃。
采購部門根據(jù)采購計劃進行物料采購,一方面形成應(yīng)付賬款,與財務(wù)管理子系統(tǒng)對接,另一方面采購入庫物料,與倉存管理子系統(tǒng)對接。采購過程中涉及原材料質(zhì)量的鑒定與驗收,故涉及質(zhì)量管理。
生產(chǎn)車間根據(jù)車間生產(chǎn)計劃,從倉庫領(lǐng)料出庫進行生產(chǎn),最后將生產(chǎn)出來的產(chǎn)品存入倉庫,即生產(chǎn)入庫;生產(chǎn)過程中,要進行生產(chǎn)設(shè)備的管理及產(chǎn)品質(zhì)量的監(jiān)控,故涉及設(shè)備管理和質(zhì)量管理。
銷售部門從倉庫中提取產(chǎn)品銷售給客戶,一方面形成銷售出庫行為,與倉存管理系統(tǒng)對接,另一方面產(chǎn)生應(yīng)收賬款,與財務(wù)管理子系統(tǒng)對接。
財務(wù)管理子系統(tǒng)通過固定資產(chǎn)管理對接生產(chǎn)部門的設(shè)備管理,通過薪資管理與人力資源管理子系統(tǒng)對接。
2 基于Java EE的軟件架構(gòu)
2.1 信息系統(tǒng)的層次結(jié)構(gòu)模型
Java EE是目前最為成熟最為流行的企業(yè)信息系統(tǒng)架構(gòu),它目前最流行的兩個開發(fā)架構(gòu)是SSH(Strut+Spring+Hibernate)和SSM(Spring+SpringMVC+Mybase)架構(gòu),這些架構(gòu)都為信息系統(tǒng)定義了明確層次架構(gòu),如圖1所示。
(1)數(shù)據(jù)訪問層
數(shù)據(jù)訪問層主要提供數(shù)據(jù)庫訪問的元操作,為業(yè)務(wù)邏輯層提供數(shù)據(jù)庫的訪問接口。它由hibernate配置文件(hibernate.conf.xml)、hibernate映射文件(xxx.btm.sml)、POJO對象、DAO接口和對象組成。其中,POJO對象為應(yīng)用軟件中的實體對象;hibernate映射文件用于描述了數(shù)據(jù)庫中表與POJO對象的映射關(guān)系;hibernate配置文件則提供DAO數(shù)據(jù)訪問對象負責提供數(shù)據(jù)庫訪問元操作,包括數(shù)據(jù)的增、刪、改、查等功能,而且業(yè)界為其定義了標準的訪問接口。
(2)業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層有Server對象構(gòu)成,負責處理系統(tǒng)相對復雜的業(yè)務(wù),按一定的邏輯順序調(diào)用數(shù)據(jù)訪問層的DAO接口訪問數(shù)據(jù)庫。
(3)控制層
該層主要由Struct Action對象和Struct配置文件(Struct.xml)組成,主要負責響應(yīng)視圖層發(fā)起的業(yè)務(wù)請求處理和頁面調(diào)轉(zhuǎn)控制。其中,Action對象負責頁面請求處理,配置文件struct.xml負責頁面調(diào)轉(zhuǎn)描述。
(4)視圖層
該層負責人機交互,為用戶提供數(shù)據(jù)輸入界面和數(shù)據(jù)處理結(jié)果顯示。其核心是HTML+CSS,輔以JSP命令、JSTL標簽和Struct標簽。
2.2 Java Web站點文件管理
Java Web的站點結(jié)構(gòu)是相對穩(wěn)定的。基于SSH架構(gòu)的Web站點結(jié)構(gòu)如圖2所示。
web站點根目錄下,主要是站點首頁(index.jsp)及各種web文件和資源文件,比如CSS、JS和圖片資源(images)等。值得一提的是“WEB-INF”文件夾,它是Java Web站點十分重要的文件夾,其下面包含classes、lib兩個重要的文件夾和web站點的配置文件。
Classese文件夾存放由Java源文件編譯生成的字節(jié)碼文件(.class)。
Lib存放站點所需要的jar文件。比如數(shù)據(jù)庫驅(qū)動包、hibernate相關(guān)的jar文件等。
Web.xml是站點的總配置文件,它描述了首頁的訪問順序、struct映射等內(nèi)容。
Hibernate.cfg.xml是hibernate的配置文件,描述了數(shù)據(jù)庫服務(wù)器的地址及數(shù)據(jù)庫訪問的行館配置,包括數(shù)據(jù)連接池參數(shù)的配置等信息。同時還告訴系統(tǒng)Hibernate的映像文件(xxx.hbm.xml)位置。
applicatioContext.xml是Spring的配置文件,描述了Spring的相關(guān)配置。
xxx.hbm.xml描述數(shù)據(jù)庫中的表和應(yīng)用程序中的對象的映射關(guān)系。
3 信息系統(tǒng)軟件工廠插件的研發(fā)與應(yīng)用
雖然ERP系統(tǒng)是面向生產(chǎn)制造類企業(yè)提出的。但是,從企業(yè)分類及涵蓋范圍來看,所有企業(yè)和事業(yè)單位的業(yè)務(wù)范圍均可歸屬于它的架構(gòu)范圍。因此,ERP系統(tǒng)的工廠化插件可以是任何企業(yè)任何管理信息系統(tǒng)的開發(fā)模板和工具。通過工廠化組件應(yīng)實現(xiàn)以下的開發(fā)效果:
(1)通過功能裁剪,實現(xiàn)目標系統(tǒng)所需功能模塊的自動生成。即通過對話框選擇目標系統(tǒng)所需的功能模塊。
(2)可進一步設(shè)定各功能模塊的相關(guān)參數(shù)。比如,倉存管理可設(shè)定為是否支持倉位管理,是否支持倉存管理策略,采用何種倉存管理策略,采購入庫采用何種操作流程等。
3.1 軟件工廠插件的研發(fā)
ERP是一個龐大而復雜的信息系統(tǒng),不同的企業(yè)會有不同的功能需求和業(yè)務(wù)邏輯。因此,要研發(fā)一個能自動開發(fā)適合不同企業(yè)需求的管理信息系統(tǒng)的工廠化組件,必須建立ERP系統(tǒng)的最大系統(tǒng)模型,這些模型包括:
(1)最大數(shù)據(jù)庫模型
根據(jù)ERP系統(tǒng)最大功能模型建立數(shù)據(jù)庫,并對其中所有對象的屬性進行詳細分類。比如將物料屬性分為:基本屬性、外觀屬性、物流屬性、計劃屬性和成本屬性等。以便能滿足不同的目標系統(tǒng)的數(shù)據(jù)服務(wù)需求。
(2)子功能庫模型
對各子功能模塊進行詳細地分析和分解,并各自功能模塊建立子功能庫。
(3)業(yè)務(wù)邏輯庫模型
為功能庫中的每一個功能建立所有可能的業(yè)務(wù)邏輯模型,并為相應(yīng)的模型定義代碼生成導語,一并構(gòu)成業(yè)務(wù)邏輯庫。
系統(tǒng)庫模型建立好后,接下來就是開發(fā)工廠化插件。即開發(fā)一個能掛到Eclipse上的一個插件,該插件的任務(wù)是根據(jù)目標系統(tǒng)的功能需求和參數(shù)要求,利用系統(tǒng)庫模型自動生成完整的信息行架構(gòu)。
3.2 軟件工廠插件的工作原理
信息系統(tǒng)軟件工廠插件主要是利用代碼自動生成技術(shù),按信息系統(tǒng)的架構(gòu)和Web站點文件部署架構(gòu)要求,從ERP最大系統(tǒng)庫模型中提取功能子集生成目標系統(tǒng)的架構(gòu)模型。工作流程如下:
(1)利用程序修改Eclipse的相關(guān)文件,以在Eclipse工作區(qū)中創(chuàng)建一個Web項目,并按Web站點部署結(jié)構(gòu)生成相關(guān)文件夾和文件。
(2)根據(jù)目標系統(tǒng)的功能選擇,從ERP最大數(shù)據(jù)庫模型中生成目標系統(tǒng)的數(shù)據(jù)庫,并利用代碼自動生成技術(shù)生成數(shù)據(jù)訪問層的相關(guān)Java文件和配置文件,并導入相應(yīng)的jar包。比如Model層的類、DAO接口和實現(xiàn)、Hibernate配置文件和映射文件等。
(3)根據(jù)所選擇的業(yè)務(wù)邏輯模型,按其對應(yīng)的代碼生成導語,為各功能生成業(yè)務(wù)邏輯層的程序結(jié)構(gòu)框架。
3.3 軟件工廠插件的應(yīng)用
利用軟件工廠插件開發(fā)管理信息系統(tǒng)只能自動生成目標系統(tǒng)的數(shù)據(jù)庫、DAO層和業(yè)務(wù)邏輯層的結(jié)構(gòu)框架,相對復雜的業(yè)務(wù)和視圖層、控制層的開發(fā)則只能通過人工開發(fā)。因此,軟件工廠插件只能實現(xiàn)信息系統(tǒng)的半自動化開發(fā)。使用工廠化插件開發(fā)時,首先將插件附加到Eclipse開發(fā)環(huán)境中,通過運行插件彈出目標系統(tǒng)需求對話框,輸入目標系統(tǒng)功能需求和參數(shù)要求,生成目標系統(tǒng)的結(jié)構(gòu)框架和相關(guān)配置文件。最后,通過人工完善業(yè)務(wù)邏輯層及視圖層、控制層的功能。這樣便可以完成一個管理信息系統(tǒng)的開發(fā)。
4 結(jié)束語
ERP是一個龐大而復雜的管理信息系統(tǒng),涉及的功能多,業(yè)務(wù)邏輯復雜且多樣化。要建立一個完整的ERP最大系統(tǒng),需要對各模塊進行詳細的功能劃分,并為各功能建立所有可能的業(yè)務(wù)邏輯模型,這需要很大的時間和精力。筆者在研究過程中就人力資源管理子系統(tǒng)進行了嘗試,取得了較為滿意的結(jié)果,證明應(yīng)用這樣的方法研究信息系統(tǒng)的軟件工廠技術(shù)是可行的。
百色學院2012年校級科研項目:面向ERP領(lǐng)域的軟件工廠技術(shù)研究(項目編號:2012KB07)