论软件设计模式的应用

【摘要】

本人2004年有幸参加了中国石油集团的高性能数控测井系统项目的开发研制工作。该系统是在当前测井成套测井装备的基础上,为了满足高精度,高性能,高效率的要求开发的测井系统。该系统由井下成套仪器,测井遥测系统,测井地面系统,测井软件系统,测井解释评价系统等子系统组成。本人在其中主要是负责测井软件系统的分析、设计以及部分开发任务。设计模式是前人设计面向対象软件的经验和总结,在软件设计中灵活的使用设计模式可以极大的提高系统的稳定性,可扩展性,以及良好的可维护性。本文描述了在测井软件系统开发过程中,如何分析和发现相关模式,以及如何选择和应用设计模式,特别是介绍了 MVC模式在软件框架和相关系统模块中的应用和使用效果。在文章的最后,讨论了在实际项目开发中,设计模式应用的有关想法和教训。

【正文】

随着当前石油测井技术的发展,为了能更快,更好的得到储层地层信息,解决目前国内测井系统不统一,测井精度不高,效率低下的缺点,2004年1月中国石油集团公司科技局成立了高性能数控测井系统项目,目的是为国内测井行业提供一个从井下到地面以及解释评价的整套测井系统。系统的设计目标是一次测井,取得所有合格资料,并且能保证60井次的免维修率。整个系统由井下成套仪器,测井遥测系统,测井地面系统,测井软件系统,测井解释评价系统等子系统组成。我主要是负责测井软件系统的分析,设计和部分开发工作。整个测井软件系统完成三个主要任务:测井数据的采集、测井数据的工程值计算、测井过程的监控。测井数据采集主要是采集井下仪器通过测井遥测系统传输的测井数据,并保证数据的完整性,正确性。测井数据工程值计算主要是把采集的数据根据不同仪器刻度计算方法进行工程值的计算。测井过程监控主要是把计算的测井数据用曲线和图像的方式实时的显示在屏
幕和打印成图,由测井操作员进行实时监控。
设计模式是前人设计面向対象软件的经验和总结,在软件设计中灵活的使用设计模式可以极大的提高系统的稳定性,可扩展性,以及良好的可维护性。在测井软件系统框架进行分析和设计时,考虑如何提高系统的稳定性、可扩展性和可维护性时,我们采用了 MVC设计模式。
MVC模式构架包括三个部分:模型(Model)、视图(View)、控制(Control)。模型主要是対系统的数据和逻辑运算的封装。它独立与系统的界面和I/O。视图把表示模型的数据和逻辑关系用特定的形式展示给用户。控制处理用户和软件之间的交互操作,当模型的数据有所变化时,控制负责通知视图做出相应的更新。模型、视图、控制的相互分离有利于模块之间内聚性的提高,耦合更加松散。一个模型可以対应多个视图,由控制来传播模型的变化从而更新视图。
MVC模式如何在测井软件系统实现,我们主要是从如下四个方面进行:

一、分析系统功能,分离功能模型

首先根据系统的主要任务进行系统的模块分解。根据测井软件系统数据采集、数据转换和测井监控三个主要任务,把系统分为三个模块対应于MVC模式的三个部分。其中模型(Model)対应于数据的采集和工程值的计算。测井视图(View)対应于测井监控功能。测井模型所要实现的功能包括:测井数据的采集、数据的刻度计算、数据的存储、数据的操作。测井数据的采集负责硬件平台的初始化,下井仪器的初始化,井下仪器数据的中断相应,数据帧的采集,数据帧的重组等。数据的刻度计算主要是根据不同的仪器实现数据的刻度计算,包括刻度系数表的获取、刻度计算、深度延迟计算等.数据存储主要是原始数据的存储和测井数据的存储。这里我们采用的是测井公用的E格式做为数据存储格式。数据的操作是视图和模型之间数据交互的接口。它主要是提供数据输入和输出功能。

二、视图的设计与实现

视图主要是提供测井数据的图形显示。通过调用模型中的数据操作方法,提取测井数据,根据不同的测井数据提供曲线、波列、图像等多种表现形式。在本系统的实现中,为了提高数据采集的稳定性和程序的健壮性,采用进程间通讯的方式。就是说视图的实现本身一个独立的程序。它与模型之间的通过TCP/IP网络进行通讯。视图主要包括数据源、数据表象対象、绘图打印模块等部分组成。数据源负责得到模型(Model)的数据,然后把数据分配给每个数据表象対象。数据表象対象是个有层次的类家族,其基类是绘图类(CDrawObj),所有的数据表象包括道(CDrawTrack)、曲线(CDrawCuxve)、波列(CDrawWave)、图像(CDrawlmage),数值対象(CDrawData)等都是从其派生的。最后有绘图打印模块提供管理,负责视图的区域更新,数据表象的绘制和打印等功能。

三、控制的设计与实现

控制主要功能是提供用户的输入输出反馈,同时监控模型的数据变化,通知视图进行更新。由于控制和视图的耦合非常的紧密,在架构实现中,控制和视图是在一个应用程序中实现的。控制主要分为井下仪器控制和视图控制两个部分。其中井下仪器控制主要是由操作人员根据视图中的曲线和图像信息,対仪器发出的状态控制命令,以保证测井过程中数据和仪器的安全。视图控制则是操作人员対视图显示参数的调整,包括鼠标的响应和键盘的响应以
及用户対测井原始图的特殊要求如道大小,曲线位置的摆放,颜色的调整等。

四、使用可动态添加的算法模型

由于每次测井作业中下井仪器串的仪器种类和仪器的数量都是变化的,为了能更好的抽象出实际的测井模型,提高系统的灵活性,在模型中数据刻度计算部分,我们采用的动态添加的方式。我们把不同测井仪器的刻度算法封装到动态连接库,然后根据测井作业的不同,调用用不同的仪器动态库中的刻度算法。由于视图和控制与模型之间的松耦合,当用户添加算法模块,视图与控制基本不要修改。
在采用MVC模式的软件框架后,整个系统分为两个部分,数据采集管理器和数据实时浏览器。数据采集管理器対应于模型(Model)的实现,数据实时浏览器対应于视图(View)和控制(Control)的实现。我们采用的是Visual C++, net基于Window2000平台来进行系统开发。采用MVC模式给我们带来了如下好处:
1、由于模型(Model)与视图(View)和控制(Control)之间的松耦合,使得我们非常容易就实现了一个模型运行同时建立多个视图。这在调试仪器时非常有用,当硬件人员调试仪器时直接连接网线就可以一辺看仪器一辺看数据。不再需要象以前必须到地面系统控制室查看数据了。
2、适合多硬件平台的跨接。由于不同的硬件平台上采集数据的方式都不同,有的系统采用的是PCI总线,有的是USB接入,有的是ISA卡接入。由于模型(Model)和视图(View)的松耦合,当要移植到不同的硬件平台上是我们只有修改相应的模型(Model),有可以实现対不同硬件平台的支持。
3、良好的可维护性和扩展性。由于采用MVC模式,系统模块功能划分明确,代码实现也相対容易。代码的错误不会在系统中扩散,同时由于可以动态添加仪器算法模块,当用户添加新仪器时,不需要更改系统程序,只有添加仪器动态库DLL就可以了。
在整个系统的开发中,我们还应用了一些别的模式,有些模式是在进行系统设计时,就考虑到而特意实现的,有些模式是在采用别的方法实现后,效果不太理想,在代码重构时引进的。在应用设计模式进行系统设计和开发后,整个系统各个模块之间逻辑变的相対独立,耦合也很松散,结构的扩展性良好。而且使得代码的重用的程度变好,减少了错误的发生和错误在代码中的扩散。但是在实际应用模式的过程中,我还发现模式应用的经验越丰富,模式应用的就越好。有时在采用何种模式时,有几种模式方案可以采用,但是具体采用那个模式就需要不断的尝试,看看模式是否满足实际的需要。特别要注意的是不能为了设计模式进行设计,也就是过分设计的问题。这样会导致设计过于复杂,偏离程序设计简约够用的基本原则。
目前设计模式在软件开发中的应用正引起厂大开发人员的注意,各大软件开发商也在软件开发工具中提供了有关设计模式的自动应用的工具,相值设计模式会越来越多应用于软件的设计和开发中。

系统架构师论文-论软件设计模式的应用相关推荐

  1. 软考·系统架构师论文——论软件的高并发设计

    文章目录 说明 摘要 过渡 项目背景 论点理论 论点实践 结尾 说明 1.[摘要 300~330字] ① 项目介绍:时间.项目名.项目主要功能简述.作者角色及工作内容 ② 项目技术简介:正文理论/分论 ...

  2. 系统架构师论文-论软件开发平台的选择与应用

    论软件开发平台的选择与应用 -银行中间业务系统 [摘要] 本文讨论选择新软件开发平台用于重新开发银行中间业务系统.银行中间业务系统是指银行通过与企事业单位.机关团体的合作,为客户提供金融服务的系统.X ...

  3. 系统架构师论文-论软件的可维护性设计

    论软件的可维护性设计 [摘要] 2008年3月1日至12月20日,我参加了"数据安全访问平台"项目的开发,担任系统分析员的工作.该项目是某行业用户"数据中心二期" ...

  4. 【软考系统架构设计师】2015年下系统架构师论文写作历年真题

    [软考系统架构设计师]2015年下系统架构师论文写作历年真题 2015年下系统架构师论文写作历年真题 [软考系统架构设计师]2015年下系统架构师论文写作历年真题 2015年下系统架构师试题一(应用服 ...

  5. 【转载】软考高级系统架构师论文,到底该如何写

    前言 2020年参加了软考高级系统架构师的考试,那是我在考场上第一次写论文,2小时2500字+,最后得分56. 拿到成绩后写了一篇关于七天复习考过系统架构师的文章,作为一个自学者,深知网上系统架构师的 ...

  6. 【软考系统架构设计师】2009年下系统架构师论文写作历年真题

    [软考系统架构设计师]2009年下系统架构师论文写作历年真题 2009年下系统架构师论文写作历年真题 [软考系统架构设计师]2009年下系统架构师论文写作历年真题 2009年下系统架构师试题一(DSS ...

  7. 【软考系统架构设计师】2021年下系统架构师论文写作历年真题

    [软考系统架构设计师]2021年下系统架构师论文写作历年真题 [软考系统架构设计师]2021年下系统架构师论文写作历年真题 [软考系统架构设计师]2021年下系统架构师论文写作历年真题 2021系统架 ...

  8. 【软考系统架构设计师】2020年下系统架构师论文写作历年真题

    [软考系统架构设计师]2020年下系统架构师论文写作历年真题 2020年下系统架构师论文写作历年真题 [软考系统架构设计师]2020年下系统架构师论文写作历年真题 2020年下系统架构师论文写作历年真 ...

  9. 【软考系统架构设计师】2014年下系统架构师论文写作历年真题

    [软考系统架构设计师]2014年下系统架构师论文写作历年真题 2014年下系统架构师论文写作历年真题 [软考系统架构设计师]2014年下系统架构师论文写作历年真题 2014年下系统架构师试题一(需求管 ...

最新文章

  1. 纯中文C++代码,可运行
  2. 运营类产品:用户行为的影响因子是什么?
  3. 开发函数计算的正确姿势 —— 移植 next.js 服务端渲染框架
  4. CodeFirst Update-Database 出现对象'DF__**__**__**' 依赖于 列'**'。
  5. RToax / fedora-coreos-config: [sysroot.mount] mount: wrong fs type, bad option, bad superblock on /
  6. Bootstrap Table事件
  7. linux下的磁盘配额简介暨 linux下加挂硬盘续
  8. linux 扫描开放的端口命令,在Linux系统中检查(扫描)开放端口的方法
  9. myeclipse 8.6安装freemarker插件
  10. python3装饰器例子_python3装饰器用法示例
  11. cognos数据源的配置
  12. stylus -w style.styl -o style.css
  13. CVPR2021提出的一些新数据集汇总
  14. 含论文基于JAVA户籍信息管理系统【数据库设计、论文、源码、开题报告】
  15. GIT 清理远程已删除本地还存在的分支
  16. win电脑C/D盘清理技巧
  17. c语言中 程序各步作用,C语言学习网总结C语言学习五步曲
  18. html制作京东新闻资讯页,京东店铺怎么建立活动页面?如何实现具有视频的活动页?...
  19. Spring—自动装配与注解自动装配
  20. 职业经理人管理素养提升课程

热门文章

  1. 将开发板的usb配置为ncm网口(qnx系统)
  2. 在Idea解决找不到sun.misc.BASE64Encoder及sun.misc.BASE64Decoder找不到包
  3. 使用 Python 自动识别防疫二维码
  4. 4.(简答题,25.0分) (20分)(1)定义一个新冠病毒类Virus,定义一个德尔塔病毒类(Delta)和奥密克戎病毒类(Omicron),这两个类是新冠病毒类的子类;定义一个“可抵御地”接口,德
  5. c语言实现简单的24点游戏
  6. 工业视觉检测入门——如何设计一个合适的检测方案?(需求分析+光学设计+检测算法+UI交互+后端数据)
  7. 3dmax中如何赋予材质
  8. 资产管理可视化系统-RFID固定资产管理追踪方案-RFID资产管理解决方案-新导智能
  9. Delphi API
  10. [Spark版本更新]--2.3.0发行说明(一)