测井刻度软件结构设计中关于系统功能扩展的探讨与实现

时间:2022-08-18 04:17:26

测井刻度软件结构设计中关于系统功能扩展的探讨与实现

摘要:针对测井仪器刻度软件系统功能扩展性能的需求,提出了设计测井仪器刻度软件系统结构时两种不同的思想,探讨了这两种设计思想对系统功能扩展性能的影响;给出了设计思想具体实现时动态加载功能模块的方法,证明了软件开发中所采纳的设计思想实现的可行性,有效地解决了系统功能的扩展需求。

关键词:测井刻度软件系统;系统架构;功能扩展;动态链接技术

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)03-10793-02

1 引言

在实际的测井作业中,需要在测井之前首先对某些下井仪器进行刻度,利用已知工程值的地层对仪器进行标定,以便在仪器读数(采样值)和地层参数(工程值)之间建立起确定的响应关系。仪器刻度软件需要对进行刻度的所有下井仪器执行主刻度、主校验、测前校验、测后校验以及显示与保存刻度摘要等操作。

鉴于以往软件开发过程中的经验与教训,笔者在测井刻度软件系统的结构设计与开发实践中,除了考虑软件系统应满足的功能能够安全高效地实现之外,还重点考虑了其是否具备良好的扩展性能,即此软件不仅能够实现软件系统已涉及的某种或某几种测井仪器的刻度操作,而且也能够实现对软件系统未涉及的仪器或刚投入生产的新仪器的良好兼容。为了达到这一目的,本文在测井仪器刻度软件系统结构设计中对有关系统功能扩展性能方面做了一些分析与探讨,并给出了具体的设计方案。

2 测井仪器刻度软件系统流程简要说明

在使用测井仪器刻度软件对仪器进行刻度或校验操作前,要为之提供服务表文件,软件系统读取服务表文件中要刻度或校验的测井仪器的参数信息。读取参数信息完成后,软件系统开始采集下井仪器通过电缆传输给计算机的数据,并以曲线的形式在屏幕上显示。操作人员根据屏幕上显示的测量曲线的形态在某时刻执行采样操作,得到测量值。如果对仪器执行刻度操作,得到测量值后,软件系统参考从服务表中读取的参数信息,计算出刻度因子,在计算机屏幕上显示出来,并保存至刻度文件;如果对仪器执行校验操作,得到测量值后,软件系统根据已经保存在刻度文件中的刻度因子计算出工程值,在计算机屏幕上显示结果并将结果保存至校验文件。

3 测井仪器刻度软件系统结构设计要求

根据已知的测井仪器刻度软件工作流程,可以捕获到系统的功能需求,并根据需求做出系统的架构。在系统架构过程中,笔者思考的重点主要有:系统的整体组织结构是否清晰;架构是否涵盖了所有的功能需求;架构是否描述了系统的安全需求,有一套良好的错误处理策略;是否要将架构设计得能够适应很可能出现的变更等。笔者主要针对结构设计中关于软件系统是否具备一定的扩展性能做出一定的探讨。

4 系统结构设计中有关系统功能扩展的深入探讨与实现

根据上述的要求,在设计系统的最主要的结构时,提出了两种设计思想,并详尽地说明了这两种设计思想在实现系统基本功能需求和系统性能扩展方面所具备的的优点和局限,作出对比和分析。

4.1 第一种设计思想的表述与探讨

在结构设计的时候,可以针对不同的测井仪器,采取一种简单而有效的分支结构来改变系统的工作流程,实现系统的基本功能需求。此结构用伪代码表示如下:

关于第一种设计思想的探讨:

优点:系统有着很清晰的结构;能够针对某种或某几种仪器高效稳定地实现刻度或校验操作;代码简洁,实现方式简单。

存在的局限:软件开发完成,使用后,系统只能实现软件系统规定的某种或某几种仪器的刻度或检验操作,针对性很强。如果需要实现一些软件系统未涉及的仪器或刚投入生产的新仪器的良好兼容,则需要重新修改软件本身,添加新的if 语句来满足需求。而由于很多原因,软件使用者可能无法得到软件的源代码来改造软件,或者软件使用者由于自身的局限无法对源代码进行有效的修改,而软件开发者又有可能由于软件时间很长而淡忘了软件的组织结构和开发过程,这样在修改软件源码来满足新的需求的时候也会存在种种困难。

4.2 第二种设计思想的表述与探讨

考虑到第一种设计思想存在的局限以及由此局限导致的问题,笔者经过分析后得出其根源在于软件系统中包含了与仪器相关的数据和调用了与仪器相关的函数,形成了软件系统对与仪器相关属性和方法的高依赖而不具备良好的兼容性,因此,笔者给出了另外一种设计思想,如下所述。

从软件系统中分离与仪器相关的数据和函数,并将它们封装在单独的模块中,并使此模块与软件系统之间保持独立关系,断绝软件系统对与仪器相关的数据和函数的依赖。如果软件系统需要兼容对系统尚未涉及的新仪器的功能,要修改的便不再是软件系统本身,而是与软件系统无关联却与仪器相关联的独立模块。在设计此独立模块的时候,要根据一定的规则封装与仪器相关的数据和函数,并对它们进行严格的组织和安排,使其清晰明了,最低限度地减小修改者在此模块中添加与新仪器相关的数据与函数时面临的困难,有效地解决第一种设计思想中存在的局限。在执行对仪器的刻度或校验操作时,软件系统动态加载此独立模块,根据用户输入的仪器名称调用其中包含的与此仪器相关的数据与函数,完成对仪器的刻度和校验操作。这样,系统既实现了系统的刻度校验等功能需求,也能够实现对新仪器的良好兼容,可以较好适应未来很可能出现的变更,具备了较好的扩展性能。

4.3 第二种设计思想的具体实现方法与部分代码

针对第二种设计思想所提出的软件架构方式,在代码构建时笔者采纳了软件开发中常用的动态链接库技术,将与仪器相关的所有数据与函数封装在动态链接库中。在软件系统运行时,通过对动态链接库的动态加载和对动态链接库中与仪器相关数据和函数的使用,来实现第二种设计思想中提出的要求。软件系统与动态链接库的交互过程如下表示:

5 结术语

经过对测井刻度软件系统架构设计中有关系统功能扩展性能的思考,提出了两种设计思想,并对这两种设计思想进行了分析,在开发时最终选取了第二种设计思想来设计系统的结构。测井刻度软件开发完成后,测试结果表明:采取从软件整体结构中分离出与仪器相关的数据和函数并单独封装在独立的模块中,并使此模块能够动态地加载在软件系统中以实现仪器的刻度校验操作的工作方式,不仅能够高效地实现系统需求,也能够很容易扩充新的功能以适应系统未来的变更,使系统具备了良好的功能扩展性能。

参考文献:

[1]熊晓东. 数控测井微型地面系统[M]. 北京:石油工业出版社,2002.11.

[2]Steve McConnell. CODE COMPLETE[M]. 北京:电子工业出版社,2006.4.

[3]刘寅. 系统分析之路[M]. 北京:电子工业出版社,2005.5.

[4]辛长安,梅林. VC++编程技术与难点剖析[M]. 北京:清华大学出版社,2002.4.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:操作系统安全模型研究 下一篇:新世纪CPU的成长足迹