Domain-Specific Development with Visual Studio DSL Tools (Paperback)
暫譯: 使用 Visual Studio DSL 工具的領域特定開發 (平裝本)

Steve Cook, Gareth Jones, Stuart Kent, Alan Cameron Wills

  • 出版商: Addison Wesley
  • 出版日期: 2007-06-01
  • 售價: $2,390
  • 貴賓價: 9.5$2,271
  • 語言: 英文
  • 頁數: 576
  • 裝訂: Paperback
  • ISBN: 0321398203
  • ISBN-13: 9780321398208
  • 相關分類: Visual Studio
  • 已過版

買這商品的人也買了...

商品描述

Description

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

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

商品描述(中文翻譯)

描述

領域特定語言(Domain-Specific Languages, DSLs)是針對特定垂直或水平領域的語言,正引起軟體工程師和架構師日益增長的興趣。DSLs 為軟體的創建和演進帶來了新的靈活性,允許選定的設計方面以更接近系統需求的方式表達,顯著降低大型專案和產品線的開發成本。在這本突破性的書中,四位領域專家將揭示 DSLs 的運作方式,以及如何在您的環境中充分利用它們。

在《使用 Visual Studio DSL 工具進行領域特定開發》中,您將首先掌握適用於所有平台的 DSL 概念和技術。接下來,您將發現如何使用強大的 Microsoft DSL 工具創建和使用 DSLs——這是一套由本書作者設計的工具集。了解 DSL 工具如何整合到 Visual Studio 中,以及如何使用 Visual Studio 的內建建模技術定義 DSLs 並生成視覺設計器。

深入的內容包括:
- 確定 DSLs 是否適合您
- 將 DSLs 與其他模型驅動開發方法進行比較
- 定義、調整和演進 DSLs:模型、呈現、創建、更新、序列化、約束、驗證等
- 以極少或不需要編碼的方式為新的 DSLs 創建視覺設計器
- 通過易於使用的文本模板從模型生成應用程式代碼來提高生產力
- 自動生成配置文件、資源和其他工件
- 在整個組織中快速輕鬆地部署視覺設計器
- 根據專門的流程需求自定義視覺設計器

目錄

圖表清單 xvii
表格清單 xxv
前言 xxvii
序言 xxix
關於作者 xxxv
第一章 領域特定開發 1
引言 1
領域特定開發 2
範例 4
好處 10
語言 11
文本 DSLs 15
圖形 DSLs 20
圖形 DSLs 的各個方面 23
Visual Studio 中的 DSLs 27
自定義陷阱 32
UML 34
總結 40
第二章 創建和使用 DSLs 41
引言 41
過程:DSLs 的增量開發 41
在 Visual Studio 中創建 DSL 57
第二個 DSL:專案定義 DSL 77
DSL 工具的架構 78
總結 85
第三章 領域模型定義 87
引言 87
領域模型設計器 88
內存存儲 89
領域類 92
領域關係 98
生成無形狀的設計器 108
生成的代碼 109
有關領域類的更多資訊 115
有關領域屬性的更多資訊 119
有關領域關係和角色的更多資訊 122
有關存儲的更多資訊 129
總結 131
第四章 呈現 133
引言 133
圖形符號--概述 134
圖表和編輯器 137
形狀 146
連接器 164
裝飾器 167
在代碼中自定義圖形符號 173
資源管理器 180
屬性窗口 188
總結 195
第五章 創建、刪除和更新行為 197
引言 197
元素創建 197
連接構建器 216
元素刪除 229
總結 234
第六章 序列化 237
引言 237
保存和加載模型和圖表 238
模型 XML 文件格式 239
元素和屬性 242
關係 243
交叉引用 245
圖表 XML 文件格式 251
版本控制和遷移 254
XML 架構 257
自定義 258
生成的序列化代碼 264
總結 273
第七章 約束和驗證 275
引言 275
選擇硬約束還是軟約束? 277
DSL 工具中的軟約束 280
DSL 工具中的硬約束 295
規則 296
將硬約束和軟約束結合起來 299
總結 307
第八章 生成工件 309
引言 309
工件生成樣式 311
複雜關係和回流 321
模板化過程 325
文本模板的語法 341
大規模、現實世界工件生成的問題 349
進階自定義 351
總結 366
第九章 部署 DSL 369
引言 369
安裝設計器所需的文件 370
入門--創建安裝專案 373
安裝專案內容 376
自定義安裝 377
.dslsetup 格式 378
刷新安裝文件 387
包加載鍵 388
為代碼生成部署文本模板 390
總結 396
第十章 進階 DSL 自定義 397
引言 397
自定義工具 397
響應變更 402
DSL Shell 架構 426
如何添加菜單命令 429
將 DSL 圖表構建到其他介面 435
實現複製和粘貼 437
形狀容器 442
總結 453
第十一章 設計 DSL 455
引言 455
識別變異性 456
開發領域模型 460
開發符號 468
定義驗證約束 475
開發和演進框架 479
測試 484
演進 DSL 489
什麼是好的 DSL? 491
總結 498
結論 499
索引 503