模块化是软件设计及实现中常用的方法.doc_第1页
模块化是软件设计及实现中常用的方法.doc_第2页
模块化是软件设计及实现中常用的方法.doc_第3页
模块化是软件设计及实现中常用的方法.doc_第4页
模块化是软件设计及实现中常用的方法.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

膆蒀蝿腿肂葿袁羂莁蒈薁膇芇薇蚃羀膃薆螅膆聿薆袈罿蒇薅蚇螁莃薄螀肇艿薃袂袀膅薂薂肅肁薁蚄袈莀蚀螆肃芆蚀衿袆膂虿薈肂肈蚈螁袅蒆蚇袃膀莂蚆羅羃芈蚅蚅膈膄节螇羁肀芁衿膇荿莀蕿罿芅荿蚁膅膁莈袄羈膇莈羆袁蒆莇蚆肆莂莆螈衿芈莅袀肄膄蒄薀袇聿蒃蚂肃莈蒂螅袅芄蒂羇肁芀蒁蚆羄膆蒀蝿腿肂葿袁羂莁蒈薁膇芇薇蚃羀膃薆螅膆聿薆袈罿蒇薅蚇螁莃薄螀肇艿薃袂袀膅薂薂肅肁薁蚄袈莀蚀螆肃芆蚀衿袆膂虿薈肂肈蚈螁袅蒆蚇袃膀莂蚆羅羃芈蚅蚅膈膄节螇羁肀芁衿膇荿莀蕿罿芅荿蚁膅膁莈袄羈膇莈羆袁蒆莇蚆肆莂莆螈衿芈莅袀肄膄蒄薀袇聿蒃蚂肃莈蒂螅袅芄蒂羇肁芀蒁蚆羄膆蒀蝿腿肂葿袁羂莁蒈薁膇芇薇蚃羀膃薆螅膆聿薆袈罿蒇薅蚇螁莃薄螀肇艿薃袂袀膅薂薂肅肁薁蚄袈莀蚀螆肃芆蚀衿袆膂虿薈肂肈蚈螁袅蒆蚇袃膀莂蚆羅羃芈蚅蚅膈膄节螇羁肀芁衿膇荿莀蕿罿芅荿蚁膅膁莈袄羈膇莈羆袁蒆莇蚆肆莂莆螈衿芈莅袀肄膄蒄薀袇聿蒃蚂肃莈蒂螅袅芄蒂羇肁芀蒁蚆羄膆蒀蝿腿肂葿袁羂莁蒈薁膇芇薇蚃 基于COM航空试验软件组件的设计支超有, 李 霞(第一飞机设计研究院,陕西 西安 710089) 摘要:基于COM设计的航空试验软件组件,不但具有更好的模块化,而且提高了软件的健壮性和可重用性,有利于测试软件开发效率的提高。文章在讨论COM技术的基础上,提出了基于ActiveX控件航空试验软件组件的开发。关键词:模块化;面向对象;软件组件;COM;ActiveX控件;接口1 软件模块化及面向对象程序设计随着以计算机技术为基础的虚拟仪器技术的发展,自动测试系统正朝着标准化、模块化的方向发展,出现了标准的测试总线,如VXI、PXI和PCI总线,这样在测试系统的组建时只需选择实现不同功能的标准模块。硬件的标准化、模块化给测试系统的集成和使用带来极大的方便,那么软件能否象硬件那样设计成标准模块,通过组装实现完整的功能。从软件的发展历程来看,程序设计方法经历了多次变革,从最初的功能分解法,到结构化程序设计方法,再到至今仍在广泛使用的面向对象程序设计方法。对于大型、复杂系统的软件设计,从软件模型的角度来考虑,有效的办法就是把一个庞大的应用软件分成多个模块,每个模块保持一定的功能独立性,在协同工作时,通过相互之间的接口完成实际的任务。由此提出了软件设计中模块化的思想。软件设计的模块化降低了设计开发的复杂度并使设计步骤清晰,也有利于提高软件健壮性、灵活性、可复用性等。进行模块化软件设计时应综合考虑模块的可分解性、可结合性、可理解性、连续性及模块保护几方面的要求。模块的可分解性要求把一个大的、复杂的问题分解为一些小的、简单的问题,通过解决各个小问题来解决大问题;模块的可结合性要求不同时期、不同项目、不同环境下设计的模块应能自由地结合在一起构成新的系统;模块的可理解性要求通过某种方法设计的每个模块不需要参考相邻的模块就能被人看懂;模块的连续性要求通过某种方法设计出的模块,在需求发生变化时只影响一个或少数几个模块;模块保护则要求通过某种方法设计出的模块,在运行期间发生的错误被限制在这个模块内部或仅仅传播到少数几个摸块。模块化设计时应将上述要求有机地结合起来。在保证正确性和健壮性的基础上,应尽可能提高软件的可扩充性和可复用性。通过模块化所实现的软件是由被加工的对象及其在该对象上所实现的有关功能构成。在开发软件的过程中,一般采用两种方法:其一是把重点放在功能的实现上,其二是把重点放在对象上。基于功能的软件开发方法中,其功能实现中考虑的“过程”和“操作”是多变和不稳定的,程序结构围绕事先确定好的功能,使得功能的扩充、删除及修改变得相当困难。这样的软件结构脆弱、功能集中、耦合度大,很难满足可扩充性、可维护性的要求,软件的重用性也差。面向对象的程序设计中考虑的“对象”和“数据结构”是相对稳定的。尽管功能是千变万化的,但一个问题空间中的对象一般总能保持其相对稳定不变性,这样围绕对象构造的软件系统也自然会有好的稳定性。面向对象方法把属性和服务封装在对象中,当外部功能发生变化时,这种封装可以保持对象结构的相对稳定,使得改动仅局限在一个对象内部,减小了因改动引起的系统波动效应,因此,面向对象方法开发的软件具有易于扩充、修改和维护的特性。另外,面向对象方法具有的继承性和封装性也支持软件重用,并且易于扩充,能较好地适应复杂大系统不断发展和变化的要求。模块化的思想和面向对象的程序设计方法为开发大型、复杂测试软件奠定了强有力的基础,而COM(即组件对象模型)正是上述思想和方法的成功实践。2 基于COM组件化程序设计在组件化程序设计中,按照模块化的思想把航空测试软件划分成一些组件,这些组件可以单独编译,甚至单独调试和测试。当所有的组件开发完成后,把它们组合在一起就得到完整的测试软件。当外界测试环境发生变化或者用户的需求有所更改时,不再对所有的组件进行修改,只需对受影响的组件进行修改,然后重新组合得到新的升级测试软件。所谓组件是软件的基本量子。它具有一定的功能,可插用,同时又是可维护的,具有标准化的、可重用的公开接口。以组件为发布单元的对象模型,可以使各软件组件用统一的方式进行交互。也就是说组件可以在二进制级别上进行集成和重用,能被独立地生产、获得和配置。在Windows系统平台上,一个COM组件可以是DLL文件形式,也可以是EXE文件形式。一个组件内可以包含多个COM对象,并且每个COM对象可以实现多个接口。从客户方面看,COM模型中的对象是不可见的,客户请求服务时,必须通过接口进行。每一个接口由一个128位的全局唯一标识符GUID来标识,客户通过GUID获得接口指针,再通过接口指针调用其相应的成员函数。软件组件的通讯是通过接口进行的,所以接口是软件组件设计的基础和关键。这就要求软件组件遵从统一的标准,同一软件中的组件使用同样的接口标准,以便保证软件组件之间可靠的通讯。接口是一组逻辑上相关的函数集合,实质是包含了一组函数的数据结构,通过这组数据结构,客户代码可以调用所有组件对象的功能。接口中所定义的成员函数是组件对象提供给客户程序的所有信息,客户程序就是利用这些函数获得组件对象的服务。接口结构如图1。接口指针指针指针函数1指针函数2指针函数3对象实现pVtablevTable对象实现图1 COM接口结构图1表明,客户程序通过指向接口数据结构的指针来调用接口成员函数。而接口指针实际上又指向另一个指针pVtable,指针pVtable指向接口函数表vTable,接口函数表包含着一组函数指针,每个函数指针为4个字节长,并且与对象的具体实现连接起来。通过这种方式,客户程序只要获得了接口指针,就能调用到对象的实际功能。上述对象和客户之间的相互作用是建立在客户服务器模型基础上的,客户服务器模型的一个很大优点是稳定性和可靠性好、软件的可扩展性更好。而稳定性正是COM模型的目标,尤其对于跨进程的程序通讯,稳定性更会带来性能上的高可靠性。COM除上述面向对象的特性和客户服务器的两个基本特性外,还包括语言无关性、对进程的透明性和它的可重用机制。详细介绍可参见文献1。3 航空试验测试组件设计航空试验测试软件系统人机界面接口组件数据采集记录组件图形曲线显示分析组件远程网络测试组件数据库存储管理组件参数辩识和数学建模组件通常,航空试验测试软件系统需完成如下功能:人机界面接口功能、数据采集记录功能、图形曲线显示分析功能、远程网络化测试功能、参数辩识和数学建模功能、数据库存储管理功能。上述功能分别以软件组件的形式实现,再进行集成组合得到航空试验测试组件软件。如图2。图2 航空试验测试组件软件上述各功能组件的设计是基于COM进行的,COM组件软件的实现可以选择多种方法,其中ActiveX技术是选择之一。ActiveX技术是宽松定义的、基于组件对象模型(COM)的技术集合。它是一个二进制标准,包含了一系列规则,能构建与语言无关的、面向对象的应用程序,包括ActiveX自动化、ActiveX控件和ActiveX文档。航空试验测试软件组件设计的实质就是ActiveX控件的开发。在ActiveX控件形式的航空试验测试组件的开发中,由于LabWindowsCVI提供了满足虚拟仪器测试软件开发的各种功能,所以以LabWindowsCVI作为开发环境来开发能满足航空试验测试的ActiveX控件,能丰富航空试验测试组件种类,缩短测试应用软件开发和调试时间,提高测试系统的可靠性。图形曲线显示分析是航空试验测试中必须完成的一项功能,以该软件组件的设计为例,讨论通过ActiveX控件实现其功能。图3是图形曲线显示分析对象及其接口。 图3 图形曲线显示分析对象及其接口 IGraph IAxiseScaleICurveSelectIunknown 在图形曲线显示分析对象接口实现中,包括四个接口:IUnknown、ICurveSelect、IAxiseScale和IGraph。IUnknown接口是其它接口的基础,它提供了COM两个重要特性:生存期控制和接口查询,其它接口都是从IUnknown继承而来;ICurveSelect接口提供了选择测量通道的采集数据,对测量数据进行回放,生成多条图形曲线;IAxiseScale接口提供了对X轴和Y轴比例刻度的设置,以及图形曲线滚动操作参数的设置,以便进行图形曲线的细化、放大、平移等操作;IGraph提供了图形曲线分析过程中所要完成的各种操作,如图形曲线标题、日期、注释等信息的显示,通过对图形曲线上光标的操作控制,进行图形曲线的分析、标注,以及硬拷贝打印输出。ActiveX控件是一系列属性、方法、事件呈现出来的对象。控件属性可被设置和检索,并且可定义为整数、字符等各种类型值,它类似C+里的成员变量,通常用GetSet方法来实现获取设置。控件方法是用户为执行某种功能而调用的过程,它作为控件的成员函数来实现的。事件是控件为了表示发生了某类事件而向其父窗口发送的消息。图形曲线显示分析控件的设计中,利用LabWindowsCVI提供的创建COM应用程序向导,通过在LabWindowsCVI中创建一个ActiveX服务器来实现,其方法如下:(1)新建并打开图形曲线显示分析工程文件。(2)在Tools菜单运行创建ActiveX服务器向导,在LabWindowsCVI中设置图形曲线显示分析工程为ActiveX服务器工程。并在通过ToolsCreate ActiveX Server向导创建ActiveX服务器工程时完成对目标文件、服务器和服务器高级选项面板的设置。在目标文件的设置中需要设置规范文件、源文件、头文件和IDL文件的设置;在服务器设置中需完成服务器名称、类型、帮助文件、帮助索引和帮助信息串的设置;在服务器高级选项面板的设置中需完成线程模式、回调函数、版本、命令行中的命令自动化选择、地区标识、库标识设置。(3)在Tools菜单运行编辑ActiveX服务器工具,编辑ActiveX接口和对象,并生成ActiveX服务器代码。分别编辑ICurveSelect、IAxiseScale和IGraph接口,定义每个接口的名称以及生成对应该接口的标识符(IID),设置对应每个接口的帮助信息串和帮助索引标识符。此外,定义对应当前接口的方法和属性。ActiveX方法代表一个函数的实现,在ActiveX方法的定义和编辑中,需要定义函数名和设置帮助信息串与帮助索引,以及定义参数变量,函数的参数变量可设置为输入、输出或输入输出;ActiveX属性用来表示与功能相对应的数据变量,与ActiveX方法一样,ActiveX特性也有相关名称、帮助信息串和帮助索引。对应ICurveSelect接口的属性实现中用户通过属性设置选择测量通道,对应IAxiseScale接口的属性实现中用户通过设置坐标轴的范围、比例刻度等参数属性完成对图形显示参数的设置,而IGraph接口的方法实现中按照ICurveSelect接口和IAxiseScale接口所设置的参数,对测量数据进行格式化处理,完成图形的显示、标注和最终打印输出。(4)在源文件中完成主函数、ActiveX服务器函数和回调函数的代码编辑,以及在生成的头文件中检查这些函数的原型。上述函数代码编辑中,是围绕所实现的功能进行的。(5)把完成好的源文件添加到工程中并编译工程文件,得到图形曲线显示分析控件。4 结束语基于COM的航空试验测试组件作为一种软件模型,不仅实现了程序与程序之间通讯的标准。而且融合了对象技术和组件技术两种特性,对象特性使得航空测试软件组件的设计和实现更加符合现实世界的面貌;组件特性使得航空测试软件组件可以充分发挥组件的优势,以适应开发大型测试应用系统的需要。组件化程序设计方法强调真正的软件重用和高度的互操作性。它侧重于组件的产生和装配,这两方面一起构成了组件程序设计的核心。组件的产生过程不仅仅是航空试验测试的需求,而且强调随着组件技术的发展而发展,并加强各单位与部门的交流与合作;组件的装配使得软件产品有可能用类似于搭积木的方法快速地建立起来,不仅可以缩短航空试验测试软件产品的开发周期,同时也提高了测试系统的稳定性和可靠性。参考文献1 潘爱民COM原理与应用M北京:清华大学出版社,20022 孟令航等ActiveX控件技术在组态软件研制中的应用J计算机测量与控制,2003,11(1)3 张刚毅等虚拟仪器软件开发环境LabWindowsCVI6.0编程指南M北京:机械工业出版社,200284 张素琴C+程序设计语言M北京:清华大学出版社,1994 薈螀膄莃螃蚆膃蒅薆羅膂膅荿羁膁莇蚄袇膀葿蒇螃膀腿蚃虿腿芁蒅羇膈莄蚁袃芇蒆蒄蝿芆膆虿蚅芅芈蒂肄芄蒀螇羀芄薂薀袆芃节螆螂衿莄薈蚈袈蒇螄羆羇膆薇袂羇艿螂螈羆莁薅螄羅薃莈肃羄芃蚃罿羃莅蒆袅羂蒈蚂螁羁膇蒄蚇肁芀蚀羅

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论