没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记148(2006)5-18www.elsevier.com/locate/entcs与抽象树相关的视觉模式Uwe Kastens和Carsten SchmidtUniversitéatPaderborn,Fakultaétfur?rElektr otechnik,InformatikundMathematik,Fürstenallee11,33102 Paderborn摘要可视化语言在系统建模、软件规范和特定应用领域中发挥着重要作用。通过使用视觉属性,如空间放置或线连接,可以呈现复杂的结构,以便人类可以快速理解它们。可视化语言可以基于特定领域的隐喻,这样领域专家就可以使用他们传统的描述和抽象方式。为了使用可视化语言,需要专门的图形前端。与文本语言相比,通用编辑器对视觉语言的需求不足,因为每种视觉语言都有其特定的图形需求。前端应该提供方法来帮助高效的绘图和视觉表达的重组通常,特定于语言的结构编辑器被用作可视化语言的前端。可视化程序存储在依赖于语言的数据结构中。用户与一个或多个视觉表示交互。编辑操作直接应用于底层结构,并且在更改之后重新计算图形表示。视觉语言的实现需要广泛的概念和技术知识,从用户界面设计和图形实现的问题到一般语言的分析和转换方面。我们提出了一个强大的工具集,包含这样的知识[16]。它从高级规范中生成编辑器:通过识别语言结构中的某些模式,从一组预编码的解决方案中选择视觉表示,并将模式与抽象语法的构造相关联,来指定语言一个完整的可视化结构编辑器是从这样一个规范生成的。它用属性化的抽象树表示可视化程序。因此,处理可视化程序的进一步阶段可以通过用于编译器构造的最先进的工具来生成。即使是具有挑战性的视觉语言也可以通过合理的小规模和相当有限的技术知识来实现。该方法适用于各种各样的视觉语言风格。关键词:可视化语言,领域特定语言,树,图形用户界面1引言在这个讲座中,我们提出了设计和实现视觉语言的方法和工具。该方法基于我们在语言设计和实现领域20多年的工作的一个结果1571-0661 © 2006 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2005.12.0106联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)5图1.一、用Java编程的SIM卡这就是Eli系统[1,4,8]。大约六年前,我们开始了视觉语言领域的研究。我们已经从Eli系统中为我们的视觉语言实现方法采取了驱动思想:计算模式封装了用于键入和名称绑定的常见任务的预编码解决方案。我们将这种方法推广到了视觉模式,它封装了语言结构的视觉表示。由于该设施,我们的系统VL-Eli有效地支持可视化语言的设计和实现。如果特定语言是为特定领域设计的,那么它们是最有效的因此,在第2节中,我们介绍了领域特定视觉语言(DSVL)如果一种语言的领域相当狭窄,它将只被一个小的用户社区使用。 因此,我们不能要求花费大量的精力和成本来开发一种专用语言。需要发电机的有效支持。在第三部分中,我们介绍了特定领域语言的实现策略的一些方面。用于我们的方法来生成可视化结构编辑器从视觉模式的方法和工具解释在节。四、2领域特定的视觉语言我们从一个项目的例子开始介绍DSVL,该项目是我们为工业合作伙伴ORGA Kartensysteme GmbH制作的。他们生产的芯片卡被用作移动电话中所谓的用户身份模块(SIM)。这种卡包含一个处理器,它是在Java的子集编程(见图1)。该公司要求我们开发一种专用的可视化语言来编程这些卡。它应该隐藏大多数技术编程细节,并且应该适合没有编程技能的人。我们从全面的领域分析开始了语言的开发:典型的SIM工具包应用程序通过网络服务提供商提供的特定功能大多数这些联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)57图二、可视化SIM程序示例这些功能需要通过隐式发送的短消息(SMS)在移动电话和服务提供商之间交换信息。例如,电话用户可以向餐馆查找服务询问靠近他或她当前位置的意大利餐馆的电话号码。然后,服务提供商定位手机,查找合适的餐厅,并将其电话号码发送回来。这些服务功能通常组织在菜单中。因此,我们的语言提供了两个视图(见图2):一个是要实现的菜单形式的功能概述,以及事件列表和一些辅助功能,第二个视图表示特定功能的控制结构。为了决定语言结构,我们与开发此类应用程序的人交谈,并研究他们的概念,符号和他们使用的工具。一个特定领域的语言应该很好地适应其用户用来思考和开发的方式。这种服务程序有一个相当简单的控制流程,主要描述分支的嵌套选择。分支机构的操作,如“发送短信”或“查询电话”,描述起来很容易,但实现起来相当复杂。在图2的过程视图中控制流程的可视化的意义应该是显而易见的。我们实现的语言由一个工具组成的可视化结构编辑器,分析阶段,并翻译成JavaCard语言。所有组件都由我们的系统生成。翻译必须针对卡处理器对存储要求的严格限制进行优化,并且必须克服目标语言的几个技术缺陷。领域特定语言在高抽象级别上提供操作和构造,它隐藏了它们的所有技术考虑8联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)5完成这使得DSL方法非常有效。此外,语言结构的视觉外观易于学习和使用,特别是对于不习惯编程的人。当我们向该公司的开发人员演示语言实现时,他们令人惊讶地表示更喜欢使用专用的可视化语言而不是JavaCard。因此,他们要求额外的语言结构,这将使他们能够部分摆脱语言元素的紧密集合,并插入JavaCard代码片段。我们认为这一举动是成功的语言设计和实现的标志领域专用语言方法适用于任何应用程序领域,• 是相当狭窄的,• 具有高级概念,• 需要解决• 有概念来描述任务。我们为项目中的许多领域开发了DSL,范围从学生工作到工业合同。例如机械反馈系统,汽车仪表,乐谱和机器人控制的测试说明。我们认为计算机科学之外的领域是最有挑战性的。对于这些领域,语言表达的概念完全不同于程序和数据结构。此外,潜在的用户可能没有编程技能,但DSL方法使他们能够开发软件。计算机科学领域的典型例子是生成数据库报告,创建用户界面,以及从描述中实现数据结构。当然,语言实现领域本身也有DSL支持的专门领域的例子,例如,正则表达式指定扫描器,上下文无关语法指定解析器,以及工具集Eli的专用语言。对于设计的其他方面,DSL实现也见[7,14,2]。文本语言通常会导致它们的程序相当密集和简洁。视觉符号可以更好地说明某些语言概念的使用。这对于DSL来说尤其如此。一些领域,如Petri-Nets或Statecharts,有一个图形符号,可以形成可视化语言的基础。有很多种视觉语言结构可以用来组成视觉语言。图3显示了用四种视觉语言制定的描述,它们以非常不同的风格设计:街道语言使用分支街道的隐喻来可视化控制流程。Petri网基于简单的几何元素,Micro-Pascal可视化结构化文本,正则表达式语言结合了有向联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)59图三. 不同风格的视觉语言见图4。 应用生成器图表和文本。通过这些例子,我们想说明视觉结构的表达能力。当然,提供工具支持是一个很大的挑战,它涵盖了如此多种的符号。3语言实施策略领域特定语言的设计和实现遵循一个众所周知的软件重用原则。1988年,J.C. Cleaveland [3]为它创造了应用程序生成器的名称(图4):描述某个域的问题实例。生成器接受这样的描述并生成解决问题的软件。Cleaveland最初提出了在数据库上生成报告变体应用程序生成器方法适用于特定的领域• 如果存在待解决的问题实例的许多变体• 它们可以被描述,而不需要解决它们,• 域被完全理解,从而可以自动生成软件解决方案。生成数据库报告的域、解析器、扫描器和前面给出的DSL域的所有其他示例都满足这些要求。如果域具有特定于域的10联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)5图五、处理文本和视觉描述可以转换为可执行软件的高级概念和抽象。然后,生成器跨越了问题域的抽象和用于解决方案的实现技术之间的巨大认知距离。例如,将上下文无关语法作为解析器任务的高级描述,将LALR(1)作为解析器生成器。第1节的SIM语言是这种方法的另一个例子。这样的生成器封装了专家的专业知识,他们既了解问题领域,又了解如何自动创建软件解决方案。对于应用程序生成器的用户来说,理解问题域的概念就足够了。Ch.W. Kruger将生成器方法描述为最有效的重用方法[9]。应用程序生成器只是特定领域语言实现的另一个名称。后一个名字强调,必须设计问题描述。 语言的实现是计算机科学中一个很好理解的领域,其知识体系在50多年的研究中得到了证实。编译器构造的教科书(如[17])描述了如何分解语言实现任务,Eli[1,4,8]等工具可用于解决子任务。图5中的图表显示了语言实现的四种变体的结构。他们在两个方面有所不同:• 文本语言与视觉语言• 文件输入与交互式输入。联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)511最左边的分支表示文本语言的传统实现的结构它建立了一个抽象的程序树。接下来,语义分析阶段计算并检查程序的属性,例如:绑定使用到定义,检查类型,并识别操作符。语义分析的结果使用属性注释最后阶段将属性树转换为目标表示,即所描述问题的软件解决方案。图中所示的四种变体5.只在所谓的前端如何构建抽象程序树的方式上有所不同解析方法也可以应用于可视化语言然后一个特定的图形解析器处理一个图形表示。解析器导出其结构并将其存储在抽象程序树中。M. Minas [10,11,12]支持这种解析方法。但是,它将程序表示为一个图,而不是一棵树。图的两个右分支5表示支持输入的交互式创建的前端结构编辑器负责插入、删除或修改到目前为止构造的程序的子结构的操作编辑器是为特定的语言而专门化的这意味着,它编写或绘制语言结构的固定部分,并指导用户编写具有正确结构的程序这样的结构编辑器存在于文本语言中[15]也是视觉语言。在这四种情况中的任何一种情况下,前端都会构建一个抽象树。它是后续阶段的中心数据结构。因此,语义分析和转换的阶段可以使用用于视觉语言和文本语言的标准方法和工具来实现在本文的其余部分,我们将介绍使用专用的交互式结构编辑器作为前端(即图5中最右侧的分支)来实现可视化语言的方法和工具。它们由我们的VL-Eli系统生成。它建立在Eli系统之上。后者用于生成语义分析和转换阶段。图6显示了VL-Eli工具集的层次:在基本层上,Eli提供了语言处理的通用工具,Tcl/Tk[13]用于实现结构编辑器的图形用户界面,约束求解器Parcon[5]为图形布局的某些策略提供了实现技术中间层的VL-Generator接受可视化语言结构的描述,并使用下面一层的工具为它们实现结构编辑器。最顶层包含一个可视模式库。它们中的每一个都代表了视觉语言结构的一般概念。它可以被实例化以创建具体的视觉构造。这种模式包含了所有的技术-12联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)5见图6。 VL-Eli工具集使用以下级别指定和实现这种语言结构所必需的专业知识。下一节将更深入地描述这种方法。第4章生成可视化编辑器:与抽象树视觉模式是我们设计视觉语言和为它们生成结构编辑器语言开发人员为他的视觉语言的每个构造识别某些模式,从库中实例化预编码的解决方案,并将其与表示构造的抽象语法部分相生成结构编辑器,使得它在抽象程序树上执行实例化操作,以可视化构造并与它们交互。抽象程序树被用作表示编译器和翻译器的输入的中央数据结构。这些树由抽象语法具体化,即在文本语言的情况下,可以从具体语法系统地导出的上下文无关语法。在语言处理器中,分析器或结构编辑器确定输入的结构,并用抽象程序树表示。translator的后续阶段遍历树并使用属性对其进行装饰。它们表示它们所连接的程序构造的属性,例如表达式的类型。某些属性将程序构造与联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)513见图7。 树上下文程序中定义的实体,例如变量或函数。其他属性可以将几个程序构造彼此关联。所有这些技术都被广泛接受为文本语言实现的标准。它们中的大多数也可以用于可视化语言:可视化程序的结构可以用树表示,树由抽象语法指定。树节点的属性表示程序构造的绘图、它们的可变参数以及它们在二维绘图窗格上的位置。可视化程序结构的布局是通过计算来实现的,这些计算与树上下文相关联并确定位置属性。该方法适用于不同的布局计算策略:从简单的树遍历格式化到连接约束求解器。可视化语言通常使用图形方式,如线条或连接器,来表示程序构造,其中相同的关系在文本语言中通过名称绑定来表示。这种关系通常不遵循底层的树结构。然而,它们也可以为视觉语言实现,通过引用树节点或实体描述的属性,如在文本情况下。这种方法在图7中示出。它为状态图可视化了一个抽象的程序树。树结构由可视化状态图语言的抽象语法指定。其生产的子集显示在右下图中。右上方的图指定了与语法符号ANDSuperstate相关联的两个计算。他们绘制边框并打印州名这些计算14联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)5由属性求值器在其树上访问ANDSuperstate类型的节点时执行。在树遍历上执行计算,如针对所有类型的树节点单独指定的那样,是属性评估的一般原则。它在结构编辑器中应用于• 绘制图形元素,• 计算布局属性,• 处理用户交互,• 计算和检查语言结构的属性,以及• 将它们转化为目标文本。像Liga [6]这样的系统从属性语法规范中生成这样的树遍历属性赋值器,它将属性和计算与抽象程序树的上下文相关联。VL-Eli系统就是基于这种方法开发的,专门用于生成可视化结构编辑器。在VL-Eli之上,我们开发了一层可重用的可视化模式。为此,我们分析了大量不同风格的视觉语言我们可以将他们所有的语言结构归类为少量(大约10个)视觉概念:例如视觉概念列表的特征是并排绘制一个有序的元素序列,使得整个列表形成一个矩形。布局受元素的图形需求和整个列表所嵌入的上下文的图形需求的影响。提供了交互操作来将元素插入列表和从中删除一个元素。像序列的方向、西到东、北到南等属性都是开放的,以便在实例化时决定,以及元素之间分隔符的图形表示。在我们的系统中,视觉模式是一个通用的规范,视觉概念、参数化计算以产生图形表示、布局其元素以及执行交互操作。集合、形式、线条和表格是视觉模式的进一步示例。它们的规范被收集在一个库中,供设计师和视觉语言的实现者使用(图1)。8)。我们考虑状态图的ANDSuperstate来演示如何使用视觉模式。任何ANDSuperstate将由如图9的左上部分所示的矩形表示。这是一个由两个字段组成的表单,一个字段用于名称,另一个字段用于区域列表。该需求 与 库 的 Form 模 式 我 们 将 它 的 一 个 实 例 与 抽 象 语 法 中 的 符 号ANDSuperstate相根据其生产,ANDSuperstate由ASName和ASRegionList组成。它们在Form模式的这个实例中扮演FormElements的角色。该实例通过计算表示的某个图形来专门化联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)515图8.第八条。视觉模式库见图9。 利用视觉模式属性代表类似地,List模式是为ASRegionList实例化的,ASRegion扮演ListElements的角色。在这种情况下,实例通过其方向和参数来专门化,这些参数决定了元素如何分离。通用参数允许从视觉模式创建大量不同的实例。 它们与图9的示例中所示的图形表示一致。还可以确定更复杂的图形属性,例如从三种不同的布局策略中选择一种。我们使用我们的可视化模式库为几种风格非常不同的可视化语言生成了结构编辑器。结果是,对于他们中的每一个人,16联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)5图10个。模式在不同语言中的占有语言构造的实例可以完全被库中的模式实例所覆盖。图10指示这些语言中的四种语言的示例中的模式的占用。如果可视化语言的设计和结构编辑器的实现可以通过为每个语言构造实例化一个可视化模式来实现,那么通过重用库中的代码可以避免大量的实现工作。特别是以下任务的实现不需要手动• 图形数据结构的管理• 拉伸和再拉伸,• 布局算法,• 交互式插入和删除,• 用户界面.更重要的是,语言实现者不需要理解解决这些任务的技术。 语言实现者的特征可以由以下几个方面来描述:• 发展抽象语法,联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)517• 为每个语言结构选择并实例化视觉模式• 参数化实例化,以及• 贡献基本的图形元素。对于图3所示的语言,这些贡献相当于以下规格的大小:• 街道:2460线• Petri-Nets:220行• Micro-Pascal:570行• 正则表达式:540行大小大致与抽象语法中产生式的数量成比例。它们不包括结构编辑器之后的转换器阶段的实现。5结论在这个讲座中,我们提出了一种视觉语言的设计方法及其实现。其核心概念是选择视觉模式及其实例化的语言建设。可视化模式提供了可重用的规范和可视化结构编辑器解决的任务的实现。这些模式与视觉语言的抽象语法结构相关联。生成的结构编辑器构建抽象程序树来表示程序。因此,语言处理的标准技术可以应用于解决编辑之外的进一步翻译任务。该方法由分层的工具系统支持。它基于Eli等语言处理工具和图形用户界面(Tcl/Tk)。该工具集已成功地用于几个现实的项目。我们计划在编制了足够数量的用户手册后,尽快向公众提供。 该方法和工具集已被证明是有用的许多不同的图形风格的视觉语言。特别是,它非常适合领域特定语言的设计和实现。引用[1] 伊莱网站http://www.uni-paderborn.de/fachbereich/AG/agkastens/elihome.html。[2] Proc. 第一届ACM-SIGPLAN领域专用语言研讨会,DSL '97,法国巴黎,1997年1月。18联合卡斯滕斯角Schmidt/Electronic Notes in Theoretical Computer Science 148(2006)5[3] J. C.克里夫兰 生成应用程序生成器。 IEEE Software,5(4):25[4] R. W. Gray,V. P. Heuring,S. P. Levi,A. M. Sloane和W. M.等等Eli:一个完整的,可扩展的编译器构造系统。Communications of the ACM,35(2):121-131,Feb. 1992.[5]P. Griebel等人,将约束求解器集成到实时动画环境中。在1996年IEEE Symposium on Visual Languages,第12IEEE Comp.Soc. Press,1996.[6] 联合 卡斯滕斯 编译器构造环境中的属性文法系统。 在属性文法、应用和系统国际暑期学校会议录,计算机科学讲义第545卷,第380-400页。Springer Verlag,1991年。[7] 联合Kastens和P. Pfahler。领域特定语言的组合设计与实现。In R. N. Horspool,编辑,IFIPTC2 WG 2.4 Working Conference on System Implementation 2000 : Languages ,Methods and Tools,第152查普曼厅,1998年。[8] 联 合 Kastens , P. Pfahler , and M. 俊 作 。 Eli 系 统 在 Proceedings 7th InternationalConference on Classifier Construction CCSpringer Verlag,Mar. 1998年[9] C. W. 克鲁格软件复用。ACM Computing Surveys,24(2):131[10] O. Koth 和M. 米纳斯生成图编辑器提供徒手编辑以及语法指导编辑。在联合APPLIGRAPH/GETGRATS研讨会上的图形转换系统(GraTra[11] M. 米纳斯Spezi fikation und Generierung graphischer Diagrammeditoren. Shaker-Verlag,2001年。[12] M.米纳斯基于超图变换的图表编辑器生成器的概念与实现。Science of ComputerProgramming,44(2):157-180,Aug. 2002年。[13] J. K.奥斯特豪特Tcl:一种可嵌入的命令语言。USENIX协会冬季会议记录,1990年。[14] Pfahler和U.卡斯滕斯语言的设计和选择的实现。在Proc. 1stACM-SIGPLAN Workshop onDomain-Specific-Languages,DSL技术报告,伊利诺伊大学香槟分校,1997年。[15] T. W.代表和T.泰特尔鲍姆合成器生成器:一个用于构建基于语言的编辑器的系统。Springer-Verlag,1989.[16] C.施密特和U。卡斯滕斯使用基于模式的规范实现可视化语言。软件-实践和经验,35(2):121-131,11月。2003年。[17] W. M. Waite和G.好极了建筑公司。施普林格,纽约,1984年。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功