论域分析及面向对象的设计
★论域分析
论域分析是软件开发的基本组成部分,目的是使开发人员了解问题空间的组成,建立大致的系统实现环境。论域分析实际上是一种学习的过程,开发人员在这个阶段,应尽可能地理解当前系统工程与应用的有关知识,应开放思维,放宽思考领域,尽可能标识与应用有关概念,通过与领域专家和用户的充分讨论,确定问题领域,以用户需求为标准,缩减问题论域信息量,标识出系统的基本概念:对象和类、方法、关系等,从而进入面向对象的设计过程。
★面向对象的设计
面向对象的设计过程可分为4个组成部分:问题领域、用户界面、任务管理、数据管理。问题领域部分的设计实际上是对论域分析的进一步细化,它包括加入低层构件、把论域中相关的类关联起来并建立类间协议,确定继承关系。用户界面部分的设计包括设计命令层、设计人机交互类,应根据图形用户界面进行设计。任务管理部分的设计包括识别事件驱动任务、识别优先任务和识别关键任务,确定各个任务之间如何协调工作、如何通信。数据管理部分的设计包括数据存放设计(文件存放、数据库表格存放、面向对象的数据库存放)和设计相应操作(为每个需要存储的对象和类增加用于存储管理的属性和操作)。
作为软件开发人员,在论域分析阶段应和相关人员学习、分析、讨论相关知识并与用户进行界面、数据管理和报表生成方面的讨论,上述方面进行的越充分,对以后的开发越有利,对缩短软件开发周期更有好处。
★动态连接库(DLL)的建立
动态连接库是一种基于Windows 的程序模块,它可以在程序运行时被装入和连接,使应用程序不至于显得非常庞大和复杂。
Windows的程序模块,它可以在程序运行时被装入和连接,使应用程序不至于显得非常庞大和复杂。
★MFC常规动态连接库的建立
作为测控软件不仅要编写计算机接口程序,而且还有编写数据处理程序,这些程序调用的频率较高,宜作为库函数使用,这样一来内存中只有一个代码备份,而且可以同时被多个任务共享。
计算机接口程序应根据需要包含定时器、D/A和A/D转换、开关量输入输出、串口通信程序等,为保证这些程序为通用程序,一般应设计初始化程序。在初始化程序中,应能完成各个口地址的传递,以便于应用程序的调用。例如:intgetAD (int iCH),改变A/D通道号iCH的值,可得到不同传感器的转化值:voidsetDA (inti CH,int iNum),可将D/A转换值iNum送iCH通道转换。
数据处理程序包含一维离散数据处理和多维离散数据处理,为使用方便,原始数据的带入应使用指针,计算控制参数也是必不可少的。例如求解二维离散数据(*pX, *pY)X和Y的值,已知X值时用表达式:Y=getY(double*pX,double* pY,int*pPointNum,doubleX)它采用多项式拟合的方式求解;当已知Y 值时用表达式X=getY(double *pY, double*pX,int * pPoint Num,doubl eY)求解。
如在应用程序中得到多维数据,想知道任意二维数据之间关系,用它计算处理数据也非常方便,另外分段拟合数据用它也是可以的。
常用小程序也是动态连接库的基本内容,例如数据显示、数据类型转换、排序、求极值等。注意,凡涉及数据输入输出均采用指针为佳。如:void find-MaxMin(dou ble *pX,double*dMax,double*dMin)
★MFC扩展动态连接库的建立
利用MFC扩展动态连接库,可以方便地在DLL和应用程序之间随意地传递MFC对象指针。本人曾利用它建立文档处理类、系统资源测试类、被测件类(一般1个被测件建立1类)。
文档处理类主要用于中间数据及结果的存取,中间数据的保存用于重现历史测试曲线,它和应用程序之间数据的传递使用结果数据结构指针,结果数据结构的定义应具有通用性,这样文档处理类就可针对结果数据结构进行处理,并不需要被测件的具体数据,应用程序只需在初始化时赋具体意义。
被测件类根据被测件类型的多少可以有若干个,每个被测件应根据试验大纲和技术条件编写若干个属性和方法(即测试模块,如磨合,测试极值等),编写测试模块时测试过程应连续进行,中间数据应做适当地保留,以备过程复现和结果处理之用。
系统资源测试类供接口测试用
★接口测试
接口是软硬件之间信息转换的中转站,硬件信息通过它传给软件,软件指令通过它传给硬件,接口测试就是测试软硬件信息交换是否符合设计要求,利用系统资源测试类设计接口测试界面,可进行接口测试,同时也可进行硬件和软件的调试,接口测试界面应包括足够多的内容,它可以观察:AD通道传感器的转换情况;DA通道送转值的转换情况;DI通道是否有外部信号输入;DO通道是否给各控制位置位或清零(如电磁阀的通/断、电机的启动/停止、液压泵的启动/停止);定时器的运行情况(主要用于流量等频率信号的测量)。
通过上述系统资源测试,可知道硬件相关部分工作情况,与此同时,也进行了软件相关部分的测试,为应用程序成功调试奠定了良好基础。
★用户界面
用户界面的设计应解决如下问题:操作应简单,能完成所有测试项目,能对数据(含历史数据)进行文档管理(打开、保存、打印等),显示测试结果等。程序设计时应采用多线程,线程优先级以及线程间数据传递应做通盘考虑,应用程序进入测试界面后,首先建立优先级最高的两个线程:控件及时更新;对危及安全的数据跟踪监控并做出及时反应(如压力过高应停泵,力值过大应卸载)。这两项工作线程应和用户界面一起创建并终止。用户操作响应线程应配合进度条一起建立,并将测试结果送显,工作线程创建的数量不宜多,否则影响程序的响应速度。利用Windo ws定时器也可完成定时更新数据的工作。
各线程间数据传递应采用全局变量方式进行,如某处压力值用Pre ss表示,Press由数据更新线程不断更新,数据监控线程监视Press的大小,界面控件数据用Press更新,测试时该处压力值也用Press代替。
★传感器校验
按工厂规定,传感器应每年校验一次,为方便校验和修改系数,传感器校验程序是不可缺少的,应设计好方便实用的传感器校验程序界面,各传感器系数应以二进制文件形式保存,并做好备份。