List of Figures xvii List of Tables xxv Foreword xxvii Preface xxix
About the Authors xxxv Chapter 1 Domain-Specific Development 1
Introduction 1
Domain-Specific Development 2
Examples 4
Benefits 10
Languages 11
Textual DSLs 15
Graphical DSLs 20
Aspects of Graphical DSLs 23
DSLs in Visual Studio 27
The Customization Pit 32
UML 34
Summary 40
Chapter 2 Creating and Using DSLs 41 Introduction 41
Process: Incremental Development of DSLs 41
Creating a DSL in Visual Studio 57
A Second DSL: The Project Definition DSL 77
Architecture of the DSL Tools 78
Summary 85
Chapter 3 Domain Model Definition 87 Introduction 87
The Domain Model Designer 88
The In-Memory Store 89
Domain Classes 92
Domain Relationships 98
Generating a Designer with No Shapes 108
The Generated Code 109
More about Domain Classes 115
More about Domain Properties 119
More on Domain Relationships and Roles 122
More about the Store 129
Summary 131
Chapter 4 Presentation 133 Introduction 133
Graphical Notation--Overview 134
Diagram and Editor 137
Shapes 146
Connectors 164
Decorators 167
Customizing the Graphical Notation in Code 173
Explorer 180
Properties Window 188
Summary 195
Chapter 5 Creation, Deletion, and Update Behavior 197 Introduction
197
Element Creation 197
Connection Builders 216
Element Deletion 229
Summary 234
Chapter 6 Serialization 237 Introduction 237
Saving and Loading Models and Diagrams 238
Model XML File Format 239
Elements and Properties 242
Relationships 243
Cross-Referencing 245
Diagram XML File Format 251
Versioning and Migration 254
The XML Schema 257
Customization 258
Generated Serialization Code 264
Summary 273
Chapter 7 Constraints and Validation 275 Introduction 275
Choosing Hard or Soft Constraints? 277
Soft Constraints in the DSL Tools 280
Hard Constraints in the DSL Tools 295
Rules 296
Putting Together Hard and Soft Constraints 299
Summary 307
Chapter 8 Generating Artifacts 309 Introduction 309
Artifact Generation Styles 311
Complex Relationships and Round-Tripping 321
The Templatization Process 325
Syntax of a Text Template 341
Problems of Large-Scale, Real-World Artifact Generation 349
Advanced Customizations 351
Summary 366
Chapter 9 Deploying a DSL 369 Introduction 369
Files Needed to Install a Designer 370
Getting Started--Creating a Setup Project 373
Setup Project Contents 376
Customizing Setup 377
The .dslsetup Format 378
Refreshing the Installation Files 387
Package Load Key 388
Deploying Text Templates for Code Generation 390
Summary 396
Chapter 10 Advanced DSL Customization 397 Introduction 397
Tools for Customization 397
Responding to Changes 402
DSL Shell Architecture 426
How to Add a Menu Command 429
Building the DSL Diagram into Another Interface 435
Implementing Copy and Paste 437
Shape Containers 442
Summary 453
Chapter 11 Designing a DSL 455 Introduction 455
Identifying Variability 456
Developing the Domain Model 460
Developing the Notation 468
Defining Validation Constraints 475
Developing and Evolving the Framework 479
Testing 484
Evolving a DSL 489
What Makes a Good DSL? 491
Summary 498
Conclusion 499
Index 503
Domain Specific Languages (DSL) and Domain-Driven Design (DDD) are two related concepts that have been kicking around the edges of the software engineering world for a few years, but have recently started to move much more towards center stage. A DSL is a language specially geared to working within a particular area of interest: it might be a vertical domain such as telephone design, or a horizontal one like workflow. Some well-known examples of DSLs are HTML and SQL. What is radically new is the idea of creating your own DSL for your own project. Microsoft has actually been at the forefront of promoting the use of DSLs, and has recently announced the Microsoft DSL Tools. The Microsoft DSL Tools will help developers create their own languages more easily, and work together very closely with Visual Studio Team System. This book's authors are the main designers of the Microsoft DSL Tools. They've written a book that is straightforwardly focused on understanding and using these tools; it intends to provide a detailed yet readable reference to the tools.
Steve Cook joined Microsoft in 2003 to work on the DSL Tools.
Previously, he was a Distinguished Engineer at IBM, which he
represented in the UML 2.0 specification process at the OMG. He has
worked in the IT industry for 30 years, as architect, programmer,
author, consultant, and teacher. He was one of the first people to
introduce object-oriented programming into the UK, and has
concentrated on languages, methods, and tools for modeling since
the early 1990s.
Gareth Jones is a lead developer in the DSL Tools team. He's been
at Microsoft since 1997 doing various developer jobs such as
building bespoke enterprise solutions, running the development of
Microsoft UK's small business portal, and managing a consultancy
team. Before joining Microsoft, he spent seven years leading
development projects in the intelligence analysis, simulation, and
aerospace industries.
Stuart Kent joined Microsoft in 2003 to work on the DSL Tools.
Previously, he was an academic and consultant, with a reputation in
modeling and model-driven development. He has over 50 publications
to his name and made significant contributions to the UML 2.0 and
MOF 2.0 specifications. He is a member of the editorial board of
the journal Software and Systems Modeling, and on the steering
committee for the MoDELS series of conferences. He has a Ph.D. in
computing from Imperial College, London.
Alan Cameron Wills was a methodology consultant for almost a
decade, and used to get very frustrated when people asked about
good tools to support the methods. So he was very pleased to join
Microsoft in 2003 to help in the DSL Tools project. He has a Ph.D.
in computer science, and was joint creator of the Catalysis
approach to component-based development. He gets excited about
software factories, photography, sailing, and hills.
![]() |
Ask a Question About this Product More... |
![]() |