Domain-Specific Development with Visual Studio DSL Tools [NOOK Book]


Domain-Specific Languages (DSLs)--languages geared to specific vertical or horizontal areas of interest--are generating growing excitement from software engineers and architects. DSLs bring new agility to the creation and evolution of software, allowing selected design aspects to be expressed in terms much closer to the system requirements than standard program code, significantly reducing development costs in large-scale projects and product lines. In this breakthrough book, four leading experts reveal exactly ...

See more details below
Domain-Specific Development with Visual Studio DSL Tools

Available on NOOK devices and apps  
  • NOOK Devices
  • NOOK HD/HD+ Tablet
  • NOOK
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac
  • NOOK Study

Want a NOOK? Explore Now

NOOK Book (eBook)
$27.49 price
(Save 42%)$47.99 List Price


Domain-Specific Languages (DSLs)--languages geared to specific vertical or horizontal areas of interest--are generating growing excitement from software engineers and architects. DSLs bring new agility to the creation and evolution of software, allowing selected design aspects to be expressed in terms much closer to the system requirements than standard program code, significantly reducing development costs in large-scale projects and product lines. In this breakthrough book, four leading experts reveal exactly how DSLs work, and how you can make the most of them in your environment.

With Domain-Specific Development with Visual Studio DSL Tools , you'll begin by mastering DSL concepts and techniques that apply to all platforms. Next, you'll discover how to create and use DSLs with the powerful new Microsoft DSL Tools--a toolset designed by this book's authors. Learn how the DSL Tools integrate into Visual Studio--and how to define DSLs and generate Visual Designers using Visual Studio's built-in modeling technology.

In-depth coverage includes

  • Determining whether DSLs will work for you
  • Comparing DSLs with other approaches to model-driven development
  • Defining, tuning, and evolving DSLs: models, presentation, creation, updates, serialization, constraints, validation, and more
  • Creating Visual Designers for new DSLs with little or no coding
  • Multiplying productivity by generating application code from your models with easy-to-use text templates
  • Automatically generating configuration files, resources, and other artifacts
  • Deploying Visual Designers across the organization, quickly and easily
  • Customizing Visual Designers for specialized process needs

List of Figures
List of Tables



About the Authors
Chapter 1 Domain-Specific Development
Chapter 2 Creating and Using DSLs
Chapter 3 Domain Model Definition
Chapter 4 Presentation
Chapter 5 Creation, Deletion, and Update Behavior
Chapter 6 Serialization
Chapter 7 Constraints and Validation
Chapter 8 Generating Artifacts
Chapter 9 Deploying a DSL
Chapter 10 Advanced DSL Customization
Chapter 11 Designing a DSL
Read More Show Less

Product Details

  • ISBN-13: 9780132701556
  • Publisher: Pearson Education
  • Publication date: 6/7/2007
  • Sold by: Barnes & Noble
  • Format: eBook
  • Edition number: 1
  • Pages: 576
  • File size: 13 MB
  • Note: This product may take a few minutes to download.

Meet the Author

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.

Read More Show Less

Read an Excerpt

This book is a software developer's guide to using the Microsoft Tools for Domain-Specific Languages ("DSL Tools"), which are included in the SDK (Software Development Kit) for Microsoft Visual Studio 2005.

The software industry is showing considerable interest in using "domain-specific languages," an approach to building software that promises to reduce software development costs, especially in large projects. A domain-specific language (DSL) is a language specially geared to working within a particular area of interest: a vertical domain such as telephone design, or a horizontal one like workflow. It may be a programming language or a specification or design language. It may be textual or graphical, or a mixture of both. The language is expressed in terms that are used in a particular domain, such as "connect," "ringtone," or "work item," uncluttered by the details of how those concepts are implemented. Software, configuration files, resources, and other documents can be generated from instances of the language—often many of those artifacts can be generated from one DSL—or the language may be interpreted directly. This makes it much easier to discuss the software at the requirements level, and to make changes in an agile way. In vertical domains, the accessibility of the language to business users helps when discussing requirements with them.

DSLs are not a new idea—HTML and SQL are well-known examples of DSLs. Less widespread, however, is the idea of creating your own DSL for your own project. The purpose of the Microsoft DSL Tools is to reduce the upfront cost of doing so. You can quickly create a range of diagrammatic languages, such as workflow, class,or entity diagrams, and you can create tools for generating artifacts from them. Goals and Scope

This book is for you if you are a software developer or architect using, or thinking about using, the Microsoft DSL Tools. It explains how to create and use languages, how to tune them to your needs, and how to employ them within the context of your project. The book should also be of significant value to readers who are interested in the broader general topic of domain-specific languages, or who wish to compare and contrast different approaches to model-driven development, or tools that support model-driven development. Chapters 1 and 11 discuss the more general topic of domain-specific languages, and how you go about designing one. The middle chapters focus exclusively on providing a detailed yet readable reference on building DSLs and code generators using the DSL Tools.

The book's authors are the main designers of the Microsoft DSL Tools. They have worked together on the product since its inception, and are responsible for most of the key design decisions. Why You Might Want to Use DSL Tools

If you (or your organization) are writing the same or similar code repeatedly, whether within a single large project or over the course of multiple projects, then such code can probably be generated. If this is the case, you should consider using the DSL Tools as a way to generate this code. This is especially the case if the code can be generated from structures that can easily be understood by domain specialists rather than software development specialists. After reading this book, you should be able to assess the capabilities of the DSL Tools to address problems of this kind, either directly or after some customization. Organization of This Book

Chapter 1, Domain-Specific Development, explains the DSL approach, compares it with similar techniques, and introduces typical scenarios in which a DSL is used.

Chapter 2, Creating and Using DSLs, looks at the various parts of the DSL Tools system, shows how they fit together, and introduces the main examples that will be used through the remainder of the book.

Chapter 3, Domain Model Definition, details how to define the concepts of the language.

Chapter 4, Presentation, deals with defining the visual appearance of your language.

Chapter 5, Creation, Deletion, and Update Behavior, covers these important aspects of the behavior of your language.

Chapter 6, Serialization, deals with how models and diagrams in your language are represented in files.

Chapter 7, Constraints and Validation, shows you how to ensure that the users of your language create valid statements.

Chapter 8, Generating Artifacts, shows you how to use your language to drive or configure your system by creating configuration files, program code, resources, and other artifacts.

Chapter 9, Deploying a DSL, explains how to create an installer that will install your finished language on multiple computers.

Chapter 10, Advanced DSL Customization, shows you how to make specialized features of your language (or specialized behavior in the editor) in addition to those provided by the standard definition facilities.

Chapter 11, Designing a DSL, provides a lightweight kit of principles and procedures for developing and evolving languages within the context of your project.

Updates and all of the main examples are available for download at the website What You Need to Use This Book

To get the full value of this book, you need to be reasonably familiar with the facilities that Visual Studio offers to developers of program code, including the code editor and

DSL Tools can be downloaded as part of the Visual Studio SDK and used with Visual Studio Professional Edition and later. Tools created using the DSL Tools can be deployed on Visual Studio Standard Edition and later. The website is the entry point to information about the DSL Tools. There you can find links to where the SDK can be downloaded, a popular online forum with active discussions about the DSL Tools, weblogs containing discussions about the DSL Tools by the authors of this book and others, a tool for reporting bugs and making suggestions, white papers, chats, and other resources.

Read More Show Less

Table of Contents

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

Read More Show Less

Customer Reviews

Average Rating 5
( 1 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously
Sort by: Showing 1 Customer Reviews
  • Anonymous

    Posted May 2, 2013


    Squid base by sky

    Was this review helpful? Yes  No   Report this review
Sort by: Showing 1 Customer Reviews

If you find inappropriate content, please report it to Barnes & Noble
Why is this product inappropriate?
Comments (optional)