采油工艺构件开发技术研究与应用

2016-02-13 09:02王维强刘恩新
中国石油大学胜利学院学报 2016年4期
关键词:抗拉功能模块构件

王维强,孙 辉,杜 伟,刘恩新

(中国石化胜利油田分公司石油工程技术研究院,山东东营257000)

采油工艺构件开发技术研究与应用

王维强,孙 辉,杜 伟,刘恩新

(中国石化胜利油田分公司石油工程技术研究院,山东东营257000)

在采油工艺设计过程中经常需要进行大量重复计算,虽然现有的专业软件及自研软件可以为工艺设计人员提供信息化支持手段,但是依然存在缺乏实用计算工具、软件之间功能重复等问题。通过对采油工艺设计过程的业务分析,整理出工艺设计人员需要的计算工具及可重复利用的功能模块,以软件构件形式进行开发,采用分布式存储,建立采油工艺构件库,可以提高软件开发效率,降低开发人员的工作强度,并为工艺设计人员提供实用的计算工具。

采油工艺;构件;软件复用;WCF

采油工程系统业务面广、综合性强,涉及多专业、多学科,工艺设计过程复杂,经常需要进行大量的计算、分析。为了提高工艺设计效率,减轻工艺设计人员计算强度,油田引进了一批专业软件,并组织了各类软件自研工作,对于提高方案设计效率,减轻设计人员的工作强度起到了积极的作用,但是目前依然存在如下两方面的问题:①方案设计中所用到的一些计算过程尚缺乏针对性较强的软件支持,专业软件中相关功能模块对软件的依赖度极高,无法将某一个功能模块拿出单独使用,给实际应用带来一定的困难;②自研软件存在重复开发,浪费资源的情况。在软件开发过程中用到的功能模块即使其他软件中已经存在,也无法直接使用,需要重新开发。如果能够使用软件构件技术,通过对工艺设计流程进行分析,提取出工艺设计过程中的共性,开发为可独立使用或者可重复使用的软件体,则可较好地解决上述问题,从而达到提高软件复用性,帮助方案设计人员提高工作效率的目的。

1 构件与构件库

一般认为构件是一个语义完整、语法正确和有可复用价值的单位软件。构件隐藏了具体的实现,只用接口对外提供服务,构件的开发与使用相对独立,以作为独立单元被使用于不同的体系结构,不同的软件系统中,实现构件的复用。从广义上来说,构件不仅仅是程序块,程序相关文档、需求设计书、测试用例以及构件之间的互相组合都可以生成为一个构件[1]。

从本文的研究角度出发,笔者认为,构件是一系列文档、功能模块、数据表的总称,包括了采油工艺业务分析文档、业务流程文档、不同工艺需要用到的功能模块及各类服务接口、以及为了存储构件而在数据库中建立的数据表等,其中功能模块可单独使用,也可被其他系统调用,或者可以组合后形成新的业务功能模块。

构件库是对构件进行管理的机构,通过构件库及构件库管理系统,实现构件的存储和构件库的管理。在本文的研究工作中,构件库中存储构件的地址,开发人员只需向构件库中上传构件地址即可。构件库的管理主要包括构件增删改、用户管理、构件授权等。

2 业务分析

在采油工艺方案设计过程中,不同工艺设计过程可能会用到同样的计算方法或者同样的设计流程,这就为构件复用提供了基础,所以需要首先对不同工艺进行业务分析,获得可复用的算法、公式并进行描述,便于后期业务人员或开发人员使用构件。

例如在举升工艺设计过程中,经常要进行举升方式优选、油管组合、抽油杆组合、电机配套等优化设计,经过对这些设计过程的分析,可将其归纳为抽油杆柱组合设计及强度校核、悬点载荷预测、油管柱设计及强度校核、抽油泵、井下工具设计及强度校核等四大类需求,对这几类需求进行进一步的分解后,可以整理出悬点载荷预测、杆柱组合设计、抗拉载荷计算、承压能力计算等具体算法。把这些算法开发成软件构件,既可实现软件复用,提高开发效率,也可单独应用于不同工艺的设计过程,为工艺设计人员提供高效实用的计算工具。

3 构件描述

经过业务分析,明确各工艺的需求后,需要对各构件的属性进行描述,以明确该构件的功能,便于用户了解、使用构件。构件描述包括了构件的通用描述、接口描述和逻辑描述,通过这几方面的描述可以清晰地定义构件的属性、应用场景等,为构件的检索、应用提供路径。

以封隔器设计中的杆柱抗拉载荷计算构件为例,对构件的通用描述、逻辑描述、接口描述进行说明。管柱抗拉载荷计算是封隔器设计过程中经常需要用到的一个计算过程,主要目的是计算出中心管许用抗拉载荷,计算公式如下:

式中,D为中心管最小外径;d为中心管内径;为许用应力。

3.1 通用描述

通用描述主要包括构件名称、开发语言、开发环境、关键词、制作日期、构件类型等[2],通过在构件库中建立构件基础信息表的方式实现在系统中对构件基础信息的调用,可用表1的结构进行存储。

表1 构件通用描述表结构

3.2 逻辑描述

构件的逻辑描述从构件的接口、服务、结构等方面建立构件的框架结构。结构定义了对构件实现的引用或者构件内成员构件之间的连接关系,接口主要用来实现与外部的联系,包括该构件对外提供的服务、对外请求的服务。所谓服务,就是精确定义、封装完善、独立于其他服务所处环境和状态的函数。封隔器设计过程中管柱抗拉载荷计算所得到的最终结果为内中心管的许用抗拉载荷,这就是该构件能够对外提供的服务。式(1)计算过程中,D、d为输入参数,δs为该构件对外请求的服务。

管柱抗拉载荷::=<规约,实现>

规约::=<接口,结构>

接口::=<对外提供F——管柱抗拉载荷,对外请求:δs——许用应力。>

结构::=<原子构件>

原子构件结构::=<实现环境:c#+IIS;引用位置:构件的存储路径>

3.3 接口描述

接口描述是对构件对外提供的服务或对外请求的服务进行详细描述,给出各个参数的明确定义,便于用户更清晰直观地了解构件的结构。

通过上述三方面的描述,完整地表达了构件的基础信息,规范了构件的输入输出接口,定义了接口参数的类型,用户只需知道上述描述信息即可发起服务请求。

4 构件开发技术

如前所述,本研究的主要目的有两个:一是为工艺设计人员提供计算工具,二是实现软件复用,提高软件开发效率。为了实现构件的可重用性,要求构件对业务环境的变化应有良好的适应能力,并具备平台无关性和系统独立性,即可以在不同的操作系统平台上使用,不依附于某个软件而存在。采用SOA架构,WCF技术进行构件的封装,将构件以服务的形式与外界进行通信,可以较好地实现这个目的。

在基于SOA的体系结构设计中,软件构件以服务的形式存在,我们将业务过程、算法、数据设计实现为对外公布服务契约和数据契约的服务。服务契约就是服务调用的接口,数据契约就是完成接口调用所需要的输入输出参数规范,每个服务都实现了某个业务或业务的某个部分,用户可以对服务进行集成和调用,还可以按照自己的需求组合使用这些服务,完成工艺设计和计算。如图1所示,构件的实现分成3层,分别是数据层、业务层和WCF层。

图1 构件库体系结构

数据层负责实现构件相关参数的存储,业务层负责抽象出工艺算法,包括所有的计算细节和处理数据的过程,根据输入数据,按照某种处理过程,存取数据库的数据,产生结果返回给WCF层,再由WCF层返回给服务调用者。WCF层由WCF框架所提供的功能和我们定义的服务契约和数据契约组成,为服务提供了很多功能,包括托管、服务实例管理、底层通讯协议、异步调用、可靠性等[4],最终完成构件与用户的交互。本文的工作中,交互方式包括了两种:一种是被开发者调用,实现构件的复用。笔者单位曾经开发过悬点载荷预测软件,代码量在15 000行左右。将此功能封装为构件后,其他软件只需调用此构件,代码量在100行左右,可极大的简化软件开发过程,提高开发效率。第二种可以由工艺设计人员直接在线使用,提高设计效率。在博兴油田博3块沙四上老区综合调整方案编制、大芦湖油田樊107块沙三段老区调整方案编制中使用了本系统提供的构件,相关计算过程从至少1 h缩短到几分钟,为工艺设计人员提供了便捷有效的计算工具。

5 结束语

在本文的研究工作中,以举升和压裂为测试用例,将采油工艺设计中常用的算法提取出来,基于SOA架构,通过WCF进行构件化封装后以对外提供服务的方式实现构件的重用,并提供了在线使用功能。通过测试使用,本系统可以减轻工艺设计人员计算强度,提高工艺软件开发效率,能够较好地满足工艺设计过程中对信息化支持手段的需求。

[1] 王映辉.软件构件与体系结构——原理、方法与技术[M].北京:机械工业出版社,2009:10.

[2] 张涌.一个集成式的软件构件描述框架[J].计算机学报,2002 (5):502-507.

[3] 赵海宁.基于WCF构架的应用与研究[J].电脑知识与技术, 2010,6(1):77-79.

[4] LOWY J.WCF服务编程[M].张逸,徐宁,译.北京:机械工业出版社,2008:14.

[责任编辑]王艳丽

TP31

A

1673-5935(2016)04-0019-03

10.3969/j.issn.1673-5935.2016.04.006

2016-10-20

王维强(1972—),男,山东禹城人,中国石化胜利油田分公司石油工程技术研究院高级工程师,主要从事数据管理、应用技术研究。

猜你喜欢
抗拉功能模块构件
新型抗拉装置在大高宽比隔震结构设计中的应用
钢筋混凝土构件裂缝控制
改性聚酯纤维耐碱性能(抗拉强力保持率)测量不确定度评定
专利名称:二硅化钼基陶瓷加热元件保持结构
西夏建筑构件——鸱吻
基于ASP.NET标准的采购管理系统研究
高校二手交易网络平台功能及技术框架分析与设计
一种钢包车电缆的改进与研制
地震勘探电缆与应答器的固定装置
功能模块的设计与应用研究