DSL Engineering


Book Description

The definitive resource on domain-specific languages: based on years of real-world experience, relying on modern language workbenches and full of examples. Domain-Specific Languages are programming languages specialized for a particular application domain. By incorporating knowledge about that domain, DSLs can lead to more concise and more analyzable programs, better code quality and increased development speed. This book provides a thorough introduction to DSL, relying on today's state of the art language workbenches. The book has four parts: introduction, DSL design, DSL implementation as well as the role of DSLs in various aspects of software engineering. Part I Introduction: This part introduces DSLs in general and discusses their advantages and drawbacks. It also defines important terms and concepts and introduces the case studies used in the most of the remainder of the book. Part II DSL Design: This part discusses the design of DSLs - independent of implementation techniques. It reviews seven design dimensions, explains a number of reusable language paradigms and points out a number of process-related issues. Part III DSL Implementation: This part provides details about the implementation of DSLs with lots of code. It uses three state-of-the-art but quite different language workbenches: JetBrains MPS, Eclipse Xtext and TU Delft's Spoofax. Part IV DSLs and Software Engineering: This part discusses the use of DSLs for requirements, architecture, implementation and product line engineering, as well as their roles as a developer utility and for implementing business logic. The book is available as a printed version (the one your are looking at) and as a PDF. For details see the book's companion website at http: //dslbook.org




Model and Data Engineering


Book Description

This book constitutes the refereed proceedings of the 5th International Conference on Model and Data Engineering, MEDI 2015, held in Rhodes, Greece, in September 2015. The 18 full papers and 9 short papers presented together with 2 invited talks were carefully reviewed and selected from 55 submissions. The papers are organized in topical sections such as modeling and meta modeling; ontology-based modeling, reasoning and reuse; event-B and modeling languages; context modeling and model transformation; data mining; query processing; modeling activities and inference; prediction and recommendation; requirement and systems engineering.




Software Language Engineering


Book Description

Software practitioners are rapidly discovering the immense value of Domain-Specific Languages (DSLs) in solving problems within clearly definable problem domains. Developers are applying DSLs to improve productivity and quality in a wide range of areas, such as finance, combat simulation, macro scripting, image generation, and more. But until now, there have been few practical resources that explain how DSLs work and how to construct them for optimal use. Software Language Engineering fills that need. Written by expert DSL consultant Anneke Kleppe, this is the first comprehensive guide to successful DSL design. Kleppe systematically introduces and explains every ingredient of an effective language specification, including its description of concepts, how those concepts are denoted, and what those concepts mean in relation to the problem domain. Kleppe carefully illuminates good design strategy, showing how to maximize the flexibility of the languages you create. She also demonstrates powerful techniques for creating new DSLs that cooperate well with general-purpose languages and leverage their power. Completely tool-independent, this book can serve as the primary resource for readers using Microsoft DSL tools, the Eclipse Modeling Framework, openArchitectureWare, or any other DSL toolset. It contains multiple examples, an illustrative running case study, and insights and background information drawn from Kleppe’s leading-edge work as a DSL researcher. Specific topics covered include Discovering the types of problems that DSLs can solve, and when to use them Comparing DSLs with general-purpose languages, frameworks, APIs, and other approaches Understanding the roles and tools available to language users and engineers Creating each component of a DSL specification Modeling both concrete and abstract syntax Understanding and describing language semantics Defining textual and visual languages based on object-oriented metamodeling and graph transformations Using metamodels and associated tools to generate grammars Integrating object-oriented modeling with graph theory Building code generators for new languages Supporting multilanguage models and programs This book provides software engineers with all the guidance they need to create DSLs that solve real problems more rapidly, and with higher-quality code.




Fundamentals of DSL Technology


Book Description

The DSL arena is expanding rapidly, making it highly unlikely that any single author can adequately address the breadth and depth of the subject. Responding to the demand of designers worldwide, Fundamentals of DSL Technology combines the strengths of the field's most renowned DSL experts, providing a foundation of all aspects of DSL system design. The volume begins with an introductory three-chapter examination of DSL copper transmission channels, reviewing the basic telephone environment, the physical-layer twisted pair, and the noise environment in the twisted pair channel. The book then explores line codes - laying the foundation for later chapters about other aspects of DSL design - and discusses the basic objectives of DSL service, comparing DSL to other broadband delivery methods. The book concludes with a description of other basic aspects of DSL transmission, covering topics such as trellis codes, Reed-Solomon codes and interleaving, turbo and LDPC codes, basic equalization theory, synchronization, and more.




Domain-Specific Languages


Book Description

This textbook describes the theory and the pragmatics of using and engineering high-level software languages – also known as modeling or domain-specific languages (DSLs) – for creating quality software. This includes methods, design patterns, guidelines, and testing practices for defining the syntax and the semantics of languages. While remaining close to technology, the book covers multiple paradigms and solutions, avoiding a particular technological silo. It unifies the modeling, the object-oriented, and the functional-programming perspectives on DSLs. The book has 13 chapters. Chapters 1 and 2 introduce and motivate DSLs. Chapter 3 kicks off the DSL engineering lifecycle, describing how to systematically develop abstract syntax by analyzing a domain. Chapter 4 addresses the concrete syntax, including the systematic engineering of context-free grammars. Chapters 5 and 6 cover the static semantics – with basic constraints as a starting point and type systems for advanced DSLs. Chapters 7 (Transformation), 8 (Interpretation), and 9 (Generation) describe different paradigms for designing and implementing the dynamic semantics, while covering testing and other kinds of quality assurance. Chapter 10 is devoted to internal DSLs. Chapters 11 to 13 show the application of DSLs and engage with simpler alternatives to DSLs in a highly distinguished domain: software variability. These chapters introduce the underlying notions of software product lines and feature modeling. The book has been developed based on courses on model-driven software engineering (MDSE) and DSLs held by the authors. It aims at senior undergraduate and junior graduate students in computer science or software engineering. Since it includes examples and lessons from industrial and open-source projects, as well as from industrial research, practitioners will also find it a useful reference. The numerous examples include code in Scala 3, ATL, Alloy, C#, F#, Groovy, Java, JavaScript, Kotlin, OCL, Python, QVT, Ruby, and Xtend. The book contains as many as 277 exercises. The associated code repository facilitates learning and using the examples in a course.




Building User-Friendly DSLs


Book Description

Craft domain-specific languages that empower experts to create software themselves. Domain-specific languages put business experts at the heart of software development. These purpose-built tools let your clients write down their business knowledge and have it automatically translated into working software—no dev time required. They seamlessly bridge the knowledge gap between programmers and subject experts, enabling better communication and freeing you from time-consuming code adjustments. Inside Building User-Friendly DSLs you’ll learn how to: • Build a complete Domain IDE for a car rental company • Implement a projectional editor for your DSL • Implement content assist, type systems, expressions, and versioning language aspects • Evaluate business rules • Work with Abstract Syntax Trees • Reduce notated DSL content in concrete syntax into abstract syntax Building User-Friendly DSLs takes you on a carefully-planned journey through everything you need to create your own DSLs. It focuses on building DSLs that are easy for busy business experts to learn and master. By working through a detailed example of a car rental company, you'll see how to create a custom DSL with a modern and intuitive UI that can replace tedious coding activities. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the technology Here’s the central problem of software development: business users know what they need their apps to do, but they don’t know how to write the code themselves. As a developer, this means you spend a lot of time learning the same domain-specific details your user already knows. Now there’s a way to bridge this gap! You can create a Domain-Specific Language (DSL) that empowers non-technical business users to create and customize their own applications without writing any code. About the book Building User-Friendly DSLs teaches you how to create a complete domain-specific language that looks and works like a web application. These easy-to-use DSLs put the power to create custom software into the hands of business domain experts. As you go, you’ll cover all the essentials, from establishing structure and syntax of your DSL to implementing a user-friendly interface. What's inside • Implement a projectional editor for your DSL • Work with Abstract Syntax Trees • Evaluate business rules About the reader For developers with JavaScript and web development experience. About the author Meinte Boersma is a senior developer and an evangelist of model-driven software development and DSLs. Table of Contents 1 What is a domain-specific language? 2 Representing DSL content as structured data 3 Working with ASTs in code 4 Projecting the AST 5 Editing values in the projection 6 Editing objects in the projection 7 Implementing persistence and transportation of ASTs 8 Generating code from the AST 9 Preventing things from blowing up 10 Managing change 11 Implementing expressions: Binary operations 12 Implementing expressions: Order of operations 13 Implementing a type system 14 Implementing business rules 15 Some topics we didn’t cover




Generative and Transformational Techniques in Software Engineering II


Book Description

The second instance of the international summer school on Generative and Transformational Techniques in Software Engineering (GTTSE 2007) was held in Braga, Portugal, during July 2–7, 2007. This volume contains an augmented selection of the material presented at the school, including full tutorials, short tutorials, and contributions to the participants workshop. The GTTSE summer school series brings together PhD students, lecturers, technology presenters, as well as other researchers and practitioners who are interested in the generation and the transformation of programs, data, models, metamodels, documentation, and entire software systems. This concerns many areas of software engineering: software reverse and re-engineering, model-driven engineering, automated software engineering, generic language technology, to name a few. These areas di?er with regard to the speci?c sorts of metamodels (or grammars, schemas, formats etc.) that underlie the involved artifacts, and with regard to the speci?c techniques that are employed for the generation and the transformation of the artifacts. The ?rst instance of the school was held in 2005 and its proceedings appeared as volume 4143 in the LNCS series.




Models in Software Engineering


Book Description

This book presents a comprehensive documentation of the scientific outcome of 14 satellite events held at the 13th International Conference on Model-Driven Engineering, Languages and Systems, MODELS 2010, held in Oslo, Norway, in October 2010. Besides the 21 revised best papers selected from 12 topically focused workshops, the post-proceedings also covers the doctoral symposium and the educators symposium; each of the 14 satellite events covered is introduced by a summary of the respective organizers. All relevant current aspects in model-based systems design and analysis are addressed. This book is the companion of the MODELS 2010 main conference proceedings LNCS 6394/6395.




Multicarrier Modulation with Low PAR


Book Description

Multicarrier Modulation with Low PAR: Applications to DSL and Wireless provides the first comprehensive formulation of the PAR problem for multicarrier modulation and proposes three new methods for PAR reduction. The information in this book will be vital to practicing engineers, industrial researchers, scientists, graduate and postgraduate researchers, and others working in multicarrier transmission and communication theory. Multicarrier Modulation with Low PAR: Applications to DSL and Wireless serves as a valuable reference to both design engineers and communications theorists, and can also be used for advanced courses on the subject.




Model and Data Engineering


Book Description

This book constitutes the refereed proceedings of the 7th International Conference on Model and Data Engineering, MEDI 2017, held in Barcelona, Spain, in October 2017. The 20 full papers and 7 short papers presented together with 2 invited talks were carefully reviewed and selected from 69 submissions. The papers are organized in topical sections on domain specific languages; systems and software assessments; modeling and formal methods; data engineering; data exploration and exp loitation; modeling heterogeneity and behavior; model-based applications; and ontology-based applications.