中大型LABVIEW软件三层设计架构
通常一个VI若包含三、 四十个以上的subVI(不包含LabVIEW本身在Functions中提供
的VI)时,就可算是一个中大型的软件计划(software project)了。虽然比起软件工程中的一些
作业环境软件(如Windows系列)或大型应用软件(如Word、Excel)等仍算是小工程,但其复
杂性亦在一定程度之上, 若没有事先想好在撰写程序时的一些规划与方法, 想要完成这类中
大型的软件绝对不是一件简单的事。 尤其这类软件通常不是由一个人, 而是由一个团队所共
同完成的, 因此整个软件的结构, 就要能让团队中的每一成员都能清楚的了解, 而且要够简
单,才算是好的软件结构。以下将参考由Rick Bitter等人所着”LabVIEW Advanced
rogramming Techniques” ,中之第4章的部分内容,介绍所谓软件计划中的三层式结构(the
Three-Tiered Structure)的概念及其优点。
需要软件结构的主要原因, 是当软件人员发展软件到某一阶段时, 若没有计划或无意的
创造了许多subVI,但各subVI之间有许多部分其实是重复撰写的;或各VI相互间呼叫时
没有一定的纪律,使得在VI Hierarchy中所看到的各VI间的联机是错综复杂,像个盘丝洞
一般, 这将可能会使多人发展的软件计划增加所耗费的时间和可能出错的机会、 减低程序的
效率, 以及增加debugging时的困难。 为了改善上述的情形, 所以要提倡三层式结构的概念。
三层式结构由上而下依次为:Main Level、Test Level和Driver Level,这种结构是由经
验中得来的, 在多人发展的软件计划中显得简单明了, 当大家都能遵照这个结构来写程序时,
这种结构就可以充分显现出它的优点。那这三个阶层到底如何区别呢?以通俗的比喻来说,
假设我们如果要组织一个篮球队参加全国比赛,每个球员要练习基本动作及体能,如何跑、
如何跳、手脚该如何放置才是正确位置等,这就相当于系统中Driver Level所做的事情;接
下来,将各球员组合练习某一套防守或进攻的战术, 如二三区域联防、 人盯人防守, 每个人
该在什么位置才能正确接应等,则像是Test Level中一项项的test了;而最后比赛时,场上
的战略运用, 包括何时要用什么战术组合、 如何更换球员、 何时喊暂停、 终场前是不是要故
意犯规或采拖延战术等等,对照过来,就像是在Main Level中,如何将Test Level中各test
做最有效能的整合与排列组合等的工作。
简单来说,Driver Level包含了程序与所有仪器、 组件、马达或其它应用软件的沟通、控
制等较低阶的事情,使其可完成某一项基本的动作,例如初始化、马达走到home位置、雷
射以设定的能量及频率发射光束等。可注意到我们在这边所说的driver,并不像一般在别处
所称驱动程序的那种driver那么低阶,真正最低阶的工作还是要有现成的VI来帮忙才行;
在Test Level中,则是如何连接各个Driver VI的基本动作,使可做完出一套连续、有意义
的流程,来执行某项测试,例如让手臂由A点走到B点,下降夹取一个螺丝,再走至C点
装到某面板上,然后回到A点等待,类似这样控制一个流程的进行,便是Test VI的工作内
容;Main Level则包含了使用者接口(User Interface)或称人机接口(Man-Machine Interface) ,
目的是整合各项测试和例外处理(Exception Handling)等,将它们以适当的顺序及流程组合,
很容易地让使用者操作。
当一个软件计划严格的遵照上述的三层结构来撰写时, 最大的优点是可使程序代码的再
使用(code reuse)达到最大化,在不同的Test VI中,可重复使用相同的Driver VI;而在不同
程序的Main Level中,又可重复使用相同的Test VI,这将使得程序维护或修改的时间与精
力大幅减少;同时当我们已有一个程序的样板(template)后,可增加软件版本更新的速度。
另一个很重要的好处是, 当我们在撰写某一个level中的程序时, 并不需要关心在另一个level
中有什么其它的程序是如何执行的,而只要专注在自己的这个level的程序上就可以了,这
使得由团队来共同完成一个大型计划的工作变得容易许多。
评论0