多功能开放式软件设计.docx
- 文档编号:11632423
- 上传时间:2023-03-29
- 格式:DOCX
- 页数:10
- 大小:1.85MB
多功能开放式软件设计.docx
《多功能开放式软件设计.docx》由会员分享,可在线阅读,更多相关《多功能开放式软件设计.docx(10页珍藏版)》请在冰豆网上搜索。
多功能开放式软件设计
多功能开放式软件设计
按时提供稳定的软件产品需要严格遵守既定的开发计划。
开发小组根据客户需求针对其产品设定部分功能,当然也就不可避免地排除了部分强化功能。
向外部程序设计者开放软件开发流程可以为增加新的软件功能开辟另一条途径,这样做对生产时间和原始产品的质量都不会产生任何影响。
在理想情况下,一个软件只具备某用户所需的一些功能,仅消耗当前任务所需的资源,而且拥有以这些功能为中心的人机交互界面。
但在现实中却很少有这样的情况,所开发的软件功能往往需要满足多个不同客户的需要。
结果可能导致该软件对某些人而言过于复杂,而对其他一些人而言又缺少关键组件;不过有一种方法可以解决这一难题,该方法正被越来越多的软件开发公司和用户所采纳。
开发人员可以通过开发应用编程界面(API)获取软件程序或操作系统状态和功能方面的信息[1]。
软件开发人员可能会选择通过建立一个API而取消对特定组件或所有软件的锁定,以便使客户或其他开发者可以添加新的功能来增强软件的性能。
这一点对独立开发者而言非常有利,因为独立开发者可以选择增加新的功能,可以根据自己的计划自主选择,也可以在不受原开发者约束的条件下自由开展工作[2]。
过去,软件开发人员要想增加软件程序的新功能必须先修改该程序的源代码[3]。
修改源代码会产生以下两方面的问题:
首先,这样做会使原开发者无法控制原始软件的修改;其次,任何使用源代码的人员都可以公开使用与原始软件相关的专用自主知识产权(IP)。
但与API结合后,开发者就具备了使用高级编程语言的新能力[4]。
独立开发者编写的算法与原始程序的数据和公用程序之间通过API进行交互。
最初是由某开发者开发、后来又由某独立程序设计者进行扩展的软件程序可以通过计算器的一系列功能进行比喻说明。
某开发者开发出了包括加、减、乘、除程序在内的简单程序。
后来,某独立编程者在此基础上增加了正弦、余弦和正切三角函数之类的函数运算功能。
如果原始开发者通过开放的API能够提供计算器软件必要组件的话,那么就可以在不修改源代码的条件下将新功能“插入”简单的计算器中[5]。
能够将额外功能(如前面例子中的三角函数)增加到软件中但又不会改变其原始结构的一个好处是可以根据需要将其开启或关闭。
仅需简单计算器的用户就可以享用一个包含更少指令和概念的精简界面。
一旦有需要,用户就可以通过诸如菜单栏之类的各种途径使用附加功能。
双重开发软件的概念更趋于完善。
例如,诸如Web浏览器之类拥有庞大用户群的应用软件能够与一个扩展性的API相结合,生成一个由原始开发者和独立开发者群体组成的软件生态系统,独立开发者群体的任务是扩展核心软件程序。
生态系统组件的综合比各个独立的生态系统提供更多的功能价值,从而使原始开发者、独立开发者和用户都能从中受益。
在油气行业,许多复杂的软件程序都旨在应对油气开采过程中出现的
多方面的挑战。
例如,Petrel地震-模拟软件就包含了许多地质和地球物理(G&G)工作流组件方面的工具。
对于每个新版本,开发小组为了满足业界的技术需求为软件添加了一些新的功能,并提高软件效率、可靠性和用户友善性等。
项目经理需要对诸多拟定功能该不该开发做出艰难的抉择。
为了向客户提供具有更多功能的G&G工作流,斯伦贝谢最近开发了一个API,旨在向第三方软件供应商开放Petrel软件。
这样做可以使公司开发者将精力主要集中在开发主要功能上,而独立开发者可以以插件形式给软件增加新的功能。
各种新模块的复杂程度各不相同。
任何具备基本编程技术的人员在几分钟内都能完成简单、省时的实现人工数据处理过程自动化算法的编写。
然而,能够提供诸如电磁建模之类的更复杂功能的插件,则需要编程小组和油田专家付出更大的努力。
开放式软件既有利于独立开发者,又有利于斯伦贝谢,因为这一措施使得插件开发过程与Petrel发布进程分离开来。
因此,新的功能可以随时得到开发和应用,而这些新功能的知识产权仍归其所有者所有。
独立开发者可以利用Ocean应用程序开发架构在该软件基础上自主开发新功能。
Ocean架构以微软公司.NET架构和VisualC#语言之类的业界标准编程工具为基础,可以为Petrel软件的内部工作提供一个编程接口。
独立编程人员可以编写自己的算法将新功能与现有组件(如属性建模或体积计算)相结合,然后在软件环境中显示交互结果。
本文介绍了开放式软件的概念,并对其如何被用来增强复杂软件的功
能做了阐述。
第一个实例介绍了客户利用Ocean架构来开发新的岩石物理分析功能的过程。
第二个实例重点介绍了独立软件供应商利用该软件开发电磁模拟模块的情况。
同时,本文还对学术界对Ocean的采纳情况进行了讨论。
G&G软件选项
地质和地球物理工作流程通常涉及多种来源的数据采集,数据处理,然后再将处理结果综合后进行解释。
该流程并非是单向或一维的,在后期工作流分支中的一些新发现都可能要求对前面的程序做出调整,或者对输入数据进行修改(下图)。
G&G工作流实例。
该流程从输入和解释包括地震数据(左上)和电磁数据(左下)在内的信息开始。
随后在建立油藏模型之前实施地震反演。
工作流中的一些步骤会对其他步骤产生影响:
例如,生成合成地震数据(中)的目的是验证油藏模型属性的准确性。
如果数据之间存在明显的不一致性,那么就必须对模型进行更新,并重新进行检验。
在工作流早期识别此类问题非常重要。
油藏模拟(右)过程成本高、耗时长,如果建立油藏模型过程中出现了差错,都必须重复该步骤及之前的多个步骤。
随着钻井过程中获得更多的井资料(右下),作业人员就有可能根据实时随钻测井数据(实时地质导向,上)做出反应。
不同领域专家在同一共享数据模型中进行沟通是避免、识别和校正错误的有效手段。
各领域专家通过一个可以管理所有工作流步骤的集中式数据模型及统一的软件程序可以解决此类问题。
使用熟悉的共享系统也可以在解决任何问题过程中提高用户效率。
G&G项目从始至终可能需要几个月的时间。
在一口井或多口井的规划过程中需要许多地质师、地球物理师、工程师及利益相关人员的共同参与。
这一过程主要依靠软件来完成各种任务,如根据井眼数据反演岩石属性,或是通过地震叠加数据拾取层位等。
由于每项任务都很复杂,为了满足所有的工作流需求,勘探与生产公司往往选择利用多个软件程序。
此外,部分公司还自主研发专用软件或算法来解决特定地质环境中的特殊问题。
将多个不同的软件程序应用于同一个项目会增大数据移植相关误差发生的风险,如将前一个程序中保存下来的结果输入到下一个程序中就可能出现误差。
此外,通过培训使分析人员能够应用多种不同程序也是不现实的。
利用一个能够处理所有G&G工作流要素的软件程序可以简单地解决这一问题,但单一的软件程序不可能满足所有客户的需求,因为勘探与生产公司针对其资产组合都有其各自独特的需求。
一种可以使不同应用软件简单化的方法是在各软件程序之间建立实时链接。
在这种共生方式中,各软件共享中间数据,这样更便于技术人员识别数据移植问题。
同时,由于应用软件实施自动化处理,因此利用该方法还可减少输入和输出过程引起的停工时间。
这一概念的延伸可以让每个程序控制下一个程序中的部分功能。
这一点更有利于那些无图形用户界面(GUI)的算法。
在这种情况下,其中一个软件程序充当主程序,其GUI可以被用于控制一个无界面算法,对部分用户而言,这种方式比编写文本命令更方便[6]。
此外,由于省略了开发和调试GUI步骤,因此可以更快地编写出此类算法。
共生方式会引发一个潜在问题,即程序间的准确链接功能可能会取决于其所发布的版本。
每次新版本发布时大多数软件都会发生一些变化,结果导致应用软件之间的链接可能会完全中断,或者至少会出现一些问题。
虽然部分链接软件由同一家公司开发,但许多软件包则是由多个公司开发的。
因此,要想统一软件项目的开发路径较为困难。
如果一项更新计划推迟或出现变动,那么就可能对所有相关应用之间的互动造成影响。
上述问题可以通过开发一种既不会频繁发生变化,又可以与软件程序开展交流的界面语言来解决。
应用程序接口既可以提供访问软件包的功能性,又是一种良好的通信语言。
它们实际上可以被看作是一种译码器:
将一种公开发布的输入语言转换成一种私有语言,然后再将其应用于软件程序中。
API的公开部分构成通信接口,该接口一般不常变动,而API的私有部分通常可以根据需要经常变动。
私有部分常常出现变动,新创建的私有部分可以增加软件的功能并改善其稳定性(下图)。
API的工作。
独立程序设计者创建代码(左)需要使用目标软件程序(右)中的函数,但并未得到使用许可。
目标软件所有者创建API(中),用以提供私有代码的进入通道。
API可以在不影响目标程序的情况下共享数据、软件事件状态及程序功能。
本例中的目标软件由版本1更新到版本2。
独立软件未察觉到这一变化,而继续保持原有状态。
在没有API的情况下,这种联系将会中断。
目标软件开发者对API进行了更新,以考虑函数名从Additon转变到AddTwoIntegers,以及数据变量从X、Y解析到X、Y和Answer的这一情况。
然而,这些函数和数据变量的表现方式仍然与版本1相同,因而可以与独立程序相兼容。
只要独立程序和目标软件一直符合API语言,那么这些程序的任何变化都不会破坏它们之间的链接。
这一点非常重要,因为各开发公司之间的软件更新通常并不同步进行。
API非常适用于一些需要多个软件程序一起运行、共享数据和控制功能的工作流,因为API可以使所有软件程序之间保持一种稳定的关系。
与软件同时提供的GUI设计开发准则、数据类型和事件状态,有助于在插件之间形成并维持适当的关系。
尽管API在提供保持各更新软件之间稳定链接开发环境方面取得了长足发展,但它并不十全十美。
随着时间的推移,不仅软件程序会出现变化,编程技术和计算机硬件也会发生变化。
例如,由于目前主流CPU包括多个核心,多线程编程设计已成为工作站软件可行的编程技术。
从单线程编程到多线程编程是一个重大的变化。
这些变化可能需要对API进行重新编写,从而破坏了与现有软件之间的任何链接。
为了维护独立开发者的利益,软件所有者可以将任何重大更新限制在一个更长的开发期限内,如在2-5年间做出重大更新。
利用合成地震数据检验油藏模型
建立油藏模型是一个漫长的过程。
各种数据经过专家解释和一系列算法转换之后用来生成电子模型。
模型参数及其不确定性可能具有一定的主观性,由于这些不确定性范围较大,因此许多地质模型都可能无法与原始输入数据匹配。
为了确保地质模型的质量,壳牌公司实施了一个新的模型检验工作流。
建模人员利用正演模拟程序,根据地质模型获得合成地震数据。
然后可以将合成数据与原始地震数据进行比较,以检验其匹配情况,并确定与油藏结构、油藏厚度和属性分布相关的不匹配因素。
壳牌公司将Petrel软件系列作为油藏地质建模的原始平台并将这种新的专用工作流作为一个模块纳入其自主建模工作流中。
该方法可以使软件开发者充分利用现有建模工具并致力于开发新的岩石物理分析功能。
与开发独立的应用软件相比,利用现有功能可以帮助壳牌公司减少开发时间。
最后开发出了两个插件:
Rock3D模块和Rock3DSynthetics模块。
用户界面是Rock3D插件很重要的设计标准。
遵守现有界面特征既有助于用户减少培训时间,又有助于用户提高效率。
壳牌公司的设计人员通过利用Ocean提供的一系列设计工具和准则建立了与Petrel软件具有相同外观和响应的界面,该公司的地质建模人员经过培训已经对这一界面非常熟悉。
利用新的工作流程生成合成地震数据需要经过两个步骤。
第一步,建模人员将现有油藏模型中的岩石和流体性质数据输入到Rock3D模块,随后再利用模型属性和声波属性数据(如速度和体积密度)之间的关系生成声波属性和阻抗数据。
第二步,建模人员利用Rock3DSynthetics模块根据这些声波属性数据生成合成地震数据体(下图)。
闭环流程。
建模人员利用采集到的地震数据体(左)生成油藏模型框架(中)。
根据油藏模型生成合成地震数据体(右)。
建模人员随后将该数据体与采集的数据进行比较,以便对相关的模型属性假设进行调整,然后重复以上流程。
在Petrel建模环境内直接实施该工作流具有许多优势。
油藏地质师和地球物理师可以就要应用的岩石属性展开讨论。
这样做有助于加深地学各领域的专家对地质模型建立过程及用于限制模型的地震数据不确定性的了解。
相同的建模环境也便于油藏建模人员、岩石物理师和地震解释人员之间的交流,以确定对输入解释做哪些修改可以提高模型质量。
最后,通过Petrel软件获得每个建模步骤的历史检查追踪,从而为每个项目阶段的解释和建模决策工作提供详细信息。
在早期油藏建模过程中,解释人员一般会进行地震控制的质量评价,以确保在G&G工作流内进行更加详细的模拟之前,使建立在高分辨率测井数据基础上的模型与较低分辨率的地震响应相一致。
质量评估也可以为各个建模项目所需的地震反演级别提供参考,从而使壳牌专用地震反演技术得到更好的应用。
新的检验工作流证明许多模型的合成地震数据和处理数据之间存在不一致的情况(下图)。
通过及早解决这些重大建模问题,壳牌公司在项目提交进度上节省了大量时间。
实例研究。
Rock3DSynthetics模块为两个研究实例提供了合成地震数据体。
在每个实例中,地球物理师将地震采集数据与垂直切片上属性模拟得到的合成数据并排显示。
可以看出突出显示区域(白色圆圈)内两种数据的一致性不好。
在这两个实例中,都对油藏模型属性进行了调整,不断重复这一过程,直至两个剖面数据一致为止。
电磁建模实例
独立软件开发公司可以利用Ocean开发软件产品,并可以充分利用Petrel软件庞大的用户群。
2007年,Blueback油藏公司(一家油藏建模咨询公司)针对这一市场组建了一个软件开发小组。
开发小组的首个项目就是与一家提供电磁服务的公司(ElectromagneticGeoServices公司)开展合作。
新的软件产品增强了Petrel软件的电磁建模(EM)能力,即BRIDGEEM数据集成器插件。
新功能证实了由第三方软件开发商将特定软件集成于广泛应用的建模程序包中的巨大威力。
项目初期,Blueback油藏公司的开发小组并没有电磁建模方面的经验,因此,所有的专业领域知识都是由服务公司提供。
尽管在斯伦贝谢没有参与的情况下也可以生成新的模块,但软件开发小组在整个项目开展过程中还是利用了Ocean支持网站来解决一些技术难题[7]。
该项目所面临的一个重大挑战是需要利用一种全新的数据类型表示电磁数据。
其中两大要求包括在诸如Petrel2D和3D图层之类的所有支持视图中对数据进行可视化分析,以及在诸如3D网格属性建模和体积及正交切片生成等相关功能之间实施数据处理[8]。
电磁技术通过检测地下电磁波的传播获得整个探区的电阻率数据[9]。
目前有两种基本的电磁勘探方法,即大地电磁勘探技术和受控源电磁技术(CSEM)。
前者利用太阳风和地磁层之间的相互作用产生的电磁波进行勘探,后者是一种较新的技术,使用人工电磁波源。
建模人员可以利用新的BRIDGEEM插件将CSEM反演数据与地震和重力测量数据有效地结合起来,从而改善对模型的标定(下图)。
电磁数据的应用。
在利用地震勘探数据(右上)和井筒电阻率测量数据(左上)进行标定后,地面电磁数据可以用来生成勘探区域的电阻率地层模型。
经过电磁反演可以建立电阻率数据体,然后可以利用多种建模工具对该数据体进行可视化分析。
这些高阻层(紫色三维目标体及地震切片上红、橙、黄三种颜色,下)可能是盐层、玄武岩或含油气层。
利用新插件开展CSEM项目涉及到多个重要步骤。
首先,地质师要进行一项可行性研究,对CSEM勘探是否能够提供高质量的解释数据信号进行评估。
可行性研究中应考虑的因素包括:
是否有盐层存在、海床地形是否有巨大变化,以及构造是否高度断裂,所有这些因素都会对CSEM信号造成干扰。
研究人员在Petrel建模环境下进行研究:
地质师根据地震、地质勘探和测井获得的地下构造和岩石类型等现有信息建立电阻率模型。
然后,专家组对该模型进行评估,以最终决定是否应继续开展CSEM勘探。
下一步是规划现场作业。
CSEM检波器直接部署在海底。
勘探规划人员可以利用Petrel环境下的BRIDGEEM模块对检波器实施准确的定位:
对准地质目标,避免地下构造削弱CSEM信号及确定不适合布置检波器的海床位置。
同时,规划人员还利用插件绘制震源船的最佳航线,震源船经特殊配备后在勘探区域拖曳CSEM发射器进行测量作业。
一旦勘探作业完成之后,需要对所获得的数据实施质量控制,并对诸如电波幅度和相位之类的CSEM属性进行解释。
数据在这一阶段被纳入油藏模型。
BRIDGEEM插件具有质量控制和解释处理的能力,旨在尽可能地简化耗时流程。
通常在Petrel工作流内根据地震和测井数据等现有信息对CSEM结果进行标定。
利用反演后的三维CSEM数据能够生成电阻率数据体。
地学家可以通过Petrel建模工具确定三维电阻率单元。
上述数据与地震数据比较之后的结果可以为油气公司提供油井规划所需的信息(下图)。
BRIDGEEM工作流。
该模块为Petrel软件内具体CSEM作业提供规划和质量控制工具。
经过标准化处理后,地面电阻率测量数据用来确定可以为CSEM检波器提供最佳信号的位置(左下)。
所选择的检波器位置随后被用于绘制CSEM勘探的拖曳路径(左上)。
完成测量后,应用程序为电磁数据(如磁场强度和相位)的输入提供数据格式,通过用户界面对数据进行质量控制,该界面经过优化以提高流程效率(右上)。
BRIDGEEM插件为Petrel数据模型提供了新的电磁数据类型,使用户能够同时查看CSEM勘探数据以及测井数据和地震数据等(右下)。
最初开发BRIDGEEM数据集成模块的团队成员来自两个开发公司,他们开发出了模块原型。
后来又有两个开发公司加入了该团队,负责完成软件的商业化,包括软件测试、编写文献资料、用户培训及用户支持等。
原型开发耗时四个月,这也基本反映出需要花费四个月的时间才能生成及完全集成一种复杂的新数据类型。
Blueback油藏公司利用Ocean还在不断提供新的软件工具。
学术界在研发中的作用
许多行业都认为学术机构在其研发项目中能够发挥越来越重要的作用。
尤其在经济衰退阶段,在开展基础研究和有创造性的新领域及抽象领域研究方面,研究机构通常比企业拥有更多的自由。
企业可以通过多个切入点参与学术研究。
招募有技能的大学生就是其中一个较低水平的切入点,而教授、博士后研究员和研究助理的加入则是一个较高水平的切入点。
这种灵活的方式可以使发起方明确他们所要达到的研究水平,从而缩小项目所需的投资。
企业和学术机构还有其他一些合作方式能够让双方从中受益。
大学更加清楚雇主的需要,并可能对学术研究项目做出相应的调整。
此外,参与过企业研究项目的学生也会在未来应聘工作时有更大的优势。
有时,企业和学术机构难以就信息共享达成一致。
在联合开发勘探开发软件过程中,必须制定安全措施,在为大学提供开发新理念所需信息的同时保护好发起方的知识产权。
建立在API技术基础之上的Ocean能使各大学以插件的形式开发G&G软件,这些插件可以与发起企业提供的其他插件结合使用。
企业可以利用这一模式保护其知识产权,并可通过投资大学的研究项目进一步扩展其G&G工作流。
通过利用现有插件及Petrel软件提供的工具和功能,大学可以在这些技术的基础上开展研究。
与每次都必须重新编写所有功能函数的软件开发结构相
比,采用这种构架能够节省大量的开发时间。
2009年8月,斯伦贝谢发起了一项旨在加强企业与学术机构联系的计划。
该计划在油气公司的支持下使大学加入到一些选定主题的研发工作中。
这些研究类别包括信息科学和技术、石油工程、地球科学以及认知科学等。
该计划有助于企业界与大学合作开发特定的Petrel插件,从而增强G&G工作流的功能。
未来展望
建立在API技术基础之上的开放式架构正在形成一种既有利于软件原始所有者,又有利于独立软件供应商和用户的开发氛围。
例如,企业可以利用架构开发满足其独特需求的软件功能。
如果这些需求并不是唯一的,那么开发者可能选择使其商品化,从而加入与其他开发者竞争的行列。
在这种环境下,竞争能够带来技术上的革新、提高质量并降低成本。
自Ocean架构引入以来,利用这一架构已经建立了100多种新模块。
这些模块是由斯伦贝谢、油气公司、学术机构和独立软件供应商等开发的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能 开放式 软件设计
![提示](https://static.bdocx.com/images/bang_tan.gif)