Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >系统架构师论文-论软件设计模式的应用

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

作者头像
cwl_java
发布于 2019-10-26 12:51:51
发布于 2019-10-26 12:51:51
1.2K0
举报
文章被收录于专栏:cwl_Javacwl_Java

论软件设计模式的应用

【摘要】

本人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就可以了。 在整个系统的开发中,我们还应用了一些别的模式,有些模式是在进行系统设计时,就考虑到而特意实现的,有些模式是在采用别的方法实现后,效果不太理想,在代码重构时引进的。在应用设计模式进行系统设计和开发后,整个系统各个模块之间逻辑变的相対独立,耦合也很松散,结构的扩展性良好。而且使得代码的重用的程度变好,减少了错误的发生和错误在代码中的扩散。但是在实际应用模式的过程中,我还发现模式应用的经验越丰富,模式应用的就越好。有时在采用何种模式时,有几种模式方案可以采用,但是具体采用那个模式就需要不断的尝试,看看模式是否满足实际的需要。特别要注意的是不能为了设计模式进行设计,也就是过分设计的问题。这样会导致设计过于复杂,偏离程序设计简约够用的基本原则。 目前设计模式在软件开发中的应用正引起厂大开发人员的注意,各大软件开发商也在软件开发工具中提供了有关设计模式的自动应用的工具,相值设计模式会越来越多应用于软件的设计和开发中。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
系统架构师论文-论软件的性能优化设计
本人2004年有幸参加了中国石油集团的高性能数控测井系统项目的开发研制工作。该系统是在当前测井成套测井装备的基础上,为了满足高精度,高性能,高效率的要求开发的测井系统。该系统由井下成套仪器,测井遥测系统,测井地面系统,测井软件系统,测井解释评价系统等子系统组成。本人在其中主要是负责测井软件系统的分析、设计以及部分开发任务。作为整个系统控制核心的测井软件如何才能保证有整个系统的高性能和高可靠性呢? 本文从系统优化、程序设计优化两个方面来详细讨论如何提高整个测井软件系统的性能。其中系统优化主要是通过调节软件运行环境来优化软件性能,程序设计优化主要从程序架构设计、语法、内存管理、输入输出等方面来讨论如何采取措施提高软件的性能。
cwl_java
2019/10/26
1.1K0
系统架构师论文-论软件产品线技术(测井工程服务)
根据公司软件系统开发的需要,我们在软件的开发过程中引入了软件产品线技术,成立了基于软件产品线的项目组。本人有幸参加了该项目,并在其中担任软件分析与设计、软件产品线核心资源开发的工作。 在软件产品线的开发过程中,我们使用了 ROSE建模工具,有效地完成了产品线中核心资源和产品的建模分析与设计实现;我们使用了国际标准POSC数据模型框架,有效地解决了数据的多样性与可扩展性,实现了统一开放的测井数据访问系统;建立了统一的可扩展的地质绘制组件和统一公用的数据处理模块。最终圆满的完成了公司产品线的建立和各子系统的开发。
cwl_java
2019/10/26
4220
系统架构师论文-论基于构件的软件开发(测井资料处理与解释集成软件)
去年初,单位承担了新立的“测井资料处理与解释集成软件"项目,目的是集成目前国内零敬的测井解释方法,我有幸参加该项目,并负责软件系统平台设计和部分开发工作,在项目的实施过程中,我充分进行基于构件的软件开发,复用成熟的商业构件和本单位的构件资源库,同时考虑了本项目开发资源的进一歩复用,形成了绘制组件包,数据交换组件和数值计算组件包等。基于构件开发,大大提高了软件的质量,缩短软件的开发周期。开发的软件目前在石油测井几个油田现场使用,并得到用户的好评。本文就在本项目中如何进行基于构件开发进行描述,并在复用构件的使用和丰富方面谈一些自己看法。
cwl_java
2019/10/26
6810
系统架构师论文-论软件产品线技术
本人在测井行业的一个国有企业软件开发部工作,从2002年初开始,我陆续参加了多个测井软件开发项目,这些项目都是测井行业资料处理解释软件,具有很强的行业特征,其开发方向和应用范围都非常相似,从“测井资料处理集成软件"项目,开始我实施了软件产品线技术,虽然在开始阶段,由于经验不足和管理不善,遇到了一些问题,但是随着逐歩实施,都得到的纠正和有效控制,目前这几个软件项目都非常顺利的完成,实施工期明显缩短, 极大的提高了产品质量,本文就在这些项目中为什么实施软件产品线?在实施过程中遇到哪些问题?产品线开发支持工具选用情况和产品线实施带来的益处等进行论述,并分析总结在目前本单位产品线技术应用中存在的不足。
cwl_java
2019/10/26
7080
系统架构师论文-论虚拟现实技术的应用与发展
本文介绍了虚拟现实技术的主要技术和应用,并结合作者本人参加的国家重点实验室的自然科学基金项目,重点讨论了基于图像的建模与绘制在虚拟现实中的重要地位与应用,详细分析了近15年来国际上基于图像的建模与绘制技术的发展状况与当今世界上最先进的研究热点,并详细阐述了作者在国家重点实验室精心基于图像绘制技术科研工作中所参与的系统开发。文章最后,说明了作者所参加的科研项目的开发成果,并简单介绍了作者在试验项目中所发表的论文,対未来几年中虚拟现实技术的发展趋势作出了较为科学的预测并提出了作者本人独到的见解。
cwl_java
2019/10/26
4040
系统架构师论文-论软件三层结构的设计(备件采购项目)
随着中间件与Web技术的发展,三层或多层分布式应用体系越来越流行。在这种体系结构中,将应用功能分成表示层、功能层和数据层三部分。 本人在去年参加了一个备件流程管理项目的开发,在此项目中担任需求分析和结构设计等工作。结合需求分析结果和该单位的实际情况,在该项目中我们采用C/S和B/S的混合模式,客户端使用的是Delphi和FrontPage进行开发,中间件我们采用的是COM+,使用Delphi进行开发,后台使用SQLServer据库。本文详细描述三层结构的设计过程,重点讨论中间件的设计过程和在设计实施过程中碰到的一些问题以及解决的方法,文章最后说明了采用三层 结构带来的效果,以及可以改进的地方。
cwl_java
2019/10/26
7630
系统架构师论文-论新技术的引进
根据国家税务总局対税务系统内所有系统进行集成与整合的需求,我所在的开发单位组织了全国金税工程防伪税控系统网络版的升级开发工作。该项目工程浩大,要求在具有严格的安全、可靠性能的基础上,将基于DOS操作系统、Foxpm数据库的原单机版防伪税控子系统集成到基于网络的、大型数据库的“集中存储、分布操作"的分布式系统中来,并实现与基于AIX等操作系统和Oracle数据库的稽核协查等其他应用系统的数据共事和互操作。在项 目中,我担任项目主管,主要负责系统规划和组织实施工作。我在将近一年的可行性研究、需求分析、系统研发与试点工作中,通过引进面向対象设计方法、采用B/S/S三层体系结构、利用群集实现负载平衡等新技术,使该项目取得了圆满成功,受到了用户的一致好评。但是现在看来,由于新技术的使用,怎样实现软件开发公司対新技术的渗透、怎样开发自主产权的中间件等问题,需要我们在今后系统开发中做进一歩探索。
cwl_java
2019/10/26
5770
系统架构师论文-论软件开发平台的选择和应用(MIS系统)
本文从一个行业MIS系统的开发实践,讨论了软件开发平台的选择和应用。首先,作者从项目的实际情况确定了软件开发平台的一些原则:技术成熟兼一定先进性、高效集成的开发工具、开方人员熟练掌握等,随后就系统平台、软件开发平台、数据库平台的选择作了详细论述。之后,作者就开发过程中就保持系统开放性,対数据导入导出、与P3软件集成、WEB查看权限采取了相关措施;就保持系统先时性,提到了多种软件技术舍成及VPN技术两项措施。最后,作者対近期商业应用软件开发平台的主流一微软的.net及J2ee进行了介绍,比较了其优缺点,対今后本部门在软件开发平台的发展方向作了一定的评估。 我公司是大型电源建设项目的专业建设公司,曾以总承包方式承建设了多个电厂,在工程建设过程中逐歩建立了一系列完整、科学的工程管理体系,与此相应的是逐歩建立电力建设项目工程管理信息系统(简称电建MIS),原版本的不足之处是应用模块不多,且多以简单文本为主.
cwl_java
2019/10/26
1.2K0
系统架构师论文-论中间件在SIM卡应用开发中的作用
我曾于近期参与过一个基于SIM卡应用的开发项目,并在项目中担任系统分析的工作。在分析过程中,我们依据面向対象方法対系统进行了划分,其中许多的模块已有成熟的中间件产品可供使用。我们选择中间件产品的标准是:功能、性能、封闭性、独立性、可扩充性、是否标准化等(或是否是主流产品)、跨平台性、话语害性,以及中间件的大小和价位,并且面向対象的优于面向功能的。 由于复用了大批的中间件,使得项目工作重大大减少,开发周期明显缩短,并且在项目的编码部分,我们也尽量制作自己的中间件,以便在以后复用,或以恰当的形式销售,増加公司的利润。 自己设计中间件,菖先要做领域分析,以确定其价值,并依据上述原则开发。产品形成后,要由管理系统负责中间件产品的存储、描述、資询、发布以及动态雄护、版本控制等。
cwl_java
2019/10/26
7320
系统架构师论文-论基于构件的软件开发
本文以我主持的某商业银行交易监控分析系统项目为实例,探讨了作为开发方公司基于构件技术开发项目碰到的问题以及解决的方法。文章首先解释了基于构件技术开发软件的基本概念,认为目前大多数开发单位的产品在存在重复的功能模块,而重复的开发工作,直接导致了项目周期以及成本不必要的増加,针対这一问题,提出了应该及时整理已有的系统,形成企业构件库,针対性的选择构件,从而基于构件开发新的软件项目,在保证软件产品质量的前提下,缩短项目周期和开发成本,最终使企业盈利。 我在项目中担任了开发方的项目经理,自始至终参与了整个项目的建设,自2008年3月项目启动至2008年10月验收历时8个月,系统至今运行稳定,取得了客户的一致好评,项目能够保证质量的前提下迅速完成,最终节约了成本,很大程度上得益于基于构件开发软件的应用。
cwl_java
2019/10/26
1.5K0
系统架构师论文-论软件产品线技术(设计院信息管理平台)
本人作为某软件公司负责人之一,通过対位于几个省的国家甲级、乙级、丙级设计院的考查和了解,我决定采用软件产品线方式开发系列《设计院信息管理平台》产品。 该产品线开发主要有如下功能: 1)知识、资源管理平台; 2)内部管理平台; 3)基于WEB的办公平台。软件产品线最难开发的是核心资产的分析与建模,如何从用户量多不同需求中抽象出共性的东西,如何使得核心资产通过继承、参数化等方式能够组装成用户实际需要的产品,我以及我们公司的系统分析员做了大量工作。概括起来我们用了如下三种方式: (1)加强核心资产开发的灵活度,部分产品作成用户能够自定义的功能,彻底免除产品化时的问题,但这样做难度很大,实施周期长; (2)说服客户微调管理模式,以使得管理适应我们的产品线功能。这样做无疑是双赢的,但是实际不见得会行得通; (3)根据流程最长的需求开发所有需要的构件,构件间的接口做成松耦合。演化成产品时进行构件组装。
cwl_java
2019/10/26
4310
系统架构师-基础到企业应用架构-分层[上篇]
      大家好,接近一年的时间没有怎么书写博客了,一方面是工作上比较忙,同时生活上也步入正轨,事情比较繁多,目前总算是趋于稳定,可以有时间来完善以前没有写完的系列,也算是对自己这段时间工作和生活上总结,同时也加深下自己对架构和
aehyok
2018/08/31
1.5K0
系统架构师-基础到企业应用架构-分层[上篇]
系统架构师论文-论软件产品线技术(-国防科技重点实验室)
根据“十五"国防科技重点实验室一 “机载X XPD火控雷达性能开发与评估实验室"的建设需求。我所在的中国X集团公司X所电子対抗研究部组织了用于该实验室目标产生、信号干扰、欺骗等的“射频半实物仿真目标系统"的设计开发。该系统采用分布式联网试验,主要任务是试验机载雷达的各项技术指标,模拟较逼真的雷达信号环境 和其他电破信号环境,检查机载雷达工作性能、探测和跟踪精度及飞机综合火控系统性能。我担任了该软件系统负责人。 我成功的将软件产品线技术引入我部,复用构件库并対构件库按照产品系列进行改造,加强核心资源的形成,将系统模块化,复用构件的集成测试,使系统高效、高质量的圆满完成,并通过空军广州五所的第三方测评,得到了解放军总参装备部的认可与好评。但现在看来,如何在缺少通用的组装结构标准情况下减少开发风险,可重用性和可协调性等方面值得进一歩探究。
cwl_java
2019/10/26
3230
软件架构设计-软件架构风格、分层架构
软件或计算机系统的软件架构是该系统的一个(或多个)结构,而结构由软件元素、元素的外部可见属性及它们之间的关系组成。
IT大咖说
2021/07/19
2.8K0
系统架构师论文-论软件的可维护性设计
随着软件大型化,复杂化的发展,软件维护所耗费的资源越来越多,软件可维护性设计日益得到重视。我单位近几年开发综合业务ATM交换机,用户対交换机的可维护性要求很高。我参加了该项目并负责软件的维护性设计工作。根据当前工作中在维护性设计中的不足。通过在各个软件开发阶段注重软件可维护性的应用,规范文档,使用CASE工具管理软件版本和成立软件可维护性设计小组等方面,为软件的可维护性设计提供了帮助,并最终开发出具有良好可维护性的交换机软件。但是由于初次实施这方面的工作,大家思想上认识不够,许多操作不习愦,并且单位里不具备专用的测试软件和其它CASE工具,在一定程度上制约了软件可维护性的实施。
cwl_java
2019/10/26
1.6K0
系统架构师论文-论信息系统的架构设计
本文讨论医保通零距离实时赔付系统项目的架构设计。该系统主要实现了中国人寿保险公司通过与医院合作,让中国人寿客户在出险住院并完成治疗后,即可获得实时的健康险理赔服务,从而在提升保险公司服务的同时减轻病人经济负担、减少客户理赔困难。在医保通实时赔付系统设计架构中,整个系统中分为B/S结构的管理中心端与C/S结构的医疗机构前端两部份。在管理中心端采用J2EE架构,使用了与传统EJB为核心的重量级架构有所不同的轻重级架构方式,其中主要使用Spring框架作为系统的基础平台,充分体现了 Sping的高开发效率、易测试维护性及应用服务的可移植性等优点。同时,在架构设计中,充分考虑了系统的可扩展性、稳定性、安全性、可维护性、灵活性等因素。 在本项目的开发过程中,我担任了系统架构设计与项目管理的工作。该项目从目前推广与应用情况看,达到了项目的预期目标,得到了各级公司的一致好评。
cwl_java
2019/10/26
7990
设计模式(1)—— MVC
MVC(Model-View-Controller,模型-视图-控制器)是软件工程中的一种软件架构模式,它把软件系统分为三个基本部分:模型(Model)、视图(View)、控制器(Controller)。
阳光岛主
2019/02/19
1.6K0
MVC设计模式
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
三哥
2018/07/31
9670
MVC设计模式
系统架构师论文-基于构件的软件开发
2007年上半年,我参加了某市信息办技术服务平台的项目开发,担任系统平台的设计和开发工作,该项目主要为了支持某市党政机关专网的二期建设所开发设计的,它是一个在线式的远程服务平台。在项目的开发过程中,我充分的进行基于构件的软件开发,考虑到软件复用和以后的扩展等方面,文中介绍了构件平台的选择,几种COM构件的开发,平台的实现过程。基于构件的开发大大提高了软件的质量,缩短了开发周期。该项目现在已经完满完成,得到用户的一致好评。但现在看来,在开发过程中也出现了一些不足,文中就构件的划分和使用方面谈了自己的一些看法。
cwl_java
2019/10/26
1.4K0
系统架构师论文-图书馆网络应用体系安全设计
某某大学图书馆从85年引进日本富士通的管理系统开始,历经近20年的信息化建设后,逐歩形成了拥有一定硬件规模、软件资源和一批专业技术人才的现代化图书馆。而自从我校进入“211"以来,建立数字化的图书馆就成为了我们工作的重中之重。我校数字化建设的主要内容是建立基于千兆主干网络的、提供多种网络服务的网络应用体系。项目建设完成后,我馆成为该省规模最大的开放式的数字化文献提供和建设中心,为本省的科技、文化、教育事业的发展提供了强大的资源保障。
cwl_java
2019/10/26
6480
推荐阅读
相关推荐
系统架构师论文-论软件的性能优化设计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档