基于MVC模式的测控系统优化研究

2015-02-21 06:49刘浪徐思捷赵世平
电子设计工程 2015年18期
关键词:测控视图代码

刘浪,徐思捷,赵世平

(四川大学 制造科学与工程学院,四川 成都610065)

基于MVC模式的测控系统优化研究

刘浪,徐思捷,赵世平

(四川大学 制造科学与工程学院,四川 成都610065)

针对当前测控系统所采用的面向过程或面向对象程序设计方式,软件的模型、逻辑、显示混杂,使得程序的复用性降低。故采用MVC(Model-View-Controller,模型-视图-控制器)模式对测控系统框架进行优化,并结合不同测控系统的控制软件的开发,复用软件的View和Model、Controller的公共接口。缩短了系统的开发周期,提高了系统复用性。

测控系统优化;设计模式;MVC模式;软件架构

以往的测控系统大多采用面向过程的结构化程序设计方法,其特点是自顶向下、逐层细化的将系统分解成层次结构模块,所以该类控制系统具有很强的针对性[1]。但是,如果需求变化,很大可能会造成整个控制系统被全部推翻,需重新设计,将会造成大量重复性工作。随着面向对象技术的发展,在多数测控系统中很多开发者已经采用面向对象语言设计测控系统。虽然相对于以往的面向过程的结构化程序设计方法来说,具有很大的进步,但只是将问题及需求抽象出来,需求的改变及功能的变化仍可能造成系统大幅度更改,增加额外的重复劳动和开发成本。并且该系统的数据输入、输出,处理、显示和用户交互等模块的代码和逻辑彼此混杂,故系统的代码具有较高的耦合度,这对后期的维护和重用带来较大困难。

若该系统是一个使用周期较长的系统,可能会涉及到不同的人员来对该系统进行维护。不同的人的思维方式、代码风格是有区别的,对软件的修改、维护也是有差异的,若多次不同开发者的维护可能会造成软件的结构、功能混乱,以至于最后根本无法维护。使用MVC模式优化后的系统,能够在一定程度上改善上述问题。

1 iOS MVC模式介绍

1.1 MVC模式模型

MVC模式由Model(模型)、View(视图)、Controller(控制器)3部分组成,如图1所示。本文所介绍的MVC设计模式是苹果公司为Mac OS X所创建的原生面向对象的编程环境Cocoa中用到的MVC模式,称为iOS MVC模式,广泛应用于iOS的应用开发中[2]。

图1 MVC模型Fig.1 MVC Model

1.2 MVC模式实现

Model对象是整个应用程序的核心部分,主要包含控制系统中的数据以及对数据的操作。Model代表对现实生活中待解决问题的抽象,它是特别的信息或者专门的知识。

View对象实现模型的显示和系统与用户的交互。视图负责如何显示数据,该数据归根结底来源于模型;也负责将用户的操作通知Controller,它不直接与Model交互。一个View对象可以表示部分、一个或多个模型对象,模型亦是如此[3]。例如一组数据可以以不同的形式如图表、折线、条形图显示,表现形式完全取决于视图。视图对象往往是可重用和配置的。

Controller对象实现Model和View之间的间接交互。当Model发生变化时,它通知Controller已变化,Controller依照设定的规则,将必要的变化向View更新,使View呈现出Model的变化。当View响应用户的操作,View将其转发给Controller,Controller将操作解析并依照设定的规则通知Model,使Model执行设定的操作。

在该模式中Model和View是没有交互的,它们仅仅是通过Controller粘合。

1.3 MVC模式优势

该模式的优势在于可以实现同一个Model在不同View的显示,即可使用不同View而不需要更改Model。同样,同一个View也可以对应不同的Model。MVC实现了不同角色的分离,即代码分离,使系统的耦合度降低,增强系统的可维护性。

2 MVC模式对测控系统的优化

2.1 MVC模式在系统中的具体实现

在多数测控系统中,开发者按需求来设计控制系统,并没有使用某种模式或框架,故系统的形式各异,这会对后期维护和修改造成很大的不便。

MVC模式,也可以说是一个框架,它主要是由Observer(观察者)、Composite(组合)、Strategy(策略)3种设计模式组成[4]。它为系统框架的搭建提供了思路,在对系统进行分析设计时,有目的的对系统的组成部分进行分类设计。MVC模式使系统中的各个组成部分,也就是所有的对象都属于MVC3个模块之一[5]。

在某测控系统中,系统实现对拉压力、位移等传感器数据的高速采集和保存。该系统中的MVC模式设计如下:

在系统中定义界面“MainWindow”,负责数据显示和用户交互,该部分即是人机交互界面,属于View部分。View包括普通按钮,选择按钮,设置按钮,曲线显示框、数据显示框等,如图2所示。

图2 视图对象Fig.2 View object

其Controller则命名为“MainwindowControl”,该部分实现Model和View的间接交互和控制逻辑,如图3所示。Controller还包括 “ExperimentControl”等系统的控制逻辑部分。Model部分则是来自于采集模块的数据,和对这些数据的相关操作及逻辑,下面代码中采集的highSpeedCollecingBuffer数组中的数据亦是Model之一。

图3 控制器对象Fig.3 Controller object

2.2 MVC模式具体交互

当用户在View上有操作触发时,使用观察者设计模式实现View向Controller发送通知,事件(Event)使该模式的实现更为方便。在 Controller中手动定义各个用户操作的Controller操作,如下面代码中的 onButtonSetLToZeroClick(object sender,EventArgs e)等,然后手动链接到用户的通知操作,如按钮的点击事件等,如下代码所示。这种方式使得Controller的解析方式和用户操作的关联更加方便、快捷,也实现松耦合。如果通知内容或触发者发生改变,只需改变事件注册链接,这对后期的维护和代码重用十分重要。

在Model中,当采集到数据时,将原始数据保存在highSpeedCollecingBuffer数组,利用多线程数据共享方式将数据通过Controller更新到ChildView(属于View)的buf数组中。View不保存数据,最多缓存一部分数据,并将Model的内容按照一定的方式呈现出来,如图2中黑色曲线框(ChildView)所示。View也用如图2所示第一排黑色图表显示当前Model的值,将highSpeedCollecingBuffer数组的数据通过事件抛向Controller,Controller使用timer负责向显示表数据更新数据。

Model通常来源于文件、数据库或采集设备[6-8]。当Model改变后通知Controller,然后Controller按照设定规则更新View。但 Model并不了解呈现它的具体 View,它仅向Controller执行通知操作。View也不指向具体的Model,它只负责显示数据。

2.3 MVC模式的优化结果

使用MVC模式优化后,系统的结构十分清晰的分成Model、View、Controller3部分,使得后续的开发者和维护者能够十分迅速和准确的把握整个控制系统的精髓,对于后期的维护和开发,有极大的帮助作用。

在控制软件的开发过程中,若有新的需求提出,则需要重新对需求进行分析,可能会造成Model或View的变化。但使用MVC模式后,对于View部分来说,基本上可以完全重用起来,不会出现由Model的变化引起的View的大幅度的更改,这是MVC模式的优势之一。同理,View的变化也同样不会引起Model的大幅度更改。

在设计新的测控系统时,采用代码回收机制,对于View模块,基本可以不用较大修改或调整就可以重用该部分代码。在代码回收过程中很多接口是可重用的,这也是面向对象编程的一个重要的思想:针对接口编程,而不是针对实现。好的软件开发模式体现在代码的可循环重复利用上,该模式使系统开发呈现出一个螺旋上升趋势。

3 结束语

本文利用MVC模式的角色分离,实现代码分离,使系统的结构更加清晰,维护性显著增加,并且适配器、装饰者、策略、单件等模式的使用也极大的提高了系统的重用性。MVC模式的使用不仅实现了对测控系统的优化,开发出的控制系统已投入使用,系统运行稳键,并且陆续用该方式开发出多个测控系统,获得了满意的效果。

[1]武杰.快速可重组机械工程测控实验平台的研制[D].南京:南京航空航天大学,2007.

[2]刘伟.基于RDP的应用服务推送模型[M].广东:中山大学, 2010.

[3]欧阳宏基.利用Struts与Hibernate框架构建Java Web应用的研究与实现[D].西安:西安科技大学,2007.

[4]彭鼎,李明东,邢紫阳.基于MVC架构的网络设计研究[J].电脑知识与技术,2005(7):1571-1572.PENG Ding,LI Ming-dong,XING Zi-yang.The network research and design based on MVC architecture[J].Computer Knowledge and Technology,2005(7):1571-1572.

[5]徐晨光.模块化技术在电子设备结构设计中的应用[D].西安:西安电子科技大学,2006.

[6]中国电机工程学会.第二届电测仪表学术发展方向主题研讨暨第一届智能化先进测量系统学术研讨会议[C]//丹东,2010.

[7]任凤仙,李强,张振华.用PHP的MVC框架开发电子书库的设计实践[J].电子设计工程,2014(16):25-27.REN Feng-xian,LI Qiang,ZHANG Zhen-hua.Design practice with the MVC framework of PHP to develop E-book stack room[J].Electronic Design Engineering,2014(16):25-27.

[8]赵秋锦,许武军,黄栋梁,等.MVC技术在光刻机人机工程中的应用研究[J].电子设计工程,2014(1):30-31,34.ZHAO Qiu-jin,XU Wu-jun,HUANG Dong-liang,et al.Study on MVC technology in human-machine engineering for lithography machine[J].Electronic Design Engineering, 2014(1):30-31,34.

The optimization researchin measurement and control system based on MVC pattern

LIU Lang,XU Si-jie,ZHAO Shi-ping
(Manufactory Science and Engineering Institute of Sichuan University,Chengdu 610065,China)

For the current measurement and control system whichused in design of process-oriented or object-oriented programming mode,the software model,logic,displaymixed together,makereusability of program is reduced.So use MVC (Model-View-Controller,Model-View-Controller)model framework for measurement and control system optimization.And to combine different measurement and control software development,reuse of View,Model and the public interface of Controller of software.Shorten the development cycle of the system,improve the system reusability.

measurement and control system optimization;design patterns;MVC pattern;software architecture

TN37

:A

:1674-6236(2015)18-0107-03

2014-12-05稿件编号:201412048

刘 浪(1989—),男,四川广安人,硕士。研究方向:仪器仪表工程。

猜你喜欢
测控视图代码
基于LabWindows/CVI与TekVISA的Tek示波器远程测控软件设计
创世代码
创世代码
创世代码
创世代码
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
基于现代测控技术及其应用分析