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