没有合适的资源?快使用搜索试试~ 我知道了~
基于图变换的可视化语言编辑器与DiaGen系统的应用
电子笔记在理论计算机科学50第3期(2001年)。GT-VMT 2001网址:http://www.elsevier.nl/locate/entcs/volume50.html7页基于图变换的图形编辑器奥利维尔·KOthandMarkMinas1LehrstuhlfurProgrammiersprachen,埃尔朗根大学-努努rnberg,Martensstr. 3,91058 Erlangen,Germany摘要这个扩展的摘要回顾了可视化语言编辑器是如何从图语法中受益的,以及编辑器生成器DiaGen是如何基于这种方法的。然后,我们概述了如何生成编辑器可以创建抽象的图表示进一步处理,如。G.用于与其他工具通信或用于具有变化的、可调整的细节级别的图表可视化,这在编辑大型图表时是有价值的帮助。这些概念用UML类图来说明。1引言图语法和图解析技术的一个重要应用是可视化语言(VL)的定义和VL编辑器的创建[2]。使用解析器来分析图表允许将图形界面视为一种扩展的绘图程序;因此,相同的前端可以在很宽的范围内使用不同的VL,只有很少的调整;只有一组允许的VL符号(框,箭头等)。然后,通过使用“直接处理”绘制这些符号来创建图表; VL解析器分析所产生的绘图,以检查图表的正确性并创建用于进一步处理的抽象表示。在本文中,我们解释了这些概念是如何在DiaGen系统[6,7]中实现的,并展示了如何利用语法和解析过程以非常直接和简单的方式生成这样一个抽象(图)模型。随后,我们提出了一种方法,使用相同的抽象概念,以提高VL编辑器的可用性这可以通过生成图的“抽象视图”,它允许用户将注意力集中在对当前编辑任务很重要的图表部分1电子邮件:Mark. informatik.uni-erlangen.dec2001年由Elsevier Science B出版。V.CC BY-NC-ND许可下的开放访问。2GT-VMT2001 {O. Koth和M. 米纳斯在VL编辑器中包含解析器的主要优点是,它避免了指定一套完整的基于结构的编辑操作的必要性,从而使编辑器的语言特定部分保持尽可能小。这使得使用一个“编辑器生成器”与一个类库相结合,从相对简短的语法描述中为复杂的VL创建编辑器成为可能。DiaGen就是这样一个编辑器-生成器框架,它将VL编辑器的解析方法与面向转换的方法相结合,因为它还允许在编辑的图上进行复杂的基于结构的转换(描述为图的内部图模型上的图转换[7])。2建模图在本文的其余部分,我们将使用一个用于UML类图的DiaGen编辑器作为示例。图图1a显示了一个用这个编辑器创建的小模型我们将要讨论的不同图结构的例子可以在图1c到f中找到(这些图只覆盖了示例图的一部分)。除了图1e中的ASG,所有结构都被简化,以更清楚地显示基本概念。DiaGen在内部将图表示为由“组件”和“关系”(超)边组成的标记超图。组件边缘对应于实际图中的可视符号。每一个符号都有许多连接区域,在那里它可以与其他组件相互作用。这些连接器区域被映射到超图节点,相应的组件超边附加到。最后,语法描述可以定义连接器区域(最常见的是包含和相交)之间的任意几何关系,这些连接器区域被映射成连接对应节点的二元关系边。由此产生的超图模型(HGM,cf.图1c)的图表进行两步分析过程:首先,它被转换成一个“简化的超图模型”(rHGM,cf.图1d)通过一种图变换[7]。然后,rHGM的超边用作解析过程的终端集。DiaGen使用上下文无关超图文法和一些扩展(在[2,7]中描述)来描述VL语法。容错解析器分析rHGM并创建派生结构,该结构主要由(上下文无关的)派生树组成,但它也包含“嵌入”边。这些表示这样一个事实,即元素不是单个主要实体(非终结符)的一部分,而是嵌入到多个非终结符的上下文中。因此,导出结构形成有向非循环图(导出DAG或DDAG,参见图1)。图1f),但是这个图的“节点”(终端和非终端)本身是连接到节点(来自rHGM,图中未显示)的超边。 所有提到的边类型都可以被属性化,属性传播规则允许从符号的属性(例如,G. 文本3a)UML图b)具有抽象元素的UML图对应c)超图模型(HGM)简化超图模型(Reduced HypergraphModel,rHGM)121432232111pkg包含pkg包含12类32构件边缘genEndAtpkg包含1113322genEndAt2关系边1134触手23连接器1跨模型链接f)衍生结构(DDAG)13121213包321包123321嵌入无t-导数e)抽象语法图(ASG)属性属性列表类类PkgElementList包类包包PkgElementList模型开始umlAttributename=“name”classContains类框架text=“人”属性箭头type=泛化pkg包含类类框架text=“客户”包包属性类泛化包类类PkgElementList模型一般化packageFrametext=“个人”packageFrametext=“银行”GT-VMT2001 {O. Koth和M. 米纳斯泛化contex泛化Fig. 1.示例UML类图(a),它的焦点和上下文视图(b),以及(a)的不同模型(c{f})。节点绘制为圆。超边要么显示为连接到节点的矩形,要么显示为箭头。数字表示访问节点的顺序。4GT-VMT2001 {O. Koth和M. Minas内容)和图表结构[7]。3图的抽象模型生成描述VL语法的图语法和从图生成的DDAG不仅可以用作确定其正确性的手段;此外,它们还捕获图中更大的概念实体并描述它们之间的关系,从而具有具体的“意义”。 例如,在UML中,存在像\classes”这样的实体,由几个子部分组成的“包”和“关联”;一个并行的高-UML存在于描述UML类图的可视语法的语法中。这提供了一种获得图的抽象模型的简单方法:我们简单地从DDAG中获取所有非终结符,这些非终结符带有一组“有意义”类型(e. G. \package”)以及所有连接的节点(但非终结符本身是连接到节点的超边),并将这个子图视为图的高级模型(“抽象语法图”或ASG,参见图1e)在示例的简单情况下,ASG几乎与rHGM相同通常,rHGM还可以包含不能被正确解析的附加边此外,对于一些UML元素,存在多种可供选择的可视化,导致不同的rHGM结构,但它们都是从相同的非终结符类型派生的。在UML类图的情况下,我们还希望图的ASG符合UML图后面的抽象模型的专业定义。 UML标准将这个抽象模型描述为基于UML元模型的对象模型。 作为一个例子,UML图中的每个包都必须在其抽象模型中用一个具有属性如“name”和“visibility”的“package”对象来表示。我们的方法并没有为图创建对象模型,而是创建了一个超图结构(ASG)。但是可以定义一个从对象结构到超图的映射,它允许非常紧密的对应关系:例如,具有属性的对象对应于具有属性的超边,并且对象之间的关联被映射到相应超边所连接的节点。 这种对应关系足够紧密,我们可以将UML类图的ASG的树遍历写成标准化的XMIle格式[8],并在其他行业UML工具中使用抽象描述(例如:G. 一起,www.togethersoft.com)。这种将抽象图模型集成到VL的语法描述(图语法)中的方式使得从具体图创建它们并利用标准图解析技术检查它们的正确性成为可能。虽然我们还没有处理这个“unparsing”问题,但是使用图语法产生式从抽象模型创建具体的图也应该是可能的。这将有助于生成VI-5GT-VMT2001 {O. Koth和M. 米纳斯从抽象图模型(e. G. XMI数据)或使用图形转换来描述抽象模型的修改(在UML的情况下是程序结构转换),并直接将结果可视化。4可视化抽象抽象概念不仅在图的内部模型中有用;当它们被可视化时,它们也为图编辑提供了有价值的帮助:图中当前用户不感兴趣的实体可以被(更小的)抽象可视化替换,而其他部分保持完整的细节可见。由此产生的技术被称为“焦点和上下文”查看[11];它可以更好地利用屏幕空间并增强可用性[10]。图1b显示了示例图的焦点和上下文视图,该视图集中于“Customer”类。以前应用这个概念的方法要么局限于特殊应用,要么仅基于光学显示变换来操作(例如,G. sheye views [5])。 使用超图作为图语言的通用模型使我们能够支持基于结构的抽象,该抽象针对特定的图语言单独定制,同时保持所需的编程量小。我们通过把抽象看作是图转换的一个特殊情况来实现这一点:对于UML类图,我们定义了两个抽象转换,它们简化了类和包;它们的效果可以在图中的\Account”和\Personal”元素中看到(参见。图1 b)。如[7]中所述和第1节中所述,图变换以图变换规则的形式指定,该规则在图的HGM中查找和替换模式;更高级别的变换程序提供控制结构,并允许子程序或基本规则的迭代或有条件执行。添加或删除组件超边会创建或删除可视符号;添加或删除关系边会导致图表布局的调整。对于抽象转换的定义,这些机制必须仅稍微扩展:这样的转换接收(用户选择的)图元素作为参数;它使用一个或多个模式来选择表示所需图实体的细节的所有图部分,并(暂时)将它们从图中删除。当然要加上逆“扩展”转换,如果需要,稍后再考虑。因此,图形元素实际上没有被删除;相反,它们保留在HGM结构中,但被标记为“隐藏”,因此它们既不可视化也不被分析过程考虑为了使抽象转换的规范尽可能简单,我们希望利用派生结构中包含的信息来选择图实体的细节为此我们6GT-VMT2001 {O. Koth和M. 米纳斯引入了跨模型链接,连接不同内部图形结构(HGM、rHGM和DDAG)中的相应边,并且可以包含在图形模式或转换规则中。虽然复杂的图形模式提供了许多选择图中所需元素的可能性(分别为HGM),我们已经发现,在大多数情况下,抽象转换只需要使用一个简单的标准模式:选择从用户选择的diagram元素开始(例如,G.包装框架,参见图1a和c),它遵循跨模型链接到DDAG,并将DDAG向上走到某个类型的第一个非终结符(e. G. \Package”)表示所需的更高级别实体;通常,它沿着DDAG边缘向下,并针对跨模型链接,以包括从该非实体派生的所有内容。图1a{f}给出了这种选择如何通过具有灰色背景的元素引导到“个人”包的所有部分的由于我们使用可自由编程的图表转换来创建抽象视图,因此也可以包含其他必要的图表调整以保持其正确性,例如。G.使用特定于语言的抽象符号。最后,单个图实体(如UML类或包)的各个抽象转换可以组合成更高级别的转换,这些转换可以创建整个图的合适的抽象视图,如图11b.5相关工作还有其他几种方法可以从正式规范生成可视化语言编辑器。基于抽象图模型的模型G. GenGEd [1],Kogge [4])自动带有“内置”抽象表示。其他避免抽象内部模型的工具(例如,G. 基于约束多集文法[3]的钢笔缺乏抽象模型的这种直接可用性;它们必须通过属性评估显式地创建外部图表示。然而,据我们所知,没有其他的编辑器生成器框架,支持可视化抽象与变化,可调,基于结构的细节水平。唯一具有焦点和上下文查看功能的工具要么是特殊用途的工具(例如,G. [9]),或者他们只是扭曲了“他们的观点”, (e. G. [5])。引用[1] R.巴铎GenGEd:一个基于代数图文法的可视化语言的通用图形编辑器。在Proc.1998 Symp.《视觉语言》(VL'98),第48页,1998年。[2] R. 巴尔多赫,M. Minas,A. 史昌湖rr和G. 泰泽。图变换在可视化语言中的应用。In H. Ehrig,G.恩格斯,H.J. Kreowski,7GT-VMT2001 {O. Koth和M. 米纳斯和G. Rozenberg,编辑,Handbook of Graph Grammars and Computing byGraph Transformation。第二卷:应用、语言和工具,第105页。180. World Scienti c,Singapore,1999.[3] S. S. Chok和K.万豪酒店。基于笔的计算机的用户界面的自动构造.第三届高级视觉界面国际研讨会,Gubbio,意大利,1996。[4] J. E bert,R. Sutte nba ch和我。呃。 实践中的元案例:KOGGE案例。在AdvancedInformationSystemsEngineering,Proc.9thInt.Conf.(CAiSE'97),LNCS 1250,第203{216}Springer,1997年。[5] T. A. Keahey和E. L.罗伯森非线性放大变换技术。In Proc. IEEE Symp.信息可视化,IEEE可视化,第38页, 1996.[6] M. 米纳斯 创建图表的语义表示。 In M. 纳格尔和A. 史昌湖rr,editors,Int. 工业相关性GraphTransformations应用研讨会(Agtive'99),论文选编,LNCS 1779,第209页。224. 斯普林格两千[7] M.米纳斯 基于超图变换的图表编辑器生成器的概念与实现。出现在Journal of Science of Computer Programming(SCP),2001年。[8] 对象管理组Meta Object Facility 规 范 http :www.omg.org/uml/.[9] S. Pook,E. Lecolinet,G. Vaysseix和E.巴里洛可缩放用户界面中的上下文和交互。在Proc.AdvancedVisualInterfaces2000(AVI'2000),第227页(231,2000.[10] D. Scha er et al. Navigating hierarchically clustered networks through shye andfull-zoom methods. ACM Transactions on CHI,3(2):162{188,1996.[11] M. Sheelagh,T. Carpendale,D. Coperthwaite和F.弗拉奇亚使扭曲变得可理解。在Proc.1997Symp.《视觉语言》(VL'97),第36页, 1997年。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功