蘭洪霞
摘 要:本文介紹了面向?qū)ο蟮姆椒ê驮O(shè)計(jì)模式在ELIS海洋石油成像測(cè)井地面后處理平臺(tái)EPAPS中的應(yīng)用,及EPAPS的主要設(shè)計(jì)思想。
關(guān)鍵詞:測(cè)井系統(tǒng) 數(shù)據(jù)后處理 面向?qū)ο?設(shè)計(jì)模式
中圖分類號(hào):TE32 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2014)05(a)-0104-03
ELIS海洋石油成像測(cè)井系統(tǒng)(Enhanced Logging Imaging System)是中海油田股份有限公司自主研發(fā)具有自主知識(shí)產(chǎn)權(quán)的用于海上石油勘探開發(fā)的電纜測(cè)井成像系統(tǒng),它主要由地面采集系統(tǒng)、井下儀器和數(shù)據(jù)解釋處理三個(gè)部分組成。
EPAPS即現(xiàn)場(chǎng)快速數(shù)據(jù)解釋處理平臺(tái),主要功能包括數(shù)據(jù)加載,數(shù)據(jù)的處理和顯示、出圖、文件格式轉(zhuǎn)換等。EPAPS采用了徹底的面向?qū)ο笤O(shè)計(jì)理念,妥善利用了多種先進(jìn)的軟件設(shè)計(jì)模式,整體架構(gòu)簡(jiǎn)潔明了,在軟件功能性、可維護(hù)性、可擴(kuò)展性和模塊互操作性等諸多工程要素上均有著非常出色的表現(xiàn)。
1 面向?qū)ο笤O(shè)計(jì)理念
面向?qū)ο蟮脑O(shè)計(jì)理念主要包括抽象、封裝、繼承、多態(tài),EPAPS靈活運(yùn)用了這些面向?qū)ο蟮脑O(shè)計(jì)理念對(duì)EPAPS進(jìn)行了合理的分層、分包、建立類的層次結(jié)構(gòu)和良好的體系架構(gòu),使EPAPS可復(fù)用性、可維護(hù)性、可擴(kuò)展性都得到了極大的提高。
2 設(shè)計(jì)模式
要使系統(tǒng)最大程度的適應(yīng)需求的變更或新增,就必須在其要實(shí)現(xiàn)的宏觀業(yè)務(wù)邏輯的抽象復(fù)用上下功夫。而設(shè)計(jì)模式就是綜合運(yùn)用面向?qū)ο蠹夹g(shù)和特性來(lái)提高業(yè)務(wù)邏輯可復(fù)用性的常用方法和經(jīng)驗(yàn)的提取和匯總。掌握23種設(shè)計(jì)模式的關(guān)鍵是理解它們的共通目的:使所設(shè)計(jì)的軟件系統(tǒng)在一般或特定(系統(tǒng)將來(lái)在特定點(diǎn)上需要擴(kuò)展的可能性大)場(chǎng)景下,盡可能的對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。即面對(duì)新需求或需求變更,容易開發(fā)獨(dú)立于既有代碼的新代碼接入到現(xiàn)有系統(tǒng)或?qū)ΜF(xiàn)有代碼做可控的少量修改,而不是在現(xiàn)有代碼基礎(chǔ)上做大量的增、刪、改。為了這一目的,EPAPS使用了多種設(shè)計(jì)模式提高軟件平臺(tái)的可擴(kuò)展性、靈活性、可插入性。
3 具體設(shè)計(jì)
3.1 總體架構(gòu)
圖1是EPAPS軟件的總體架構(gòu),它反映了EPAPS軟件的總體構(gòu)成和各頂層軟件包之間的相互關(guān)系。
從圖1可以看出,EPAPS應(yīng)用軟件架構(gòu)體現(xiàn)了層次化設(shè)計(jì)的思想,共有四個(gè)層次五大模塊。
第一層是基礎(chǔ)設(shè)施軟件包,該軟件包定義了復(fù)雜應(yīng)用的基本構(gòu)件、工具,包括UserMath基本數(shù)學(xué)庫(kù)、Common.Spec基本設(shè)施公共庫(kù)規(guī)范、Common公共設(shè)施基礎(chǔ)庫(kù)等。
第二層是表象和數(shù)據(jù)的基礎(chǔ),由交互式二維圖形應(yīng)用基礎(chǔ)類庫(kù)GP和專業(yè)數(shù)據(jù)Data兩大軟件包構(gòu)成。Data軟件包定義了測(cè)井?dāng)?shù)據(jù)的基本規(guī)范,并實(shí)現(xiàn)了常用的數(shù)據(jù)格式。同時(shí)Data軟件包還設(shè)計(jì)了數(shù)據(jù)管理及專業(yè)數(shù)據(jù)處理的規(guī)范和基本功能模塊。
第三層是測(cè)井應(yīng)用程序架構(gòu)層,本層定義了專業(yè)測(cè)井應(yīng)用的基本規(guī)范和基礎(chǔ)構(gòu)件。
第四層是具體執(zhí)行各種用戶功能的應(yīng)用層。
上述四個(gè)層次中低層軟件包是上層軟件的基礎(chǔ),為上層軟件包提供支持或規(guī)范。
3.2 UDF統(tǒng)一測(cè)井?dāng)?shù)據(jù)框架
目前測(cè)井?dāng)?shù)據(jù)格式?jīng)]有統(tǒng)一的標(biāo)準(zhǔn),國(guó)內(nèi)外每個(gè)測(cè)井裝備供應(yīng)商都有一到多種自定義的測(cè)井?dāng)?shù)據(jù)格式,再加上一些研究機(jī)構(gòu)和軟件供應(yīng)商定義的數(shù)據(jù)格式,使得常見的測(cè)井?dāng)?shù)據(jù)格式多達(dá)二十余種,下表列舉了其中的一部分(見表1)。
為了支持大多數(shù)測(cè)井?dāng)?shù)據(jù)格式的訪問(wèn)和轉(zhuǎn)換,我們綜合分析了實(shí)時(shí)測(cè)井?dāng)?shù)據(jù)采集和解釋處理的各項(xiàng)業(yè)務(wù)需求,深入研究了多種代表性的測(cè)井?dāng)?shù)據(jù)格式(包括DLIS)的邏輯結(jié)構(gòu)及具體內(nèi)容,設(shè)計(jì)了UDF統(tǒng)一測(cè)井?dāng)?shù)據(jù)框架。
UDF統(tǒng)一測(cè)井?dāng)?shù)據(jù)框架給出了如下規(guī)范:
(1)測(cè)井?dāng)?shù)據(jù)的對(duì)象模型。
(2)測(cè)井?dāng)?shù)據(jù)對(duì)象的屬性規(guī)范。
(3)測(cè)井?dāng)?shù)據(jù)對(duì)象的接口規(guī)范。
(4)測(cè)井?dāng)?shù)據(jù)格式插件及管理規(guī)范。
下面的類圖反映了UDF的對(duì)象模型:
從圖2可以看出,UDF支持如下類型的數(shù)據(jù)對(duì)象:
(1)支持幀結(jié)構(gòu)的測(cè)井?dāng)?shù)據(jù)(即通常所說(shuō)的測(cè)井曲線,可以是多維的)。包括等深度及不等深度的測(cè)井?dāng)?shù)據(jù)、深度采樣的測(cè)井?dāng)?shù)據(jù)、時(shí)間采樣的測(cè)井?dāng)?shù)據(jù)等等。
(2)支持二進(jìn)制流數(shù)據(jù)。
(3)支持文本數(shù)據(jù)。
(4)支持XML數(shù)據(jù)。
(5)支持結(jié)構(gòu)化的參數(shù)數(shù)據(jù)。
(6)支持各種專業(yè)數(shù)據(jù)(如刻度信息、儀器信息、處理信息等)。
上述數(shù)據(jù)對(duì)象模型基本覆蓋了實(shí)時(shí)測(cè)井采集和解釋處理各方面的業(yè)務(wù)需求。
另外,UDF的插件機(jī)制為用戶開發(fā)各種具體數(shù)據(jù)格式的驅(qū)動(dòng)接口提供了很好的解決方案。
3.3 表象體系架構(gòu)
EPAPS的表象對(duì)象體系負(fù)責(zé)各種專業(yè)數(shù)據(jù)的顯示和人機(jī)交互,它構(gòu)建于專業(yè)圖形應(yīng)用軟件包GP之上,具體應(yīng)用采用繪圖頁(yè)插件形式實(shí)現(xiàn),這些繪圖頁(yè)插件都位于EPAPS的應(yīng)用層。這種設(shè)計(jì)架構(gòu)保證了 EPAPS的工能性和可擴(kuò)展性。
圖3反映了EPAPS表象體系的底層架構(gòu)。
圖3中的GP.Core定義了基本的圖形數(shù)據(jù)結(jié)構(gòu)和基礎(chǔ)的繪圖操作,GP.Dock提供了多窗口的錨定支持功能。GP.UILite, GP.UIEx,GP.UICommon提供了一系列的圖形交互控件,GP.Spec定義了表象體系規(guī)范,GP.Draw是二維圖形應(yīng)用程序的框架類庫(kù)。
VisualObject是基本可視對(duì)象,繪圖頁(yè)DrawCanvas、繪圖文檔DrawDocumentBase兩個(gè)上層對(duì)象提供了可視對(duì)象的兩級(jí)管理,足以應(yīng)對(duì)一般圖形應(yīng)用的各種需求。
繪圖頁(yè)模板CanvasTemplate和文檔模板DocumentTemplate以工廠類的方式提供了繪圖頁(yè)和文檔的創(chuàng)建機(jī)制,為動(dòng)態(tài)創(chuàng)建用戶開發(fā)的具體繪圖頁(yè)和文檔對(duì)象提供了支持。
圖形用戶交互工具對(duì)象IUiTool及其管理器UIToolManager將用戶交互和圖形顯示進(jìn)行分離,這樣交互工作比較專一,擴(kuò)充起來(lái)也更加方便。例如TextEditor配合UitGeneric交互工具對(duì)象可以完成各種文字編輯輸入工作。
測(cè)井繪圖時(shí)各種測(cè)井應(yīng)用軟件的一個(gè)重要功能,EPAPS使用插件機(jī)制在GP基礎(chǔ)上開發(fā)的EPAPS.Canvas.WellLog動(dòng)態(tài)鏈接庫(kù)專門負(fù)責(zé)測(cè)井繪圖工作,圖4是EPAPS.Canvas.WellLog的對(duì)象類結(jié)構(gòu)(見圖4)。
4 結(jié)語(yǔ)
EPAPS測(cè)井后處理系統(tǒng)軟件使用了面向?qū)ο笏枷爰岸喾N成熟的軟件設(shè)計(jì)模式,這些模式或用來(lái)實(shí)現(xiàn)某種用戶功能、或用來(lái)簡(jiǎn)化總體架構(gòu),或用來(lái)提高系統(tǒng)的擴(kuò)展性,或用來(lái)改善系統(tǒng)性能,下表對(duì)本系統(tǒng)所使用的幾個(gè)主要軟件設(shè)計(jì)模式做了個(gè)簡(jiǎn)單的總結(jié)(見表2)。
參考文獻(xiàn)
[1] 程杰.大話設(shè)計(jì)模式[M].清華大學(xué)出版社,2010.
[2] 楊莉萍.面向?qū)ο蟮姆椒ê驮O(shè)計(jì)模式 [J].計(jì)算機(jī)應(yīng)用與軟件,2006(3):37-39.
[3] 鐘尚平.論設(shè)計(jì)模式的重用[J].福建電腦,2006(3):2-4.endprint
摘 要:本文介紹了面向?qū)ο蟮姆椒ê驮O(shè)計(jì)模式在ELIS海洋石油成像測(cè)井地面后處理平臺(tái)EPAPS中的應(yīng)用,及EPAPS的主要設(shè)計(jì)思想。
關(guān)鍵詞:測(cè)井系統(tǒng) 數(shù)據(jù)后處理 面向?qū)ο?設(shè)計(jì)模式
中圖分類號(hào):TE32 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2014)05(a)-0104-03
ELIS海洋石油成像測(cè)井系統(tǒng)(Enhanced Logging Imaging System)是中海油田股份有限公司自主研發(fā)具有自主知識(shí)產(chǎn)權(quán)的用于海上石油勘探開發(fā)的電纜測(cè)井成像系統(tǒng),它主要由地面采集系統(tǒng)、井下儀器和數(shù)據(jù)解釋處理三個(gè)部分組成。
EPAPS即現(xiàn)場(chǎng)快速數(shù)據(jù)解釋處理平臺(tái),主要功能包括數(shù)據(jù)加載,數(shù)據(jù)的處理和顯示、出圖、文件格式轉(zhuǎn)換等。EPAPS采用了徹底的面向?qū)ο笤O(shè)計(jì)理念,妥善利用了多種先進(jìn)的軟件設(shè)計(jì)模式,整體架構(gòu)簡(jiǎn)潔明了,在軟件功能性、可維護(hù)性、可擴(kuò)展性和模塊互操作性等諸多工程要素上均有著非常出色的表現(xiàn)。
1 面向?qū)ο笤O(shè)計(jì)理念
面向?qū)ο蟮脑O(shè)計(jì)理念主要包括抽象、封裝、繼承、多態(tài),EPAPS靈活運(yùn)用了這些面向?qū)ο蟮脑O(shè)計(jì)理念對(duì)EPAPS進(jìn)行了合理的分層、分包、建立類的層次結(jié)構(gòu)和良好的體系架構(gòu),使EPAPS可復(fù)用性、可維護(hù)性、可擴(kuò)展性都得到了極大的提高。
2 設(shè)計(jì)模式
要使系統(tǒng)最大程度的適應(yīng)需求的變更或新增,就必須在其要實(shí)現(xiàn)的宏觀業(yè)務(wù)邏輯的抽象復(fù)用上下功夫。而設(shè)計(jì)模式就是綜合運(yùn)用面向?qū)ο蠹夹g(shù)和特性來(lái)提高業(yè)務(wù)邏輯可復(fù)用性的常用方法和經(jīng)驗(yàn)的提取和匯總。掌握23種設(shè)計(jì)模式的關(guān)鍵是理解它們的共通目的:使所設(shè)計(jì)的軟件系統(tǒng)在一般或特定(系統(tǒng)將來(lái)在特定點(diǎn)上需要擴(kuò)展的可能性大)場(chǎng)景下,盡可能的對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。即面對(duì)新需求或需求變更,容易開發(fā)獨(dú)立于既有代碼的新代碼接入到現(xiàn)有系統(tǒng)或?qū)ΜF(xiàn)有代碼做可控的少量修改,而不是在現(xiàn)有代碼基礎(chǔ)上做大量的增、刪、改。為了這一目的,EPAPS使用了多種設(shè)計(jì)模式提高軟件平臺(tái)的可擴(kuò)展性、靈活性、可插入性。
3 具體設(shè)計(jì)
3.1 總體架構(gòu)
圖1是EPAPS軟件的總體架構(gòu),它反映了EPAPS軟件的總體構(gòu)成和各頂層軟件包之間的相互關(guān)系。
從圖1可以看出,EPAPS應(yīng)用軟件架構(gòu)體現(xiàn)了層次化設(shè)計(jì)的思想,共有四個(gè)層次五大模塊。
第一層是基礎(chǔ)設(shè)施軟件包,該軟件包定義了復(fù)雜應(yīng)用的基本構(gòu)件、工具,包括UserMath基本數(shù)學(xué)庫(kù)、Common.Spec基本設(shè)施公共庫(kù)規(guī)范、Common公共設(shè)施基礎(chǔ)庫(kù)等。
第二層是表象和數(shù)據(jù)的基礎(chǔ),由交互式二維圖形應(yīng)用基礎(chǔ)類庫(kù)GP和專業(yè)數(shù)據(jù)Data兩大軟件包構(gòu)成。Data軟件包定義了測(cè)井?dāng)?shù)據(jù)的基本規(guī)范,并實(shí)現(xiàn)了常用的數(shù)據(jù)格式。同時(shí)Data軟件包還設(shè)計(jì)了數(shù)據(jù)管理及專業(yè)數(shù)據(jù)處理的規(guī)范和基本功能模塊。
第三層是測(cè)井應(yīng)用程序架構(gòu)層,本層定義了專業(yè)測(cè)井應(yīng)用的基本規(guī)范和基礎(chǔ)構(gòu)件。
第四層是具體執(zhí)行各種用戶功能的應(yīng)用層。
上述四個(gè)層次中低層軟件包是上層軟件的基礎(chǔ),為上層軟件包提供支持或規(guī)范。
3.2 UDF統(tǒng)一測(cè)井?dāng)?shù)據(jù)框架
目前測(cè)井?dāng)?shù)據(jù)格式?jīng)]有統(tǒng)一的標(biāo)準(zhǔn),國(guó)內(nèi)外每個(gè)測(cè)井裝備供應(yīng)商都有一到多種自定義的測(cè)井?dāng)?shù)據(jù)格式,再加上一些研究機(jī)構(gòu)和軟件供應(yīng)商定義的數(shù)據(jù)格式,使得常見的測(cè)井?dāng)?shù)據(jù)格式多達(dá)二十余種,下表列舉了其中的一部分(見表1)。
為了支持大多數(shù)測(cè)井?dāng)?shù)據(jù)格式的訪問(wèn)和轉(zhuǎn)換,我們綜合分析了實(shí)時(shí)測(cè)井?dāng)?shù)據(jù)采集和解釋處理的各項(xiàng)業(yè)務(wù)需求,深入研究了多種代表性的測(cè)井?dāng)?shù)據(jù)格式(包括DLIS)的邏輯結(jié)構(gòu)及具體內(nèi)容,設(shè)計(jì)了UDF統(tǒng)一測(cè)井?dāng)?shù)據(jù)框架。
UDF統(tǒng)一測(cè)井?dāng)?shù)據(jù)框架給出了如下規(guī)范:
(1)測(cè)井?dāng)?shù)據(jù)的對(duì)象模型。
(2)測(cè)井?dāng)?shù)據(jù)對(duì)象的屬性規(guī)范。
(3)測(cè)井?dāng)?shù)據(jù)對(duì)象的接口規(guī)范。
(4)測(cè)井?dāng)?shù)據(jù)格式插件及管理規(guī)范。
下面的類圖反映了UDF的對(duì)象模型:
從圖2可以看出,UDF支持如下類型的數(shù)據(jù)對(duì)象:
(1)支持幀結(jié)構(gòu)的測(cè)井?dāng)?shù)據(jù)(即通常所說(shuō)的測(cè)井曲線,可以是多維的)。包括等深度及不等深度的測(cè)井?dāng)?shù)據(jù)、深度采樣的測(cè)井?dāng)?shù)據(jù)、時(shí)間采樣的測(cè)井?dāng)?shù)據(jù)等等。
(2)支持二進(jìn)制流數(shù)據(jù)。
(3)支持文本數(shù)據(jù)。
(4)支持XML數(shù)據(jù)。
(5)支持結(jié)構(gòu)化的參數(shù)數(shù)據(jù)。
(6)支持各種專業(yè)數(shù)據(jù)(如刻度信息、儀器信息、處理信息等)。
上述數(shù)據(jù)對(duì)象模型基本覆蓋了實(shí)時(shí)測(cè)井采集和解釋處理各方面的業(yè)務(wù)需求。
另外,UDF的插件機(jī)制為用戶開發(fā)各種具體數(shù)據(jù)格式的驅(qū)動(dòng)接口提供了很好的解決方案。
3.3 表象體系架構(gòu)
EPAPS的表象對(duì)象體系負(fù)責(zé)各種專業(yè)數(shù)據(jù)的顯示和人機(jī)交互,它構(gòu)建于專業(yè)圖形應(yīng)用軟件包GP之上,具體應(yīng)用采用繪圖頁(yè)插件形式實(shí)現(xiàn),這些繪圖頁(yè)插件都位于EPAPS的應(yīng)用層。這種設(shè)計(jì)架構(gòu)保證了 EPAPS的工能性和可擴(kuò)展性。
圖3反映了EPAPS表象體系的底層架構(gòu)。
圖3中的GP.Core定義了基本的圖形數(shù)據(jù)結(jié)構(gòu)和基礎(chǔ)的繪圖操作,GP.Dock提供了多窗口的錨定支持功能。GP.UILite, GP.UIEx,GP.UICommon提供了一系列的圖形交互控件,GP.Spec定義了表象體系規(guī)范,GP.Draw是二維圖形應(yīng)用程序的框架類庫(kù)。
VisualObject是基本可視對(duì)象,繪圖頁(yè)DrawCanvas、繪圖文檔DrawDocumentBase兩個(gè)上層對(duì)象提供了可視對(duì)象的兩級(jí)管理,足以應(yīng)對(duì)一般圖形應(yīng)用的各種需求。
繪圖頁(yè)模板CanvasTemplate和文檔模板DocumentTemplate以工廠類的方式提供了繪圖頁(yè)和文檔的創(chuàng)建機(jī)制,為動(dòng)態(tài)創(chuàng)建用戶開發(fā)的具體繪圖頁(yè)和文檔對(duì)象提供了支持。
圖形用戶交互工具對(duì)象IUiTool及其管理器UIToolManager將用戶交互和圖形顯示進(jìn)行分離,這樣交互工作比較專一,擴(kuò)充起來(lái)也更加方便。例如TextEditor配合UitGeneric交互工具對(duì)象可以完成各種文字編輯輸入工作。
測(cè)井繪圖時(shí)各種測(cè)井應(yīng)用軟件的一個(gè)重要功能,EPAPS使用插件機(jī)制在GP基礎(chǔ)上開發(fā)的EPAPS.Canvas.WellLog動(dòng)態(tài)鏈接庫(kù)專門負(fù)責(zé)測(cè)井繪圖工作,圖4是EPAPS.Canvas.WellLog的對(duì)象類結(jié)構(gòu)(見圖4)。
4 結(jié)語(yǔ)
EPAPS測(cè)井后處理系統(tǒng)軟件使用了面向?qū)ο笏枷爰岸喾N成熟的軟件設(shè)計(jì)模式,這些模式或用來(lái)實(shí)現(xiàn)某種用戶功能、或用來(lái)簡(jiǎn)化總體架構(gòu),或用來(lái)提高系統(tǒng)的擴(kuò)展性,或用來(lái)改善系統(tǒng)性能,下表對(duì)本系統(tǒng)所使用的幾個(gè)主要軟件設(shè)計(jì)模式做了個(gè)簡(jiǎn)單的總結(jié)(見表2)。
參考文獻(xiàn)
[1] 程杰.大話設(shè)計(jì)模式[M].清華大學(xué)出版社,2010.
[2] 楊莉萍.面向?qū)ο蟮姆椒ê驮O(shè)計(jì)模式 [J].計(jì)算機(jī)應(yīng)用與軟件,2006(3):37-39.
[3] 鐘尚平.論設(shè)計(jì)模式的重用[J].福建電腦,2006(3):2-4.endprint
摘 要:本文介紹了面向?qū)ο蟮姆椒ê驮O(shè)計(jì)模式在ELIS海洋石油成像測(cè)井地面后處理平臺(tái)EPAPS中的應(yīng)用,及EPAPS的主要設(shè)計(jì)思想。
關(guān)鍵詞:測(cè)井系統(tǒng) 數(shù)據(jù)后處理 面向?qū)ο?設(shè)計(jì)模式
中圖分類號(hào):TE32 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2014)05(a)-0104-03
ELIS海洋石油成像測(cè)井系統(tǒng)(Enhanced Logging Imaging System)是中海油田股份有限公司自主研發(fā)具有自主知識(shí)產(chǎn)權(quán)的用于海上石油勘探開發(fā)的電纜測(cè)井成像系統(tǒng),它主要由地面采集系統(tǒng)、井下儀器和數(shù)據(jù)解釋處理三個(gè)部分組成。
EPAPS即現(xiàn)場(chǎng)快速數(shù)據(jù)解釋處理平臺(tái),主要功能包括數(shù)據(jù)加載,數(shù)據(jù)的處理和顯示、出圖、文件格式轉(zhuǎn)換等。EPAPS采用了徹底的面向?qū)ο笤O(shè)計(jì)理念,妥善利用了多種先進(jìn)的軟件設(shè)計(jì)模式,整體架構(gòu)簡(jiǎn)潔明了,在軟件功能性、可維護(hù)性、可擴(kuò)展性和模塊互操作性等諸多工程要素上均有著非常出色的表現(xiàn)。
1 面向?qū)ο笤O(shè)計(jì)理念
面向?qū)ο蟮脑O(shè)計(jì)理念主要包括抽象、封裝、繼承、多態(tài),EPAPS靈活運(yùn)用了這些面向?qū)ο蟮脑O(shè)計(jì)理念對(duì)EPAPS進(jìn)行了合理的分層、分包、建立類的層次結(jié)構(gòu)和良好的體系架構(gòu),使EPAPS可復(fù)用性、可維護(hù)性、可擴(kuò)展性都得到了極大的提高。
2 設(shè)計(jì)模式
要使系統(tǒng)最大程度的適應(yīng)需求的變更或新增,就必須在其要實(shí)現(xiàn)的宏觀業(yè)務(wù)邏輯的抽象復(fù)用上下功夫。而設(shè)計(jì)模式就是綜合運(yùn)用面向?qū)ο蠹夹g(shù)和特性來(lái)提高業(yè)務(wù)邏輯可復(fù)用性的常用方法和經(jīng)驗(yàn)的提取和匯總。掌握23種設(shè)計(jì)模式的關(guān)鍵是理解它們的共通目的:使所設(shè)計(jì)的軟件系統(tǒng)在一般或特定(系統(tǒng)將來(lái)在特定點(diǎn)上需要擴(kuò)展的可能性大)場(chǎng)景下,盡可能的對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。即面對(duì)新需求或需求變更,容易開發(fā)獨(dú)立于既有代碼的新代碼接入到現(xiàn)有系統(tǒng)或?qū)ΜF(xiàn)有代碼做可控的少量修改,而不是在現(xiàn)有代碼基礎(chǔ)上做大量的增、刪、改。為了這一目的,EPAPS使用了多種設(shè)計(jì)模式提高軟件平臺(tái)的可擴(kuò)展性、靈活性、可插入性。
3 具體設(shè)計(jì)
3.1 總體架構(gòu)
圖1是EPAPS軟件的總體架構(gòu),它反映了EPAPS軟件的總體構(gòu)成和各頂層軟件包之間的相互關(guān)系。
從圖1可以看出,EPAPS應(yīng)用軟件架構(gòu)體現(xiàn)了層次化設(shè)計(jì)的思想,共有四個(gè)層次五大模塊。
第一層是基礎(chǔ)設(shè)施軟件包,該軟件包定義了復(fù)雜應(yīng)用的基本構(gòu)件、工具,包括UserMath基本數(shù)學(xué)庫(kù)、Common.Spec基本設(shè)施公共庫(kù)規(guī)范、Common公共設(shè)施基礎(chǔ)庫(kù)等。
第二層是表象和數(shù)據(jù)的基礎(chǔ),由交互式二維圖形應(yīng)用基礎(chǔ)類庫(kù)GP和專業(yè)數(shù)據(jù)Data兩大軟件包構(gòu)成。Data軟件包定義了測(cè)井?dāng)?shù)據(jù)的基本規(guī)范,并實(shí)現(xiàn)了常用的數(shù)據(jù)格式。同時(shí)Data軟件包還設(shè)計(jì)了數(shù)據(jù)管理及專業(yè)數(shù)據(jù)處理的規(guī)范和基本功能模塊。
第三層是測(cè)井應(yīng)用程序架構(gòu)層,本層定義了專業(yè)測(cè)井應(yīng)用的基本規(guī)范和基礎(chǔ)構(gòu)件。
第四層是具體執(zhí)行各種用戶功能的應(yīng)用層。
上述四個(gè)層次中低層軟件包是上層軟件的基礎(chǔ),為上層軟件包提供支持或規(guī)范。
3.2 UDF統(tǒng)一測(cè)井?dāng)?shù)據(jù)框架
目前測(cè)井?dāng)?shù)據(jù)格式?jīng)]有統(tǒng)一的標(biāo)準(zhǔn),國(guó)內(nèi)外每個(gè)測(cè)井裝備供應(yīng)商都有一到多種自定義的測(cè)井?dāng)?shù)據(jù)格式,再加上一些研究機(jī)構(gòu)和軟件供應(yīng)商定義的數(shù)據(jù)格式,使得常見的測(cè)井?dāng)?shù)據(jù)格式多達(dá)二十余種,下表列舉了其中的一部分(見表1)。
為了支持大多數(shù)測(cè)井?dāng)?shù)據(jù)格式的訪問(wèn)和轉(zhuǎn)換,我們綜合分析了實(shí)時(shí)測(cè)井?dāng)?shù)據(jù)采集和解釋處理的各項(xiàng)業(yè)務(wù)需求,深入研究了多種代表性的測(cè)井?dāng)?shù)據(jù)格式(包括DLIS)的邏輯結(jié)構(gòu)及具體內(nèi)容,設(shè)計(jì)了UDF統(tǒng)一測(cè)井?dāng)?shù)據(jù)框架。
UDF統(tǒng)一測(cè)井?dāng)?shù)據(jù)框架給出了如下規(guī)范:
(1)測(cè)井?dāng)?shù)據(jù)的對(duì)象模型。
(2)測(cè)井?dāng)?shù)據(jù)對(duì)象的屬性規(guī)范。
(3)測(cè)井?dāng)?shù)據(jù)對(duì)象的接口規(guī)范。
(4)測(cè)井?dāng)?shù)據(jù)格式插件及管理規(guī)范。
下面的類圖反映了UDF的對(duì)象模型:
從圖2可以看出,UDF支持如下類型的數(shù)據(jù)對(duì)象:
(1)支持幀結(jié)構(gòu)的測(cè)井?dāng)?shù)據(jù)(即通常所說(shuō)的測(cè)井曲線,可以是多維的)。包括等深度及不等深度的測(cè)井?dāng)?shù)據(jù)、深度采樣的測(cè)井?dāng)?shù)據(jù)、時(shí)間采樣的測(cè)井?dāng)?shù)據(jù)等等。
(2)支持二進(jìn)制流數(shù)據(jù)。
(3)支持文本數(shù)據(jù)。
(4)支持XML數(shù)據(jù)。
(5)支持結(jié)構(gòu)化的參數(shù)數(shù)據(jù)。
(6)支持各種專業(yè)數(shù)據(jù)(如刻度信息、儀器信息、處理信息等)。
上述數(shù)據(jù)對(duì)象模型基本覆蓋了實(shí)時(shí)測(cè)井采集和解釋處理各方面的業(yè)務(wù)需求。
另外,UDF的插件機(jī)制為用戶開發(fā)各種具體數(shù)據(jù)格式的驅(qū)動(dòng)接口提供了很好的解決方案。
3.3 表象體系架構(gòu)
EPAPS的表象對(duì)象體系負(fù)責(zé)各種專業(yè)數(shù)據(jù)的顯示和人機(jī)交互,它構(gòu)建于專業(yè)圖形應(yīng)用軟件包GP之上,具體應(yīng)用采用繪圖頁(yè)插件形式實(shí)現(xiàn),這些繪圖頁(yè)插件都位于EPAPS的應(yīng)用層。這種設(shè)計(jì)架構(gòu)保證了 EPAPS的工能性和可擴(kuò)展性。
圖3反映了EPAPS表象體系的底層架構(gòu)。
圖3中的GP.Core定義了基本的圖形數(shù)據(jù)結(jié)構(gòu)和基礎(chǔ)的繪圖操作,GP.Dock提供了多窗口的錨定支持功能。GP.UILite, GP.UIEx,GP.UICommon提供了一系列的圖形交互控件,GP.Spec定義了表象體系規(guī)范,GP.Draw是二維圖形應(yīng)用程序的框架類庫(kù)。
VisualObject是基本可視對(duì)象,繪圖頁(yè)DrawCanvas、繪圖文檔DrawDocumentBase兩個(gè)上層對(duì)象提供了可視對(duì)象的兩級(jí)管理,足以應(yīng)對(duì)一般圖形應(yīng)用的各種需求。
繪圖頁(yè)模板CanvasTemplate和文檔模板DocumentTemplate以工廠類的方式提供了繪圖頁(yè)和文檔的創(chuàng)建機(jī)制,為動(dòng)態(tài)創(chuàng)建用戶開發(fā)的具體繪圖頁(yè)和文檔對(duì)象提供了支持。
圖形用戶交互工具對(duì)象IUiTool及其管理器UIToolManager將用戶交互和圖形顯示進(jìn)行分離,這樣交互工作比較專一,擴(kuò)充起來(lái)也更加方便。例如TextEditor配合UitGeneric交互工具對(duì)象可以完成各種文字編輯輸入工作。
測(cè)井繪圖時(shí)各種測(cè)井應(yīng)用軟件的一個(gè)重要功能,EPAPS使用插件機(jī)制在GP基礎(chǔ)上開發(fā)的EPAPS.Canvas.WellLog動(dòng)態(tài)鏈接庫(kù)專門負(fù)責(zé)測(cè)井繪圖工作,圖4是EPAPS.Canvas.WellLog的對(duì)象類結(jié)構(gòu)(見圖4)。
4 結(jié)語(yǔ)
EPAPS測(cè)井后處理系統(tǒng)軟件使用了面向?qū)ο笏枷爰岸喾N成熟的軟件設(shè)計(jì)模式,這些模式或用來(lái)實(shí)現(xiàn)某種用戶功能、或用來(lái)簡(jiǎn)化總體架構(gòu),或用來(lái)提高系統(tǒng)的擴(kuò)展性,或用來(lái)改善系統(tǒng)性能,下表對(duì)本系統(tǒng)所使用的幾個(gè)主要軟件設(shè)計(jì)模式做了個(gè)簡(jiǎn)單的總結(jié)(見表2)。
參考文獻(xiàn)
[1] 程杰.大話設(shè)計(jì)模式[M].清華大學(xué)出版社,2010.
[2] 楊莉萍.面向?qū)ο蟮姆椒ê驮O(shè)計(jì)模式 [J].計(jì)算機(jī)應(yīng)用與軟件,2006(3):37-39.
[3] 鐘尚平.論設(shè)計(jì)模式的重用[J].福建電腦,2006(3):2-4.endprint