邱占芝,張斌,巨貝貝
(大連交通大學 軟件學院,遼寧 大連 116028)
在跨地域大型煤炭集團企業的生產和經營中,煤炭運銷管理業務主要包括:調度管理、計劃管理、合同管理、統計管理、結算管理、地銷管理、煤質管理、分公司業務管理、基礎數據管理等一系列相關綜合業務.隨著企業經營的高節奏、信息化、遠程化趨勢的快速發展,建設網絡化的煤炭運銷綜合業務管理系統,對提高企業的經營效益、提升企業的經營水平、促進企業與國際化接軌具有重要意義.對于跨地域大型煤炭集團企業,由于跨地域、機構繁多、管理流程復雜、客戶信息與管理需求多變等特點,往往要求運銷管理系統應具備分布式網絡運行方式、業務功能完整、操作方便易用、查詢統計靈活、數據處理安全、兼容性強、運行穩定、支持異構環境等特點.傳統瀑布式的系統開發模式周期長、無法回溯、無法適應用戶需求多變的情況.為此,本文針對網絡化煤炭運銷管理系統中關鍵業務需求,使用敏捷開發方法,設計系統的總體方案、系統構架、業務流程和功能模塊,闡述其關鍵技術和迭代開發過程.通過該系統的運行和維護,證明了方案的正確性和開發方法的有效性.
敏捷開發方法是一種迭代、循序漸進的開發方法.在敏捷開發中,系統項目的構建被切分成多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特征.敏捷開發與傳統開發過程的最大的不同之處在于它強調以人為核心,團隊有激情,有活力地快速適應需求的不斷變化[1].特點如下:①直接交流.敏捷開發要求設計人員同客戶直接交流,將客戶作為系統設計的參與者,客戶與開發者被緊密結合在一起,能夠及時溝通和反饋從而避免了軟件危機發生的概率;②短周期迭代.應用敏捷開發的可伸縮性針對不同業務部門制定不同的周期,周期通常為1~2周,每次迭代的結束意味著一次小的交付,而較短周期的交付有效的避免了問題擴散,極大的減少了傳統開發模式中返工的情況;③代碼重構.代碼持續性的重構極大加強代碼魯棒性、復用性同時排除不必要的復雜邏輯.以模塊迭代為基本單位,重構迭代為框架,在變化中逐漸平衡軟件設計和企業業務的關系.
對于跨地域、多部門的網絡化運銷管理系統,由于公司業務人員各司其職,對整體需求模糊,且項目周期短.因此,采用特制驅動的敏捷開發模式,以搭建系統原型的用戶測試代替用例測試,以代碼審核和重構代替單元測試,從而更符合當前國內企業信息化開發的需求和模式.
隨著當前信息產業和軟件開發技術的發展,各種可重用性框架日漸增多,使用框架雖然可以使開發者減少代碼編寫量,將更多精力投入到業務邏輯中,但開發者必須對是否使用框架、使用何種框架做出選擇,可以從以下幾個角度考慮:①層次,即框架屬于哪個層次.應用系統從整體上可分為表示層、業務邏輯層、持久層,應該結合項目自身特點,在業務層上靈活應用框架;②量級,根據企業規模和業務邏輯選擇合適框架,當業務邏輯要求實時性的情況下舍棄框架會提高程序效率,因此過分依賴框架往往造成舍本逐末的設計;③開源,開源框架不僅使開發成本降低,同時將框架將內核暴露于開發者,便于開發人員從底層掌握和改進框架從而更契合定制業務的邏輯.
煤炭運銷系統所涉及的企業組織結構主要劃分為銷售公司機關和各礦分公司.公司機關下設調運科、地銷科、煤質科、質量信息科、結算科等,負責整體運銷業務的管理,業務邏輯復雜、易改變,業務量繁重,維護工作量較大;各礦分公司負責本公司所轄各礦的軌道衡/汽車衡稱重數據采集及統計管理,地點分布廣泛.公司機關和各分公司所有用戶必須通過網絡登錄系統,進行相關業務的處理.為此,該系統的總體架構采用基于B/S和C/S混合模式.公司機關業務主要是管理職能,系統采用B/S三層結構模式,B/S模式將系統分成客戶端(瀏覽器)、應用服務器和數據庫服務器.客戶端負責視圖,應用服務器根據客戶端提出的請求,調用相應的業務邏輯對數據庫服務器進行訪問,數據庫服務器負責數據處理[2].對于各礦分公司業務,因涉及銷售量的數據采集,要求實時性強,信息量相對較少且穩定,業務流程簡單,故分公司銷售數據采集系統架構采用C/S兩層結構.用B/S和C/S混合模式的系統極大地提高了系統的可用性、操作速度與維護效率.
(1)開發工具.考慮跨平臺、維護方便等,項目工程使用java語言開發,以struts1.x為業務控制框架,同時引入jquery作為表示層框架,以JDBC驅動方式實現數據庫容抗匹配以及事務界定;
(2)數據庫平臺.采用微軟公司的SQL Server2005大型關系數據庫管理系統,既可以滿足對數據處理快速、高效和準確的需要,又保證了數據安全、系統維護與升級方便等[3];
(3)軟件環境.服務器操作系統選用WindowsServer2003SP2企業版,WEB服務器選擇tomcat5.5及其以上版本.
公司機關各部門之間業務聯系緊密,工作相互依存制約;各礦區地理位置分散,各自擁有服務器,嚴格事務流程,完成事務性工作.公司機關決定各礦分公司工作目標,各礦分公司定期匯報具體工作情況.整個業務流程可分為三大部分:調運管理、煤質處理和結算處理.系統業務流程圖如圖1所示.
由企業業務流程設計系統模塊,主要分為三個子系統:調運管理、煤質管理和結算管理.
調運管理子系統主要完成基礎數據的錄入,合同的簽訂,庫存量管理,銷售計劃的制定以及裝車管理.子模塊包括:合同管理、計劃管理和裝車管理.合同管理主要完成合同各項內容的基礎設置,合同/協議簽訂和合同的查詢;計劃管理制定路運/地銷銷售計劃;裝車管理根據銷售計劃和鐵路計劃下達路運/地銷裝車單,指導調度作業,出具地衡/軌道衡稱重單.
煤質管理子系統分為化驗管理和質量信息管理兩個模塊.化驗管理處理各車煤質化驗信息,每日出具商品煤質化驗日報表以及維護各礦煤種信息;質量信息管理處理客戶對煤質的反饋以及到貨煤礦的檢斤記錄.
結算管理子系統包括:結算處理、財務管理、審批對賬處理和客戶回款管理.結算處理主要完成運費處理和生成結算單;財務管理處理開具發票的情況;審批對賬處理由相關部門對不同結算單進行審批,審批通過后進行對賬;客戶回款管理對客戶回款情況進行記錄.

圖1 業務流程圖
2.4.1 故事原型確立
以合同管理模塊為例,按照敏捷開發的生命周期法[4]描述實際過程.
敏捷開發強調現場客戶的參與,以客戶提供的原始文檔為基礎,構建用戶故事(User Stories).根據用戶需求設計合同模塊功能,其結構如圖2所示.

圖2 合同管理功能模塊圖
將功能翻譯為用戶故事:①鐵路到站用戶故事:用戶可以設置鐵路到站的名稱和所屬區域;②客戶管理用戶故事:客戶管理實現客戶的增刪查改,收貨人結算人關系關聯,并設置相應到站關系;③煤炭指標設置故事:定制煤炭質量指標;④合同條款定制用戶故事:為系統定制標準合同模板;⑤合同協議管理用戶故事:以基礎數據部分為基礎提供對合同的增刪查改操作;⑥抹帳協議管理用戶故事:提供非現金性合同的增刪查改;⑦補充協議:在合同執行期間對合同修改,并對歷史合同進行備份處理.
根據初始化用戶故事化,合同管理模塊分為7個子模塊,每個模塊相互滿足弱耦合關系,使用struts作為控制框架并引入DAO設計模式,將模塊分為3層:表示層、業務邏輯層和持久層,并通過靈活使用框架提高代碼內聚度和可變動性,如圖3所示.
以最初用戶故事模型構建功能性的原型模塊,為客戶測試做準備.隨著項目迭代故事的進行,這些用戶故事可能進一步深化或被廢除,最終確立系統模塊.

圖3 系統結構模塊圖
2.4.2 迭代開發
代碼開發由一位項目主管和多個小組組成.項目主管負責整個業務的規劃、排除開發阻力等,不直接參與具體問題解決.各小組兩名成員分別負責代碼編寫和審核測試,每日例會向項目主管匯報工作進展.模塊以1~2周為迭代周期,在迭代周期末尾小組成員合作進行代碼重構,減少代碼冗余、提高代碼質量和可讀性.
迭代交付期間以用戶測試為主,根據用戶需求不斷更新代碼和數據庫結構,并不斷重構以保證結構上的一致.對交付結果和新問題采用項目主管、小組成員三人頭腦風暴式討論,提供多種解決方案,并根據業務流程選擇最優方式,從而為下次迭代提供備選方案.模塊迭代計劃表如附表:

附表 模塊迭代計劃表
在迭代周期中根據用戶需求和反饋,逐步增加部分用戶故事和功能模塊,如下:①客戶數據收貨人和買受人區分.企業對應客戶信息,根據合同分為買受人和收貨人,根據不同狀態添加客戶時可以選擇性插入狀態,并可修改使兩種狀態可以相互轉化;②錯誤信息的動態提示,持久層DAO拋出業務異常并捕獲,將封裝為ErrorMessage類型的對象返還業務邏輯層,通過控制器直接將錯誤信息顯示與頁面上端,方便客戶與系統的交換交互;③合同管理用戶故事提供審核機制,審核交予高權限人員負責,審核過后底層人員不能修改或刪除合同;④煤炭指標設置用戶故事提供煤種設置機制,用戶可根據自己需求動態調整各頁面中煤種順序、顯示/隱藏;⑤安全處理功能,為用戶操作提供動作日志記錄.
運銷管理項目采用小發布的方式,即結合業務邏輯,快速確定下一次發布范圍,結合本系統實際開發情況,第一個版本發布周期在1~4周,持續數次發布歷時半年實現各模塊的開發與歸檔.合同管理模塊是開發的典型案例,以此為基礎每個模塊基本發布周期為4周時間,期間經歷數次迭代,并單獨歸檔.
對系統不斷的重構、測試和客戶的及時反饋,實現了全部用戶故事,并完成了系統流程.經過半年的迭代開發,最終系統得到用戶認可.
通過實際項目的設計、開發、運行與維護表明:采用敏捷開發方法,設計者和開發者與客戶直接交流,避免了軟件危機[5]發生的概率;開發周期短,避免了需求的不斷變化所帶來的開發工作量的劇增;代碼持續性重構極大地加強代碼魯棒性、復用性,同時排除不必要的復雜邏輯.敏捷開發具有高度的靈活性,在追求高效率、高質量的同時,更加體現團隊協作和降低開發成本.采用敏捷開發方法所設計和開發的網絡化煤炭運銷管理系統,既實現了公司內部經營信息的高度共享,并根據市場變化情況,及時改變銷售策略和產品品種,同時又為領導決策提供了技術上的支持和保障.
[1]胡霞.初探敏捷開發在項目開發中的應用[J].硅谷,2009,24:66.
[2]唐紅軍,萬健基.基于B/S結構的分銷資源信息管理系統模型設計與實現[J].電腦開發與應用,2005,18(4):28-29.
[3]王會林.軟件定制開發從代碼到構件之探索[J].電腦開發與應用,2006(4):12-13.
[4]ALISTAIR COCKBURN.Agile Software Development[M].Boston:Addison Wesley,2002.
[5]LARMAN CRAIG.Agile and iterative development:A manager’s guide[M].北京:中國電力出版社,2004.