Efficient Editor Generation for Compositional DSLs in Eclipse
|
|
|
- Rodney Quinn
- 10 years ago
- Views:
Transcription
1 Efficient Editor Generation for Compositional DSLs in Eclipse Holger Krahn, Bernhard Rumpe, and Steven Völkel Institute for Software Systems Engineering Niedersächsische Technische Hochschule, Standort Braunschweig, Germany Abstract. When a domain specific language (DSL) shall be commonly used, it is important for the development team to have a comfortable editor well integrated in the project s development environment. As DSL are rather often subject to changes, efficient development and evolvement of a comfortable editor is an important success criterion for the acceptance of domain specific languages. In this paper we demonstrate how this issue is addressed in the MontiCore DSL development framework. Basically an extension of the MontiCore DSL definition language can be used to efficiently generate DSL editors for Eclipse. The generation tool also supports the compositional language definition features of MontiCore and allows therefore the reuse of existing language and editor definitions. 1 Introduction Domain specific languages (DSL) have a crucial advantage over general purpose languages. They allow us to describe the elements, relations and constraints of a certain domain a lot more concise and compact. However, there are many domains and technical spaces out there and we will see a lot of new DSLs coming up in the future, many of them to be used in software development projects. Especially these types of DSLs are predestinated for a textual realization [4]. The development of a new, but usable domain specific language involves various activities. Far too often the development activities for a DSL usually focus on concrete and abstract syntax only. Sometimes also an informal document, describing the semantics is provided, and of course the development of appropriate tooling to assist the purpose the DSL is a central aspect. This usually involves a code generator to transform the language into an executable form, but sometimes also test code generation or simulation to study essential properties of the system under development are needed. The editor environment for such a newly defined language is a far too often neglected labor intensive development work that does not directly contribute to the project, but only helps the developers to become more effective later on. Therefore, a comfortable editor is an important success factor for a DSL, when a new, and for other developers unknown DSL has to compete with a general purpose language (GPL) like Java. For GPLs the existing tools are usually mature and support the user with a sophisticated user interface. DSLs therefore must be supplemented by a similar development environment. The Eclipse platform [1] is an ideal target for this kind of approach. First, the platform supports the user by a full-functional Java-IDE including among others an incremental compiler. Second, the user is supported by various build and version management utilities which are essential for efficient software development. Third, due to Eclipse s extensible nature, it allows integrating new plugins for DSLs. The downside of this approach is, that due to the flexibility and power of the Eclipse platform, the provided interfaces for DSL-tooling are rather complex and still lack stability. This means a lot of experience is needed to develop and maintain a sophisticated language support. To make our MontiCore DSL framework [2, 3, 8 10, 14] as introduced in Section 2 more comfortable for [KRV07] H. Krahn, B. Rumpe, S. Völkel. Efficient Editor Generation for Compositional DSLs in Eclipse. In: Proceedings of the 7th OOPSLA Workshop on Domain-Specific Modeling (DSM' 07), Montreal, Quebec, Canada Technical Report TR-38, Jyväskylä University, Finland
2 language development, we have added technology to the framework that helps deriving DSL editor configurations based on their language definition. For this purpose we identified an extension of the MontiCore language definition format [10] that allows the generation of specific Eclipse plugins to integrate editors and code generators in the Eclipse platform without further knowledge about the platform itself. Therefore the developer can concentrate on the language development and the tool integration is developed and maintained inside the MontiCore framework for every DSL. The rest of this paper is structured as follows. In Section 2 we explain the basic principles of our extended grammar format that is used to define languages in the MontiCore framework. In Section 3 we explain how an extension of this grammar format can be used to generate Eclipse plugins. To explain this extension a bit further, we applied it to a demonstrating example in Section 4. Section 5 explains other approaches whereas Section 6 concludes this paper. 2 Language definition using MontiCore Using the MontiCore framework a DSL is defined by an extended context-free grammar that determines concrete textual syntax as well as the internal representation (abstract syntax). The grammar is similar to the input language of common parser generators, but allows defining non-compositional associations and inheritance for the abstract syntax. Fig. 1 contains a simple demonstrating example with three nonterminals Greeting, Person, and VIP. Further details can be found in [10]. MontiCore-Grammar 1 grammar HelloWorld { 2 3 ident NAME = 4 ( a.. z )+; 5 6 ident NUM = 7 ( )+ : int; 8 9 Greeting = 10 "Hello" 11 Person ("," Person)* "!"; Person = 14 NAME; VIP extends Person = 17 NAME assets:num; 18 } Fig. 1. Example of an MontiCore grammar and induced abstract syntax A production has a name and body (right hand side) separated by =. The body contains nonterminals (reference to other rules) and terminals. The usual concepts for structuring the body are alternatives (separated by ) and blocks (in parenthesis). Blocks, nonterminals and terminals can have the cardinality? (optional), * (unbounded cardinality) or + (at least one). Furthermore, blocks, nonterminals and terminals respectively their presence can be named (in form of a prefix like assets: ) in order to access these elements in the abstract syntax.
3 The abstract syntax is realized by heterogeneous typed Java classes where the named elements are represented as attributes. To distinguish them from further attributes that can be added to mimic attribute grammars [7], we call these special form of synthesized attributes production attributes. The MontiCore grammar supports two kinds of modularity concepts: First, multiple language inheritance (similar to [12]) to reuse a language definition by specifying the delta only. Second, language embedding where language fragments with explicit holes are used. These holes have to be filled by other grammars at configuration time to form a complete language. Multiple languages can be bundled to a DSLTool that executes algorithms, so called workflows, on the languages instances. The framework simplifies reoccurring challenges like error messages, file creation, loading of depending instances and logging. The MontiCore grammar language has a flexible concept definition mechanism to specify further properties of the language under design. In the following the concept named texteditor is used to define the Eclipse integration. 3 Generation of Editors We divide the generation of Eclipse-based editors into three levels. First, the fragment level contains functionalities which depend on language fragments (including language inheritance) as described in Section 2. Second, functionalities which are specific for a complete language or depend on the composition of fragments to a complete language are defined on the language level. And third, the tool level describes functionalities which depend on several languages bundled to a deployable Eclipse plugin. 3.1 Fragment Level Grammar fragments can be enriched by editor attributes which are used to define several aspects of a generated texteditor specific for the current grammar fragment. In order to define these aspects, the concept called texteditor is included in a fragment definition whose functionalities are introduced in the following. Syntaxhighlighting. MontiCore offers a build-in mechanism for the usage of comments similar to Java: single-line comments are preceded by // and are terminated at the end of the line whereas multi-line comments are delimited by /* and */. These comment definitions are also used in the generated editor: Each language instance is partitioned into comment (in green) and code regions. Furthermore, keywords which will be colored in magenta inside code regions are defined by a commaseparated list. Folding. Folding allows to collapse/uncollapse code regions in order to get more overview of the language instance. Small symbols are shown next to different code regions, a minus as symbol to collapse a region, a plus as symbol to uncollapse. When collapsing a region, the according code is abbreviated by the first line followed by two dots. Doing so, the delevoper can concentrate on the important parts whereas the uninteresting but necessary parts (e.g., the list of imports in Java) can be hidden. MontiCore connects the definitions of nonterminals and the definitions of regions to be foldable. A comma-separated list of nonterminal names is used to define which regions can be folded in the generated editor. Outline. An outline visualizes the structure of a language instance in a tree view which consists of segments representing different parts of the instance. MontiCore allows to define nonterminal-specific segments. Therefore, each segment is related to a nonterminal and can include a path to an icon
4 which can be used in order to visualize the type of the segment and an instance-specific text which consists of combinations of static text and production attributes of the corresponding nonterminal. Figure 2 shows an addition to the grammar from Figure 1. In this example, each instance of the nonterminal Person is represented by a segment in the outline containing the defined icon and the word person followed by his name. Note that it is possible to use an arbitrary combination of static strings and production attributes. 1 concept texteditor { MontiCore-Grammar 2 segment: Person ("pict/person.gif") show: "Person" name; 3 } Fig. 2. Definition of segments in MontiCore Compositionality on Fragment Level. The compositionality on the fragment level is particularly targeted at grammar inheritance which is not only reflected in the abstract and concrete syntax of the involved languages but also in the functionality of the generated editors. Editor attributes defined for a supergrammar are reused in order to generate editors for a subgrammar. Therefore, all keywords, foldings, and outline segments of the supergrammar are automatically evaluated whereas it is still possible to customize them. Doing so, it is possible to extend the list of keywords by defining the additional keywords only. Furthermore, it is possible to add new foldings and segments by defining them in the normal way. By this strategy, it is possible to create a library of language fragments including their editor definitions which then can serve as basis when defining a new language by inheritence or embedding. This minimizes the effort for developing new DSLs as well as their specific editors. 3.2 Language Level Several functionalities are dedicated to a concrete combination of fragments in a specific editor and therefore, cannot be expressed at the fragment level. A prominent example are error messages: compiler errors and errors occurring in a syntactic analysis (also denoted by semantic analysis in compiler theory) typically depend on which fragments are combined. Furthermore, editor actions, such as code formatting, code generation, or model composition are often developed for a specific fragment combination. Therefore, MontiCore supports the declaration of editor-specific functionalities in a subsection of the DSLTool definition - the concept texteditor. Error Messages. Adequate and understandable error messages are one crucial criterion for a successful adoption of a language. This is especially important for syntax-driven editors. Error messages should not be shown in textual form inside a console but should be integrated into the environment. The problems view inside Eclipse offers a possibility to show error messages and to connect them to a file and a line within that file. By selecting a marker the file is automatically opened and the line is highlighted. MontiCore automatically produces problem reports for generated components which are shown inside the problems view inside Eclipse. Furthermore, hand-written components such as syntactic analyzers can be integrated into the parsing process by adding their class names in the workflow section of the editor concept. These components can produce problem reports which lead to the same effect as for generated components.
5 Editor Actions. It is possible to add context menu items to a generated text editor by implementing the interface shown in Figure 3 and adding the class name and the name of the context menu item in the editor concept. Since some functionalities such as refactoring depend on the specific position/string the user has selected, both information are forwarded to the hand-written code. Furthermore, the current editor is forwarded in order to gain access to the filename, to the whole project and thus to all other files within the project, or to write back refactored code. Fig. 3. Interface IEditorAction Another prominent example for editor actions is code formatting. MontiCore allows to define pretty printers for languages on the fragment level which are combined automatically and can be included in an editor as format action. Navigator Actions. Editor actions are hooked in the context menu of a generated text editor. However, there are often functionalities which depend on more than one input file, e.g. composition of models. Therefore, the developer can hook in hand-written functionalities into the navigator view of Eclipse similar to editor actions. This navigator view shows all projects and their contents such as files and folders within the workspace. The user is able to select different resources and to invoke the context menu depending on them. Again, the developer implements the interface as shown Figure 4 and adds the name of the implementing class and the name of the context menu item to the editor definition. For convenience, the run method has a parameter which maps each selected input file to its project. Fig. 4. Interface INavigatorAction Compositionality on Language Level. In order to support compositional definitions of languages we decided to use a two-stage strategy. First, the language combination defined in the DSLTool is evaluated and all involved editor definitions are analyzed and combined. Second, we generate the functionalities as a plugin depending on the first stage resulting in a combined tool. Doing so, the functionalities such as the segments in the outline result from the combination of the definitions of all involved fragments. The most important advantage is that the definitions are independent from each other regardless which fragments will be combined. Beyond that, there is no redundancy: each functionality is defined only once even if the fragment is used in several language combinations. Thus, changes in a fragment are immediately reflected in all language combinations (and therefore tools) the fragment is involved in. We decided for a strict separation between language and fragment level functionalities as this enables to reuse fragments in a new composition as well as to reuse different languages in a new
6 project without re-implementing the tool support. Thus, we are not only able to set up a library of composable language fragments but a library which consists of languages and language specific editors which can be reused in new project settings with minimal effort. 3.3 Compositionality on Tool Level DSLs are typically defined to solve a clear cut task. Several languages may be used to describe all aspects of the system under design. In order to support the composition of languages and their specific tools into deployable products it is necessary to combine the editor definitions in a generated plugin instead of generating a plugin for all editors separately and to install them in parallel which is unpractical if tools shall handle cooperating languages. This is especially important if a fixed set of languages (e.g. a specific subset of the UML) is used to describe a system. Therefore, MontiCore allows to define more than one editor in a single project. All grammars are handled separately and the plugin description/manifest file which is necessary for each Eclipse plugin is composed of all editor-specific information. However, it is still possible to generate plugins seperately for each language if desired and to install them in parallel. Furthermore, the generated parts can be supplemented by handwritten plugins such as a debugger or simulation engine. 4 A Demonstrating Example To demonstrate the introduced capabilities of MontiCore we use a simplified and adapted version of message sequence charts [5]. MSCs are used to describe actions between objects or processes (referred to as instances). Instances transfer messages via send and receive events. Furthermore, conditions can be added to an instance, they are used to describe invariants in an appropriate language which have to be valid at a certain point of time. Conditions can be valid for a specific instance, at a bundle of instances, or all instances. Figure 5 shows a graphical and the according textual version of message sequence charts combined with Java for the conditions. The first step towards a textual version is to define the grammar in MontiCore as outlined in Figure 6. MSCs consist of a name and set of instances and Methods (line 7). Instances in turn have also a name and several Events (line 9). SendEvent, ReceiveEvent, and Condition implement the Event interface and can therefore be used in an instance (line 11-21). Furthermore, SendEvents pass a message to a receiver, ReceiveEvents are defined analogously (line 11-15). Conditions (line 17-21) have a name and can be shared with all other instances (determined by the keywords shared all) or with specific instances (determined by shared followed by the the names of the instances in a comma-separated list). Both Cond and Method are marked as external rule (line 4 and 5) in order to combine the MSC language with any other language. In order to define the properties of the generated editor on the fragment level the concept texteditor has to be added to the basic grammar as shown in lines of Figure 6. The first part is to define the keywords which have to be colored in the code area in a comma separated list (line 24). Since we use the standard comments, the resulting editor automatically recognizes comment regions displayed in green. Foldable code regions allow to collapse/uncollapse parts of the code in order to get more overview of the instance under design. A comma separated list (line 25) defines the nonterminals to be foldable, in this example an MSC, an instance, and a condition. Segments describe the items to be shown inside the outline. As example we describe the segment for SendEvents (lines 26-27). The outline item should consist of a small icon (pict/arrow.gif) and an instance-specific text. This text in turn should be Send to followed by the name of the receiver, a colon, and the message. In this example, MSCs should be combined with Java as action language, hence we have to define the Java grammar and the editor attributes in an analogous form to MSC. We omit details here for
7 1 msc mail{ 2 MontiCore-Grammar 3 instance sender{ 4 out message to receiver; 5 in response from receiver; 6 } 7 8 instance receiver{ 9 in message from sender; 10 condition inbox { 11 checkinbox() 12 } 13 out response to sender; 14 } public boolean checkinbox() { 17 return receiver.messages > 0; 18 } 19 } Fig. 5. Simple MSCs in diagrammatical and textual version the sake of space. Note that both definitions are completely standalone, i.e. the MSC grammar and the corresponding concept editor attributes do not know anything about the grammar/editor they are combined with. In order to combine the editors on the language level, the concept texteditor has to be added to the DSLTool definition as shown in Figure 7. Lines 3-5 combine the languages: the MSC-parser is used as start-parser (line 2), Java expressions are embedded into MSCs by replacing the external nonterminal cond (line 3) whereas methods are used to replace the external nonterminal method (line 4/5). Lines 7-10 combines the pretty printers which leads to a format action in the resulting editor as described in Section 3.2. The concept texteditor consists of several parts which describe the behavior and the functionalities of the resulting editor. We describe the most important points. Line 13 defines the class of the tool which is used to process the text inside the editor. This tool is manually written, command line arguments can be used in order to define the workflows which have to be executed (parsing, symbol table building, etc.). Line 14 defines additional workflows which should be executed when the editor evaluates the text. We implemented 2 workflows: symtab for building a symbol table and check for checking context conditions. The declaration of symtab and check leads to arguments which are passed to the tool. These workflows are able to add problem reports to the processed file leading to error messages inside Eclipse (c.f. Section 3.2). The last functionalities of our example are editor and navigator actions. The former are added to the context menu of the generated editor, the latter can be used inside the context menu of the navigator. Both actions consist of a name to be shown in the context menu and the name of class which realizes the functionality. As example we implemented an algorithm which generates traces for an MSC which is realized as editor action in line 15. Furthermore, we implemented a class which vertically composes 2 or more MSCs as navigator action (line 17).
8 1 grammar MSC { MontiCore-Grammar 2 3 interface Event; 4 external Cond; 5 external Method; 6 7 MSC = "msc" name:ident "{" (Instance Method)* "}"; Instance = "instance" name:ident "{" Event* "}"; 11 SendEvent implements Event = 12 "out" message:ident "to" receiver:ident ";"; ReceiveEvent implements Event = 15 "in" message:ident "from" sender:ident ";"; Condition implements Event = "condition" name:ident 18 (shared:["shared"] 19 (sharedwithall:["all"] sharedwith:ident ("," sharedwith:ident)*) 20 )? 21 ( "{" Cond "}" ";"); concept texteditor { 24 keywords: msc, instance, in, out, to, from, condition, shared, all; 25 foldable: MSC, Instance, Condition; 26 segment: SendEvent ("pict/arrow.gif") 27 show: "Send to " receiver ":" message; 28 // further segments 29 } 30 } Fig. 6. Definition of MSCs The definitions desribed so far are sufficient to generate a language specific editor for MSCs combined with Java as embedded language. The most important functionalities are shown in Figure 8 and Figure 9. Furthermore, Table 1 shows some key figures of the example. Lines of code DSL-specification (handwritten) 2,379 Java-Code (handwritten code generation) 3,296 Java-Code (generated editor) 2,413 Table 1. Key figures for MSC example
9 MontiCore-Grammar 1 rootfactory MSCRootFactory for MSCRoot<MCCompilationUnit>{ 2 mc.examples.msc.msc.msc.mccompilationunit mscdefinition <<start>>; 3 mc.examples.msc.java.javadsl.expression cond in mscdefinition.cond; 4 mc.examples.msc.java.javadsl.methoddeclaration method in 5 mscdefinition.method; 6 7 prettyprint { 8 mc.examples.msc.msc.prettyprint.mscconcreteprettyprinter; 9 mc.examples.msc.java.javadslconcreteprettyprinter; 10 } 11 } 12 concept texteditor { 13 tool: "mc.examples.msc.msc.msctool"; 14 workflows: symtab, check; 15 menuitem Generate Trace 16 ("mc.examples.msc.msc.action.generatetraceaction"); 17 navigatoritem Compose 18 ("mc.examples.msc.msc.compose.composeaction"); 19 } Fig. 7. Excerpt from language and editor composition for MSCs and Java Fig. 8. Resulting Editor for MSCs
10 Fig. 9. Problem Reports and Navigator Actions 5 Related work DSL are often developed using special language workbenches [11, 13, 17] that supply the user with help to develop the language efficiently. These workbenches allow the definition of languages and the generation of editors that look similar to the meta environment as they use a common code base. In contrast to our approach [11] and [13] generate graphical editors. The SAFARI project [16] allows to develop programming languages and their Eclipse integration. In contrast to their approach, we focused on a pure textual approach that is needless integrated with our language definition and avoided wizards that - to our impression - hinder language evolution. In [6] is described how textual syntax and as a further step the frontend of a compiler can be derived from an abstract syntax as first step towards a generation of text-based IDE. The generation of language-specific editors is not performed. XText is part of the openarchitectureware project [15] and can be used in order to generate Eclipse-based editors from a grammar definition. These editors provide similar functionalities to the editors generated by MontiCore. However, there are some important differences between xtext and our approach. The most important is that we aim at compositional DSL and tools, wheras xtext concentrates on standalone grammars. 6 Conclusion In this paper we introduced an extension of the MontiCore grammar format to generate Eclipse plugins for simplifying the development of DSLs. We especially investigated how modular language development can supported by modular editor definitions. We identified elements that are best defined at fragment, language or tool level to maximize the reuse for future development. In the future we like to explore the generation of further tool support for Eclipse by supplying the language developer with a convenient interface for defining refactorings for the language under design. In addition graphical outlines that supplement the textual interface could be generated from the user input. As proof of concept we are currently bootstrapping an editor for MontiCore itself.
11 Acknowledgement: The work presented in this paper is undertaken as a part of the MODELPLEX project. MODELPLEX is a project co-funded by the European Commission under the Information Society Technologies Sixth Framework Programme ( ). Information included in this document reflects only the authors views. The European Community is not liable for any use that may be made of the information contained herein. References 1. Eclipse Website 2. Hans Grönniger, Holger Krahn, Bernhard Rumpe, and Martin Schindler. Integration von Modellen in einen codebasierten Softwareentwicklungsprozess. In Proceedings of Modellierung 2006 (LNI P-82), Hans Grönniger, Holger Krahn, Bernhard Rumpe, Martin Schindler, and Steven Völkel. Monti- Core Ein Framework zur Erstellung und Verarbeitung domänenspezifischer Sprachen. Technical Report Informatik-Bericht , Software Systems Engineering Institute, Braunschweig University of Technology, Hans Grönniger, Holger Krahn, Bernhard Rumpe, Martin Schindler, and Steven Völkel. Textbased Modeling. In 4th International Workshop on Software Language Engineering, ITU-TS. ITU-TS Recommendation Z.120: Message Sequence Chart 1999 (MSC99). Technical report, ITU-TS, Geneva, Anneke Kleppe. Towards the Generation of a Text-Based IDE from a Language Metamodel. In ECMDA-FA, pages , Donald F. Knuth. Semantics of context-free languages. Mathematical systems theory, 12: , Holger Krahn and Bernhard Rumpe. Techniques For Lightweight Generator Refactoring. In Proceedings of Summer School on Generative and Transformational Techniques in Software Engineering (LNCS 4143). Springer, Holger Krahn, Bernhard Rumpe, and Steven Völkel. Roles in Software Development using Domain Specific Modelling Languages. In Proceedings of the 6th OOPSLA Workshop on Domain- Specific Modeling 2006, pages , Finland, University of Jyväskylä. 10. Holger Krahn, Bernhard Rumpe, and Steven Völkel. Integrated Definition of Abstract and Concrete Syntax for Textual Languages. In Proceedings of Models 2007, to be published. 11. Akos Ledeczi, Miklos Maroti, Arpad Bakay, Gabor Karsai, Jason Garrett, Charles Thomason, Greg Nordstrom andjonathan Sprinkle, and Peter Volgyesi. The Generic Modeling Environment. In International Workshop on Intelligent Signal Processing (WISP). IEEE, Marjan Mernik, Mitja Lenič, Enis Avdičauˇ sević, and Viljem ˇ Zumer. Multiple Attribute Grammar Inheritance. In D. Parigot and M. Mernik, editors, Second Workshop on Attribute Grammars and their Applications, WAGA 99, pages 57 76, Amsterdam, The Netherlands, INRIA rocquencourt. 13. MetaCase Website MontiCore Website OpenArchitectureWare Website Safari Website. projects.nsf/ pages/safari.index.html. 17. Safari Website.
Textual Modeling Languages
Textual Modeling Languages Slides 4-31 and 38-40 of this lecture are reused from the Model Engineering course at TU Vienna with the kind permission of Prof. Gerti Kappel (head of the Business Informatics
On General-purpose Textual Modeling Languages. On General-purpose Textual Modeling Languages
On General-purpose Textual Modeling Languages On General-purpose Textual Modeling Languages Martin Mazanec and Ondřej Macek Martin Mazanec and Ondřej Macek Department of Computer Science, FEL, Czech Technical
CommentTemplate: A Lightweight Code Generator for Java built with Eclipse Modeling Technology
CommentTemplate: A Lightweight Code Generator for Java built with Eclipse Modeling Technology Jendrik Johannes, Mirko Seifert, Christian Wende, Florian Heidenreich, and Uwe Aßmann DevBoost GmbH D-10179,
Development of Tool Extensions with MOFLON
Development of Tool Extensions with MOFLON Ingo Weisemöller, Felix Klar, and Andy Schürr Fachgebiet Echtzeitsysteme Technische Universität Darmstadt D-64283 Darmstadt, Germany {weisemoeller klar schuerr}@es.tu-darmstadt.de
today 1,700 special programming languages used to communicate in over 700 application areas.
today 1,700 special programming languages used to communicate in over 700 application areas. Computer Software Issues, an American Mathematical Association Prospectus, July 1965, quoted in P. J. Landin
COCOVILA Compiler-Compiler for Visual Languages
LDTA 2005 Preliminary Version COCOVILA Compiler-Compiler for Visual Languages Pavel Grigorenko, Ando Saabas and Enn Tyugu 1 Institute of Cybernetics, Tallinn University of Technology Akadeemia tee 21 12618
1 Introduction. 2 An Interpreter. 2.1 Handling Source Code
1 Introduction The purpose of this assignment is to write an interpreter for a small subset of the Lisp programming language. The interpreter should be able to perform simple arithmetic and comparisons
MDE Adoption in Industry: Challenges and Success Criteria
MDE Adoption in Industry: Challenges and Success Criteria Parastoo Mohagheghi 1, Miguel A. Fernandez 2, Juan A. Martell 2, Mathias Fritzsche 3 and Wasif Gilani 3 1 SINTEF, P.O.Box 124-Blindern, N-0314
Implementation and Integration of a Domain Specific Language with oaw and Xtext
Implementation and Integration of a Domain Specific Language with oaw and Xtext by Volker Koster MT AG, Okt. 2007 www.mt-ag.com [email protected] Implementation and Integration of a Domain Specific Language
Integrating Content Assist into Textual Modelling Editors
Integrating Content Assist into Textual Modelling Editors Markus Scheidgen [email protected] Abstract: Intelligent, context sensitive content assist (also known as code completion) plays
Industrial Experiences on Using DSLs in Embedded Software Development
Industrial Experiences on Using DSLs in Embedded Software Development Juha-Pekka Tolvanen MetaCase Ylistönmäentie 31 FI-40500 Jyväskylä, Finland [email protected] 1 Introduction Domain-Specific Modeling
Modeling the User Interface of Web Applications with UML
Modeling the User Interface of Web Applications with UML Rolf Hennicker,Nora Koch,2 Institute of Computer Science Ludwig-Maximilians-University Munich Oettingenstr. 67 80538 München, Germany {kochn,hennicke}@informatik.uni-muenchen.de
CoSMIC: An MDA Tool Suite for Application Deployment and Configuration
CoSMIC: An MDA Tool Suite for Application Deployment and Configuration Tao Lu, Emre Turkay, Aniruddha Gokhale*, Douglas Schmidt Institute for Software Integrated Systems Vanderbilt University, Nashville
creating a text-based editor for eclipse
creating a text-based editor for eclipse By Elwin Ho Contact author at: [email protected] June 2003 2003 HEWLETT-PACKARD COMPANY TABLE OF CONTENTS Purpose...3 Overview of the Eclipse Workbench...4 Creating
Source Code Translation
Source Code Translation Everyone who writes computer software eventually faces the requirement of converting a large code base from one programming language to another. That requirement is sometimes driven
ProcDSL + ProcEd - a Web-based Editing Solution for Domain Specific Process-Engineering
ProcDSL + ProcEd - a Web-based Editing Solution for Domain Specific Process-Engineering Christian Berger Tim Gülke RWTH Aachen University Software Engineering Group Ahornstraße 55 52074 Aachen, Germany
Organization of DSLE part. Overview of DSLE. Model driven software engineering. Engineering. Tooling. Topics:
Organization of DSLE part Domain Specific Language Engineering Tooling Eclipse plus EMF Xtext, Xtend, Xpand, QVTo and ATL Prof.dr. Mark van den Brand GLT 2010/11 Topics: Meta-modeling Model transformations
A QUICK OVERVIEW OF THE OMNeT++ IDE
Introduction A QUICK OVERVIEW OF THE OMNeT++ IDE The OMNeT++ 4.x Integrated Development Environment is based on the Eclipse platform, and extends it with new editors, views, wizards, and additional functionality.
A Multi-layered Domain-specific Language for Stencil Computations
A Multi-layered Domain-specific Language for Stencil Computations Christian Schmitt, Frank Hannig, Jürgen Teich Hardware/Software Co-Design, University of Erlangen-Nuremberg Workshop ExaStencils 2014,
WHITE PAPER. Peter Drucker. intentsoft.com 2014, Intentional Software Corporation
We know now that the source of wealth is something specifically human: knowledge. If we apply knowledge to tasks we already know how to do, we call it productivity. If we apply knowledge to tasks that
A Cloud Architecture for an Extensible Multi-Paradigm Modeling Environment
A Cloud Architecture for an Extensible Multi-Paradigm Modeling Environment Jonathan Corley 1 and Eugene Syriani 2 1 University of Alabama, U.S.A. 2 Université de Montréal, Canada Abstract. We present the
An eclipse-based Feature Models toolchain
An eclipse-based Feature Models toolchain Luca Gherardi, Davide Brugali Dept. of Information Technology and Mathematics Methods, University of Bergamo [email protected], [email protected] Abstract.
Towards Software Configuration Management for Test-Driven Development
Towards Software Configuration Management for Test-Driven Development Tammo Freese OFFIS, Escherweg 2, 26121 Oldenburg, Germany [email protected] Abstract. Test-Driven Development is a technique where
YouTrack MPS case study
YouTrack MPS case study A case study of JetBrains YouTrack use of MPS Valeria Adrianova, Maxim Mazin, Václav Pech What is YouTrack YouTrack is an innovative, web-based, keyboard-centric issue and project
Model-Driven Development - From Frontend to Code
Model-Driven Development - From Frontend to Code Sven Efftinge [email protected] www.efftinge.de Bernd Kolb [email protected] www.kolbware.de Markus Völter [email protected] www.voelter.de -1- Model Driven
Embedded Software Development with MPS
Embedded Software Development with MPS Markus Voelter independent/itemis The Limitations of C and Modeling Tools Embedded software is usually implemented in C. The language is relatively close to the hardware,
Integration of Application Business Logic and Business Rules with DSL and AOP
Integration of Application Business Logic and Business Rules with DSL and AOP Bogumiła Hnatkowska and Krzysztof Kasprzyk Wroclaw University of Technology, Wyb. Wyspianskiego 27 50-370 Wroclaw, Poland [email protected]
Automatic Test Data Generation for TTCN-3 using CTE
Automatic Test Data Generation for TTCN-3 using CTE Zhen Ru Dai, Peter H. Deussen, Maik Busch, Laurette Pianta Lacmene, Titus Ngwangwen FraunhoferInstitute for Open Communication Systems (FOKUS) Kaiserin-Augusta-Allee
Software Development Kit
Open EMS Suite by Nokia Software Development Kit Functional Overview Version 1.3 Nokia Siemens Networks 1 (21) Software Development Kit The information in this document is subject to change without notice
Integrating Prose as First-Class Citizens with Models and Code
Integrating Prose as First-Class Citizens with Models and Code Markus Voelter independent/itemis, [email protected] Abstract. In programming and modeling we strive to express structures and behaviors as
Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder
Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder Matt Department of Computer Science and Engineering University of Minnesota [email protected] Abstract We present
Introduction to Generative Software Development
Introduction to Generative Software Development Krzysztof Czarnecki University of Waterloo [email protected] www.generative-programming.org Goals What is to be achieved? Basic understanding of Generative
Cedalion A Language Oriented Programming Language (Extended Abstract)
Cedalion A Language Oriented Programming Language (Extended Abstract) David H. Lorenz Boaz Rosenan The Open University of Israel Abstract Implementations of language oriented programming (LOP) are typically
Towards Collaboration on Accessible UML Models
his is a draft version of the full paper to be presented at the AI4VIP workshop colocated with MuC'15. owards Collaboration on Accessible UML Models Stephan Seifermann, Henning roenda Software Engineering,
Modeling Cloud Messaging with a Domain-Specific Modeling Language
Modeling Cloud Messaging with a Domain-Specific Modeling Language Gábor Kövesdán, Márk Asztalos and László Lengyel Budapest University of Technology and Economics, Budapest, Hungary {gabor.kovesdan, asztalos,
CASE workbenches. . Software tools to support specific process phases. Objectives. Chapter 26. Chapter 26 CASE Workbenches
Chapter 26 Chapter 26 CASE Workbenches Learning Objective. Software tools to support specific process phases Frederick T Sheldon Assistant Professor of Computer Science Washington State University From
Automatic Generation of Consistency-Preserving Edit Operations for MDE Tools
Automatic Generation of Consistency-Preserving Edit Operations for MDE Tools Michaela Rindt, Timo Kehrer, Udo Kelter Software Engineering Group University of Siegen {mrindt,kehrer,kelter}@informatik.uni-siegen.de
Jos Warmer, Independent [email protected] www.openmodeling.nl
Domain Specific Languages for Business Users Jos Warmer, Independent [email protected] www.openmodeling.nl Sheet 2 Background Experience Business DSLs Insurance Product Modeling (structure) Pattern
Modeling Turnpike: a Model-Driven Framework for Domain-Specific Software Development *
for Domain-Specific Software Development * Hiroshi Wada Advisor: Junichi Suzuki Department of Computer Science University of Massachusetts, Boston [email protected] and [email protected] Abstract. This
A Model-Driven Approach for the Development of an IDE for Spacecraft On-Board Software
A Model-Driven Approach for the Development of an IDE for Spacecraft On-Board Software Luigi Pomante Sante Candia Emilio Incerto Università degli Studi dell Aquila Center of Excellence DEWS - ITALY [email protected]
UML PROFILING AND DSL
UML PROFILING AND DSL version 17.0.1 user guide No Magic, Inc. 2011 All material contained herein is considered proprietary information owned by No Magic, Inc. and is not to be shared, copied, or reproduced
A Case Study on Model-Driven and Conventional Software Development: The Palladio Editor
A Case Study on Model-Driven and Conventional Software Development: The Palladio Editor Klaus Krogmann, Steffen Becker University of Karlsruhe (TH) {krogmann, sbecker}@ipd.uka.de Abstract: The actual benefits
Syntax Check of Embedded SQL in C++ with Proto
Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 383 390. Syntax Check of Embedded SQL in C++ with Proto Zalán Szűgyi, Zoltán Porkoláb
EXCEL IMPORT 18.1. user guide
18.1 user guide No Magic, Inc. 2014 All material contained herein is considered proprietary information owned by No Magic, Inc. and is not to be shared, copied, or reproduced by any means. All information
A Business Process Services Portal
A Business Process Services Portal IBM Research Report RZ 3782 Cédric Favre 1, Zohar Feldman 3, Beat Gfeller 1, Thomas Gschwind 1, Jana Koehler 1, Jochen M. Küster 1, Oleksandr Maistrenko 1, Alexandru
METADATA-DRIVEN QLIKVIEW APPLICATIONS AND POWERFUL DATA INTEGRATION WITH QLIKVIEW EXPRESSOR
METADATA-DRIVEN QLIKVIEW APPLICATIONS AND POWERFUL DATA INTEGRATION WITH QLIKVIEW EXPRESSOR A QlikView Technical Brief Document March 2013 qlikview.com Introduction This technical brief highlights a subset
Defining and Checking Model Smells: A Quality Assurance Task for Models based on the Eclipse Modeling Framework
Defining and Checking Model Smells: A Quality Assurance Task for Models based on the Eclipse Modeling Framework Thorsten Arendt a, Matthias Burhenne a, Gabriele Taentzer a a Philipps-Universität Marburg,
mbeddr: an Extensible MPS-based Programming Language and IDE for Embedded Systems
mbeddr: an Extensible MPS-based Programming Language and IDE for Embedded Systems Markus Voelter independent/itemis [email protected] Daniel Ratiu Bernhard Schaetz Fortiss {ratiu schaetz}@fortiss.org Bernd
Object-Oriented Software Specification in Programming Language Design and Implementation
Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama
Über die Semantik von Modellierungssprachen
Über die Semantik von Modellierungssprachen und des UML-Standards Prof. Dr. Bernhard Rumpe Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 What is a model? And why do we need modeling
A Framework of Model-Driven Web Application Testing
A Framework of Model-Driven Web Application Testing Nuo Li, Qin-qin Ma, Ji Wu, Mao-zhong Jin, Chao Liu Software Engineering Institute, School of Computer Science and Engineering, Beihang University, China
Mbeddr and Software Documentation
Integrating Prose as First-Class Citizens with Models and Code Markus Voelter independent/itemis, [email protected] Abstract. In programming and modeling we strive to express structures and behaviors as
POOSL IDE User Manual
Embedded Systems Innovation by TNO POOSL IDE User Manual Tool version 3.0.0 25-8-2014 1 POOSL IDE User Manual 1 Installation... 5 1.1 Minimal system requirements... 5 1.2 Installing Eclipse... 5 1.3 Installing
JetBrains ReSharper 2.0 Overview Introduction ReSharper is undoubtedly the most intelligent add-in to Visual Studio.NET 2003 and 2005. It greatly increases the productivity of C# and ASP.NET developers,
A DSL Toolkit for Deferring Architectural Decisions in DSL-Based Software Design
A DSL Toolkit for Deferring Architectural Decisions in DSL-Based Software Design Uwe Zdun Information Systems Institute Vienna University of Technology Vienna, Austria [email protected] A number
Xtext Documentation. September 26, 2014
Xtext Documentation September 26, 2014 Contents I. Getting Started 9 1. 5 Minutes Tutorial 10 1.1. Creating A New Xtext Project........................ 10 1.2. Generating The Language Infrastructure...................
Simplifying e Business Collaboration by providing a Semantic Mapping Platform
Simplifying e Business Collaboration by providing a Semantic Mapping Platform Abels, Sven 1 ; Sheikhhasan Hamzeh 1 ; Cranner, Paul 2 1 TIE Nederland BV, 1119 PS Amsterdam, Netherlands 2 University of Sunderland,
SCADE System 17.0. Technical Data Sheet. System Requirements Analysis. Technical Data Sheet SCADE System 17.0 1
SCADE System 17.0 SCADE System is the product line of the ANSYS Embedded software family of products and solutions that empowers users with a systems design environment for use on systems with high dependability
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment Wyatt Spear, Allen Malony, Alan Morris, Sameer Shende {wspear, malony, amorris, sameer}@cs.uoregon.edu
Revel8or: Model Driven Capacity Planning Tool Suite
Revel8or: Model Driven Capacity Planning Tool Suite Liming Zhu 1,2, Yan Liu 1,2, Ngoc Bao Bui 1,2,Ian Gorton 3 1 Empirical Software Engineering Program, National ICT Australia Ltd. 2 School of Computer
A methodology for measuring software development productivity using Eclipse IDE
Proceedings of the 9 th International Conference on Applied Informatics Eger, Hungary, January 29 February 1, 2014. Vol. 2. pp. 255 262 doi: 10.14794/ICAI.9.2014.2.255 A methodology for measuring software
The Mjølner BETA system
FakePart I FakePartTitle Software development environments CHAPTER 2 The Mjølner BETA system Peter Andersen, Lars Bak, Søren Brandt, Jørgen Lindskov Knudsen, Ole Lehrmann Madsen, Kim Jensen Møller, Claus
A Common Metamodel for Code Generation
A Common Metamodel for Code Generation Michael PIEFEL Institut für Informatik, Humboldt-Universität zu Berlin Unter den Linden 6, 10099 Berlin, Germany [email protected] ABSTRACT Models can
Towards Integrating Modeling and Programming Languages: The Case of UML and Java
Towards Integrating Modeling and Programming Languages: The Case of UML and Java Patrick Neubauer, Tanja Mayerhofer, and Gerti Kappel Business Informatics Group, Vienna University of Technology, Austria
Department of Veterans Affairs. Open Source Electronic Health Record Services
Department of Veterans Affairs Open Source Electronic Health Record Services MTools Installation and Usage Guide Version 1.0 June 2013 Contract: VA118-12-C-0056 Table of Contents 1. Installation... 3 1.1.
DataDirect XQuery Technical Overview
DataDirect XQuery Technical Overview Table of Contents 1. Feature Overview... 2 2. Relational Database Support... 3 3. Performance and Scalability for Relational Data... 3 4. XML Input and Output... 4
Meta-Model specification V2 D602.012
PROPRIETARY RIGHTS STATEMENT THIS DOCUMENT CONTAINS INFORMATION, WHICH IS PROPRIETARY TO THE CRYSTAL CONSORTIUM. NEITHER THIS DOCUMENT NOR THE INFORMATION CONTAINED HEREIN SHALL BE USED, DUPLICATED OR
tools that make every developer a quality expert
tools that make every developer a quality expert Google: www.google.com Copyright 2006-2010, Google,Inc.. All rights are reserved. Google is a registered trademark of Google, Inc. and CodePro AnalytiX
CD++Builder: An Eclipse-Based IDE For DEVS Modeling
CD++Builder: An Eclipse-Based IDE For DEVS Modeling Chiril Chidisiuc Gabriel A. Wainer Carleton University Dept. of Systems and Computer Engineering 1125 Colonel By. Ottawa, ON. K1S 5B6. Canada. 1-613-520-2600
[Refer Slide Time: 05:10]
Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture
Knowledge Engineering for Business Rules in PROLOG
Knowledge Engineering for Business Rules in PROLOG Ludwig Ostermayer, Dietmar Seipel University of Würzburg, Department of Computer Science Am Hubland, D 97074 Würzburg, Germany {ludwig.ostermayer,dietmar.seipel}@uni-wuerzburg.de
Component visualization methods for large legacy software in C/C++
Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University [email protected]
VICCI. The Eclipse Modeling Framework (EMF) A Practical Introduction and Technology Overview. Dipl.-Inf. Christoph Seidl
VICCI Visual and Interactive Cyber-Physical Systems Control and Integration The Eclipse Modeling Framework (EMF) A Practical Introduction and Technology Overview Dipl.-Inf. Christoph Seidl Overview of
Eclipse with Mac OSX Getting Started Selecting Your Workspace. Creating a Project.
Eclipse with Mac OSX Java developers have quickly made Eclipse one of the most popular Java coding tools on Mac OS X. But although Eclipse is a comfortable tool to use every day once you know it, it is
Software quality improvement via pattern matching
Software quality improvement via pattern matching Radu Kopetz and Pierre-Etienne Moreau INRIA & LORIA {Radu.Kopetz, [email protected] Abstract. Nested if-then-else statements is the most common
Towards Collaborative Requirements Engineering Tool for ERP product customization
Towards Collaborative Requirements Engineering Tool for ERP product customization Boban Celebic, Ruth Breu, Michael Felderer, Florian Häser Institute of Computer Science, University of Innsbruck 6020 Innsbruck,
A terminology model approach for defining and managing statistical metadata
A terminology model approach for defining and managing statistical metadata Comments to : R. Karge (49) 30-6576 2791 mail [email protected] Content 1 Introduction... 4 2 Knowledge presentation...
A Framework for Creating Domain-specific Process Modeling Languages
A Framework for Creating Domain-specific Process Modeling Languages Henning Heitkötter Department of Information Systems, University of Münster, Münster, Germany [email protected] Keywords:
jeti: A Tool for Remote Tool Integration
jeti: A Tool for Remote Tool Integration Tiziana Margaria 1, Ralf Nagel 2, and Bernhard Steffen 2 1 Service Engineering for Distributed Systems, Institute for Informatics, University of Göttingen, Germany
Execution of A Requirement Model in Software Development
Execution of A Requirement Model in Software Development Wuwei Shen, Mohsen Guizani and Zijiang Yang Dept of Computer Science, Western Michigan University {wwshen,mguizani,zijiang}@cs.wmich.edu Kevin Compton
A Generic Transcoding Tool for Making Web Applications Adaptive
A Generic Transcoding Tool for Making Applications Adaptive Zoltán Fiala 1, Geert-Jan Houben 2 1 Technische Universität Dresden Mommsenstr. 13, D-01062, Dresden, Germany [email protected]
