论基于构件的软件开发

高章舜_2020首次发布:2020年12月28日 11:38浏览量:1811
 用鼠标选中 生字  后,就能自动读出发音 

各位亲,警告并敬告:

论文可以参考别人的,但只能借鉴思路,不能完全抄袭。

应该根据自己的思路、自己的项目经验改写,改写客户名、改写项目名。这样完全改写后,已经是你的东西,比较有自信,也容易记。万一其他人也背了同一篇论文,你也不会跟他雷同。

 

基于构件的开发(以下简称CBD),是一种软件开发工程化的方法,它是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。由于以分布式对象为基础的构件实现技术日趋成熟,基于软件构件的软件开发方式为大规模软件开发创造了条件,充分而有效地利用已有的构件等开发成果,减少重复劳动,提高软件的开发效率和提高软件质量。

请以“基于构件的软件开发”为论题,依次从以下三个方面进行论述:

1.概要叙述你参与分析和开发的软件系统开发项目以及你所担任的主要工作。

2.论述软件系统开发中常用的构件框架有哪些?详细阐述每种框架的具体含义。

3.详细说明在你所参与的软件系统开发项目中,是如何采用构件方法加快软件系统开发的?具体实施效果如何。

正文

在石油勘探开采行业,采集来的数据中,有相当多的数据都没有得到充分的发掘和利用,而对这些数据进行有效的分析和整理,能够帮助勘探企业减少风险、降低开采成本、保障勘探企业的生产经营活动能够顺利开展。随着大数据技术在石油企业中的应用,对石油企业员工的数据操控能力也提出了更高的要求,因此石油开采行业中应用大数据技术的相关措施,能够切实有效的促进石油企业的发展。

针对这种情况,中石油科技局引入人工智能技术,于20181月成立了智能数控测井数据挖掘项目,目的是为国内测井行业提供一个从井下到地面、分析挖掘到解释评价的整套测井AI系统。该系统的设计目标是取得测井所有资料、清洗整理、分析挖掘,并且把挖掘的知识,以3D的形式呈现出来,以帮助确定地质问题、监测油气状况、并对区块做出综合评价。整个系统由井下成套仪器,测井遥测系统,测井地面系统,数据挖掘处理系统,解释评价展现系统等子系统组成。我是项目的技术负责人,全面负责系统的分析、设计等技术工作。

由于智能数控测井数据挖掘系统的用户分别在油田现场、油田指挥部和北京总部,因此我初步选定了Django构件框架。但具体的框架,还得从典型的框架里选择,还得搭建原型、征得客户的同意才行。

1. 常用的构件框架

软件开发企业为了提高开发效率,越来越注重构件的重用。因此,架构师在进行架构设计时,必须关注重用技术以提高开发效率、提升软件质量。构架架构,是实现软件构件复用技术的最快捷方式,EJB构件框架、COM+CORBA则是典型的构件框架。

EJB(Enterprise Java Bean)JavaEE中面向服务的体系架构的解决方案,服务可以封装为构件,用EJB框架部署在服务器端,以服务的形式对外发布,客户端在无需知道方法细节的情况下来远程调用方法,大大降低了构件间的耦合性,提高了软件系统的安全性和可维护性。

CORBA构件模型CCM OMG 组织制定的一个用于开发和配置分布式应用的服务器端构件模型规范,它主要包括如下 3 项内容。

1)抽象构件模型:用以描述服务器端构件结构及构件间互操作的结构。

2)构件容器结构:用以提供通用的构件运行和管理环境,并支持对安全、事务、持久状态等系统服务的集成。

3)构件的配置和打包规范:CCM 使用打包技术来管理构件的二进制、多语言版本的可执行代码和配置信息,并制定了构件包的具体内容和文档内容标准。

COM是微软提出的开放组件标准,DCOMCOM的基础上添加了许多功能和特性,包括事务特性、安全模型、管理和配置等,使COM成为一个完整的组件架构。COM+COMDCOMMTS形成一个全新的、功能强大的构件架构。

2. 采用Django构件框架加快软件系统开发

为了快速地开发出智能挖掘和数据分析的软件系统,以满足客户的需求,我们经反复调研、对比、建立原型后,征得客户用户同意后,决定采纳Django构件框架。该Web框架,由Python写成,为B/S架构。具体来讲,Django采用了MVT的分层模式。

Django框架的MTV模式,是为了各组件间保持松耦合关系,使系统更灵活组配,方便维护和升级,DjangoMTV各层分别是:

M模型(Model)负责业务对象和数据库的关系映射(ORM

T 模板(Template)负责如何把页面展示给用户(html

V 视图(View),相当于MVC模型中的控制器,负责业务逻辑 并在适当时候调用ModeTemplate

出了以上三层外,还需要一个URL分发器、它的作用是将一个个URL的页面请求分发给不同的View处理。

Python有丰富的第3方构件库,用Pip命令管理。根据项目的需要,我们自己也开发了项目用构件,放到了V视图层里。

在测井项目里,我们主要是从如下四个方面使用MTV这个分层架构:

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

首先根据系统的主要任务进行系统的模块分解。根据测井软件系统数据采集、数据挖掘和测井监控展示三个主要任务,把系统分为三大块对应于MTV模式的三层,再根据用户的需求,用Python实现各个功能点,把这样的Python模块当做构件部署在V视图层。

模型Model层对应于数据的采集、数据清理、存储和数据的增删改等基本操作。

视图View层则是软件系统的控制核心,负责计算、挖掘和分析。

模板Template层对应于测井监控展示功能,把View处理的结果展示给用户。

2MTV的设计与实现

在本项目的具体实践中,我采用的是客户已有的SQL SERVER数据库来存储Model里的数据,该数据库也可以作为数据仓库用于数据挖掘。

所有的数据挖掘、以及对挖掘结果的人工智能解读,均由VIEW模块、用python语言开发完成。为了支持用户端的显示效果,充分利用了python丰富的数据分析和图形处理库。

模板层主要是提供测井数据挖掘结果的图形显示。

为了适应当下的移动互联网,我们采用H5响应式网页设计,以自适应用户不同尺寸的终端设备。

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

由于每次测井作业中下井仪器串的仪器种类和仪器的数量都是变化的,为了能更好的抽象出实际的测井模型,提高系统的灵活性,在模型中数据刻度计算部分,我们采用的动态添加的方式。我们把不同测井仪器的刻度算法封装到动态连接库,然后根据测井作业的不同,调用不同的仪器动态库中的刻度算法。由于模型、模板和视图与之间的松耦合,当用户在视图里添加算法模块时,模板与模型不用改动。

采用MTV分层架构给我们带来了如下好处:

1)、由于模型(Model)、模板(Templates)与视图(View)之间的松耦合,使得我们非常容易就实现了一个VIEW运行同时建立多个展示的模板。这在调试仪器时非常有用,当硬件人员调试仪器时直接连接网线就可以一边看仪器一边看数据。不再需要像以前必须到地面系统控制室查看数据了。

2)、适合多硬件平台的跨接。由于不同的硬件平台上采集数据的方式都不同,由于松耦合,当要移植到不同的硬件平台上是我们只有修改相应的模型层(Model),有可以实现对不同硬件平台的支持。

3)、良好的可维护性和扩展性。由于采用MTV模式,系统模块功能划分明确,代码实现也相对容易。代码的错误不会在系统中扩散,同时由于可以动态添加仪器算法模块,当用户添加新仪器时,不需要更改系统程序。

在使用MTV分层模式进行系统设计和开发后,整个系统各个模块之间逻辑变的相对独立,耦合也很松散,结构的扩展性良好。而且使得代码的重用的程度变好,减少了错误的发生和错误在代码中的扩散。但是在实际应用模式的过程中,我还发现模式应用的经验越丰富,模式应用的就越好。

由于python的开放,以及对人工智能的支持,吸引了大批的开发者使用,这一方面使得pythonDjango变得更加可靠,另一方面他们用python实现的构件作为第3方库贡献了出来。总之,巧用构件架构可以大大加快软件系统的开发进程,也会大大提高软件的可靠性。所有这些,是我在主持开发智能数控测井数据挖掘项目得到的宝贵经验。该项目投入生产后,得到了客户和用户的一致赞扬,这也从另一方面说明了Django构件框架的价值。


最新修改时间:2021年3月27日 19:09
前一篇:

后一篇:

您已浏览完毕。

高章舜,软考技术支持专家、中文“智能文”发明者、中文智能化推进者。其EMAIL是:gaozhsh2007@sina.com

高章舜主持开发的中文智能编辑系统,呈现了中文“智能体”的优美。为了发扬光大中文的优秀传统,弘扬文化自信,著作人决定第一版开源,向全社会开放本版本的使用权。如果您需要更清晰、更优美、更专业、手写体更丰富的文章格式,甚至还需要定制字体和文章格式的话,请按上一段里的EMAIL给高章舜老师发邮件。


登录后回复

共有0条评论


copy right www.zhutu.net 回首页