从软件开发角度浅谈组态软件
本文来源:《世纪星月刊》创刊号 作者:刘经人
前言:首先看看近些年重多编程发烧友对软件等相关事物的一些总体认识,先说主体——人,无论是以做设计为主还是做coding,最后都不可能完全与编程脱离关系。程序是客体,软件开发人员虽然经常把程序的正确性、可靠性、高效率性、易用性、可读性(可理解性)、可扩展性、可复用性、兼容性、可移植性挂在嘴边,真正地理解并实施起来却很难,并且也很少。
组态软件也不例外。除了有上述特点以外,还具有一些新的特性,比如可编译性、可容错性、可管理性、可存储性、可配置性等储多特点。如此众多特性,一时也很难消化。本文便是从软件开发的角度探讨对组态软件的认识。
关键词:软件开发;组态软件;面向对象。
蒸气机的发明标志着人类大踏步进入工业革命时代,机器生产机器则标志着第一次工业革命的的结束。同样,软件工具的使用标志着计算机领域正在疾步前进,那用软件生产软件,是不是也代表了一次软件革命?
是的!组态软件正是这样一种软件,用软件生产软件的工具。组态软件就像是一个用代码实现的功能仓库,让你自由拼凑出任何由组态软件本身所能支持的功能,之所以这里说“拼凑”,还是由组态软件的名字而来——Configuration Software。
传统的组态软件软件分为,开发系统(CSMaker)和运行系统(CSViewer)两个部分。由于编程技术的不断发展,编译工具的不断衍生,CSMaker与CSViewer的工作界限也越来越模糊,由最初的静态组态到在线组态,再到最近的提出运行时组态。
静态组态是最传统的一种组态方式,用户在开发系统(CSMaker)中开发,然后重新在运行系统(CSViewer)上运行。
在线组态是在运行系统(CSViewer)运行的同时,进入开发系统(CSMaker),在开发系统中对工程进行修改,运行系统就会进行相应的改变。
运行时组态是在运行系统(CSViewer)对已有工程进行修改,添加新的功能,运行时组态已经同时拥有了开发系统(CSMaker)和运行系统(CSViewer)两种功能。
任何程序的发展都是呈螺旋式上升,都是用算法集合成功能的过程。算法和功能的不断推进让软件产品产生一次又一次的飞跃。最初我们只是定义了0,1两个子项,逢2进1的算法,即二进制的算法。之后提炼出了二进制加法功能(进而推广出了二进制减法,乘法,除法功能),进而以四则运算的基本算法为基础,提供了开平方,求对数等众多功能。又以基本的数学算法为基础开启新功能的篇章,当功能再次被提炼整理再次升华为理论作为算法又支撑了下一代的功能的繁衍……
组态软件的也是一样,由软件的开发者以某一个开发平台为基础,经过不断的底部推高为用户提供丰富的完善的功能。底部的推高是一个积累的过程,没有对软件底层基本算法的认识理解是无法做出优秀的功能以及提供优质的服务。
从软件开发角度上讲组态软件有别于其它类软件的最明显的两个特征——通用性和代码可重用性。
首先,组态软件不同于定制软件的最大区别就是所有功能都是由基本功能“拼凑”而成。很多开发系统(CSMaker)和运行系统(CSViewer)中使用的控件都是基本控件和通用控件。第二个特征更为明显,代码可重用性,而且代码的可重用性与定制软件相比高到无法想像的程度。做一个软件工程,无论代码库有多丰富,要重写一个工程都需要大量编写程序,而组态软件则不同。只需把通用的算法功能写到位,便可以通过图形化的组态完成大量代码编写任务。
说到通过图形化生成代码,就不得不提到图形化编程。最新的编程软件都支持把相关的类属性和方法以及类与类之间的关系(泛化、关联、依赖、聚合)导出成类图,有一些高级语言可以通过在类图中修改类与类之间的关系,并生成相关的代码,但是很可惜C++现在虽可以导出成类图,但并不支持回导。
也就是说,类图可以修改但不能生成相关的代码,这就意味着如果用C++开发的程序短期内很难用官方的方法(比如说COM)进行图形化代码生成。如果不使用C++开发组态软件,软件的性能和效率又不能得到保证,这就需要一个推进式的发展,需要长期、稳定的团队把一个个面向过程的功能抽象一个面向对象的类,再通过一个个面向对象的类的实例组合成一个面向过程的功能,这样周而复始不断的螺旋式上升。
组态软件的产品线也将随着功能的不断细化而不断丰富,组态软件也不可能再只是单纯的数据采集、数据存储、数据监控,它将会走向数据管理、数据分析、数据提取、工艺优化等更多领域,我们拭目以待!