Java--Meets Eclipse an IDE for Teaching Java Following the Object-Later Approach

Total Page:16

File Type:pdf, Size:1020Kb

Java--Meets Eclipse an IDE for Teaching Java Following the Object-Later Approach Java--Meets Eclipse An IDE for Teaching Java Following the Object-later Approach Lorenzo Bettini1;∗ and Pierluigi Crescenzi2;† 1Dipartimento di Informatica, University of Turin, Turin, Italy 2Dipartimento di Ingegneria dell’Informazione, University of Florence, Florence, Italy Keywords: DSL, Java, IDE, Eclipse, Xtext, EMF. Abstract: In this paper, we introduce a new Eclipse-based IDE for teaching Java following the object-later approach. In particular, this IDE allows the programmer to write code in Java--, a smaller version of the Java language that does not include object-oriented features. For the implementation of this language we used Xtext, an Eclipse framework for implementing Domain Specific Languages; besides the compiler mechanisms, Xtext also allows to easily implement all the IDE tooling mechanisms in Eclipse. By using Xtext we were able to provide an implementation of Java-- with all the powerful features available when using an IDE like Eclipse (including debugging, automatic building, and project wizards). With our implementation, it is also straightforward to create self-assessment exercises for students, which are integrated in Eclipse and JUnit. 1 INTRODUCTION The Java-- IDE is available as an open source project at https://github.com/Lorenzo Java-- is an application that allows undergraduate stu- Bettini/javamm. dents to learn programming by using a smaller ver- We also provide an Eclipse update site and pre- sion of Java without object-oriented features. This configured Eclipse distributions with Java-- installed, way, students can focus on the basic programming for several architectures. concepts without being distracted by complex con- In the following we will use the term Java-- for structs. The original implementation of Java-- comes denoting both the smaller version of the Java language without any IDE; it provides a GUI, but without the and the application (with or without IDE) for writing advanced tooling mechanisms that are typical of an code in this language. IDE like Eclipse. In this paper, we introduce a new implementation 1.1 Educational Motivation of Java-- that includes a full-featured Eclipse-based IDE. Our IDE provides an Eclipse based editor with Every undergraduate program in computer science in- syntax highlighting, navigation, code completion and troduces its first-year students to programming. Even error markers, not to mention automatic integrated if choosing the most suitable First Programming Lan- building and debugging. This way, the students will guage (in short, FPL) to be taught is still an active de- immediately become familiar with Eclipse. bate topic, there is a general agreement on the fact that By using our implementation of the IDE for such a choice has a significant influence on students’ Java--, it is straightforward for the teachers to cre- learning performances (see, for example, (Koulouri ate exercise projects that students can use for self- et al., 2014)) and, clearly, on the development of stu- assessment. The teacher can rely on existing frame- dents’ programming abilities, both in terms of the works such as JUnit, which is already integrated in programming style and in terms of the coding tech- Eclipse. niques they will adopt during their professional life. ∗ Some common factors that are taken into account Author partially supported by MIUR (proj. CINA), Ate- while choosing the FPL might be its simplicity, its in- neo/CSP (proj. SALT), and ICT COST Action IC1201 BETTY. dustry relevance, its programming paradigm, and the †Author partially supported by MIUR under PRIN available development tools (see, for example, (Pears 2012C4E3KT national research project “AMANDA Al- et al., 2007; Mason and Cooper, 2014)). gorithmics for MAssive and Networked DAta”. As shown in (Farooq et al., 2014), in 2011 C++, Bettini L. and Crescenzi P.. 31 Java–Meets Eclipse - An IDE for Teaching Java Following the Object-later Approach. DOI: 10.5220/0005512600310042 In Proceedings of the 10th International Conference on Software Paradigm Trends (ICSOFT-PT-2015), pages 31-42 ISBN: 978-989-758-115-1 Copyright c 2015 SCITEPRESS (Science and Technology Publications, Lda.) ICSOFT-PT2015-10thInternationalConferenceonSoftwareParadigmTrends Java, and Python were the most frequently used FPLs, programmers can interactively evaluate simple ex- with Python gaining more and more popularity (see, pressions, execute program statements, define vari- for example, (Leping et al., 2009)). This latter trend ables and methods, and invoke methods. Inspired by has been confirmed in the last three years, as wit- JOSH, which was based on a command line interac- nessed, for example, in (Guo, 2014), where the top tion, the Java-- application (see Section 2) has been 39 computer science departments (as ranked by U.S. successively developed and used at the University of News in 2014) have been considered, and, for each Florence, along with an Italian text book (Crescenzi, department, the CS0 and CS1 courses have been ana- 2015). This application allows the user to perform the lyzed in order to determine which language was used. same tasks of JOSH through a simple Graphical User In particular, 8 (respectively, 5) of the top 10 depart- Interface (GUI), which contains three tabbed panels ments, and 27 (respectively, 22) of the top 39 de- that allow the user to edit the code, see any mis- partments teach Python (respectively, Java) in intro- takes that the Java compiler detected, and look at the ductory computer science courses. Python, Java, and standard output (Cecchi et al., 2003). Successively, C++ turn out to be also among the most “lucrative” Java-- has been extended with a self-assessment mod- programming languages, as stated in (Nisen, 2014), ule, which allows the user to implement one or more where the author analyses the data compiled (start- methods solving simple problems, immediately veri- ing from thousands of American job ads) by Burning fying the correctness of the proposed solution (Bettini Glass with Brookings Institution economist Jonathan et al., 2004; Crescenzi et al., 2006). Rothwell, in order to determine which language might As already said, the development of JOSH and of get the worker the best salary. Java-- referred to the “structured programming before A framework to evaluate several existing pro- object oriented programming” teaching paradigm, as gramming languages, for their suitability as an appro- described in (Gibbons, 1998). According to this priate FPL, has been proposed in (Farooq et al., 2014). paradigm the first part of a CS1 course should be By applying this framework to Ada, C, C++, C#, For- taught in order to develop skills with the usual low- tran, Java, Modula-2, Pascal, and Python, the authors level procedural mechanism, that will allow students show that Java obtains the overall highest score and, to gradually build up programs from primitive types thus, conclude that it is the most suitable program- and basic control structures. Only at a later stage stu- ming language (followed by Python and Ada). Even dents should implement object features and test ob- by considering the “demand in industry” and “easy jects, and, thus, be exposed to the conceptual load re- transition” parameter more important than the other lated to the new abstract data type issues. Moreover, parameters, Java turns out to be the language with as stated in (Lewis, 2000), it is worth observing that highest score (followed by Python and C#). the object oriented approach does not abandon typi- As observed in (Koulouri et al., 2014), even if Java cal concepts of a procedural approach: indeed, it aug- has been widely used as a FPL, its complexity “may ments and strengthens them, since implementing an be overwhelming for learners”. In particular, one of object almost always requires a good knowledge of the main complexity sources of this language is the structured programming. Finally, not having objects fact that it is “heavily coupled with object-oriented in a language does not necessarily decrease its edu- concepts”, thus making more difficult to implement cational power and usability; for example, Process- an object-later strategy. A typical example of such ing (Reas and Fry, 2014), a programming language complexity is the implementation of the well-known and a development environment initially created to “hello, world” program, which would require, in ad- teach programming, allows the programmer to eas- dition to the print statement, the definition of a class, ily do professional computer graphic and animations containing a main method (with its “strange” syntax, without object-oriented constructs. both in terms of modifiers and in terms of parame- Even though Java-- allows the programmer to in- ters). teract with a GUI, that includes some features, such as Several tools have been proposed in order to deal syntax coloring, typical of an Integrated Development with the complexity of Java for novice programmers Environment (in short, IDE), this application can- (see Section 4). Some of them were designed in or- not be considered an IDE, since it lacks many other der to teach basic programming concepts (such as features, such as compiler and debugger integration, primitive data types, arrays, control structures, meth- build automation, code completion, and easy naviga- ods and recursion), before exposing the students to tion to definitions. On the other hand, all existing Java classes and objects. An example of such tools is IDEs (such as Eclipse and Netbeans) require the pro- JOSH (Diehl, 2003), which is a Java interpreter de- grammer to deal, since the very beginning, with the signed to ease teaching Java to beginners. With JOSH object-oriented programming paradigm. That is why, 32 Java--MeetsEclipse-AnIDEforTeachingJavaFollowingtheObject-laterApproach in this paper, we propose a new Eclipse-based IDE (see Section 3), that has the same features of Java--, and, thus, allows the programmer to experiment with the basic programming concepts (without necessarily knowing any notion of object-oriented programming), and that, at the same time, has all the advantages of Figure 1: Writing a simple program with the original Java-- being an IDE (see Section 3.1).
Recommended publications
  • Java (Programming Langua a (Programming Language)
    Java (programming language) From Wikipedia, the free encyclopedialopedia "Java language" redirects here. For the natural language from the Indonesian island of Java, see Javanese language. Not to be confused with JavaScript. Java multi-paradigm: object-oriented, structured, imperative, Paradigm(s) functional, generic, reflective, concurrent James Gosling and Designed by Sun Microsystems Developer Oracle Corporation Appeared in 1995[1] Java Standard Edition 8 Update Stable release 5 (1.8.0_5) / April 15, 2014; 2 months ago Static, strong, safe, nominative, Typing discipline manifest Major OpenJDK, many others implementations Dialects Generic Java, Pizza Ada 83, C++, C#,[2] Eiffel,[3] Generic Java, Mesa,[4] Modula- Influenced by 3,[5] Oberon,[6] Objective-C,[7] UCSD Pascal,[8][9] Smalltalk Ada 2005, BeanShell, C#, Clojure, D, ECMAScript, Influenced Groovy, J#, JavaScript, Kotlin, PHP, Python, Scala, Seed7, Vala Implementation C and C++ language OS Cross-platform (multi-platform) GNU General Public License, License Java CommuniCommunity Process Filename .java , .class, .jar extension(s) Website For Java Developers Java Programming at Wikibooks Java is a computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few impimplementation dependencies as possible.ble. It is intended to let application developers "write once, run ananywhere" (WORA), meaning that code that runs on one platform does not need to be recompiled to rurun on another. Java applications ns are typically compiled to bytecode (class file) that can run on anany Java virtual machine (JVM)) regardless of computer architecture. Java is, as of 2014, one of tthe most popular programming ng languages in use, particularly for client-server web applications, witwith a reported 9 million developers.[10][11] Java was originallyy developed by James Gosling at Sun Microsystems (which has since merged into Oracle Corporation) and released in 1995 as a core component of Sun Microsystems'Micros Java platform.
    [Show full text]
  • Not-Dead-Yet--Java-On-Desktop.Pdf
    NOT DEAD YET Java on Desktop About me… Gerrit Grunwald 2012… The desktop is dead… …the future of applications… …is the Web ! 8 years later… My application folder… My applications folder (future) My applications folder (reality) ??? Seems desktop is not dead ! But what about Java ? Available Toolkits AWT Abstract Window Toolkit Abstract Window Toolkit Since 1995 Cross Platform Platform dependent Bound to native controls Interface to native controls SWT Standard Window Toolkit Standard Window Toolkit Based on IBM Smalltalk from 1993 Cross Platform Platform dependent Wrapper around native controls Java Swing Successor to AWT Java Swing Since Java 1.2 (1998) Cross Platform Platform independent Introduced Look and Feels Emulates the appearance of native controls Java FX Script Intended successor to Swing Java FX Script Since Java 1.6 (2008) Cross Platform Platform independent No Java Syntax Declarative way to describe UI's (based on F3 from Chris Oliver) Java FX Successor to Swing Java FX Since Java 7 (2011) Cross Platform Platform independent Port from JavaFX Script to Java Not part of the Java SE distribution since Java 11 Most of these are still in use… Is Java FX dead ? Is Java FX dead ? Open Sourced as OpenJFX (openjfx.io) Driven by the community Can run on mobile using Gluon technology (gluonhq.com) Can run on web using JPro technology (jpro.one) Actively developed and is getting new features too Where does Java on Desktop suck ? Lack of 3rd party controls Swing had great support over years, JavaFX lacks behind Missing features… e.g.
    [Show full text]
  • Scala Tutorial
    Scala Tutorial SCALA TUTORIAL Simply Easy Learning by tutorialspoint.com tutorialspoint.com i ABOUT THE TUTORIAL Scala Tutorial Scala is a modern multi-paradigm programming language designed to express common programming patterns in a concise, elegant, and type-safe way. Scala has been created by Martin Odersky and he released the first version in 2003. Scala smoothly integrates features of object-oriented and functional languages. This tutorial gives a great understanding on Scala. Audience This tutorial has been prepared for the beginners to help them understand programming Language Scala in simple and easy steps. After completing this tutorial, you will find yourself at a moderate level of expertise in using Scala from where you can take yourself to next levels. Prerequisites Scala Programming is based on Java, so if you are aware of Java syntax, then it's pretty easy to learn Scala. Further if you do not have expertise in Java but you know any other programming language like C, C++ or Python, then it will also help in grasping Scala concepts very quickly. Copyright & Disclaimer Notice All the content and graphics on this tutorial are the property of tutorialspoint.com. Any content from tutorialspoint.com or this tutorial may not be redistributed or reproduced in any way, shape, or form without the written permission of tutorialspoint.com. Failure to do so is a violation of copyright laws. This tutorial may contain inaccuracies or errors and tutorialspoint provides no guarantee regarding the accuracy of the site or its contents including this tutorial. If you discover that the tutorialspoint.com site or this tutorial content contains some errors, please contact us at [email protected] TUTORIALS POINT Simply Easy Learning Table of Content Scala Tutorial ..........................................................................
    [Show full text]
  • How to Develop Your Own Dsls in Eclipse Using Xtend and Xtext ?
    How to develop your own DSLs in Eclipse using Xtend and Xtext ? Daniel Strmečki | Software Developer 19.05.2016. BUSINESS WEB APPLICATIONS HOW TO DEVELOP YOUR OWN DSLS IN ECLIPSE USING XTEXT AND XTEND? Content 1. DSLs › What are DSLs? › Kinds of DSLs? › Their usage and benefits… 2. Xtend › What kind of language is Xtend? › What are its benefits compared to classic Java? 3. Xtext › What is a language development framework? › How to develop you own DSL? 4. Short demo 5. Conclusion 2 | 19.05.2016. BUSINESS WEB APPLICATIONS | [email protected] | www.evolva.hr HOW TO DEVELOP YOUR OWN DSLS IN ECLIPSE USING XTEXT AND XTEND? DSL acronym Not in a Telecommunications context: Digital Subscriber Line But in a Software Engineering context: Domain Specific Languages 3 | 19.05.2016. BUSINESS WEB APPLICATIONS | [email protected] | www.evolva.hr HOW TO DEVELOP YOUR OWN DSLS IN ECLIPSE USING XTEXT AND XTEND? Domain Specific Languages General-Purpose Languages (GPLs) › Languages broadly applicable across application domains › Lack specialized features for a particular domain › XML, UML, Java , C++, Python, PHP… Domain specific languages (DSLs) › Languages tailored to for an application in a specific domain › Provide substantial gains in expressiveness and ease of use in their domain of application › SQL, HTML, CSS, Logo, Mathematica, Marcos, Regular expressions, Unix shell scripts, MediaWiki, LaTeX… 4 | 19.05.2016. BUSINESS WEB APPLICATIONS | [email protected] | www.evolva.hr HOW TO DEVELOP YOUR OWN DSLS IN ECLIPSE USING XTEXT AND XTEND? Domain Specific Languages A novelty in software development › DSL for programming numerically controlled machine tools, was developed in 1957–1958 › BNF dates back to 1959 (M.
    [Show full text]
  • Scala for the Impatient
    Scala for the Impatient Copyright © Cay S. Horstmann 2012. All Rights Reserved. The evolution of Java and C++ has slowed down considerably, and programmers who are eager to use more modern language features are looking elsewhere. Scala is an attractive choice; in fact, I think it is by far the most attractive choice for programmers who want to move beyond Java or C++. Scala has a concise syntax that is refreshing after the Java boilerplate. It runs on the Java virtual machine, providing access to a huge set of libraries and tools. It embraces the functional programming style without abandoning object-orientation, giving you an incremental learning path to a new paradigm. The Scala interpreter lets you run quick experiments, which makes learning Scala very enjoyable. And, last but not least, Scala is statically typed, enabling the compiler to find errors, so that you don't waste time finding them later in running programs (or worse, don't find them). I wrote this book for impatient readers who want to start programming with Scala right away. I assume you know Java, C#, or C++, and I won't bore you with explaining variables, loops, or classes. I won't exhaustively list all features of the language, I won't lecture you about the superiority of one paradigm over another, and I won't make you suffer through long and contrived examples. Instead, you will get the information that you need in compact chunks that you can read and review as needed. Scala is a big language, but you can use it effectively without knowing all of its details intimately.
    [Show full text]
  • Programming Groovy.Pdf
    What readers are saying about Programming Groovy More than a tutorial on the Groovy language, Programming Groovy is an excellent resource for learning the advanced concepts of metaob- ject programming, unit testing with mocks, and DSLs. This is a must- have reference for any developer interested in learning to program dynamically. Joe McTee Developer, JEKLsoft Venkat does a fantastic job of presenting many of the advanced fea- tures of Groovy that make it so powerful. He is able to present those ideas in a way that developers will find very easy to internalize. This book will help Groovy developers take their kung fu to the next level. Great work, Venkat! Jeff Brown Member, the Groovy and Grails development teams At this point in my career, I am really tired of reading books that introduce languages. This volume was a pleasant breath of fresh air, however. Not only has Venkat successfully translated his engaging speaking style into a book, he has struck a good balance between introductory material and those aspects of Groovy that are new and exciting. Java developers will quickly grasp the relevant concepts without feeling like they are being insulted. Readers new to the plat- form will also be comfortable with the arc he presents. Brian Sletten Zepheira, LLC You simply won’t find a more comprehensive resource for getting up to speed on Groovy metaprogramming. Jason Rudolph Author, Getting Started with Grails This book is an important step forward in mastering the language. Venkat takes the reader beyond simple keystrokes and syntax into the deep depths of “why?” Groovy brings a subtle sophistication to the Java platform that you didn’t know was missing.
    [Show full text]
  • Expressive and Efficient Model Transformation with an Internal DSL
    Expressive and Efficient Model Transformation with an Internal DSL of Xtend Artur Boronat Department of Informatics, University of Leicester, UK [email protected] ABSTRACT 1 INTRODUCTION Model transformation (MT) of very large models (VLMs), with mil- Over the past decade the application of MDE technology in indus- lions of elements, is a challenging cornerstone for applying Model- try has led to the emergence of very large models (VLMs), with Driven Engineering (MDE) technology in industry. Recent research millions of elements, that may need to be updated using model efforts that tackle this problem have been directed at distributing transformation (MT). This situation is characterized by important MT on the Cloud, either directly, by managing clusters explicitly, or challenges [26], starting from model persistence using XMI serial- indirectly, via external NoSQL data stores. In this paper, we draw at- ization with the Eclipse Modeling Framework (EMF) [31] to scalable tention back to improving efficiency of model transformations that approaches to apply model updates. use EMF natively and that run on non-distributed environments, An important research effort to tackle these challenges was showing that substantial performance gains can still be reaped on performed in the European project MONDO [19] by scaling out that ground. efficient model query and MT engines, such as VIATRA[3] and We present Yet Another Model Transformation Language (YAMTL), ATL/EMFTVM [46], building on Cloud technology either directly, a new internal domain-specific language (DSL) of Xtend for defin- by using distributed clusters of servers explicitly, or indirectly, by ing declarative MT, and its execution engine.
    [Show full text]
  • Advanced-Java.Pdf
    Advanced java i Advanced java Advanced java ii Contents 1 How to create and destroy objects 1 1.1 Introduction......................................................1 1.2 Instance Construction.................................................1 1.2.1 Implicit (Generated) Constructor.......................................1 1.2.2 Constructors without Arguments.......................................1 1.2.3 Constructors with Arguments........................................2 1.2.4 Initialization Blocks.............................................2 1.2.5 Construction guarantee............................................3 1.2.6 Visibility...................................................4 1.2.7 Garbage collection..............................................4 1.2.8 Finalizers...................................................5 1.3 Static initialization..................................................5 1.4 Construction Patterns.................................................5 1.4.1 Singleton...................................................6 1.4.2 Utility/Helper Class.............................................7 1.4.3 Factory....................................................7 1.4.4 Dependency Injection............................................8 1.5 Download the Source Code..............................................9 1.6 What’s next......................................................9 2 Using methods common to all objects 10 2.1 Introduction...................................................... 10 2.2 Methods equals and hashCode...........................................
    [Show full text]
  • Java Programming 2 – Lecture #1 – [email protected]
    Java Programming 2 – Lecture #1 – [email protected] About the Java Programming Language Java is an object-oriented, high-level programming language. It is a platform-neutral language, with a ‘write once run anywhere’ philosophy. This is supported by a virtual machine architecture called the Java Virtual Machine (JVM). Java source programs are compiled to JVM bytecode class files, which are converted to native machine code on platform-specific JVM instances. .java source .class JVM executable code files Java bytecode files JVM machine code compiler runtime Java is currently one of the top programming languages, according to most popularity metrics.1 Since its introduction in the late 1990s, it has rapidly grown in importance due to its familiar programming syntax (C-like), good support for modularity, relatively safe features (e.g. garbage collection) and comprehensive library support. Our First Java Program It is traditional to write a ‘hello world’ program as a first step in a new language: /** * a first example program to print Hello world */ public class Hello { public static void main(String [] args) { System.out.println(“Hello world”); } } Contrast with Python Whereas Python programs are concise, Java programs appear verbose in comparison. Python has dynamic typing, but Java uses static typing. Python scripts are generally interpreted from source, whereas Java programs are compiled to bytecode then executed in a high-performance just-in-time native compiler. 1 E.g. see http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Supporting User Input in Simple Java Programs There are two ways to receive text-based user input in simple programs like our ‘hello world’ example.
    [Show full text]
  • On Modularity and Performances of External Domain-Specific Language Implementations Manuel Leduc
    On modularity and performances of external domain-specific language implementations Manuel Leduc To cite this version: Manuel Leduc. On modularity and performances of external domain-specific language implementa- tions. Software Engineering [cs.SE]. Université Rennes 1, 2019. English. NNT : 2019REN1S112. tel-02972666 HAL Id: tel-02972666 https://tel.archives-ouvertes.fr/tel-02972666 Submitted on 20 Oct 2020 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. THÈSE DE DOCTORAT DE L’UNIVERSITE DE RENNES 1 COMUE UNIVERSITE BRETAGNE LOIRE Ecole Doctorale N°601 Mathèmatique et Sciences et Technologies de l’Information et de la Communication Spécialité : Informatique Par Manuel LEDUC On modularity and performance of External Domain-Specific Language im- plementations Thèse présentée et soutenue à RENNES , le 18 Décembre 2019 Unité de recherche : Equipe DiverSE, IRISA Rapporteurs avant soutenance : Paul Klint, Professeur, CWI, Amsterdam, Pays-Bas Juan De Lara, Professeur, Université autonome de Madrid, Madrid, Espagne Composition du jury : Président : Olivier Ridoux, Professeur, Université de Rennes 1, Rennes, France Examinateurs : Nelly Bencomo, Lecturer in Computer Science, Aston University, Birmingham, Royaume-Uni Jean-Remy Falleri, Maître de conférences HDR, Université de Bordeaux, Bordeaux, France Gurvan Le Guernic, Ingénieur de recherche, DGA, Rennes, France Dir.
    [Show full text]
  • Open Source and Third Party Documentation
    Open Source and Third Party Documentation Verint.com Twitter.com/verint Facebook.com/verint Blog.verint.com Content Introduction.....................2 Licenses..........................3 Page 1 Open Source Attribution Certain components of this Software or software contained in this Product (collectively, "Software") may be covered by so-called "free or open source" software licenses ("Open Source Components"), which includes any software licenses approved as open source licenses by the Open Source Initiative or any similar licenses, including without limitation any license that, as a condition of distribution of the Open Source Components licensed, requires that the distributor make the Open Source Components available in source code format. A license in each Open Source Component is provided to you in accordance with the specific license terms specified in their respective license terms. EXCEPT WITH REGARD TO ANY WARRANTIES OR OTHER RIGHTS AND OBLIGATIONS EXPRESSLY PROVIDED DIRECTLY TO YOU FROM VERINT, ALL OPEN SOURCE COMPONENTS ARE PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. Any third party technology that may be appropriate or necessary for use with the Verint Product is licensed to you only for use with the Verint Product under the terms of the third party license agreement specified in the Documentation, the Software or as provided online at http://verint.com/thirdpartylicense. You may not take any action that would separate the third party technology from the Verint Product. Unless otherwise permitted under the terms of the third party license agreement, you agree to only use the third party technology in conjunction with the Verint Product.
    [Show full text]
  • Handcrafting a Triple Graph Transformation System to Realize Round-Trip Engineering Between UML Class Models and Java Source Code
    Handcrafting a Triple Graph Transformation System to Realize Round-trip Engineering Between UML Class Models and Java Source Code Thomas Buchmann and Sandra Greiner Chair of Applied Computer Science I, University of Bayreuth, Universitätsstrasse 30, 95440, Bayreuth, Germany Keywords: Round-trip Engineering, Model-driven Development, Xtend, Triple Graph Transformation Systems. Abstract: Model transformations are a mandatory requirement for model-driven development, a software engineering discipline, which has become more and more popular during the last decade. Over the years, the concept of unidirectional model transformations and corresponding tool support reached maturity since these kind of transformations are widely used in model-driven engineering, mainly for forward engineering and code generation. In incremental and iterative software engineering processes, forward engineering may be too restrictive since it resembles waterfall-like processes. Thus, bidirectional transformations are required, which aim to provide support for (incrementally) transforming one or more source model to one or more target model and vice versa from only one transformation description. However, they seem to be rarely used in model- driven software development as adequate tool support is missing. On the other hand, programming languages nowadays provide support for higher-level features like closures or lambda expressions which allow to describe transformation patterns in a declarative way. In this paper, we present an approach for round-trip engineering between UML class models and Java source code, which is realized with a triple graph transformation system written in the Xtend programming language. 1 INTRODUCTION and accompanying tools have emerged (Czarnecki and Helsen, 2006). We observe tools, which sup- During the last few years, model-driven software en- port unidirectional batch transformations, e.g.
    [Show full text]