基于TENA定义语言的文本编辑和可视化编译的研究与实现硕士学位

上传人:沈*** 文档编号:142972006 上传时间:2022-08-25 格式:DOC 页数:77 大小:4.07MB
收藏 版权申诉 举报 下载
基于TENA定义语言的文本编辑和可视化编译的研究与实现硕士学位_第1页
第1页 / 共77页
基于TENA定义语言的文本编辑和可视化编译的研究与实现硕士学位_第2页
第2页 / 共77页
基于TENA定义语言的文本编辑和可视化编译的研究与实现硕士学位_第3页
第3页 / 共77页
资源描述:

《基于TENA定义语言的文本编辑和可视化编译的研究与实现硕士学位》由会员分享,可在线阅读,更多相关《基于TENA定义语言的文本编辑和可视化编译的研究与实现硕士学位(77页珍藏版)》请在装配图网上搜索。

1、Abstract硕士学位论文TENA定义语言的文本编辑和可视化编译的研究与实现摘要TENA是美国开发的试验与训练领域的体系结构,它为靶场试验训练资源的开发、集成和互操作提供公共的体系结构框架。由于我国的军工试验和训练在信息化过程中面临着越来越大的挑战,研发我们自己的虚拟试验验证使能体系结构(VITA)是非常必要的。基于TDL(TENA定义语言)的一体化模型构建工具软件,是VITA框架工具的重要组成部分,能提高模型构建效率,为模型测试验证提供手段,并为模型的复用提供了基础。在此背景下,本文基于TDL语言要素,采用Eclipse RCP开发架构来完成该模型构建工具,本文主要完成了以下几方面的工作:

2、1.根据客户需求,对系统的功能进行了总体设计和模块化划分,将系统分成了五个功能模块。2.阐述了文本编辑模块的工作原理,确定了实现TDL文本编辑器的方法,通过分析TDL语言的文法结构,在开源框架XText的帮助下,生成了TDL编辑器,实现了高亮显示、错误提示、格式美化和内容辅助等功能。3.通过封装调用TDL编译器和VC编译器,实现了框架代码的生成和框架代码的编译功能。4.开发了一体化集成平台,重点设计和完成了项目生成与管理、可视化文本编辑、可视化编译等功能,为其它功能模块的集成奠定了基础。最后总结了上述工作的经验教训,对未来的工作进行了规划和展望。关键词:TDL,框架代码,文本编辑,编译i浙江大

3、学硕士学位论文 AbstractAbstractTest and Training Enabling Architecture (TENA) is a common architecture being developed by U.S for test and training community,which provides architectural framework for the development, integration and interoperability of range test and training resources. Research our own V

4、irtual Testing Enabling Architecture(VITA)is necessary because the test and training of military in the information process is facing many challenges. VIMT, which is an important part of the VITA, can improve the efficiency of model building, provide means for model testing and support model reusing

5、. Based on the TDL language, this paper complete the model building tool by the Eclipse RCP development framework. This paper mainly complete the following aspects:1. According to the needs of the client, we design the whole system and devide the system into five modules.2. Analyse the principle of

6、the text editor module and design the method of the TDL editor. Through the analysis of the TDL language grammer structure, we generate the TDL editor with the help of the open source framework XText, realizing the following functions:Syntax Highlighting, Error Marking, Content Formatting, Content A

7、ssistance etc.3. we realizing the functions of the generation and compilation of the framework codes(C+) by encapsulating TDL compiler and VC compiler.4. Complete the development of the integrated platform, design and finish the project formation and management, visualization text editing, visual co

8、mpiler functions, which provide a foundation for integrating the other function modules. At last, we summarize the experience and prospect the future work.Key Words:TDL, Framework Codes, Text Editor, Compilation ii浙江大学硕士学位论文 目录目录摘要iAbstractii图目录IV表目录V第1章 绪论11.1 课题背景11.2 虚拟试验验证技术发展状况11.3 本文主要工作和意义31.

9、4 论文组织结构41.5 本章小结4第2章 相关知识介绍52.1 TDL定义语言52.1.1 TDL关键字52.1.2 导入(import)62.1.3 包(package)62.1.4 状态分布对象(SDO)62.1.5 消息对象(message)72.1.6 本地对象(Local Class)82.1.7 向量数据类型(Vector)92.1.8 接口模型(Interface)92.1.9 枚举数据类型(Enumetation)92.1.10 TDL的基本数据类型102.2 Eclipse RCP框架102.2.1 Eclipse RCP概述102.2.2 Eclipse RCP体系结构1

10、12.2.3 Eclipse RCP的优点和应用122.3 本章小结12第3章 系统总体设计133.1 总体设计133.2 功能模块划分143.2.1 文本编辑模块143.2.2 可视化建模模块153.2.3 可视化框架代码生成与编译模块153.2.4 对象模型测试验证模块153.2.5 一体化集成平台163.3 本章小结16第4章 TDL文本编辑模块的研究174.1 功能介绍174.2 文本编辑模块的工作原理174.2.1 TDL的I/O操作184.2.2 语法高亮显示194.2.3 语法错误提示194.2.4 格式美化194.2.5 快捷提示和自动补充204.3 文本编辑器的生成方法214

11、.3.1 XText介绍214.3.2 XText的工作原理224.3.3 领域特定语言224.3.4 TDL的语法定义224.3.5 TDL编辑器的生成方法264.4 本章小结27第5章 框架代码生成与编译模块的设计285.1 功能介绍285.2 模块概要设计295.2.1 TDL编译295.2.2 错误定位315.2.3 框架代码编译325.3 框架代码生成与编译模块的详细设计335.4 本章小结36第6章 一体化集成平台的设计376.1 一体化集成平台概述376.2 一体化集成平台的设计376.2.1 项目生成与管理功能376.2.2 可视化文本编辑功能436.2.3 可视化框架代码生成

12、与编译功能496.3 本章小结52第7章 系统的实现537.1 文本编辑器的实现537.2 框架代码生成与编译模块的实现567.2.1 框架代码生成的实现567.2.2 框架代码编译的实现587.3 一体化集成平台的实现597.4 系统演示607.5 本章小结66第8章 总结与展望678.1 全文总结678.2 工作展望67参考文献69作者简历71致谢72III浙江大学硕士学位论文 图目录图目录图2.1 RCP的体系结构11图3.1 软件总体框架图14图3.2 可视化建模模块的子模块划分15图4.1 文本编辑模块子功能划分17图4.2 Eclipse编辑器的框架结构18图4.3 TDL语法高亮

13、实现过程19图4.4 VIMT快捷提示和自动补充工作流程21图5.1 可视化框架代码生成与编译模块的工作原理28图5.2 外部程序调用流程30图5.3 CDT工程文件生成流程31图5.4 错位定位的工作流程32图5.5 框架代码生成与编译模块的类图34图6.1 资源管理器组织结构38图6.2 项目生成与管理功能类图40图6.3 TDL编辑器多页格式设计44图6.4 可视化文本编辑功能类图45图6.5 打开操作的执行过程46图6.6 主菜单栏填充流程48图6.7 可视化TDL源码编译类图50图6.8 可视化框架代码编译类图50图6.9 显示控制台方法的工作流程52图7.1 新建的XText工程5

14、4图7.2 TDL语法规范55图7.3 生成TDL语言组件55图7.4 TDL文本编辑效果56图7.5 程序主框架界面示意图59图7.6 VITA工程向导界面60图7.7 VIMT工作界面61图7.8 VITA工程文件61图7.9 示例文件OMSample.vdl62图7.10 编译文件OMSample.vdl63图7.11 OMSample.vdl的编译结果63图7.12 设置CPP编译参数64图7.13 编译C+工程文件65图7.14 C+工程文件编译结果65V浙江大学硕士学位论文 表目录表目录表2.1 TDL关键字5表2.2 TDL的基本数据类型10表4.1 EBNF的操作符23表5.1

15、 可视化框架代码生成与编译模块的功能28表6.1 OpenAction类的属性定义45表6.2 ApplicationActionBarAdvisor类的属性定义47浙江大学硕士学位论文第1章 绪论第1章 绪论1.1 课题背景在国防工业领域,例如探月工程、大飞机研制和运载火箭开发等,由于产品的复杂性和新颖性,传统的试验方法受到客观环境限制,难以完成产品的综合性试验,因此一些重要系统和关键技术的试验必须采用虚拟试验验证技术,虚拟试验验证技术的研究对国防工业产品的开发具有重要意义。近年来,虚拟试验技术的研究逐渐兴起,研究思想与方法得到了初步认可,虚拟验证技术将系统工程方法、复杂系统建模技术和计算机

16、仿真技术结合在一起,取得了阶段性技术成果和应用成果1。虚拟试验验证技术可以实现全系统性能评价和验证,降低了技术风险、节省了开发费用、缩短了研制周期,具有传统试验方法无法比拟的优势,比如:美军为了试验M1主战坦克的作战性能,采用传统试验验证方式,大约要用两年时间才能完成所有试验科目,并且要花费数千万美元,但是采用虚拟试验验证技术只需三个月时间即可完成,所用经费更是大大降低。我国虚拟试验验证技术体系核心是结合应用需求构建面向我国军用产品的、统一的虚拟实验验证使能体系结构(Virtual Testing Enabling Architecture,简称VITA)1。对该技术的深入研究将使军用产品的试

17、验验证水平达到新的高度,基于TDL(TENA定义语言)的一体化模型构建工具软件是VITA框架工具的重要组成部分,该工具的研发会极大的提高模型构建效率,为模型验证测试提供有效手段,同时为模型复用提供基础。1.2 虚拟试验验证技术发展状况目前美国对虚拟试验验证技术的研究工作开展得较早,投入的资源很多,取得了关键进展,美国国防部经过长期研究成功开发出了试验与训练领域的公共体系结构TENA(Test and Training Enabling Architecture试验与训练使能体系结构),它为军方的产品试验和作战训练制定了标准规范,具有重要意义23。TENA可以克服客观环境限制,根据武器产品测试标

18、准和军方训练要求,将分布在各训练场和靶场的作战训练资源和武器测试资源结合在一起,形成一个逻辑靶场,为真实作战单元和虚拟作战单元提供交互,实现在现实环境中难以完成的测试和训练任务4。TENA的目标是促进作战训练资源与军工产品测试资源的交互,使不同的软件产品之间可以无障碍的协同工作,可以应用于不同的系统环境中,可以根据特定的训练和测试需要结合成具有特定功能的系统25。TENA的核心包括三大部分:TENA对象模型、TENA中间件和建立虚拟逻辑靶场的标准、规则6。TENA对象模型(LROM)采用统一建模语言(UML)和TENA定义的标准语言TDL语言,封装逻辑靶场的各种接口和协议,对逻辑靶场事件中逻辑

19、靶场各种资源之间交换的所有信息进行编码,实现靶场资源之间的语义交互。TDL语言是靶场资源之间实现语义互操作的基础,主要元素包括状态分布对象(SDO)、接口模型、本地对象、消息对象、向量、包等7-9。TENA的对象模型包含了描述靶场需要的各种信息,是对描述对象模型的各种特征的描述。对象模型类似于CORBA(Common Object Request Broker Architecture 公共对象请求代理体系结构)的元模型,但又有区别,它是CORBA元模型的扩展模型。TENA中间件实现了逻辑靶场中各种作战训练资源和武器测试资源之间通信和交互。它的API隐藏了对象操作的实现细节,编写的软件应用代码

20、,可用于不同的试验或训练靶场,适用于不同的底层通信机制,还可与各种武器系统及靶场设施进行接口10。我国军工试验和训练在信息化过程中面临的挑战越来越大,资源的不可重用性和不可组合性等问题造成了资源的浪费,因此国内试验和训练界对试验与训练使能体系结构的研究进程逐渐加快,自主研发虚拟试验验证使能体系结构(Virtual Testing Enabling Architecture,简称VITA)和虚拟试验场技术(Virtual Proving Group,简称VPG)。VPG是一个分布式、复杂的一体化虚拟试验系统,它为军工产品开发的全过程提供支持,提高了产品的开发效率,降低了开发风险和生产成本10。由

21、于建模和仿真高层体系结构(HLA)也使用于试验与训练领域,基于HLA的能力借鉴TENA思想对它进行扩充可以满足试验与训练互操作的要求,这也是目前我国研发虚拟试验验证使能体系结构的一种思路11。目前基于虚拟试验验证技术对虚拟靶场这一新型靶场试验模式的理论和技术研究工作取得了较大进展12-14。美国的研究与实践促进了TENA技术和相关产品的丰富与成熟,所取得的理论研究和实践应用成果对我国的虚拟试验验证使能体系结构的研究具有借鉴作用。但是TENA已经成为美军靶场指挥官委员会(RCC)的标准,它的一切核心技术都严格保密,并且我国开始研究虚拟试验验证技术的时间较晚,所以自主研发VITA以及它的核心产品依

22、然有很大挑战性7 15-17。1.3 本文主要工作和意义本文的主要工作是开发VITA框架的重要组成部分基于TDL的一体化模型构建工具软件,能提高模型构建效率,为模型测试验证提供方法,并为模型复用提供基础。为了开发基于TDL的一体化模型构建工具软件,需要对TDL编译、中间件协调代码自动生成等关键技术进行研究,然后在此基础上进行开发,包括可视化TDL编辑与生成、可视化建模、可视化对象模型代码自动生成、对象模型框架测试验证和一体化集成平台。本文需要完成的工作有以下三个部分:1. 实现TDL文本编辑器。该工具能支持TDL文本的编辑,并且包含支持文本格式美化,支持函数和关键字的高亮显示和快捷提示,支持内

23、容辅助等友好型功能。2. 通过封装调用TDL编译器和VC编译器,实现框架代码可视化生成(编译TDL文件生成C+文件)与框架代码可视化编译(编译C+文件生成对象模型组件或可执行程序)功能。3. 设计与实现一体化集成平台。利用Eclipse RCP框架构建一体化集成平台,主要实现项目生成与管理功能、可视化文本编辑功能和可视化TDL编译功能,方便以后对TDL编辑模块、可视化建模模块、框架代码生成与编译模块、对象模型框架测试验证模块进行集成,实现一体化模型构建工具。目前国内外对虚拟试验验证技术的研究比较热门,其中技术最为成熟的就是美国试验与训练使能体系结构TENA,它展示了强大的功能。国内也有一些研究

24、机构进行相关的研究,并发表了一些研究成果,但大多是理论研究成果,很少有实际产品。本文开发的基于TDL的一体化模型构建工具软件是国内虚拟试验测试使能体系结构VITA的重要组成工具,它的实现也可以为我国军工领域的虚拟试验技术的研究尽一份绵薄之力。1.4 论文组织结构本文分为七章,论文结构安排如下:第1章绪论。阐述了课题的背景,介绍了虚拟试验验证技术的发展状况,主要是美国的TENA框架的相关情况,最后说明了本文将要完成的工作内容和研究意义。第2章相关知识介绍。介绍了基于TDL的一体化模型构建工具软件开发工作涉及的相关知识、技术,包括TDL语言、Eclipse RCP技术。第3章系统总体设计。介绍了系

25、统的开发环境并根据客户的需求,梳理了系统需要实现的功能,将系统功能划分为五个功能模块,分别进行设计和开发。第4章TDL文本编辑模块研究。分析TDL文本编辑模块的工作原理,研究TDL语言的文法结构,在开源框架XText的辅助下,生成TDL文本编辑器,包括输入输出、语法高亮、错误提示、格式美化、内容辅助等功能。第5章框架代码生成与编译模块设计。对框架代码生成、框架代码编译、错误提示等功能进行了设计,详细介绍了框架代码生成和框架代码编译的实现方法。第6章一体化集成平台设计。设计一体化集成平台,为主要功能模块的集成提供基础,主要介绍了项目生成与管理、可视化文本编辑、可视化编译功能的设计。第7章系统的实

26、现。根据前面几章中对系统各功能的研究与设计,实现了TDL文本编辑模块、框架代码生成与编译模块以及一体化集成平台,并对系统的功能进行了演示。第8章总结与展望。对论文的研究工作进行了总结,并对后续的工作进行了展望。1.5 本章小结本章阐述了论文的课题背景,接着介绍了国内外虚拟试验验证技术的发展状况,主要是美国的TENA框架的相关情况,然后总体介绍了论文的研究内容和研究的意义,最后介绍了全文的结构安排。 4浙江大学硕士学位论文第2章相关知识介绍第2章 相关知识介绍本文的工作是开发TDL一体化模型构建工具,因此需要对相关知识有所了解,主要是模型描述语言TDL和客户端开发框架Eclipse RCP。TD

27、L语言是项目开发的基础,一体化模型构建工具中的TDL文本编辑器的实现就需要研究TDL语言的文法结构,Eclipse RCP框架是开发一体化模型构建工具的开发工具,对这些知识的了解可以为以后的设计开发工作提供便利。2.1 TDL定义语言IDL(Interface Description Language接口描述语言)是基于对象管理组织(OMG)的接口定义语言,TDL是TENA的定义语言,是对IDL的扩展以便于支持LROM(Logical Range Object Model逻辑靶场对象模型),它封装了LROM的各种接口和协议,是公共通信语言,在VITA中,TDL作为建模语言用来编写对象模型描述文

28、件,即VDL文件,再经过TDL编译器编译生成VOM(VITA对象模型)组件代码和VOM组件基本实现层的全部中间件协同代码,开发人员再在其中填写相关业务逻辑代码,形成各个应用。2.1.1 TDL关键字TDL语言一共包括30个关键字,具体情况如表2.1所示:表2.1 TDL关键字importpackagecharotectimplementsprivatevoidclasslocal classoutmessageinterfacevectorenumextendsunsigned shortshortonewayunsigned longlongbooleanunsigned long long

29、long longstringfloatdoubleinraisesreadonlyinout2.1.2 导入(import)Import关键字允许一个VDL文件(及其生成VOM库和VOM基本实现库)导入其它VDL文件(及其生成VOM库和VOM基本实现库)。一个VDL文件编译后生成一个VOM库和一个VOM基本实现库,根据VDL文件import关系确定VOM库和VOM基本实现库的依赖关系。从最终用户角度来看,他们为应用程序所开发的基本实现库将依赖该实现库对应VDL文件生成的基本实现库。导入(import)位于VDL文件的开始,类似C+中的#include。导入一个VDL文件并不像C+里的预处理文

30、件包含,导入的VDL文件必须是一个完整的且符合语法的VOM定义。导入文件的语法很简单:import。2.1.3 包(package)不同VOM中的元素可能有相同的名称,这容易引起混淆,为了区分需要采用名称空间,同一个VOM中的所有元素必须包含在一个名称空间。名称空间在不同语言中用不同关键字表示,C+中用关键字namespace表示,IDL中用关键字module表示,TDL中用关键字package表示。C+和IDL对名称空间没有强制要求,但TDL语言的所以元素必须包含一个名称空间。package的语法如下所示:package packageName /名称空间中的所有元素(material);与

31、其它语言不同,该结构在语句末尾有分号“;”。TDL也支持嵌套结构,它的完全限定名(full qualified name)写法与IDL和C+中一样,除了名称空间的关键字不同外,都采用“:”符号表示完全限定名,例如在包Sample中包含包Test,包Test中包含结构类型Loc,则这种嵌套结构表示为Sample:Test:Loc。2.1.4 状态分布对象(SDO)SDO是元模型的关键部分,它支持各个资源之间的分布式通信,SDO包含一些方法能够被远程调用,而且也包含公共状态,公共状态可以发布给所有订阅者,SDO的定义使用“class”关键字,使用“extends”关键字继承一个其它的SDO类,可以

32、拥有它的所有状态属性和方法并且可以定义自己的属性和方法,使用“implements”关键字可以实现一个或多个接口中的方法。SDO类有以下特点:1. 它的状态成员可以是基本类型2. 它的成员可以是指向自己的SDO指针,也可以是指向其它SDO的指针3. 它的状态成员可以是向量,但SDO不能是向量中的成员4. 它的状态成员可以是枚举类型5. 它的状态成员可以是本地类(local class)6. 它的状态成员不能是消息(message)下面是一个SDO类的示例:class Durationlong seconds;SDO Duration没有方法,只有公共状态属性。2.1.5 消息对象(messag

33、e)消息也是一种复杂的数据类型,包含本地方法和消息信息。消息是介于SDO和Local Class之间的一种数据类型,消息实例能够将消息数据通过中间件发布给订阅者。与SDO不同,SDO设计用于不断将状态发布给订阅者,而消息往往用于将突发信息发布给订阅者,消息一般作为事件使用。消息具有以下特点:1. 作为一种数据结构,消息中可以包含SDO指针2. 消息的状态成员可以是向量3. 消息中可以包含本地类4. 消息可以继承其它的消息,但最多只能继承一个其它的消息5. 消息的成员可以是基本类型、枚举类型6. 消息中可以有方法(operations),它仅是本地方法7. 消息可以嵌套包含其它信息一个消息定义的

34、实例如下所示:local class Point double x; double y; double z; string plainString(); ; message PointMessage Point location; long MessageID; void doit(); ;2.1.6 本地对象(Local Class)本地对象是一个复杂数据类型,包含方法(operation)和状态信息(数据成员)。本地类类似于C语言中的结构体,不同支出在于,结构体只能包含状态数据,而本地类可以包含方法,但本地类的方法不能进行远程调用,而总是只能在本地(调用者进程内)调用。本地对象具有以下特点

35、:1. 本地类可以是状态类对象(SDO)中的一个状态成员,也可以将一个SDO指针作为本地类成员2. 本地类的状态成员可以是向量,也可以是向量中的成员3. 本地类最多只能继承一个其它的本地类4. 本地类的成员可以是枚举类型、基本类型5. 本地类的成员可以是其它本地类6. 本地类的成员可以是消息(message)7. 本地类可以作为各种方法的参数和返回类型8. 本地类可以包含执行操作、方法,并且这些方法可以存取本地类中的数据成员。2.1.7 向量数据类型(Vector)向量是一个可以在运行时动态调整大小的线性表,其所有成员是同一种类型的实例。例如,一个向量可以是“long”类型的向量,其所有成员均

36、是long型整数,也可以是本地类(local class)类型的向量,此时其所有成员均是指定本地类的实例。1. 向量可以包含在状态分布对象(SDO)中,向量的成员可以是指向SDO的SDO指针2. 向量类型可以是方法中参数的类型或返回值的类型3. 向量成员可以是基本类型或枚举类型4. 向量成员的类型也可以是一个向量,利用此规则可以构造多维向量5. 向量成员可以是本地类(local class)的实例2.1.8 接口模型(Interface)在TENA中,接口可以理解成一种抽象实体定义,它与C+和Java语言中interface的语义基本一样,接口中只有方法成员(函数成员)而没有数据成员。它的主要

37、作用是封装操作(方法、函数),并可以由状态对象(SDO)、本地对象或者消息去实现它(可以理解为继承)。一个接口中至少包含一个方法。接口本身可以继承其它接口,也支持多继承,即可以将多个接口定义为自己的父接口。下面是一个接口的示例:interface Controllable string initialize(in string initializationData); long start(); void stop(); ;2.1.9 枚举数据类型(Enumetation)枚举类型用于定义有名符号的集合,可以提高模型的可读性,它本质上是一种取值范围受限的整数类型。枚举类型中的元素之间用逗号隔离

38、,不能用分号,最后一个元素后面没有符号,和其它TDL元素一样,枚举类型在结束后有一个分号。2.1.10 TDL的基本数据类型基本数据类型又成为预定义或内建数据类型,它们在TENA建模中用于定义对象的基本属性的类型。TDL语言是对IDL语言的扩展,TDL保留了部分IDL的基本数据类型作为自己的基本数据类型。基本数据类型是构建本类型系统的基本信息单位,广泛用于局部类、参数列表、向量、SDO公共状态中,表2.2是TDL的基本数据类型。表2.2 TDL的基本数据类型short有符号整型二字节unsigned short无符号整型二字节long有符号整型四字节unsigned long无符号整型四字节l

39、ong long有符号整型八字节unsigned long long无符号整型八字节float浮点数四字节double浮点数八字节boolean布尔型:TRUE和FALSEcharASCII字符string字符串octet位组八字节void操作(方法)的返回值为空2.2 Eclipse RCP框架RCP是基于Eclipse项目推出的一个开发富客户端应用框架,为开发人员提供了一个功能强大的、快速的、可扩展的应用平台。2.2.1 Eclipse RCP概述RCP是Rich Client Platform的缩写,指富客户端应用平台。RCP为终端用户提供了基于本地操作系统的丰富的图形用户接口(GUI)

40、使用体验,可以很容易地实现剪切、复制、拖放等操作,也能高效进行业务逻辑处理。在开发过程中,由于业务逻辑、数据处理、系统和用户界面的高耦合性,系统的重构工作越来越困难,系统的分发、部署和升级也非常麻烦,客户端的一点改动,需要开发人员在客户机上逐一发布,因此人们提出瘦客户端(thin client)来解决这一问题。瘦客户端基于“请求/响应”模式,应用程序统一部署在服务端,维护工作也只需在服务端进行,极大减少了维护成本,客户端更是简单到只要一个Web浏览器就可以了。但是随之新问题出现了:一是无法为用户提供丰富的图形使用体验,可操作性差;二是应用程序过于依赖Web服务器的性能,在数据爆炸的今天,无法满

41、足用户大量高效率的交互性需求;三是基于“请求/响应”模式的瘦客户端应用程序需要很高的网络能力来保证交互性能,难以快速响应大量业务逻辑的处理需求18。瘦客户端应用程序无法满足用户要求,RCP又成为流行的开发模式,它针对瘦客户端“表现层逻辑居于服务器端”的弊端,将服务端和表现逻辑完全分离,表现逻辑完全由客户端负责19。增加了新内涵的RCP不仅可以给用户提供丰富的图形用户界面,还满足用户的智能更新、可扩展、跨平台等要求。2.2.2 Eclipse RCP体系结构RCP应用程序实际上是插件和运行时内核的组合,它的体系结构如图2.1所示。图2.1 RCP的体系结构核心平台工作原理:运行Eclipse,运

42、行插件;OSGi是标准集束框架;JFace支持文件处理、缓冲、编辑;SWT是可移植构件工具包19。一个最小的RCP应用程序只需要java基础库类,开发者可以根据实际需要选取相应插件,例如不使用JFace,或者不基于OSGi,只要能达到开发要求即可。2.2.3 Eclipse RCP的优点和应用Eclipse RCP越来越受到用户的青睐,因为它具有以下优点:1. 组件化。基于Eclipse的系统设计由插件构成,可以通过扩展点进行配置。2. 便利性。对各个平台下的产品包装提供有力支持,开发的RCP可以在嵌入式设备上运行。3. 可扩展。用户可以搭建各种规模、类型和用途的应用程序。4. 本地感观和使用

43、体验。无论RCP在哪种操作系统下运行,都可以保持与本机一致的外观。5. 脱机操作。RCP在本机运行,不需要网络连接,可以充分利用本机硬件的处理能力进行大量数据处理。Eclipse RCP在国内得到了广泛应用,比如NASA的火星探测计划、IBM Workplace开发平台等,国内电信、金融、医疗领域也越来越多的使用Eclipse RCP来开发系统2021。2.3 本章小结本章介绍了在后续开发中涉及到的相关知识和技术TENA定义语言TDL的基本数据类型和元素以及项目开发框架Eclipse RCP。12浙江大学硕士学位论文第3章系统总体设计第3章 系统总体设计在进行设计开发工作之前,首先要对用户提出

44、的需求进行梳理分析,确定系统要实现的功能,然后对系统进行模块化划分,将系统功能分成各个功能模块,确定各个功能模块要实现的功能,分模块进行开发,最后再将各个功能模块集成为一体化模型构建工具,这是项目的工作思路,下面描述系统的总体分析设计。3.1 总体设计基于TDL的一体化模型构建工具(VIMT)以Eclipse核心框架为基础,采用Eclipse RCP技术框架,结合开源软件作为底层支持平台,满足客户文本编辑、可视化建模、多格式模型文件转换、TDL编译、TDL到C+框架源码的映射、框架代码编译、组件的单元与集成测试、测试框架代码自动生成、一体化集成等需求,实现可视化、一体化操作,性能稳定、操作简单

45、、界面友好。基于TDL的一体化模型构建工具的软件总体框架如图3.1所示:图3.1 软件总体框架图3.2 功能模块划分一体化模型构建工具可以划分了五个功能模块:文本编辑模块、可视化建模模块、可视化框架代码生成与编译模块、对象模型测试验证模块和一体化集成平台,各模块之间的关系如图3.1所示。3.2.1 文本编辑模块文本编辑模块负责对TDL文件进行编辑,包含以下五个功能:一是:文件的I/O操作,即在一体化模型构建工具中打开、关闭、修改、存储TDL文件。二是语法高亮显示,即对代码中的关键字进行辨认,用不同的颜色和字体来显示,比如:以高亮显示变量名,用灰色显示注释,这一功能增加了代码的可读性。三是格式美

46、化,修正代码的错误缩进,将代码格式化显示,形成统一的代码风格,增加代码的阅读效率。四是自动补充,在键入TDL代码时,对后续代码自动提示。五是错误提示,显示代码错误信息。3.2.2 可视化建模模块可视化建模模块,提供图像化建模方式,支持TDL元素可视化表示和TDL可视化生成向导,支持TDL、UML、图形化格式的多格式模型文件以及相关的导入导出,支持TDL到UML、UML到TDL的双向映射,也支持模型文件的布局优化、元素颜色区分和层次化展示,图3.2是可视化建模模块的子模块。图3.2 可视化建模模块的子模块划分3.2.3 可视化框架代码生成与编译模块框架代码生成与编译模块主要有两部分工作:第一部分

47、是完成TDL文件的编译,并生成对象模型框架代码和对象模型实现接口框架代码,这一过程通过调用客户提供的TDL编译器来实现,编译生成.h文件和.CPP文件,还要对生成的框架代码进行查看编辑,提供编译错误实时显示和错误定位功能。第二部分是针对上一部分编译生成的框架代码,调用VC编译器进行编译,生成对象模型框架组件(DLL)。3.2.4 对象模型测试验证模块对象模型测试验证模块,主要完成对生成的对象模型组件进行测试验证,实现测试代码自动生成、日志代码生成、组件单元测试、组件集成测试等功能。测试代码自动生成通过代码模版实现;日志代码生成是在Class、Local Class、Message定义的方法中注

48、入日志代码,记录方法执行轨迹;组件单元测试通过CppUnit单元测试框架完成完成,需要将CppUnit集成到一体化模型构建工具中。3.2.5 一体化集成平台利用Eclipse RCP框架来开发,采用模块化集成方式和eclipse插件机制,构建本系统的一体化集成平台(VIMT),上述四个功能模块都要集成到一体化集成平台上,形成一体化模型构建工具软件。3.3 本章小结本章介绍了系统的总体设计,根据客户需求完成的系统总体设计,将系统划分为五个模块:文本编辑、可视化建模、框架代码生成与编译、对象模型测试和一体化平台。16浙江大学硕士学位论文第4章 TDL文本编辑模块的研究第4章 TDL文本编辑模块的研

49、究对系统进行了总体设计后,首先开始研究TDL文本编辑模块,该模块是TDL一体化模型构建系统的基础,用于读取编辑TDL文件,客户要求编辑器编辑TDL文件时要像在Eclipse中编辑JAVA文件一样快捷方便,因此本章先在Eclipse编辑器的基础上研究TDL文本编辑模块的工作原理,然后描述生成TDL编辑器的方法。4.1 功能介绍如图4.1所示,TDL文本编辑模块包含五个子功能:文本操作(打开、关闭、修改、存储)、语法高亮显示、语法错误提示、格式美化、文本快捷提示和自动补充。图4.1 文本编辑模块子功能划分4.2 文本编辑模块的工作原理文本编辑模块由Eclipse RCP开发平台中的编辑器来实现,E

50、clipse文本框架是由几个小插件来实现的,它们实现了模块化和封装功能,这样可以允许文本模型重用而不依赖于文本的显示。Eclipse文本编辑功能由org.eclipse.ui.editor插件来提供,它是Eclipse IDE产品,不是RCP的一部分。但由于模块化设计,文本编辑框架中的许多块也可以在RCP程序中使用。4.2.1 TDL的I/O操作VIMT编辑器的I/O操作流程:打开TDL文件,键入和修改TDL源代码,编辑完成后,对其进行保存,然后关闭编辑器。图4.2是Eclipse平台编辑器的框架结构:图4.2 Eclipse编辑器的框架结构Eclipse平台编辑器编辑的前提是对目标文档的切割

51、,在编辑器打开文档时就调用分割器对文档进行切割,分割信息保存在Editor中,IDocument类是很重要的类,分割器的设置就是通过IDocument类中createDocument()方法进行的,并且编辑的内容由IDocument来封装,它是文本遍历和定位的基础。我们将在此基础上实现VIMT中的TDL编辑器,Eclipse平台编辑器的文本编辑功能由AbstractTextEditor提供,IDocumentProVIMTr实现读取和保存文件功能。在VIMT编辑器中,VDLDocumentProVIMTr读取、保存文件,当编辑器读取TDL文件时,IEditorInput描述文件并将信息传递给V

52、DLDocumentProVIMTr,编辑器处理TDL代码的功能也委托给VDLDocumentProVIMTr,它包含以下几个主要方法:createDocument:打开硬盘上的TDL文件,创建包含TDL文件内容的VDLDocument对象。doSaveDocument:将TDL文件保存在磁盘上。isModifiable:决定用户是否可以编辑文档。isReadOnly:决定文档是否能够被保存。4.2.2 语法高亮显示TDL代码的语法高亮显示功能是在TDL文本划分基础上实现的,读取的TDL文件封装在VDLDocument类中,然后进行TDL源码的遍历和定位。它的工作原理是:首先按照TDL语法规则

53、形成TDL扫描器的扫描规则,当编辑器打开一个TDL文件时,TDL编辑器会按照定义的TDL扫描器扫描规则对TDL文本进行完全扫描,并且对扫描信息进行分割形成不同内容完全独立的文本块。在显示TDL文件时,调用扫描器中的evaluate方法,返回IToken对象,然后对不同IToken对象按不同的颜色显示其内容,比如关键字显示颜色为蓝色,字符串显示为绿色,标识符显示为黑色。这些显示颜色可以在程序中进行设置。语法高亮功能的实现过程如图4.3所示:图4.3 TDL语法高亮实现过程4.2.3 语法错误提示语法错误提示功能按照TDL语法规则验证TDL文件,对不符合语法规则的地方进行标识,提示用户编写TDL代

54、码过程中的错误。根据TDL的语法规则,解析文档的时候对错误进行标识,用哈希表收集和定位所有的TDL错误,然后进行TDL验证和标记,这个工作在TDL编辑时会实时进行,解析TDL文件的时候如果发现错误调用错误处理方法在错误的位置进行标识,显示出警告或者错误标记。4.2.4 格式美化格式美化就是按照特定规则对TDL文本重新排版,形成统一格式,使代码更具有可读性,显示更为美观。在实现格式化之前要选定格式化策略,不同的格式化策略体现不同的编程风格。缩进策略分为使用制表符(Tab)策略和空格(Space)策略,默认使用制表符策略;花括号换行策略默认使用紧凑格式的换行策略,在定义类时,花括号总是紧跟类名,不

55、做换行处理。这些策略可以在系统选项中进行设置。VIMT编辑器根据TDL语法规则解析整个TDL文件得到语法树,遍历语法树,将每一个元素保存到字符串中,每一行的缩进以及空格根据已有的格式化策略对文件进行排列,最后将该字符串重新输出到编辑器中,实现内容格式美化功能。4.2.5 快捷提示和自动补充当用户编辑TDL文本时,根据已经输入的部分信息可以给出后续内容的多种提示,根据用户的选择,自动补充完整。内容提示包含两种:一是关键字的提示和补充,二是对导入TDL文件的提示和补充。VIMT编辑器快捷提示和自动补充工作流程如图4.4所示,在编辑器中新建一个内容辅助类,该内容辅助类监听TDL文本代码的变化。当监听

56、到TDL文本内容发生变化时,内容辅助类首先获取最后键入的Token,在预存的关键字列表中进行字符串匹配,弹出匹配的字符串列表框供用户选择,用户选择需要的关键字,内容辅助类补全该关键字。当检测到匹配的字符串为import时,VIMT文本编辑器读取TDL库(目录)文件列表,将库中所有的TDL文件列出来,用户选择要导入的TDL文件,补全import导入。随着用户输入更多的字符,列表中匹配的数目也将减少,用户能够更快的选择需要的导入文件。 图4.4 VIMT快捷提示和自动补充工作流程4.3 文本编辑器的生成方法了解了文本编辑器的工作原理后,开始着手实现这一模块。如果完全靠编码实现,工作及其繁杂而且很难

57、短期完成,所有必须另辟蹊径利用其它工具辅助完成。很幸运我找到了这样一个开源工具XText,它能帮助实现TDL语言的文本编辑器,我需要做的就是研究TDL语言的语法定义。4.3.1 XText介绍XText是一种实现编程语言的开源语言开发框架,它可以为用户建立一种领域特定语言(DSL)或者通用编程语言(GPL),用户只需要事先定义好语言的语法规则,同时还可以创建一个基于该语言的Eclipse精致开发环境,比如具有语法高亮、格式美化、代码提示、自动补充等高级功能的文本编辑器22。编辑自定义语言和编辑java代码时效果一样,只是语法、关键字和结构不同。XText在许多领域有着广泛应用。4.3.2 XT

58、ext的工作原理XText提供一组领域特定语言和模型的编程接口,用于描述自定义语言的语法规则,然后在java虚拟机(JVM)上实现自定义语言。XText生成语言的编译组件语法分析器、代码格式化程序、编译检查和静态分析程序以及代码发生器和解释器等,它们可以被移植到任何java环境中,这些组件与Eclipse模型框架结合,为自定义语言提供了基础开发环境。4.3.3 领域特定语言DSL是应用与某一特定领域的小型计算机编程语言,比如TENA定义的TDL语言,它们专注于解决某个具体问题,功能强大。与之相对应的是通用语言(GPL:General purpose Language),比如java开发语言、C

59、/C+语言,它们应用的范围更为广泛,可以解决许多问题,但不一定是最好的方式。4.3.4 TDL的语法定义下面采用BNF范式和EBNF范式来描述TDL语言。4.3.4.1 BNF范式和EBNF范式BNF范式即巴科斯范式(Backus-Naur Form),是一种用于描述编程语言语法的形式化符号。BNF范式定义的语言是一个字符串集合,它们的书写规则如下:symbol:=alternative1|alternative2它的意思是左边的符号(symbol)被右边的两个可选符号中的任意一个替代,然后以递归的方式描述右边的符号,直到右边只剩下终结符为止,终结符是一种没有书写规则的符号,它们通常被放在引号

60、中,是语言字符串集合中最基本的组成部分23。BNF范式的操作符非常简单,:=表示用右边的符号替换左边的符号,|用来分隔可替换符号,终止符可以直接用在语言中,不用替换。下面是一个BNF范式的实例:A := - B | BB := C | C . CC := D | D CD := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9这个BNF范式描述的是所有数字,包括小数和负数,D表示单个数字,C表示一个数字串,B表示一个整数数字串或者一个小数数字串。BNF范式非常精确,用它定义语言不会产生歧义,并且它是数学产物,可以被计算机理解,因此它广泛用于程序设计语言的语法表示中。B

61、NF虽然功能强大,但是描述语言时递归过程过于复杂,使用起来不方便,我们通过扩展巴科斯范式(EBNF)来解决这个问题,EBNF引入了以下操作符:?:表示操作符左边的符号是可选项。*:表示操作符左边的符号可以不出现或者重复多次。+:表示操作符左边的符号可以重复一次或者多次。下面用EBNF范式重新描述所有数字:A:= -? D+ (. D+)?D:= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9由此可见,EBNF范式描述语言时比BNF范式更加方便和简洁,所以在定义计算机编程语言时一般采用EBNF范式,语言的可读性更强、书写更简便,EBNF的操作符如表4.1所示:表4.1 EBNF的操作符符号说明:=操作符左边的符号被右边的符号替代|左右两边是可选项操作符中是非终止符操作符中是终止符*左边的符号可以不出现或者重复多次+左边的符号可以重复一次或者多次 所有语法单元是一

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!