王維強(qiáng),孫 輝,杜 偉,劉恩新
(中國(guó)石化勝利油田分公司石油工程技術(shù)研究院,山東東營(yíng)257000)
采油工藝構(gòu)件開(kāi)發(fā)技術(shù)研究與應(yīng)用
王維強(qiáng),孫 輝,杜 偉,劉恩新
(中國(guó)石化勝利油田分公司石油工程技術(shù)研究院,山東東營(yíng)257000)
在采油工藝設(shè)計(jì)過(guò)程中經(jīng)常需要進(jìn)行大量重復(fù)計(jì)算,雖然現(xiàn)有的專(zhuān)業(yè)軟件及自研軟件可以為工藝設(shè)計(jì)人員提供信息化支持手段,但是依然存在缺乏實(shí)用計(jì)算工具、軟件之間功能重復(fù)等問(wèn)題。通過(guò)對(duì)采油工藝設(shè)計(jì)過(guò)程的業(yè)務(wù)分析,整理出工藝設(shè)計(jì)人員需要的計(jì)算工具及可重復(fù)利用的功能模塊,以軟件構(gòu)件形式進(jìn)行開(kāi)發(fā),采用分布式存儲(chǔ),建立采油工藝構(gòu)件庫(kù),可以提高軟件開(kāi)發(fā)效率,降低開(kāi)發(fā)人員的工作強(qiáng)度,并為工藝設(shè)計(jì)人員提供實(shí)用的計(jì)算工具。
采油工藝;構(gòu)件;軟件復(fù)用;WCF
采油工程系統(tǒng)業(yè)務(wù)面廣、綜合性強(qiáng),涉及多專(zhuān)業(yè)、多學(xué)科,工藝設(shè)計(jì)過(guò)程復(fù)雜,經(jīng)常需要進(jìn)行大量的計(jì)算、分析。為了提高工藝設(shè)計(jì)效率,減輕工藝設(shè)計(jì)人員計(jì)算強(qiáng)度,油田引進(jìn)了一批專(zhuān)業(yè)軟件,并組織了各類(lèi)軟件自研工作,對(duì)于提高方案設(shè)計(jì)效率,減輕設(shè)計(jì)人員的工作強(qiáng)度起到了積極的作用,但是目前依然存在如下兩方面的問(wèn)題:①方案設(shè)計(jì)中所用到的一些計(jì)算過(guò)程尚缺乏針對(duì)性較強(qiáng)的軟件支持,專(zhuān)業(yè)軟件中相關(guān)功能模塊對(duì)軟件的依賴(lài)度極高,無(wú)法將某一個(gè)功能模塊拿出單獨(dú)使用,給實(shí)際應(yīng)用帶來(lái)一定的困難;②自研軟件存在重復(fù)開(kāi)發(fā),浪費(fèi)資源的情況。在軟件開(kāi)發(fā)過(guò)程中用到的功能模塊即使其他軟件中已經(jīng)存在,也無(wú)法直接使用,需要重新開(kāi)發(fā)。如果能夠使用軟件構(gòu)件技術(shù),通過(guò)對(duì)工藝設(shè)計(jì)流程進(jìn)行分析,提取出工藝設(shè)計(jì)過(guò)程中的共性,開(kāi)發(fā)為可獨(dú)立使用或者可重復(fù)使用的軟件體,則可較好地解決上述問(wèn)題,從而達(dá)到提高軟件復(fù)用性,幫助方案設(shè)計(jì)人員提高工作效率的目的。
一般認(rèn)為構(gòu)件是一個(gè)語(yǔ)義完整、語(yǔ)法正確和有可復(fù)用價(jià)值的單位軟件。構(gòu)件隱藏了具體的實(shí)現(xiàn),只用接口對(duì)外提供服務(wù),構(gòu)件的開(kāi)發(fā)與使用相對(duì)獨(dú)立,以作為獨(dú)立單元被使用于不同的體系結(jié)構(gòu),不同的軟件系統(tǒng)中,實(shí)現(xiàn)構(gòu)件的復(fù)用。從廣義上來(lái)說(shuō),構(gòu)件不僅僅是程序塊,程序相關(guān)文檔、需求設(shè)計(jì)書(shū)、測(cè)試用例以及構(gòu)件之間的互相組合都可以生成為一個(gè)構(gòu)件[1]。
從本文的研究角度出發(fā),筆者認(rèn)為,構(gòu)件是一系列文檔、功能模塊、數(shù)據(jù)表的總稱(chēng),包括了采油工藝業(yè)務(wù)分析文檔、業(yè)務(wù)流程文檔、不同工藝需要用到的功能模塊及各類(lèi)服務(wù)接口、以及為了存儲(chǔ)構(gòu)件而在數(shù)據(jù)庫(kù)中建立的數(shù)據(jù)表等,其中功能模塊可單獨(dú)使用,也可被其他系統(tǒng)調(diào)用,或者可以組合后形成新的業(yè)務(wù)功能模塊。
構(gòu)件庫(kù)是對(duì)構(gòu)件進(jìn)行管理的機(jī)構(gòu),通過(guò)構(gòu)件庫(kù)及構(gòu)件庫(kù)管理系統(tǒng),實(shí)現(xiàn)構(gòu)件的存儲(chǔ)和構(gòu)件庫(kù)的管理。在本文的研究工作中,構(gòu)件庫(kù)中存儲(chǔ)構(gòu)件的地址,開(kāi)發(fā)人員只需向構(gòu)件庫(kù)中上傳構(gòu)件地址即可。構(gòu)件庫(kù)的管理主要包括構(gòu)件增刪改、用戶(hù)管理、構(gòu)件授權(quán)等。
在采油工藝方案設(shè)計(jì)過(guò)程中,不同工藝設(shè)計(jì)過(guò)程可能會(huì)用到同樣的計(jì)算方法或者同樣的設(shè)計(jì)流程,這就為構(gòu)件復(fù)用提供了基礎(chǔ),所以需要首先對(duì)不同工藝進(jìn)行業(yè)務(wù)分析,獲得可復(fù)用的算法、公式并進(jìn)行描述,便于后期業(yè)務(wù)人員或開(kāi)發(fā)人員使用構(gòu)件。
例如在舉升工藝設(shè)計(jì)過(guò)程中,經(jīng)常要進(jìn)行舉升方式優(yōu)選、油管組合、抽油桿組合、電機(jī)配套等優(yōu)化設(shè)計(jì),經(jīng)過(guò)對(duì)這些設(shè)計(jì)過(guò)程的分析,可將其歸納為抽油桿柱組合設(shè)計(jì)及強(qiáng)度校核、懸點(diǎn)載荷預(yù)測(cè)、油管柱設(shè)計(jì)及強(qiáng)度校核、抽油泵、井下工具設(shè)計(jì)及強(qiáng)度校核等四大類(lèi)需求,對(duì)這幾類(lèi)需求進(jìn)行進(jìn)一步的分解后,可以整理出懸點(diǎn)載荷預(yù)測(cè)、桿柱組合設(shè)計(jì)、抗拉載荷計(jì)算、承壓能力計(jì)算等具體算法。把這些算法開(kāi)發(fā)成軟件構(gòu)件,既可實(shí)現(xiàn)軟件復(fù)用,提高開(kāi)發(fā)效率,也可單獨(dú)應(yīng)用于不同工藝的設(shè)計(jì)過(guò)程,為工藝設(shè)計(jì)人員提供高效實(shí)用的計(jì)算工具。
經(jīng)過(guò)業(yè)務(wù)分析,明確各工藝的需求后,需要對(duì)各構(gòu)件的屬性進(jìn)行描述,以明確該構(gòu)件的功能,便于用戶(hù)了解、使用構(gòu)件。構(gòu)件描述包括了構(gòu)件的通用描述、接口描述和邏輯描述,通過(guò)這幾方面的描述可以清晰地定義構(gòu)件的屬性、應(yīng)用場(chǎng)景等,為構(gòu)件的檢索、應(yīng)用提供路徑。
以封隔器設(shè)計(jì)中的桿柱抗拉載荷計(jì)算構(gòu)件為例,對(duì)構(gòu)件的通用描述、邏輯描述、接口描述進(jìn)行說(shuō)明。管柱抗拉載荷計(jì)算是封隔器設(shè)計(jì)過(guò)程中經(jīng)常需要用到的一個(gè)計(jì)算過(guò)程,主要目的是計(jì)算出中心管許用抗拉載荷,計(jì)算公式如下:
式中,D為中心管最小外徑;d為中心管內(nèi)徑;為許用應(yīng)力。
3.1 通用描述
通用描述主要包括構(gòu)件名稱(chēng)、開(kāi)發(fā)語(yǔ)言、開(kāi)發(fā)環(huán)境、關(guān)鍵詞、制作日期、構(gòu)件類(lèi)型等[2],通過(guò)在構(gòu)件庫(kù)中建立構(gòu)件基礎(chǔ)信息表的方式實(shí)現(xiàn)在系統(tǒng)中對(duì)構(gòu)件基礎(chǔ)信息的調(diào)用,可用表1的結(jié)構(gòu)進(jìn)行存儲(chǔ)。
表1 構(gòu)件通用描述表結(jié)構(gòu)
3.2 邏輯描述
構(gòu)件的邏輯描述從構(gòu)件的接口、服務(wù)、結(jié)構(gòu)等方面建立構(gòu)件的框架結(jié)構(gòu)。結(jié)構(gòu)定義了對(duì)構(gòu)件實(shí)現(xiàn)的引用或者構(gòu)件內(nèi)成員構(gòu)件之間的連接關(guān)系,接口主要用來(lái)實(shí)現(xiàn)與外部的聯(lián)系,包括該構(gòu)件對(duì)外提供的服務(wù)、對(duì)外請(qǐng)求的服務(wù)。所謂服務(wù),就是精確定義、封裝完善、獨(dú)立于其他服務(wù)所處環(huán)境和狀態(tài)的函數(shù)。封隔器設(shè)計(jì)過(guò)程中管柱抗拉載荷計(jì)算所得到的最終結(jié)果為內(nèi)中心管的許用抗拉載荷,這就是該構(gòu)件能夠?qū)ν馓峁┑姆?wù)。式(1)計(jì)算過(guò)程中,D、d為輸入?yún)?shù),δs為該構(gòu)件對(duì)外請(qǐng)求的服務(wù)。
管柱抗拉載荷::=<規(guī)約,實(shí)現(xiàn)>
規(guī)約::=<接口,結(jié)構(gòu)>
接口::=<對(duì)外提供F——管柱抗拉載荷,對(duì)外請(qǐng)求:δs——許用應(yīng)力。>
結(jié)構(gòu)::=<原子構(gòu)件>
原子構(gòu)件結(jié)構(gòu)::=<實(shí)現(xiàn)環(huán)境:c#+IIS;引用位置:構(gòu)件的存儲(chǔ)路徑>
3.3 接口描述
接口描述是對(duì)構(gòu)件對(duì)外提供的服務(wù)或?qū)ν庹?qǐng)求的服務(wù)進(jìn)行詳細(xì)描述,給出各個(gè)參數(shù)的明確定義,便于用戶(hù)更清晰直觀地了解構(gòu)件的結(jié)構(gòu)。
通過(guò)上述三方面的描述,完整地表達(dá)了構(gòu)件的基礎(chǔ)信息,規(guī)范了構(gòu)件的輸入輸出接口,定義了接口參數(shù)的類(lèi)型,用戶(hù)只需知道上述描述信息即可發(fā)起服務(wù)請(qǐng)求。
如前所述,本研究的主要目的有兩個(gè):一是為工藝設(shè)計(jì)人員提供計(jì)算工具,二是實(shí)現(xiàn)軟件復(fù)用,提高軟件開(kāi)發(fā)效率。為了實(shí)現(xiàn)構(gòu)件的可重用性,要求構(gòu)件對(duì)業(yè)務(wù)環(huán)境的變化應(yīng)有良好的適應(yīng)能力,并具備平臺(tái)無(wú)關(guān)性和系統(tǒng)獨(dú)立性,即可以在不同的操作系統(tǒng)平臺(tái)上使用,不依附于某個(gè)軟件而存在。采用SOA架構(gòu),WCF技術(shù)進(jìn)行構(gòu)件的封裝,將構(gòu)件以服務(wù)的形式與外界進(jìn)行通信,可以較好地實(shí)現(xiàn)這個(gè)目的。
在基于SOA的體系結(jié)構(gòu)設(shè)計(jì)中,軟件構(gòu)件以服務(wù)的形式存在,我們將業(yè)務(wù)過(guò)程、算法、數(shù)據(jù)設(shè)計(jì)實(shí)現(xiàn)為對(duì)外公布服務(wù)契約和數(shù)據(jù)契約的服務(wù)。服務(wù)契約就是服務(wù)調(diào)用的接口,數(shù)據(jù)契約就是完成接口調(diào)用所需要的輸入輸出參數(shù)規(guī)范,每個(gè)服務(wù)都實(shí)現(xiàn)了某個(gè)業(yè)務(wù)或業(yè)務(wù)的某個(gè)部分,用戶(hù)可以對(duì)服務(wù)進(jìn)行集成和調(diào)用,還可以按照自己的需求組合使用這些服務(wù),完成工藝設(shè)計(jì)和計(jì)算。如圖1所示,構(gòu)件的實(shí)現(xiàn)分成3層,分別是數(shù)據(jù)層、業(yè)務(wù)層和WCF層。
圖1 構(gòu)件庫(kù)體系結(jié)構(gòu)
數(shù)據(jù)層負(fù)責(zé)實(shí)現(xiàn)構(gòu)件相關(guān)參數(shù)的存儲(chǔ),業(yè)務(wù)層負(fù)責(zé)抽象出工藝算法,包括所有的計(jì)算細(xì)節(jié)和處理數(shù)據(jù)的過(guò)程,根據(jù)輸入數(shù)據(jù),按照某種處理過(guò)程,存取數(shù)據(jù)庫(kù)的數(shù)據(jù),產(chǎn)生結(jié)果返回給WCF層,再由WCF層返回給服務(wù)調(diào)用者。WCF層由WCF框架所提供的功能和我們定義的服務(wù)契約和數(shù)據(jù)契約組成,為服務(wù)提供了很多功能,包括托管、服務(wù)實(shí)例管理、底層通訊協(xié)議、異步調(diào)用、可靠性等[4],最終完成構(gòu)件與用戶(hù)的交互。本文的工作中,交互方式包括了兩種:一種是被開(kāi)發(fā)者調(diào)用,實(shí)現(xiàn)構(gòu)件的復(fù)用。筆者單位曾經(jīng)開(kāi)發(fā)過(guò)懸點(diǎn)載荷預(yù)測(cè)軟件,代碼量在15 000行左右。將此功能封裝為構(gòu)件后,其他軟件只需調(diào)用此構(gòu)件,代碼量在100行左右,可極大的簡(jiǎn)化軟件開(kāi)發(fā)過(guò)程,提高開(kāi)發(fā)效率。第二種可以由工藝設(shè)計(jì)人員直接在線使用,提高設(shè)計(jì)效率。在博興油田博3塊沙四上老區(qū)綜合調(diào)整方案編制、大蘆湖油田樊107塊沙三段老區(qū)調(diào)整方案編制中使用了本系統(tǒng)提供的構(gòu)件,相關(guān)計(jì)算過(guò)程從至少1 h縮短到幾分鐘,為工藝設(shè)計(jì)人員提供了便捷有效的計(jì)算工具。
在本文的研究工作中,以舉升和壓裂為測(cè)試用例,將采油工藝設(shè)計(jì)中常用的算法提取出來(lái),基于SOA架構(gòu),通過(guò)WCF進(jìn)行構(gòu)件化封裝后以對(duì)外提供服務(wù)的方式實(shí)現(xiàn)構(gòu)件的重用,并提供了在線使用功能。通過(guò)測(cè)試使用,本系統(tǒng)可以減輕工藝設(shè)計(jì)人員計(jì)算強(qiáng)度,提高工藝軟件開(kāi)發(fā)效率,能夠較好地滿(mǎn)足工藝設(shè)計(jì)過(guò)程中對(duì)信息化支持手段的需求。
[1] 王映輝.軟件構(gòu)件與體系結(jié)構(gòu)——原理、方法與技術(shù)[M].北京:機(jī)械工業(yè)出版社,2009:10.
[2] 張涌.一個(gè)集成式的軟件構(gòu)件描述框架[J].計(jì)算機(jī)學(xué)報(bào),2002 (5):502-507.
[3] 趙海寧.基于WCF構(gòu)架的應(yīng)用與研究[J].電腦知識(shí)與技術(shù), 2010,6(1):77-79.
[4] LOWY J.WCF服務(wù)編程[M].張逸,徐寧,譯.北京:機(jī)械工業(yè)出版社,2008:14.
[責(zé)任編輯]王艷麗
TP31
A
1673-5935(2016)04-0019-03
10.3969/j.issn.1673-5935.2016.04.006
2016-10-20
王維強(qiáng)(1972—),男,山東禹城人,中國(guó)石化勝利油田分公司石油工程技術(shù)研究院高級(jí)工程師,主要從事數(shù)據(jù)管理、應(yīng)用技術(shù)研究。
中國(guó)石油大學(xué)勝利學(xué)院學(xué)報(bào)2016年4期