硕士学位论文 语法制导的可视化建模语言编辑器的快速定制技术研究(仅供参考)c_第1页
硕士学位论文 语法制导的可视化建模语言编辑器的快速定制技术研究(仅供参考)c_第2页
硕士学位论文 语法制导的可视化建模语言编辑器的快速定制技术研究(仅供参考)c_第3页
硕士学位论文 语法制导的可视化建模语言编辑器的快速定制技术研究(仅供参考)c_第4页
硕士学位论文 语法制导的可视化建模语言编辑器的快速定制技术研究(仅供参考)c_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

硕士学位论文 语法制导的可视化建模语言编辑器的快速定制技术研究(仅供参考)The Research of Syntax-Directed Visual Modeling Language Editor Rapid CustomizationA Dissertation Submitted for the Degree of Master硕士学位论文语法制导的可视化建模语言编辑器的快速定制技术研究学科专业 计算机软件与理论 研究方向 软件工程摘要可视化建模语言(下文简称可视化语言),是采用图形方式对系统/软件进行描述的语言,可视化建模语言编辑器为其使用提供了工具支持.为提高编辑器的开发效率,支持迭代开发,本文认为可视化语言编辑器的快速定制技术是一个重要的研究方向.本文的研究基础是北航软件工程研究所开发的可视化语言编辑器自动生成器SGEG系统.本文分析了SGEG系统在语言描述能力、可扩展性、系统设计、开发效率等方面存在的不足,并提出了解决方案.基于理论研究和编辑器开发的实践经验,本文提出了语法制导的可视化语言编辑器快速定制平台的总体框架以支持编辑器的快速开发,定义了一套支持静态语义的可视化语言描述方法RM.在总体框架和可视化语言描述方法的理论研究基础上,本文设计实现了语法制导的可视化语言编辑器快速定制平台Veda的原型系统,验证了总体框架和可视化语言描述方法RM.Veda系统设计总结了近十年来我们开发可视化语言编辑器的经验,满足了大多数可视化语言编辑器的需求,充分考虑了系统的扩展性,提高了编辑器的开发效率.本文的研究成果已经应用于我们所承担的某863项目中,利用Veda为该项目定制了基于UML2.0的可视化测试建模工具.在北京市科技新星项目中,我们正在利用该系统构造软件体系结构建模工具.同时,我们将在该系统上构建新的UML建模工具和过程建模工具.关键词:可视化建模语言,编辑器,快速定制,框架,自动生成,配置,描述方法AbstractVisual modeling language (Visual language) is a language which uses graphics to descript system or software, while visual language editor provide support tool for its usage. To resolve the problem in development of visual language editor, it is important to research on rapid customization of visual language editor, which support the iterative development and increase the development efficiency. The research is on the base of visual language editor auto-generator SGEG developed by SEI of BUAA. The dissertation analyzed the SGEGs problems, such as language description ability, extendable, design, efficient, easiness of use and so on. Then it suggested the solution. On the base of years research work and experience of development, we proposed a framework of visual language editor rapid customization platform to support rapid development of editor, defined a description method of visual language RM, including regular-based description method RGVL and MOF-based static semantics description method MSS. On the base of framework and RM, the dissertation designed and implemented the prototype of syntax-directed visual language editor rapid customization platform Veda, which verify the framework and RM. Veda satisfies most current usage of visual language editor. It has good extension and increases the efficient of development. The fruit of the research has applied to one of the National High Technology Development 863 Program of China which we take on, in which we use Veda to build the web test visual modeling tool. And we are now going to use Veda to build other visual modeling tools, such as UML tool, software architecture modeling tool.Key word:Visual modeling language, Editor, Rapid Customization, Framework, Auto-generation, Configuration, Description method目录第一章 绪论 11.1课题的研究背景 11.1.1可视化建模语言及编辑器 11.1.2可视化语言编辑器快速定制技术 11.1.3国内外研究现状 21.1.4研究基础及问题分析 51.2课题的目标 61.3课题的意义和创新 61.4本文的组织 7第二章 问题分析与解决方案 82.1 SGEG介绍 82.2问题分析 132.2.1可扩展性差 132.2.2设计不合理 152.2.3代码老化 162.2.4开发效率低 172.3解决方案 17第三章 可视化语言编辑器快速定制平台Veda 193.1设计目标 193.1.1可扩展性 193.1.2开发效率 193.1.3可重用性 203.1.4平台无关 203.2系统设计 203.2.1总体框架 203.2.2工作流程 223.2.3系统架构 233.3可视化语言编辑器基础框架 243.3.1 Eclipse 253.3.2图形编辑驱动模块 263.3.3编辑操作策略模块 263.3.4抽象语法模块 263.3.5可视化模块 273.3.6静态语义接入模块 273.3.7界面配置模块 283.3.8存储支持模块 283.4可视化语言和编辑器配置项 283.4.1图元库 283.4.2编辑器定义文件 293.4.3界面描述文件 303.5静态语义模块 303.6 Veda工具集 303.7小结 31第四章 关键技术及实现 324.1可视化语言描述方法RM 324.1.1工作基础 324.1.2可视化语言描述方法RM 324.1.3基于规则的语法描述方法RGVL 334.1.4基于元模型的静态语义描述方法MSS 344.1.5实现 354.1.6小结 374.2可视化语言编辑器基础框架的设计实现 384.3配置项实现技术 454.4存储支持模块的设计实现 464.5设计模式 474.6示例 47第五章 结论 495.1 工作总结 495.2 工作展望 49参考文献 50附录 52一UML类图配置文件 52致谢 59图表清单图1 SGEG总体结构 8图2 SGEG的工作流程 9图3 关联的ECL描述 10图4 命令包的传递 15图5 SGEG的三层结构 16图6 可视化语言编辑器快速定制平台的总体框架 21图7 工作流程 23图8 Veda系统架构 24图9 抽象语法模块 26图10 语义代码自动生成 30图11 编辑器定义文件示例 37图12 UML的编辑器定义文件 38图13 MVC模式 39图14 模型对象的接口的类图 40图15 模型对象的缺省实现的类图 40图16 控制器EditPart的类图 41图17 编辑器操作策略EditPolicy的类图 43图18 命令Command的类图 44图19 可视化语言编辑器基础框架的各模块之间的协作 45图20 存储支持层的结构 46图21 Veda构造的UML类图示例 48缩略语表AG:Abstract Grammar,抽象语法DAO:Data Access Object,数据访问对象Draw2d:Eclipse插件的,图形工具包ECL:Editor Customization Language,辑器定制语言EMF:Eclipse Modeling Framework,Eclipse建模框架,Eclipse插件GEF:Graphic Editing Framework,图形编辑框架,Eclipse插件IDE:Integrated Development Environment,集成开发环境JDT:Java Development Toolkit,Java开发工具箱MDA:Model Driven Architecture,模型驱动架构MSS:本文定义的基于元模型的静态语义描述方法MVC:Model-View-Control,模型-视图-控制器的设计模式OMS:Object Management System,对象管理系统PDE:Plug-in Development Environment,插件开发环境RGVL:本文定义的基于规则的可视化语言描述方法RM:本文定义的支持静态语义的可视化语言描述方法RUP:Rational Unified Process,统一软件过程SGEG:Structured Graphic Editor Generator,结构化图形编辑工具SVG:Scalable Vector Graphics,可扩展的矢量图UML:Unified Modeling Language,统一建模语言Veda:语法制导的可视化语言编辑器的快速定制平台Viz:Visualization,可视化XP:Extreme Programming,极限编程第一章 绪论1.1课题的研究背景1.1.1可视化建模语言及编辑器可视化建模语言(Visual Modeling Language,下文简称可视化语言)是采用图形方式对系统/软件进行描述的语言,如传统的数据流语言、过程建模语言和目前广为流行的统一建模语言UML(Unified Modeling Language)等1.由于可视化语言的直观、便于理解的优点,它为软件开发带来更高的效率,其作用越来越重要.可视化语言包括语素、语法、语义三个方面.语素对应于基本图元,每个图元具有逻辑部分(图元属性)和物理部分(图元外观),逻辑部分和物理部分之间是对应的.语法定义了语素的连接规则,反映的是语素与语素之间的关系,除了图元之间的逻辑连接关系即抽象语法外,还要考虑图元的空间关系(二维的,如水平连接、垂直连接、重叠)即具体语法.可视化语言的语义反映了语句的意义.可视化语言中的语句是由一组图元按照一定的规则在二维或者多维空间组合而成,在表现形式上也就是符合语法关系的一些图元及其连接关系的集合,其中每个图元是位于多维空间的一组符号,语句的有效性依赖于符号之间的空间关系和逻辑关系2.可视化语言编辑器为可视化语言的使用提供了工具支持,目前可分为两大类:自由编辑型和语法制导型.自由编辑型允许用户随意建模,相当于图形编辑器,如Microsoft公司的Visio;语法制导的可视化语言编辑器在编辑过程中自动引导用户建立语法正确的可视化模型,有利于用户对可视化语言的掌握和使用,具有更广泛的使用范围.语法制导的编辑器有很多例子,如:IBM公司的Rational Roses系列、北航软件所的EPMS3、AST公司的Graphical Designer Pro 2.0、IBM公司的VisualAge UML Designer、Select Software 公司的 Select Enterprise、Platinum Technology公司的 Paradigm Plus 3.0、TogetherSoft 公司的Together系列等.文本研究重点是语法制导的可视化语言编辑器(注:下文提到的编辑器特指语法制导的编辑器).1.1.2可视化语言编辑器快速定制技术随着各个领域越来越广泛和深入的应用可视化语言,到目前为止可视化语言的数量不下百种,如:软件系统建模语言、业务过程建模语言、模型驱动架构MDA(Model Driven Architecture)模型语言、控制流描述语言、数据流描述语言、Petri Net语言、数据库实体关系语言、体系结构描述语言、电路设计语言、化学实验设计语言等.如果要为其中的每一种可视化语言重新开发一个编辑器,将会是一件浩大而又繁琐的工作.面对这种情况,如果继续延用为每一种可视化语言编辑器开发其所有功能模块的传统方式,将会耗费大量的人力、物力、财力和时间,阻碍可视化语言的发展和应用.可见,如何提高可视化语言编辑器的开发效率、缩短其开发时间是所面临的难点问题之一.可视化语言从诞生到成熟需要经历反复的修订、更改和测试过程,在功能方面,可视化语言编辑器的日益庞大、复杂,这都使得可视化语言编辑的开发工作在传统的方式下成为一个重复和繁重的过程,如何减少这个过程中的工作量,支持可视化语言编辑器的迭代开发过程是所面临的难点问题之二.与此同时,随着可视化语言编辑器的应用范围和规模扩大,需求变化的愈发频繁,如何解决编辑器对新的需求的可扩展性成为所面临的难点问题之三.为了解决可视化语言编辑器开发中的诸多问题,本文认为可视化语言编辑器快速定制技术是一个重要的研究方向.可视化语言编辑器的快速定制技术提高了编辑器的开发效率,为迭代开发提供了有利的支持,对于灵活应对不断改进中的可视化语言具有重要的意义.如何提供一种完善的可视化语言编辑器的开发平台,让可视化语言编辑器的程序开发工作降到最低限度,并且基于此种技术,提供一个易于使用的开发环境是我们研究的重点.1.1.3国内外研究现状在国外对于可视化语言快速定制技术的研究集中在可视化语言描述方法和可视化语言编辑器定制平台的设计实现两个方面.国内在这些方面也有相应的研究,成果也相对较少.可视化语言描述的研究主要是对语法描述的研究,描述方法主要有以下四种:(1)基于文法的形式化描述:字符串文法Picture Description Language4、属性图形文法Attributed Programmed Graph Grammars5;(2)基于逻辑的形式化描述: Clause Set Grammars6;(3)基于代数的形式化描述:Algebraic specification7;(4)基于规则的半形式化描述方法:北航软件工程研究所与美国ISSI公司合作研究提出的编辑器定制语言ECL(Editor Customization Language)8.四种描述方法中,文法形式最符合人们的习惯,被采用的最多,这种方法借鉴了字符串语言形式化描述方法,用类似于BNF范式的图形产生式来描述可视化语言,可视化语言的文法描述方法对字符串语言的传统重写机制进行了扩展,虽然仍通过产生式来描述语法,但基本结构不再是字符串,而是图形对象集合或多重集合、并规定了重写对象间的几何关系.相对于代数和逻辑的形式化描述,基于文法的形式化描述有很深的理论根基、研究范围很广,但是其可视化语言语法的解析算法很难克服效率的障碍9.基于逻辑和代数的形式化描述方法使用了复杂的逻辑表达式和代数表达式来描述图形的产生规则,需要较深的数学基础,其形式化描述方法不直观,不易理解,难以普及应用,主要分别用于人工智能领域和人机交互.经过研究发现可视化语言不具有字符串语言的一维线性特征,图形重写并不直观,反而采用规则形式比图形重写更易理解,容易实现检查算法,执行语法检查的效率也很高,在易用性方面比大部分方法有明显的优势,并且经过了比较丰富的实践的检验.虽然基于规则的描述方法描述能力没有前三种方法强,但形式化描述只能作为一种帮助开发者快速开发编辑器原型的手段,很难描述出可视化语言的所有特点和最终用户对编辑器的所有需求,所以在形式化描述方法的描述能力足够的情况下,更追求形式化描述方法的易用性.上面提到的几种具体描述方法中,除了ECL之外的形式化描述,都是基于图形重写的原理,并且使用产生式描述抽象语法.由于可视化语言的文法通常是上下文相关的原因,产生式形式的文法并不容易构造判定算法.而如果采用ECL那样的连接关系型的描述方式,构造判定算法就非常简单.在描述空间约束方面,上述大部分方法缺乏灵活性,只提供了少数几种简单的空间形式,适用面比较窄.ECL则尝试对图元的空间形式提供了参数化的分类,是一种比较实用的方法.ECL的主要缺点描述的冗余程度高,语法规则复杂不宜书写.另外,上述形式化描述均没有针对可扩展性的设计,当描述能力不够时扩展起来相对较难.可视化语言编辑器定制平台主要是基于自动生成器的思想,主要有两大类:(1)语法制导编辑器的自动生成器,主要成果有:GENGED 10、SGEG 8、PROGRES 11、MetaEdit+12、Dome 13;(2)自由编辑器的自动生成器,主要成果有:VisPro 14、 SPARGEN 7.国内对可视化语言编辑器自动生成环境的研究相对较少,从目前所发表的研究成果看,只有北航软件工程研究所研制的SGEG系统.Roswitha Bardohl提出的GENGED是一个语法制导的图形通用编辑器的生成器,用代数方法来描述图元、图元间联系和位置约束,以图形产生式规则定义可视化语言的文法.对于一种可视化语言,给定一个字母表和一个规则集就可以产生针对这种可视化语言的语法制导的图形编辑器.GENGED中可视化语言是由一个VL字母表和VL规则集(文法)组成,字母表和规则集的定义都有工具支持.Andy Schurr提出的PROGRES是一个语法制导的图形编辑器的自动生成器,用文法形式对空间约束和逻辑约束都进行了形式化描述,以图形产生式规则定义可视化语言的语法.用UPGRADE作为可视化语言编辑器的界面框架,将应用程序逻辑和用户界面分离,用PROGRES描述生成的编辑器代码作为程序逻辑,可以快速生成可视化语言编辑器.MetaEdit+是由MetaCase公司开发的可视化语言编辑器的生成器,它采用基于文法的形式化描述.用SymbolEditor编辑图元符号和连接的外观.在Method Workbench中可视化的定义图元的属性和方法.MetaEdit+可根据预定义的规则检查模型,并且按照DSL(Domain-Specific Language)将模型生成代码15.Dome是Honeywell公司开发的面向领域的建模环境,采用文法形式进行了形式化描述.Dome使用DTSL(Dome Tool Specification Language)定义图元外观、接口、属性、图元间的关联、语义、编辑器的菜单按钮等,根据需求可以定制特定领域的可视化建模语言编辑器.Da-Qian Zhang和Kang Zhang提出的VisPro是一个自由编辑器的生成器.使用VisPro构造可视化语言编辑器的大概分为两个步骤:词典定义(lexicon definition),文法形式化描述(grammar specification).词典定义中定义了图元,图形产生式定义了文法.VisPro使用RGG (Reserved graph grammar)文法描述可视化语言,由文法的描述可以生成可视化语言的编译器.VisPro最终会生成一个可视化编程环境,这个环境包括一个编译器和一个可视化编辑器.VisPro从语法和语义两个方面来解析一个图(diagram),语法解析用来检查图是否合法,如果使用图形产生式规则后能够把图变换为一个初始的图元,证明这个图是合法的.语义的解析用来从图中产生一个结果,只有语法正确了,语义结构才是有意义的.语法检查和语义动作能够同时执行,也可以分开执行.Eric J. Golin 和Tom Magliery提出的SPARGEN是一个自由编辑器的生成器,根据面向对象图形位置文法(picture layout grammars)自动生成可视化语言的编译器.可视化语言的开发者写出该可视化语言的文法和C+支持代码类的定义和方法.SPARGEN处理这些文法文件产生C+代码,实现可视化语言元素的定义.这些代码和C+支持代码以及SPAR库相连接.产生一个独立的可视化语言编译器,这个编译器读入输入图,分析输入图产生分析树,之后遍历这棵树执行产生式相关的动作.SPAR库定义了解析中用到的基本类和通用解析算法.SGEG是一个可视化语言编辑器的自动生成器,主要用于设计和构造交互式结构化图形编辑工具,生成一个由用户定制的图形编辑系统.SGEG的思想是:定义一种形式化的语言ECL,用来描述可视化语言及编辑器的各种特性,SGEG根据描述可自动生成可视化语言的编辑器.通过研究和实践,我们发现以上研究成果在不同的程度上缺乏对语言描述能力、语言解析效率、生成的目标编辑器可扩展性和易用性等方面的综合考虑.1.1.4研究基础及问题分析本课题研究的基础是SGEG系统.北航软件工程研究所近年来利用SGEG,开发了过程建模工具EPMS和UML建模工具UML_Designer等多个可视化建模工具,在承担的多个项目中有很好的应用,积累了丰富的开发经验,并对SGEG的设计进行了深入的理解和剖析.SGEG在实际应用中充分显示了其开发快速的优点,顺利的完成了EPMS和UML_Designer的开发.这是因为SGEG的设计是基于很多正确的分析,在实践中积累了宝贵的设计经验.但是,在使用SGEG的过程中也出现了一些难以克服的困难.首先,最主要的困难是可扩展性不足.由于可视化语言编辑器的需求是千变万化的,不同的领域有不同的需求,必然需要在应用的过程中扩展.而SGEG在设计时不可能考虑得面面俱到,在可扩展性方面考虑不足,对原有的系统进行扩展工作量很大,扩展后的系统结构不清晰,理解和维护的难度随着系统的功能增加而不断增加.其次,由于在设计时缺乏实用经验,面对不同的应用,ECL的描述能力明显不足而且可扩展性较差,并且ECL有些设计选择经过实践的检验被证明是不合适.另外,SGEG是从90年代初期就开始开发的系统,有严重的代码老化现象,作为SGEG的存储支持层的对象管理系统OMS(Object Management System) 存在诸多问题,如OMS存储能力有限,在模型较大的时候不稳定甚至导致系统崩溃,没有提高很好的查询接口,多个OMS库之间的切换访问和合并,单的OMS库的拆分等问题.而目前,OMS已经停止的维护和更新,这使得我们必须寻找一个更好的存储方案代替OMS.而SGEG在设计上,上层各种应用严重依赖OMS,模块之间的耦合度很大,这使得代替OMS的代价几乎相当于重新构造一个新的系统.所以,综上所述,从诸多方面来考虑,都有必要对SGEG进行重新设计.1.2课题的目标为了支持当前开发可视化语言编辑器的需求,本课题通过对可视化语言编辑器自动生成技术的研究,借鉴国内外相关研究成果的优点,特别是设计思想和形式化方法,并对SGEG不足之处做出合理改进,重新设计实现一个具有较高实用性的可视化语言编辑器的快速定制平台.新的平台应解决SGEG的存在的主要问题,满足以下目标:(1)提高开发平台和目标系统的可扩展性;(2)提高可视化语言编辑器开发效率,减少二次开发的工作量.1.3课题的意义和创新本课题来源于新世纪优秀人才支持计划项目,课题研究成果在可视化语言编辑器的自动生成方面有重要的学术价值,并且已应用于实际项目中.在某863项目中,我们利用Veda为该项目定制了基于UML2.0的可视化测试建模工具.在北京市科技新星项目中,我们正在利用该系统构造软件体系结构建模工具.本文借鉴了国内外的关于可视化语言编辑器自动生成器的研究成果,重点针对SGEG系统在语言描述能力、可扩展性、系统设计、开发效率等方面存在的不足,提出了解决方案,重新设计了一个可视化语言编辑器快速定制平台.本文的创新点可以总结为如下:(1)本文提出了语法制导的可视化语言编辑器快速定制平台的总体框架以支持编辑器的快速开发.该框架总结了可视化语言编辑器定制平台的一些共性,运用了自动生成结合系统配置的思想,把可视化语言编辑器开发平台由编译型转变为解释型,具有动态扩展性.该框架提高了语言解析效率和降低了系统中各模块的耦合度,同时,通过配置结合自动生成使得编辑器的开发更具灵活性,同时大大减少了二次开发的工作量,对于开发可视化语言编辑器的快速定制平台具有较高的实用价值.(2)本文定义了一套支持静态语义的可视化语言描述方法RM.RM包括两部分,基于规则的可视化语言描述方法(RGVL)和基于元模型的静态语义描述方法(MSS).在可视化语言描述能力得到提高的同时RM又具有很好的扩展性.(3)在总体框架理论研究基础上,本文设计实现了语法制导的可视化语言编辑器的快速定制平台Veda的原型系统,验证了定义的总体框架.Veda系统设计总结了近十年来我们开发可视化语言编辑器的经验,满足了大多数可视化语言编辑器的需求,充分考虑了系统的扩展性,提高了编辑器的开发效率.1.4本文的组织本文共分为五个部分:第一章,绪论,阐述了研究背景及问题的提出,明确研究范畴和课题的目标,然后阐述了课题的意义和创新,最后介绍了本文的组织第二章,重点针对SGEG存在的问题,对可视化语言编辑器的定制平台进行全面的研究和分析,确定了可视化语言编辑器的开发平台的需求.并且详细分析了SGEG存在的问题,针对这些问题提出了解决方案.第三章,详细介绍了可视化语言编辑器快速定制平台Veda的设计,提出了可视化语言编辑器快速定制平台的总体框架.介绍了Veda系统各组成模块的功能和设计.第四章,详细介绍了Veda现实中的关键技术支持静态语义的可视化语言描述方法RM,它包括的基于规则的描述方法和基于元模型的静态语义描述方法.介绍了系统实现中使用的其他技术.最后,通过一个示例说明了Veda系统的使用.第五章,结论,对论文工作进行总结,并指出今后的研究方向和需要进一步完成的工作.第二章 问题分析与解决方案2.1 SGEG介绍本课题研究的基础是SGEG系统.SGEG是一个可视化语言编辑器的自动生成器,主要用于设计和构造交互式结构化图形编辑工具,生成一个由用户定制的图形编辑系统.它大大提高了可视化语言编辑器开发效率.SGEG的总体结构主要由以下两大部分组成:编辑器支持模块和支持工具.其中编辑器支持模块主要包括了抽象图形模块(AG)、语义模块(Semantic)和显示模块(Viz);支持工具有两个:图元编辑器(Icon Editor)和ECL编译器(ECL Complier).图1 SGEG总体结构图1中GO和OMS分别是图形支持模块和存储支持模块,这两个模块属于底层支持模块;Default Editor Framework是目标编辑器的缺省框架,将其它的核心模块集成到该框架中,就可以得到目标编辑器的原型.编辑器支持模块是SGEG和生成的目标编辑器共用的核心模块.这三个模块分别提供了以下的功能:图形显示、人机交互(Viz)、语法检查(AG)、语义接口扩展(Semantic).利用命令包command模式可以将这三个模块有机的结合起来.基于SGEG的开发方式如图2所示,用户首先通过ECL编辑器或者文本编辑器按照ECL的语法规则编写一个以.ecl为后缀的文件,为要生成的目标图形编辑器定义图形的语法规则.ECL编译器将文件内的ECL描述生成与用户定制的图形编辑器应用相连的.cxx文件.用户使用图元编辑器为目标编辑器中所要出现的图元和连接编辑相应的图元,并将图元存储在以.go为后缀的文件中.此后,用户通过继承抽象模型模块、语义模块、显示模块,并且把生成的c+描述代码手动连接到自动生成器框架代码中去,加入图形编辑器特定的语义信息,然后通过c+编译器的编译成最后生成目标图形编辑器.这种方式没有考虑可扩展性,把可视化语言编辑器的开发过程视为一次性的,而实践中此开发过程是一个迭代过程.图2 SGEG的工作流程ECL是一种形式化的描述可视化语言的语言,主要用来表达用户对编辑器的定制需求.ECL存储在一个ASCII文件中,它是SGEG自动生成器的基础.ECL从抽象语法和具体语法两个方面来定义可视化语言的语法,抽象语法定义了抽象的连接关系,具体语法定义了图元的表现形式、图元在视图中的布局和位置信息.ECL提供一个语义交互的接口,通过这个接口用户能够添加语义数据和动作,通过这个接口可以跟踪抽象图形层的对象的创建和删除活动.ECL还包括了对编辑器的形式化描述.图3是UML类图中关联(Association)的ECL描述,分为抽象语法、具体语法、编辑器定义和语义接口四个部分,下面简要分析其中的各种定义:图3 关联的ECL描述(1)抽象语法:任何用户希望操作的图元(语素),都必须有一个具体描述.每一种图元类型都有一个唯一的名字,如:Association.所有图元的集合也就相当于通常所说的字母表.图元之间的连接关系有三种:connects to 从本图元到指定图元可以有连接,(假定被指定的图元可以被本图元连接).connects from 从指定图元到本图元可以有连接,(假定被指定的图元可以连接到本图元).connects with 从本图元到指定图元和指定图元到本图元都可以有连接.0. 代表0个或者多个;1 代表一个且仅一个;.表示一个范围,比如,2.5代表2个到5个.从图的角度来看,这种连接关主要描述了每个图元的扇出和扇入.具体语法: 图元的表现形式(renders)和图元在视图中的布局和位置 (layout) 类型.图元的表现形式(renders)是对众多可视化语言的语素的外观特征进行了抽象,在这种抽象基础上归纳为下述八种.CanvasVIZ:代表图这种特殊的外观(如类图,用例图等).IconVIZ:普通图元外观.PolylineVIZ:线形外观(关联等).LabelVIZ:文本的外观(标签等).TextFieldVIZ:图元中含有单行文字的外观.MultiTextVIZ:图元中有多行文字的外观(类图元).SpecialDisplayVIZ:带小数点的数字类型.ClassVIZ:树状图形.具体描述时,下述前六种都需在参数列表中指定图元外观的名字,这个名字是在图元编辑器中所命名的.图元的外观对显示和操作有着很重要的影响,例如线形外观和图元外观的显示方式和操作方式都有很大区别.ECL所支持的上述8种抽象外观是从经验和实践中归纳而来的.版面位置类别(layout)表示图元创建时的位置和图元之间的位置约束关系,可以看作是对具体语法的描述,分为如下7种:AtLocationVIZ 在鼠标点击的位置上创建图元.TopFrameVIZ 用来表示视图.PointToPointVIZ 由多个个点来组成图元的位置,主要用于线段.NearOwnerVIZ 在Owner图元附近,与Owner图元有对齐关系.OnOwnerVIZ 放在Owner图元上,图元可以在Owner上移动,但是不会脱离Owner.AutoLayoutVIZ 自动布局,自动计算树状结构中节点位置关系.CalcLocationVIZ每一次创建实体时,实体位置可以按照大的方向来自动排列:如:south ,north等方向来排列.ECL中图元的Owner是能够创建这个图元的图元,也就是在auto create或者creates 的名字列表含有此图元的图元.(3) 编辑器的形式化描述: 图元显示参数和图元在编辑器中具有的功能.其中包括对一个图元进行操作后的附作用操作(auto操作)、对图元的操作(enable操作)、图元的菜单显示(creates)、图元变换(change)和合并(merge)操作.Auto在图形编辑器中操作一个图元操作往往会对周围的图元产生影响,在ECL中通过auto操作来反应这种影响.包括:auto create、auto deleteto、auto deletefrom、auto copyto、auto copyfrom.auto create () :在创建这个实体的过程中会附带创建中的实体,例如:连线的label和顺序图中生命线.auto deleteto () 删除这个实体的时候附带删除连接到这个实体的实体,具体删除实体的名字由说明.auto deletefrom ()删除这个实体的时候后附带删除从这个实体连接出的实体,具体删除实体的名字由说明. auto copyto () 拷贝这个实体的时候附带拷贝连接到这个实体的实体,具体拷贝实体名字由说明. auto copyfrom ()拷贝这个实体的时候附带拷贝从这个实体的连接出的实体,具体拷贝实体名字由说明.在图形编辑器中操作一个图元操作往往会对周围的图元产生影响,在ECL中通过auto操作来反应这种影响.Enable 表示编辑器所支持的对图元的操作,如:enable (Create, Show, ChangeType, Delete, Hide, Rotate, Resize, Move, Semantic, NoPick, AllHide, EditText).表示编辑器所支持的对图元的操作,如:enable (Create, Show, ChangeType, Delete, Hide, Rotate, Resize, Move, Semantic, NoPick, AllHide, EditText). Creates图元右键菜单中creates项的子项名称,如:creates (NoteLineOfClass, ConnectToClass)语句表示creates项的将包括NoteLineOfClass和ConnectToClass两个子项.Merge 和Change实体可以合并到另外一个实体,也可以变换为另外一个实体,前提是前后两个实体的连接关系要相似.具体形式如下:mergeto( State, EndState),changeto(EndState)(4)语义接口: semantic s表示一个抽象语义基类.2.2问题分析SGEG的设计是基于很多正确的分析,通过多个项目的实施,在实践中积累了宝贵的设计经验.但是,在使用SGEG的过程中也出现了一些难以克服的问题.2.2.1可扩展性差可扩展性差是SGEG系统存在的最严重的问题,表现为三个方面:(1)ECL的可扩展性差.由于在设计时缺乏实用经验,面对越来越复杂的应用,ECL的描述能力明显不足,同时由于ECL的可扩展性较差,而且扩展ECL文法、生成新ECL编译器及重写代码的工作量较大,使得ECL无法满足一些应用的需要,这就降低了SGEG系统的实用性.例如,ECL文法语法无法描述图元的自连接,无法约束图元间的循环关联如UML中类的循环继承关系,无法约束两个图元间的多重连接.ECL只能对两个图元的语法关系进行描述,不能够对三个图元或者多个图元的语法关系进行约束,而在实际应用中对三个图元的约束关系比较普遍.同时,在编辑器中对主导图元的操作往往会引起其他图元的变化,例如:在顺序图中,两个对象之间建立消息后,应该是把这个信息发送到消息两端的对象,然后对象在消息与生命线的连接点处产生激活.但目前ECL把传播操作的类型限定为了固定的几种操作,传播的途径默认为临近的图元.这种对转播消息类型和途径的限制,降低了编辑器对复杂图形的支持能力,不能完全反应出主导图元对周围的图元的影响.上述这些缺点都反应了ECL的描述能力不足,需要添加新的描述.ECL具体语法中的表现形式类型(render)和布局位置类型(layout),是根据有限的经验和实践总结归纳而来的,在新的实践中对于新的可视化语言,ECL可能需要扩展.然而ECL的扩展能力,受到了SGEG中ECL的编译方式的极大束缚.SGEG中采用了YACC来构造ECL的编译器,每次对ECL的语法进行修改后,首先要重写所有ECL描述,其次要修改ECL编译器,再次要重新编译所有ECL文件生成新的程序描述文件,最后把新的程序描述文件和生成器框架连接编译才能得到新的可视化语言编辑器.因此,ECL的扩展性较差.(2)平台扩展性差.由于可视化语言编辑器的需求是千变万化的,不同的领域有不同的需求,在实际使用中经常会遇到SGEG需要扩展的需要,如:在UML中的扩展机制:构造型(stereotype),构造型是建立在已存在的模型元素基础上,构造型元素可以有它自己的外观和附加的语法、语义.这就要求编辑器能够动态修改图元语法、语义、及图元外观.然而目前基于SGEG开发的产品并不具有动态扩展的功能,对SGEG的静态扩展还需要执行三个步骤,首先,定义新的ECL文法,生成新的ECL编译器.其次,重写新的ECL描述文件.最后,修改软件代码实现.但实际情况下,由于修改ECL 编译器的工作量很大,对SGEG进行扩展的过程往往不进行ECL文法改进相关的动作直接在实现中自由修改,这样导致ECL描述和编辑器实现脱节.这种开发方式导致了只扩展编辑器实现,而不同步扩展形式化描述,开发者加入的新功能并没有在真正意义上成为本平台的一部分,难以重用.而且开发者在加入自己的扩展之后,使得形式化描述和软件实现变得不一致,形式化描述就不再具有任何意义和用处,丧失了过程迭代的可能,对系统实现了修改又容易造成系统版本不一致的问题.此外,对命令包的扩展也是比较困难.SGEG命令包的传递路线如图4所示,命令包可以由应用程序、显示模块、语义模块几个部分产生.用户的输入操作产生命令包;命令包交给抽象图形模块进行语法检查,抽象图形模块中包含了由ECL编写的规则信息;通过抽象图形模块检查后,命令包传送到语义模块层,在该层中可以进行语义检查以及语义的扩展;最后命令包到达显示模块层,由该层对图形进行显示.这种方式,可以在一定程度上降低模块之间的耦合性,而且对可视化编辑器中的Undo、Redo操作提供了一种实现的手段,就是在产生用户操作命令包的同时生成一个命反向命令操作列表,需要进行Undo操作时就重新执行一遍反向命令操作列表即可.对应于用户操作而设计的命令包,对于非用户操作则基本没有定义.而当预定义的命令不足以满足用户需求的时候,需要对扩展命令包,而SGEG系统模块间的调用关系复杂,用户需要同时修改Viz、AG、Semantic接口,这使得扩展系统的工作量比较大,可扩展性较差.图4 命令包的传递由此可见,SGEG在设计时在可扩展性方面考虑不足,对原有的系统进行扩展工作量很大,需要对原有系统的代码进行大量的修改.(3)生成的编辑器的可扩展性差.利用SGEG自动生成编辑器,提供的二次开发接口较少,往往在用户界面等其他特性上缺乏灵活性.在使用SGEG开发可视化语言编辑器时,往往需要另外手工构造一个编辑器的界面,这样的工作是非常繁琐的.2.2.2设计不合理SGEG部分模块功能复杂,结构不够清晰, 模块间的耦合紧密,存在设计不合理的情况.如图5所示,在显示模块、抽象语法模块和语义模块这三层中,显示模块一层就承担了消息转发、图形显示,用户交互、图形位置语法检查功能,代码极其臃肿.造成此种情况的原因是,原有设计没有明确可视化语言自动生成器的核心功能,功能划分不够明确,过低的估计了每一部分的代码复杂度,这种三层设计同时也极大的削弱了SGEG的扩展机制.对与SGEG的扩展大都是直接在代码中修改,这样的办法没有从根本上解决问题,遗留了大量不可重用的代码,增加了SGEG代码复杂度.由于SGEG的命令传递方式没有采用消息的订阅和发布方式,而是采用代码间的调用,这使得模块间的耦合关系紧密,给代码的维护和更新带来了很大的困难.开发人员和维护人员不知道改什么地方,怎么去改,并且这些改动会不会影响原有的代码.这使得软件框架修改之后结构更加混乱, 理解和维护的难度随着系统的功能增加而不断增加.图5 SGEG的三层结构此外,ECL有些设计选择经过实践的检验被证明时不合适.经过实践发现,ECL的易用性很差,有下面五个方面的原因:第一,ECL关键词比较多,难以记忆.第二,ECL描述比较冗余,不简洁.例如:顺序图的ECL描述有1880行,可见用ECL来描述可视化语言的工作量是很大的.第三,用户在书写ECL时很容易出现语法错误,用户必须保证所有单词和符号的正确性,因此,用户很难写出完全符合ECL语法的形式化描述,必须耗费大量的时间在查找和修改语法错误上.第四,ECL的输入没有相应的工具辅助.第五,ECL的部分语法和关键词含义比较晦涩,不直观.因此,ECL给系统带来了灵活性,但是也加重了用户在书写上的负担.由于用户必须首先学习ECL的语法,但ECL的语法又比较晦涩、不直观,造成了用户不愿意使用的情况.2.2.3代码老化SGEG时从90年代初期就开始开发的系统,有严重的代码老化现象,例如作为SGEG的存储支持层的对象管理系统OMS存在诸多问题,如OMS存储能力有限,在模型较大的时候不稳定甚至导致系统崩溃,没有提供的查询接口,多个OMS库之间的合并和单个OMS库的拆分存在严重问题等.而目前,OMS已经停止的

温馨提示

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

评论

0/150

提交评论