易廣軍,朱趙輝,2,孫建會(huì),2
(1. 北京中水科工程總公司,北京 100038;2. 中國(guó)水利水電科學(xué)研究院,北京 100038)
應(yīng)用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)實(shí)現(xiàn)大壩安全監(jiān)測(cè)復(fù)雜業(yè)務(wù)
易廣軍1,朱趙輝1,2,孫建會(huì)1,2
(1. 北京中水科工程總公司,北京 100038;
2. 中國(guó)水利水電科學(xué)研究院,北京 100038)
通過領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),合理地分離領(lǐng)域知識(shí),用軟件開發(fā)人員和領(lǐng)域?qū)<叶寄芾斫獾慕y(tǒng)一模型表達(dá)業(yè)務(wù)邏輯,相比傳統(tǒng)的數(shù)據(jù)驅(qū)動(dòng)開發(fā)模式,使大壩安全監(jiān)測(cè)軟件中的核心業(yè)務(wù)脈絡(luò)清晰,易于擴(kuò)展和維護(hù)。實(shí)際應(yīng)用效果證明該方法設(shè)計(jì)的領(lǐng)域模型能夠很好地適應(yīng)需求的變更和新功能的增加,有利于實(shí)現(xiàn)大壩安全監(jiān)測(cè)復(fù)雜業(yè)務(wù)的自動(dòng)化處理。
大壩安全監(jiān)測(cè);領(lǐng)域驅(qū)動(dòng)設(shè)計(jì);領(lǐng)域模型
隨著全國(guó)水利工程建設(shè)持續(xù)、穩(wěn)定的發(fā)展,因旱澇而引起的自然災(zāi)害有所減少,生態(tài)環(huán)境逐步得到改善。但新建工程的不斷增多,也給工程施工質(zhì)量管理及運(yùn)行安全保障工作帶來了挑戰(zhàn)。安全監(jiān)測(cè)作為掌握水利工程各建筑物工作狀態(tài),反饋設(shè)計(jì)、指導(dǎo)施工的主要手段之一被廣泛應(yīng)用。近些年來,在水利信息化集成企事業(yè)單位和儀器廠商的推動(dòng)下,有關(guān)安全監(jiān)測(cè)的信息化系統(tǒng)也在不斷地改進(jìn)完善,數(shù)據(jù)的采集、存儲(chǔ)、處理、分析等功能日趨成熟。但總體來看,仍存在復(fù)雜業(yè)務(wù)需求不能滿足,對(duì)用戶專業(yè)水平要求過高,自動(dòng)化處理程度較低等諸多問題。究其原因,主要是采用了以數(shù)據(jù)庫(kù)為中心的數(shù)據(jù)驅(qū)動(dòng)開發(fā)模式。這種模式雖然可以快速實(shí)現(xiàn)項(xiàng)目目標(biāo),但從根本上制約了面向?qū)ο蠹夹g(shù)的使用,很容易使項(xiàng)目陷入困境,原因如下:
1)概念不清。在設(shè)計(jì)和開發(fā)階段,沒有統(tǒng)一的概念定義,經(jīng)常出現(xiàn)需求文檔和開發(fā)文檔對(duì)同一元素理解的不同,開發(fā)人員專于技術(shù),常以自己的理解完成代碼的編寫。
2)需求設(shè)計(jì)文檔難于理解。由于需求分析和設(shè)計(jì)的分離,模型邊界不清,關(guān)系復(fù)雜,開發(fā)人員在參考相關(guān)資料時(shí)不能抓住設(shè)計(jì)重點(diǎn),以致避重就輕地實(shí)現(xiàn)而出現(xiàn)不同程度的曲解。
3)代碼復(fù)雜。由于沒有對(duì)象的封裝或有對(duì)象而認(rèn)識(shí)不統(tǒng)一,多個(gè)業(yè)務(wù)的重合部分以不同方式實(shí)現(xiàn),或基礎(chǔ)架構(gòu)與業(yè)務(wù)邏輯混雜,造成理解的困難。
4)適應(yīng)需求變化能力差。當(dāng)需求變化時(shí),可能要修改數(shù)據(jù)表,這時(shí)新增的字段和業(yè)務(wù)邏輯將造成大量的修改,很容易使設(shè)計(jì)文檔與代碼不一致。
5)復(fù)雜業(yè)務(wù)難以開展。隨著業(yè)務(wù)功能的不斷實(shí)現(xiàn),整個(gè)項(xiàng)目進(jìn)入一個(gè)不斷修正的怪圈,很可能牽一發(fā)而動(dòng)全身,使項(xiàng)目最終陷入高代價(jià)的維護(hù)之中。
針對(duì)這些情況,提出應(yīng)用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(Domain-Driven Design,DDD)[1]方法解決大壩安全監(jiān)測(cè)領(lǐng)域的復(fù)雜問題。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)摒棄了分裂的分析和設(shè)計(jì)方法,使用單一的領(lǐng)域模型滿足分析與設(shè)計(jì) 2 方面的需求。領(lǐng)域模型是軟件項(xiàng)目的公共語(yǔ)言核心,術(shù)語(yǔ)和關(guān)系反映了領(lǐng)域的深層次含義,將這些術(shù)語(yǔ)和關(guān)系作為模型語(yǔ)言,可保證開發(fā)人員與領(lǐng)域?qū)<覍?duì)用戶需求有一致的、精確的認(rèn)識(shí)。領(lǐng)域模型設(shè)計(jì)通過一系列的柔性設(shè)計(jì)模式,將潛在的概念顯式地展現(xiàn)出來,使開發(fā)人員可以靈活地使用一個(gè)最小的、松散耦合的概念集合表示領(lǐng)域中的復(fù)雜場(chǎng)景,然后通過重構(gòu)和精煉,將混雜在一起的組件分開,專注于模型中最有價(jià)值的部分,然后重構(gòu)得到更深層次的理解。
1.1 領(lǐng)域模型
領(lǐng)域模型是軟件項(xiàng)目的公共語(yǔ)言核心。模型語(yǔ)言中有關(guān)項(xiàng)目的概念將模型和開發(fā)活動(dòng)結(jié)合在一起,并使模型和代碼緊密地綁定[2]。在基于模型的交流中,開發(fā)者和領(lǐng)域?qū)<也⒉粌H僅局限于 UML(統(tǒng)一建模語(yǔ)言)圖進(jìn)行,而是充分利用各種手段,討論需求、開發(fā)計(jì)劃和特性,確保團(tuán)隊(duì)中所有交流活動(dòng)和代碼中堅(jiān)持使用一致的語(yǔ)言,積極消除難點(diǎn),然后重構(gòu)代碼,并對(duì)類、方法和模塊重新命名,形成公認(rèn)的理解。
領(lǐng)域模型要求開發(fā)人員和領(lǐng)域?qū)<沂褂媚P偷脑丶澳P椭懈髟刂g的交互描述業(yè)務(wù)場(chǎng)景,并按照模型允許的方式將各種概念結(jié)合到一起,找到更簡(jiǎn)單的表達(dá)方式講出自己的觀點(diǎn),然后將這些新的思想應(yīng)用到圖和代碼中。在交互圖演示復(fù)雜業(yè)務(wù)場(chǎng)景時(shí),要將相關(guān)的約束和斷言加進(jìn)來,若是 UML圖就要用文本說明,不留任何存在歧義的死角。
領(lǐng)域模式與設(shè)計(jì)模式相比有以下非常不同的關(guān)注點(diǎn)[3]:如何進(jìn)行領(lǐng)域模型本身的結(jié)構(gòu)化;如何在模型中封裝領(lǐng)域知識(shí);如何應(yīng)用通用語(yǔ)言,并且不使基礎(chǔ)架構(gòu)分散對(duì)領(lǐng)域核心的注意力。
總之,軟件系統(tǒng)各個(gè)部分的設(shè)計(jì)應(yīng)該如實(shí)地反映領(lǐng)域模型,以便體現(xiàn)出這兩者之間的明確對(duì)應(yīng)關(guān)系,不僅如此,反復(fù)的檢查和修改模型是很有必要的,最終形成的設(shè)計(jì)應(yīng)該更加自然地描述模型,反映出深層次的領(lǐng)域概念。從長(zhǎng)遠(yuǎn)來看,以領(lǐng)域模型為核心的設(shè)計(jì)更加清晰,也更忠實(shí)于領(lǐng)域抽象的實(shí)現(xiàn),因而可維護(hù)性很高。
1.2 領(lǐng)域分離
為了保證軟件實(shí)現(xiàn)的簡(jiǎn)潔并與模型保持一致,不管業(yè)務(wù)如何復(fù)雜,必須運(yùn)用建模和設(shè)計(jì)的最佳實(shí)踐將領(lǐng)域設(shè)計(jì)與軟件系統(tǒng)中的其它關(guān)注點(diǎn)分離,才能使設(shè)計(jì)與模型之間的關(guān)系非常清晰。
分離領(lǐng)域的復(fù)雜技術(shù)早已出現(xiàn),領(lǐng)域模型采用的分層基本原則是層中的任何元素都僅依賴于本層的其他元素或下層的元素,向上的通訊必須通過間接的傳遞機(jī)制進(jìn)行。典型的分層模式示意圖如 1 所示,各層具體分析如下:
圖1 領(lǐng)域模型的典型分層結(jié)構(gòu)
1)用戶界面層?;蚍Q表示層,目標(biāo)是盡可能地薄,絕對(duì)不允許在該層嵌入業(yè)務(wù)邏輯,所以該層只須履行解釋用戶的操作,有將消息發(fā)送到應(yīng)用層或領(lǐng)域?qū)蛹跋蛴脩麸@示信息 2 個(gè)主要職責(zé)。
2)應(yīng)用層。應(yīng)用層可以作為系統(tǒng)應(yīng)用編程接口(API),是與其它系統(tǒng)進(jìn)行交互的必要渠道,不包括業(yè)務(wù)規(guī)則或者知識(shí)。無論是 C/S,還是 B/S 的表示層,都可以很方便地實(shí)現(xiàn)數(shù)據(jù)的獲取和保存。除此之外,該層還用于協(xié)調(diào)領(lǐng)域?qū)ο笾g、領(lǐng)域?qū)ο笈c基礎(chǔ)設(shè)施對(duì)象之間的動(dòng)作,維護(hù)特定任務(wù)狀態(tài)并為用戶顯示任務(wù)進(jìn)度等。
3)領(lǐng)域?qū)?。領(lǐng)域?qū)迂?fù)責(zé)表達(dá)業(yè)務(wù)概念、狀態(tài)信息和規(guī)則,而不關(guān)心保存業(yè)務(wù)(由基礎(chǔ)設(shè)施層實(shí)現(xiàn))狀態(tài)的技術(shù)細(xì)節(jié),即使用 POCO(Plain Old CLR Object,簡(jiǎn)單傳統(tǒng) CLR 對(duì)象)的方法設(shè)計(jì),領(lǐng)域模型不必實(shí)現(xiàn)持久化相關(guān)接口或從業(yè)務(wù)無關(guān)的類繼承,確保與持久化無關(guān)。
4)基礎(chǔ)設(shè)施層。為以上各層提供交互支持,如應(yīng)用層的消息傳遞,領(lǐng)域?qū)映志没瘷C(jī)制實(shí)現(xiàn),用戶界面層的屏幕顯示等。
分層的價(jià)值在于每一層都只代表程序中的某一特定方面。領(lǐng)域?qū)ο髮⒅攸c(diǎn)放在表達(dá)領(lǐng)域模型上,能有效地捕捉并使用基本業(yè)務(wù)知識(shí),不需要考慮自己的實(shí)現(xiàn)和存儲(chǔ)問題,也無需管理應(yīng)用任務(wù)等內(nèi)容,以便保持含義足夠豐富、結(jié)構(gòu)足夠清晰。彼此獨(dú)立的層更容易維護(hù),因?yàn)樗鼈兺糜跐M足不同的需求。這種模式使每個(gè)方面的設(shè)計(jì)都具有內(nèi)聚性,更容易解釋,并被理解。
目前在大壩安全監(jiān)測(cè)系統(tǒng)應(yīng)用過程中,如果出現(xiàn)新需求,系統(tǒng)無法合理解決時(shí),往往采用以下折中的處理方式:1)在系統(tǒng)中進(jìn)行配置,使用原有的業(yè)務(wù)邏輯基本滿足新需求;2)維護(hù)程序源碼,增加新的業(yè)務(wù)邏輯,但需要進(jìn)行單獨(dú)處理。這 2 種解決方案,雖然基本能滿足用戶的功能需求,但都在一定程度上歪曲了需求或系統(tǒng)原有面貌,改后的系統(tǒng)出現(xiàn)了不同于原有設(shè)計(jì)“通用”的認(rèn)識(shí),使業(yè)務(wù)邏輯不清晰,甚至難以理解。而 DDD 是由業(yè)務(wù)問題控制解決方案的形式,問題領(lǐng)域的簡(jiǎn)化視圖可以非常接近于面向?qū)ο蟮膶?duì)象模型,分層模式如圖 2 所示。
圖2 大壩安全監(jiān)測(cè)領(lǐng)域模型的分層模式
對(duì)照?qǐng)D 2,大壩安全監(jiān)測(cè)系統(tǒng)的領(lǐng)域?qū)ο蟀ù髩谓ㄖ锛捌洳课?,依?jù)儀器布置原則而設(shè)置的監(jiān)測(cè)面、線,依據(jù)監(jiān)測(cè)目的需要而設(shè)置的測(cè)點(diǎn)、儀器組(或稱測(cè)點(diǎn)集),以及測(cè)點(diǎn)所使用的儀器。建筑物及其部位、監(jiān)測(cè)面、監(jiān)測(cè)線、測(cè)點(diǎn)集統(tǒng)稱為“監(jiān)測(cè)對(duì)象”,圍繞這些領(lǐng)域?qū)ο?,?duì)部分業(yè)務(wù)需求進(jìn)行分析,以 F + 序號(hào)的方式列舉如下:
F1 表示建筑物及其部位的層次關(guān)系,監(jiān)測(cè)線、面與測(cè)點(diǎn)之間的關(guān)系。
F2 表示核心業(yè)務(wù)圍繞監(jiān)測(cè)對(duì)象展開,如繪制過程線圖、相關(guān)圖、分布圖、等值線圖,查看考證表,記錄計(jì)算表、統(tǒng)計(jì)表等。
F3 表示 1 個(gè)測(cè)點(diǎn)可以有多種觀測(cè)方式,且在不同時(shí)段可以有不同的參數(shù)或計(jì)算公式,如 1 個(gè)揚(yáng)壓力測(cè)點(diǎn)既有壓力表的人工觀測(cè)值,也有揚(yáng)壓力計(jì)的測(cè)值,某時(shí)刻可能因傳感器損壞而進(jìn)行了更換。這時(shí),觀測(cè)方式的不同帶來觀測(cè)物理量和測(cè)值轉(zhuǎn)換計(jì)算的不同,更換儀器也會(huì)引起計(jì)算參數(shù)或公式的改變,形成復(fù)雜的需求。
F4 表示測(cè)點(diǎn)集需要計(jì)算新的物理量,并可按單一測(cè)點(diǎn)的繪圖樣式作圖。
F5 表示觀測(cè)計(jì)劃的跟蹤和監(jiān)督。每類監(jiān)測(cè)項(xiàng)目都有觀測(cè)頻次,應(yīng)按提交的計(jì)劃跟蹤實(shí)施。
為了獲得靈活的模型,必須梳理好它們之間的關(guān)系。通常,建筑物或部位包含監(jiān)測(cè)面、監(jiān)測(cè)線、測(cè)點(diǎn),在監(jiān)測(cè)面上布置有測(cè)點(diǎn),也有按樁號(hào)(或軸距、高程)布置的監(jiān)測(cè)線;1 組測(cè)點(diǎn)可以定義為監(jiān)測(cè)線或測(cè)點(diǎn)集,所不同的是測(cè)點(diǎn)集可以通過測(cè)點(diǎn)測(cè)值的聯(lián)合計(jì)算獲得需要的監(jiān)測(cè)物理量(如應(yīng)變計(jì)組通過各測(cè)點(diǎn)聯(lián)合計(jì)算獲得單軸應(yīng)力)。
領(lǐng)域?qū)ο蟮年P(guān)系和約束可用如圖 3 所示的領(lǐng)域模型表示,分析如下:
1)用監(jiān)測(cè)對(duì)象實(shí)體表示建筑物及其部位、監(jiān)測(cè)面、監(jiān)測(cè)線和測(cè)點(diǎn)集。由于測(cè)點(diǎn)不僅有自身安裝埋設(shè)相關(guān)信息,還包括所使用儀器的廠家參數(shù)等,所以將測(cè)點(diǎn)獨(dú)立作為 1 個(gè)實(shí)體。
2)監(jiān)測(cè)對(duì)象可以有多個(gè)子監(jiān)測(cè)對(duì)象,也可以有多個(gè)測(cè)點(diǎn)(如環(huán)境量測(cè)點(diǎn)安裝埋設(shè)在某建筑物或部位)。
3)測(cè)點(diǎn)可以屬于不同的監(jiān)測(cè)對(duì)象(如 1 個(gè)測(cè)點(diǎn)既在縱斷面上,又在橫斷面上)。
4)測(cè)點(diǎn)使用多種觀測(cè)方式觀測(cè),每種觀測(cè)方式使用 1 種儀器。
5)所有監(jiān)測(cè)對(duì)象不必關(guān)心增加、刪除、修改、查詢的具體問題,直接由存儲(chǔ)器接口處理。
圖 3 給出了 1 個(gè)統(tǒng)一的模型,可以清晰地表達(dá)大壩安全監(jiān)測(cè)系統(tǒng)中的以下業(yè)務(wù)需求:
1)對(duì)于 F1 的需求很容易由領(lǐng)域模型得到滿足。領(lǐng)域模型將建筑物和測(cè)點(diǎn)分開作為 2 個(gè)重要的實(shí)體,確定了從屬關(guān)系。同時(shí),在監(jiān)測(cè)對(duì)象中預(yù)定義了測(cè)點(diǎn)在布置圖中位置的屬性,方便了在布置圖上顯示測(cè)點(diǎn)及最近測(cè)值、測(cè)點(diǎn)狀態(tài)、測(cè)點(diǎn)級(jí)報(bào)警信息等內(nèi)容。
圖3 大壩安全監(jiān)測(cè)領(lǐng)域模型類圖
2)建筑物及其部位、監(jiān)測(cè)面、監(jiān)測(cè)線、測(cè)點(diǎn)集均繼承自監(jiān)測(cè)對(duì)象,保證了統(tǒng)一的處理過程,并按監(jiān)測(cè)對(duì)象分配不同的業(yè)務(wù)過程,如監(jiān)測(cè)面上可以繪制等值線圖,監(jiān)測(cè)線上可以繪制分布圖、多測(cè)點(diǎn)沿某一位置坐標(biāo)變化的分布圖、多測(cè)點(diǎn)與某一環(huán)境量的相關(guān)圖,測(cè)點(diǎn)集上可以繪制其聯(lián)合計(jì)算的物理量過程線圖、相關(guān)線圖、統(tǒng)計(jì)模型分析成果圖等。圖表分析從單個(gè)測(cè)點(diǎn)到多個(gè)測(cè)點(diǎn)的設(shè)計(jì)思路,保證了復(fù)雜業(yè)務(wù)對(duì)簡(jiǎn)單業(yè)務(wù)的組合使用,做到了代碼的復(fù)用,很容易通過選擇某一監(jiān)測(cè)對(duì)象實(shí)現(xiàn)所有測(cè)點(diǎn)的數(shù)據(jù)和圖表的批量導(dǎo)入、導(dǎo)出,并自動(dòng)形成初步分析報(bào)告。
3)設(shè)計(jì)安全監(jiān)測(cè)自動(dòng)化系統(tǒng)的基本原則和功能要求中明確指出:系統(tǒng)應(yīng)有人工觀測(cè)接口,以便在系統(tǒng)完建之前或發(fā)生故障時(shí),進(jìn)行人工補(bǔ)測(cè);在系統(tǒng)正常運(yùn)行時(shí)進(jìn)行校測(cè)[4]。從目前大壩安全監(jiān)測(cè)實(shí)際情況來看,儀器參數(shù)、測(cè)點(diǎn)基準(zhǔn)值、公式的變化經(jīng)常發(fā)生,多種測(cè)量方式也在很多監(jiān)測(cè)項(xiàng)目中存在,如某一滲流量觀測(cè)點(diǎn)前期采用量水堰堰頂測(cè)針觀測(cè),后期采用量水堰計(jì)觀測(cè),觀測(cè)方式的不同帶來了觀測(cè)數(shù)據(jù)、相應(yīng)參數(shù)、公式的存儲(chǔ)問題,以數(shù)據(jù)庫(kù)為中心的開發(fā)往往在“發(fā)現(xiàn)”這個(gè)需求后,以增加、修改表來適應(yīng),會(huì)造成系統(tǒng)的不穩(wěn)定,如更改后的系統(tǒng)不能如第 1 版進(jìn)行全面測(cè)試,經(jīng)常出現(xiàn)系統(tǒng)崩潰的問題。領(lǐng)域模型為了滿足 F3 的要求,引入“觀測(cè)方案”和“方案項(xiàng)”2 個(gè)重要的實(shí)體,當(dāng)增加新的觀測(cè)方式時(shí),可以增加 1 個(gè)方案;當(dāng)由于儀器損壞更換了儀器,參數(shù)、公式變化時(shí),可以增加1 個(gè)方案項(xiàng)。這種處理方式恰當(dāng)?shù)亟怦盍藰I(yè)務(wù)的復(fù)雜關(guān)系,便于擴(kuò)展和維護(hù)。
4)測(cè)點(diǎn)集除了有監(jiān)測(cè)面、線的特性外,還有自身的特點(diǎn)——計(jì)算新物理量,如三向測(cè)縫計(jì)、五向應(yīng)變計(jì)、七向應(yīng)變計(jì)等,測(cè)點(diǎn)集可以由多個(gè)測(cè)點(diǎn)組成,形式上更加靈活,即使以后增加了更多向的儀器,也能用現(xiàn)有結(jié)構(gòu)適應(yīng),不用修改數(shù)據(jù)庫(kù)或源碼,滿足 F4 的實(shí)際需求。在研究領(lǐng)域模型中,測(cè)點(diǎn)集代表通常所說的“儀器組”,而呈線性布置,不聯(lián)合計(jì)算新物理量的 1 組儀器定義為監(jiān)測(cè)線,如引張線、靜力水準(zhǔn)等系統(tǒng)均是監(jiān)測(cè)線。這樣,改變了傳統(tǒng)模糊的理解,使概念更加清晰,方便設(shè)計(jì)與實(shí)現(xiàn)。
5)關(guān)于 F5,現(xiàn)有大壩安全監(jiān)測(cè)軟件中均未涉及,那是否可以說明不重要?答案是否定的。通過考察長(zhǎng)江三峽、向家壩、白鶴灘等大型水利工程發(fā)現(xiàn):大型工程,存在參建單位多,全面監(jiān)督難的問題,由于工程或管理問題出現(xiàn)數(shù)據(jù)缺失的情況不在少數(shù)。所以,為了保證數(shù)據(jù)獲取的及時(shí)、有效,觀測(cè)計(jì)劃的監(jiān)督實(shí)施,無論是在施工期,還是運(yùn)行期都十分的必要。在大壩安全監(jiān)測(cè)領(lǐng)域模型中,將計(jì)劃追蹤放在方案項(xiàng)中,在出現(xiàn)缺測(cè)、漏測(cè)的問題時(shí)可以進(jìn)行報(bào)警,及時(shí)將觀測(cè)情況報(bào)告給管理者。
通過分析業(yè)務(wù)場(chǎng)景,運(yùn)用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)解耦領(lǐng)域中的復(fù)雜關(guān)系,使開發(fā)人員和領(lǐng)域?qū)<以诮y(tǒng)一認(rèn)識(shí)的基礎(chǔ)上,不斷精煉領(lǐng)域知識(shí),重構(gòu)領(lǐng)域模型,最終構(gòu)建 1 個(gè)單一的大壩安全監(jiān)測(cè)領(lǐng)域模型。該領(lǐng)域模型摒棄了傳統(tǒng)數(shù)據(jù)驅(qū)動(dòng)開發(fā)中表間關(guān)系的復(fù)雜性,不僅能夠方便地實(shí)現(xiàn)基本的業(yè)務(wù)需求,而且對(duì)復(fù)雜業(yè)務(wù)也融合得恰到好處,在工程實(shí)際應(yīng)用中,對(duì)需求增加、變更的適應(yīng)性很強(qiáng),大幅降低了開發(fā)難度,減少了測(cè)試時(shí)間。但毫無疑問,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)在大壩安全監(jiān)測(cè)軟件開發(fā)中的應(yīng)用仍處于探索階段,缺少對(duì)更深層次問題的探討,希望能夠引起更多領(lǐng)域?qū)<覍?duì)基本的領(lǐng)域模型的重視,積極參與到軟件系統(tǒng)的設(shè)計(jì)中來,改變大壩安全監(jiān)測(cè)系統(tǒng)軟件由軟件人員主導(dǎo)的現(xiàn)狀,減少操作復(fù)雜性,不斷提高自動(dòng)化程度。
[1] Eric Evans. 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)——軟件核心復(fù)雜性應(yīng)對(duì)之道[M]. 趙俐,盛海燕,劉霞,譯. 北京:人民郵電出版社,2010: 16-17.
[2] Tim McCarthy. .NET Domain-Driven Design with C#: Problem-Design-Solution[M]. Hoboken: Wiley Publishing Inc, 2008: 5-10.
[3] Jimmy Nilsson. 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)與模式實(shí)戰(zhàn)[M]. 趙俐,馬燕新,譯. 北京:人民郵電出版社,2009: 22-28.
[4] 國(guó)家電力監(jiān)管委員會(huì)大壩安全監(jiān)察中心. 巖土工程安全監(jiān)測(cè)手冊(cè)[M]. 3 版. 北京:中國(guó)水利水電出版社,2013: 132-150.
[5] Martin Fowler. 企業(yè)應(yīng)用架構(gòu)模式[M]. 王懷民,周斌,譯.北京:機(jī)械工業(yè)出版社,2011: 10-12.
[6] Erich Gamma, Richard Helm, Ralph Johnson, et al. 設(shè)計(jì)模式——可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M]. 李英軍,馬曉星,蔡敏,等譯. 北京:機(jī)械工業(yè)出版社,2013: 120-128.
Application of Domain Driven Design in Complex Business of Dam Safety Monitoring Software
YI Guangjun1, ZHU Zhaohui1,2, SUN Jianhui1,2
(1. Beijing IWHR Corporation, Beijing 100038, China;
2. China Institute of Water Resources and Hydropower Research, Beijing 100038, China)
Through the domain driven design, reasonable separation of domain knowledge, the article uses a unified model that software developers and domain experts can understand to express the business logic. Compared with the traditional pattern of data driven development, it makes the core business of dam safety monitoring software clear thread, easy to extend and maintain. Effect of practical application proves the domain model of the method designed is able to adapt to the change of demand and the increase of the new features, advantageous to realize the automation of complex business processing.
engineering safety monitoring; domain driven design; domain model
TV698
A
1674-9405(2015)04-0052-05
2015-06-02
易廣軍(1980-),男,陜西西安人,工程師,研究方向:巖土工程安全監(jiān)測(cè)軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),水庫(kù)安全鑒定評(píng)價(jià)。