肖偉斌 李 磊
摘要:文章以供水行業信息化建設為例探討利用分層設計思想達到建設高內聚、低耦合的信息化系統。
關鍵詞:分層設計思想;企業信息化;供水行業
中圖分類號:F232文獻標識碼:A 文章編號:1674-1145(2009)18-0045-02
近年供水企業致力于以生產管理、管網管理、營業管理、無紙化辦公為主要核心的管理信息系統,在實踐應用中已成為城市供水工作中不可缺少的工具。但隨著信息化建設的進行,在使用中逐漸出現了新的現象和問題。
一、目前供水行業信息化建設面臨的問題
在信息化建設中供水企業缺少一個規范的信息統一管理平臺,企業信息量增長的同時,也伴隨著業務子系統的增加,多賬戶運行的復雜煩瑣程度增加。多個局部應用系統,各自為政,彼此孤立的系統給管理造成障礙,信息的處理和流轉只局限于本部門,不能在整個公司進行很好的共享。有的所謂功能集成,在原有系統上增加內容,如在營業收費系統中又包含了水表管理系統功能、客服系統功能,軟件功能耦合緊密,一個功能變動就影響到整個系統。它們本該是一個有機結合的整體,才能保證業務流程的完整性和管理通道的暢通無阻。
二、分層設計思想帶來高內聚、低耦合的好處
如何才能避免、解決這些問題呢?建設高內聚、低耦合的信息化系統。內聚性是一個模塊內部各個元素間彼此結合的緊密程度的度量。內聚是從功能角度來度量模塊內的聯系。耦合性是模塊間互相連接的緊密程度的度量。
較優秀的系統設計,應盡量做到高內聚,低耦合,即減弱模塊之間的耦合性和提高模塊內的內聚性,有利于提高模塊的獨立性。在軟件開發中提出了N層架構思想,即將各個功能分開,放在獨立的層中,各層之間通過協作來完成整體功能,在很大程度上達到如下目的:分散關注,松散耦合,邏輯復用,標準定義,解決了軟件開發中的強耦合問題,加強了高內聚,低耦合。
如果一個系統沒有分層,那么各自的邏輯都緊緊糾纏在一起,彼此間相互依賴,誰都是不可替換的。一旦發生改變,則牽一發而動全身,對項目的影響極為嚴重。降低層與層間的依賴性,既可保證未來的可擴展,在復用性上也優勢明顯。每個功能模塊一旦定義好統一的接口,就可以被各個模塊所調用,而不用為相同的功能進行重復的開發。
但分層思想不是軟件架構中獨有,互聯網傳輸遵循OSI七層協議,其設計是分層思想合理應用的典范。另外,在許多其他工程技術領域,分層思想也很普遍。當然,在企業信息化系統設計中,也能遵循分層思想來設計。
三、行業信息化建設如何做到高內聚、低耦合
但是供水信息化系統建設怎樣像軟件一樣分層設計呢,可能很多人會問,開發一個營業收費系統,怎么分層?或許你說我的營業收費系統是分三層的,做了數據接口,但是放在整個企業信息化建設中這個應用還是緊耦合的。其實這里有一個誤區,信息化系統建設是希望用分層來看待整體供水信息化系統的全部,不再是把視線局限在一個個應用,而是把抽象的級別定位,并將整個供水企業信息化系統作為一個整體生態系統去看待。
先看傳統做法,比如營業收費系統、報裝管理系統、管網地理信息系統,這些系統上馬時間不一樣、數據格式、數據庫類別、操作系統等都不盡一樣,位置分散相互獨立,信息共享難、反饋難,信息冗余、不一致。
為信息共享做系統集成,要面對不同語言寫的應用程序,各種數據庫,弄清各種操作系統環境和各種的網絡協議等,為把這些整合起來,還要掌握系統集成工具。而做完一個系統集成項目后,任何系統局部的一丁點修改都有可能影響到系統,所以還要隨時準備好對接口進行升級和重新聯調。
那么將整個企業信息化系統作為一個整體的生態系統去看待怎么做呢,上面說到我們做一個應用,往往是一個部門需要的應用,單個的應用,而不是企業范圍的應用。
舉例來說,我們按照單個的應用來分析,供水企業可能用水報裝系統有一份用戶信息數據、營業收費系統也有一份用戶信息數據,這兩個用戶信息數據可能數據庫類型、字段、表結構都不一致,我們就要考慮接口的問題,兩個系統如何數據共享的問題,考慮數據是否一致的問題,如果一個系統改了數據結構,可能還要重新設計接口。
而我們現在要站在企業整個業務的角度,重新來分析業務流程,不能局限于一個應用由某個(些)部門使用,按照部門職能一個一個地來做業務分析,應該按照整個企業內部,包括到企業外部,形成整體業務流程分析。例如,供水企業面向用戶業務先要申請報裝、勘察、施工,然后供水、抄表、收費、調度,水廠生產、監控、調度等等,這里不作具體專業的業務需求分析,僅僅以此為例,可以先分析這些業務活動、業務處理、業務過程,規范出業務層面的視圖,然后在用戶交互部分構造出用戶部分,在構造出數據部分。根據這些業務分析業務活動,得到用戶申請界面、勘察錄入界面、設計圖紙錄入界面,用戶交費界面、抄表錄入界面、調度監控界面、各類報表界面等;還得到用戶信息數據、水表安裝信息數據、管網信息數據、用水性質數據、用水量數據、費用數據等。可以看到,這里得到了三個層面,業務層面、表示層面、數據層面。
這三個層面,是數據穩定、還是業務、界面更穩定呢?是數據更穩定。應用相對來講要容易變化,流程又容易變化一些,再往上用戶界面的東西變化就更加多了。所以一個極其重要的切分,就是系統中數據和應用的切分。
做好了數據和應用的切分,我們從各種業務角度來看,在相關的業務中怎么使用這些數據。比如按照供水行業來舉例,用戶信息數據由營業收費業務、用戶報裝業務使用等來使用,是一對多關系,管網信息數據由水表安裝業務、管網管理業務、用水調度業務、爆管處理業務來使用,也是一對多關系,但也可能其他業務與數據是一對一、多對多關系,有點像數據庫ER圖。分析好了這些關系,然后在數據層上面做一個標準層,來更好地適應了業務流程的變化。有了業務層,至于用戶界面的變動就更簡單了。
但是進行企業信息化建設,很少有企業一下上馬所有的系統,還是要分步走。這就要做好信息化規劃,做好信息化系統建設管理。最重要的是要建立標準,想上一個應用,首先要符合標準,想用用戶信息數據,必須符合分層式結構設計數據層的要求,不可以隨便用,隨便加。這樣,我們的數據是統一的,更有利于應用共享、有利于數據整理和挖掘。而在數據層之上,我們能夠更加靈活地管理業務,而不影響我們數據。