收藏 分享(赏)

基于COM航空试验软件组件的设计.doc

上传人:dzzj200808 文档编号:2313590 上传时间:2018-09-10 格式:DOC 页数:6 大小:48KB
下载 相关 举报
基于COM航空试验软件组件的设计.doc_第1页
第1页 / 共6页
基于COM航空试验软件组件的设计.doc_第2页
第2页 / 共6页
基于COM航空试验软件组件的设计.doc_第3页
第3页 / 共6页
基于COM航空试验软件组件的设计.doc_第4页
第4页 / 共6页
基于COM航空试验软件组件的设计.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、基于 COM航空试验软件组件的设计支超有, 李 霞(第一飞机设计研究院,陕西 西安 710089) 摘要:基于 COM 设计的航空试验软件组件,不但具有更好的模块化,而且提高了 软件的健壮性和可重用性,有利于测试软件开 发效率的提高。文章在 讨论 COM 技术的基础上,提出了基于ActiveX 控件航空试验软件组件的开发。关键词:模块化;面向对象;软件组件;COM;ActiveX 控件;接口1 软件模块化及面向对象程序设计随着以计算机技术为基础的虚拟仪器技术的发展,自动测试系统正朝着标准化、模块化的方向发展,出现了标准的测试总线,如 VXI、PXI 和 PCI 总线,这样在测试系统的组建时只需

2、选择实现不同功能的标准模块。硬件的标准化、模块化给测试系统的集成和使用带来极大的方便,那么软件能否象硬件那样设计成标准模块,通过组装实现完整的功能。从软件的发展历程来看,程序设计方法经历了多次变革,从最初的功能分解法,到结构化程序设计方法,再到至今仍在广泛使用的面向对象程序设计方法。对于大型、复杂系统的软件设计,从软件模型的角度来考虑,有效的办法就是把一个庞大的应用软件分成多个模块,每个模块保持一定的功能独立性,在协同工作时,通过相互之间的接口完成实际的任务。由此提出了软件设计中模块化的思想。软件设计的模块化降低了设计开发的复杂度并使设计步骤清晰,也有利于提高软件健壮性、灵活性、可复用性等。进

3、行模块化软件设计时应综合考虑模块的可分解性、可结合性、可理解性、连续性及模块保护几方面的要求。模块的可分解性要求把一个大的、复杂的问题分解为一些小的、简单的问题,通过解决各个小问题来解决大问题;模块的可结合性要求不同时期、不同项目、不同环境下设计的模块应能自由地结合在一起构成新的系统;模块的可理解性要求通过某种方法设计的每个模块不需要参考相邻的模块就能被人看懂;模块的连续性要求通过某种方法设计出的模块,在需求发生变化时只影响一个或少数几个模块;模块保护则要求通过某种方法设计出的模块,在运行期间发生的错误被限制在这个模块内部或仅仅传播到少数几个摸块。模块化设计时应将上述要求有机地结合起来。在保证

4、正确性和健壮性的基础上,应尽可能提高软件的可扩充性和可复用性。通过模块化所实现的软件是由被加工的对象及其在该对象上所实现的有关功能构成。在开发软件的过程中,一般采用两种方法:其一是把重点放在功能的实现上,其二是把重点放在对象上。基于功能的软件开发方法中,其功能实现中考虑的“过程”和“操作”是多变和不稳定的,程序结构围绕事先确定好的功能,使得功能的扩充、删除及修改变得相当困难。这样的软件结构脆弱、功能集中、耦合度大,很难满足可扩充性、可维护性的要求,软件的重用性也差。面向对象的程序设计中考虑的“对象”和“数据结构”是相对稳定的。尽管功能是千变万化的,但一个问题空间中的对象一般总能保持其相对稳定不

5、变性,这样围绕对象构造的软件系统也自然会有好的稳定性。面向对象方法把属性和服务封装在对象中,当外部功能发生变化时,这种封装可以保持对象结构的相对稳定,使得改动仅局限在一个对象内部,减小了因改动引起的系统波动效应,因此,面向对象方法开发的软件具有易于扩充、修改和维护的特性。另外,面向对象方法具有的继承性和封装性也支持软件重用,并且易于扩充,能较好地适应复杂大系统不断发展和变化的要求。模块化的思想和面向对象的程序设计方法为开发大型、复杂测试软件奠定了强有力的基础,而 COM(即组件对象模型)正是上述思想和方法的成功实践。2 基于 COM 组件化程序设计在组件化程序设计中,按照模块化的思想把航空测试

6、软件划分成一些组件,这些组件可以单独编译,甚至单独调试和测试。当所有的组件开发完成后,把它们组合在一起就得到完整的测试软件。当外界测试环境发生变化或者用户的需求有所更改时,不再对所有的组件进行修改,只需对受影响的组件进行修改,然后重新组合得到新的升级测试软件。所谓组件是软件的基本量子。它具有一定的功能,可插用,同时又是可维护的,具有标准化的、可重用的公开接口。以组件为发布单元的对象模型,可以使各软件组件用统一的方式进行交互。也就是说组件可以在二进制级别上进行集成和重用,能被独立地生产、获得和配置。在 Windows 系统平台上,一个 COM 组件可以是 DLL 文件形式,也可以是 EXE文件形

7、式。一个组件内可以包含多个 COM 对象,并且每个 COM 对象可以实现多个接口。从客户方面看,COM 模型中的对象是不可见的,客户请求服务时,必须通过接口进行。每一个接口由一个 128 位的全局唯一标识符 GUID 来标识,客户通过 GUID 获得接口指针,再通过接口指针调用其相应的成员函数。软件组件的通讯是通过接口进行的,所以接口是软件组件设计的基础和关键。这就要求软件组件遵从统一的标准,同一软件中的组件使用同样的接口标准,以便保证软件组件之间可靠的通讯。接口是一组逻辑上相关的函数集合,实质是包含了一组函数的数据结构,通过这组数据结构,客户代码可以调用所有组件对象的功能。接口中所定义的成员

8、函数是组件对象提供给客户程序的所有信息,客户程序就是利用这些函数获得组件对象的服务。接口结构如图 1。图 1 COM 接口结构图 1 表明,客户程序通过指向接口数据结构的指针来调用接口成员函数。而接口指针实际上又指向另一个指针 pVtable,指针 pVtable 指向接口函数表 vTable,接口函数表包含着一组函数指针,每个函数指针为 4 个字节长,并且与对象的具体实现连接起来。通过这种方式,客户程序只要获得了接口指针,就能调用到对象的实际功能。上述对象和客户之间的相互作用是建立在客户服务器模型基础上的,客户服务器模型的一个很大优点是稳定性和可靠性好、软件的可扩展性更好。而稳定性正是COM

9、 模型的目标,尤其对于跨进程的程序通讯,稳定性更会带来性能上的高可靠性。COM 除上述面向对象的特性和客户服务器的两个基本特性外,还包括语言无关性、对进程的透明性和它的可重用机制。详细介绍可参见文献1。3 航空试验测试组件设计通常,航空试验测试软件系统需完成如下功能:人机界面接口功能、数据采集记录功能、图形曲线显示分析功能、远程网络化测试功能、参数辩识和数学建模功能、数据库存储管理功能。上述功能分别以软件组件的形式实现,再进行集成组合得到航空试验测试组件软件。如图 2。上述各功能组件的设计是基于COM 进行的, COM 组件软件的实现可以选择多种方法,其中ActiveX 技术是选择之一。Act

10、iveX技术是宽松定义的、基于组件对象模型(COM)的技术集合。它是一接口指针 指针 指针函数 1指针函数 2指针函数 3对象实现pVtable vTable航空试验测试软件系统人机界面接口组件 数据采集记录组件图形曲线显示分析组件 远程网络测试组件数据库存储管理组件参数辩识和数学建模组件对象实现图 2 航空试验测试组件软件个二进制标准,包含了一系列规则,能构建与语言无关的、面向对象的应用程序,包括 ActiveX 自动化、ActiveX 控件和 ActiveX 文档。航空试验测试软件组件设计的实质就是 ActiveX 控件的开发。在 ActiveX 控件形式的航空试验测试组件的开发中,由于

11、LabWindowsCVI 提供了满足虚拟仪器测试软件开发的各种功能,所以以 LabWindowsCVI 作为开发环境来开发能满足航空试验测试的 ActiveX 控件,能丰富航空试验测试组件种类,缩短测试应用软件开发和调试时间,提高测试系统的可靠性。图形曲线显示分析是航空试验测试中必须完成的一项功能,以该软件组件的设计为例,讨论通过 ActiveX 控件实现其功能。图 3 是图形曲线显示分析对象及其接口。 在图形曲线显示分析对象接口实现中,包括四个接口:IUnknown、ICurveSelect、IAxiseScale 和IGraph。IUnknown 接口是其它接口的基础,它提供了 COM

12、两个重要特性:生存期控制和接口查询,其它接口都是从 IUnknown继承而来;ICurveSelect 接口提供了选择测量通道的采集数据,对测量数据进行回放,生成多条图形曲线;IAxiseScale 接口提供了对 X 轴和 Y 轴比例刻度的设置,以及图形曲线滚动操作参数的设置,以便进行图形曲线的细化、放大、平移等操作;IGraph 提供了图形曲线分析过程中所要完成的各种操作,如图形曲线标题、日期、注释等信息的显示,通过对图形曲线上光标的操作控制,进行图形曲线的分析、标注,以及硬拷贝打印输出。ActiveX 控 件 是 一 系 列 属 性 、 方 法 、 事 件 呈 现 出 来 的 对 象 。

13、控 件 属 性 可 被 设 置 和 检索 , 并 且 可 定 义 为 整 数 、 字 符 等 各 种 类 型 值 , 它 类 似 C+里 的 成 员 变 量 , 通 常 用Get Set 方 法 来 实 现 获 取 设 置 。 控 件 方 法 是 用 户 为 执 行 某 种 功 能 而 调 用 的 过 程 , 它 作为 控 件 的 成 员 函 数 来 实 现 的 。 事 件 是 控 件 为 了 表 示 发 生 了 某 类 事 件 而 向 其 父 窗 口 发 送 的消 息。图形曲线显示分析控件的设计中,利用 LabWindowsCVI 提供的创建 COM 应用程序向导,通过在 LabWindow

14、sCVI 中创建一个 ActiveX 服务器来实现,其方法如下:(1)新建并打开图形曲线显示分析工程文件。(2)在 Tools 菜单运行创建 ActiveX 服务器向导,在 LabWindowsCVI 中设置图形曲线显示分析工程为 ActiveX 服务器工程。并在通过 ToolsCreate ActiveX Server 向导创建 ActiveX 服务器工程时完成对目标文件、服务器和服务器高级选项面板的设置。图 形 曲 线 显 示 分 析 对 象 Iunknown IAxiseScaleIGraph图 3 图形曲线显示分析对象及其接口ICurveSelect在目标文件的设置中需要设置规范文件、

15、源文件、头文件和 IDL 文件的设置;在服务器设置中需完成服务器名称、类型、帮助文件、帮助索引和帮助信息串的设置;在服务器高级选项面板的设置中需完成线程模式、回调函数、版本、命令行中的命令自动化选择、地区标识、库标识设置。(3)在 Tools 菜单运行编辑 ActiveX 服务器工具,编辑 ActiveX 接口和对象,并生成 ActiveX 服务器代码。分别编辑 ICurveSelect、IAxiseScale 和 IGraph 接口,定义每个接口的名称以及生成对应该接口的标识符(IID) ,设置对应每个接口的帮助信息串和帮助索引标识符。此外,定义对应当前接口的方法和属性。ActiveX 方法

16、代表一个函数的实现,在 ActiveX 方法的定义和编辑中,需要定义函数名和设置帮助信息串与帮助索引,以及定义参数变量,函数的参数变量可设置为输入、输出或输入输出;ActiveX 属性用来表示与功能相对应的数据变量,与 ActiveX 方法一样,ActiveX 特性也有相关名称、帮助信息串和帮助索引。对应 ICurveSelect 接口的属性实现中用户通过属性设置选择测量通道,对应 IAxiseScale 接口的属性实现中用户通过设置坐标轴的范围、比例刻度等参数属性完成对图形显示参数的设置,而 IGraph 接口的方法实现中按照 ICurveSelect 接口和 IAxiseScale 接口所

17、设置的参数,对测量数据进行格式化处理,完成图形的显示、标注和最终打印输出。(4)在 源 文 件 中 完 成 主 函 数 、 ActiveX 服 务 器 函 数 和 回 调 函 数 的 代 码 编 辑 , 以 及 在生 成 的 头 文 件 中 检 查 这 些 函 数 的 原 型 。 上 述 函 数 代 码 编 辑 中 , 是 围 绕 所 实 现 的 功 能 进 行的 。(5)把 完 成 好 的 源 文 件 添 加 到 工 程 中 并 编 译 工 程 文 件 , 得 到 图 形 曲 线 显 示 分 析 控件 。4 结束语基于 COM 的航空试验测试组件作为一种软件模型,不仅实现了程序与程序之间通讯

18、的标准。而且融合了对象技术和组件技术两种特性,对象特性使得航空测试软件组件的设计和实现更加符合现实世界的面貌;组件特性使得航空测试软件组件可以充分发挥组件的优势,以适应开发大型测试应用系统的需要。组件化程序设计方法强调真正的软件重用和高度的互操作性。它侧重于组件的产生和装配,这两方面一起构成了组件程序设计的核心。组件的产生过程不仅仅是航空试验测试的需求,而且强调随着组件技术的发展而发展,并加强各单位与部门的交流与合作;组件的装配使得软件产品有可能用类似于搭积木的方法快速地建立起来,不仅可以缩短航空试验测试软件产品的开发周期,同时也提高了测试系统的稳定性和可靠性。参考文献1 潘爱民COM 原理与应用M 北京:清 华大学出版社,20022 孟令航等ActiveX 控件技术在 组态软件研制中的应用J计算机 测量与控制, 2003,11(1)3 张刚毅等虚拟仪器软件开发环境 LabWindowsCVI6.0 编程指南M北京:机械工业出版社,200284 张素琴C+程序设计语言M北京:清华大学出版社,1994

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报