Home > Store

Software Language Engineering: Creating Domain-Specific Languages Using Metamodels, Rough Cuts

Rough Cuts

  • Available to Safari Subscribers
  • About Rough Cuts
  • Rough Cuts are manuscripts that are developed but not yet published, available through Safari. Rough Cuts provide you access to the very latest information on a given topic and offer you the opportunity to interact with the author to influence the final publication.

Not for Sale

Description

  • Copyright 2009
  • Pages: 240
  • Edition: 1st
  • Rough Cuts
  • ISBN-10: 0-321-60644-2
  • ISBN-13: 978-0-321-60644-0

This is a working draft of a pre-release book. It is available before the published date as part of the Rough Cuts service.

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.

Sample Content

Table of Contents

Background Information  xvii

Preface    xix

Foreword  xxvii

Chapter 1: Why Software Language Engineering?   1

1.1 An Increasing Number of Languages 1

1.2 Software Languages  3

1.3 The Changing Nature of Software Languages   4

1.3.1 Graphical versus Textual Languages   5

1.3.2 Multiple Syntaxes 6

1.4 The Complexity Crisis    7

1.5 What We Can Learn From ...    8

1.5.1 Natural-Language Studies    9

1.5.2 Traditional Language Theory 10

1.5.3 Graph Theory 10

1.6 Summary   12

Chapter 2: Roles in Language Engineering   15

 

2.1 Different Processes, Different Actors  15

2.2 The Language User   16

2.2.1 Tool Set of the Language User   17

2.3 The Language Engineer    19

2.3.1 Tool Set for the Language Engineer   19

2.3.2 Tool Generators   20

2.4 Summary   21

Chapter 3: Languages and Mograms  23

 

3.1 What Is a Language? 23

3.1.1 Mogram, or Linguistic Utterance 24

3.1.2 Primitive Language Elements and Libraries 26

3.2 Abstraction Levels and Expressiveness  27

3.2.1 Abstract versus Incomplete  29

3.2.2 Raising the Level of Abstraction 29

3.2.3 Growing Business Expectations   31

3.2.4 Languages and Abstraction Levels 32

3.3 Domain-Specific Languages     33

3.3.1 Domain-Specific versus General Languages  33

3.3.2 Domain Experts versus Computer Experts    33

3.3.3 Large User Group versus Small User Group  34

3.3.4 Horizontal DSLs versus Vertical DSLs 35

3.3.5 DSLs versus Frameworks and APIs 37

3.3.6 DSLs as Software Languages  37

3.4 Summary   38

Chapter 4: Elements of a Language Specification 39

4.1 Language Specification   39

4.1.1 Forms of a Mogram 40

4.1.2 Parts   41

4.1.3 Creation Process  42

4.1.4 An Example   43

4.2 Formalisms to Specify Languages   47

4.2.1 Context-Free Grammars  47

4.2.2 Attributed Grammars    49

4.2.3 Graph Grammars    51

4.2.4 UML Profiling 52

4.2.5 Metamodeling 53

4.2.6 Formalism of Choice   

Updates

Submit Errata

More Information