[Home]   [Preview]   [Table of contents]   [Download examples]   [About the authors]   [Events]   [Links]   [Buy]

Table of contents

FOREWORD
PREFACE

PART I: BACKGROUND AND MOTIVATION

1 INTRODUCTION

1.1 Seeking a Better Level of Abstraction / 3
1.2 Code-Driven and Model-Driven Development / 4
1.3 An Example: Modeling with a General-Purpose Language and a Domain-Specific Language / 7
1.4 What is DSM? / 15
1.5 When to Use DSM? / 18
1.6 Summary / 19

2 BUSINESS VALUE

2.1 Productivity / 21
2.2 Quality / 27
2.3 Leverage Expertize / 31
2.4 The Economics of DSM / 34
2.5 Summary / 41

PART II: FUNDAMENTALS

3 DSM DEFINED

3.1 DSM Characteristics / 45
3.2 Implications of DSM for Users / 52
3.3 Difference from Other Modeling Approaches / 55
3.4 Tooling for DSM / 59
3.5 Summary / 61

4 ARCHITECTURE OF DSM

4.1 Introduction / 63
4.2 Language / 68
4.3 Models / 77
4.4 Code Generator / 79
4.5 Domain Framework and Target Environment / 86
4.6 DSM Organization and Process / 88
4.7 Summary / 92

PART III: DSM EXAMPLES

5 IP TELEPHONY AND CALL PROCESSING

5.1 Introduction and Objectives / 97
5.2 Development Process / 100
5.3 Language for Modeling Call Processing Services / 101
5.4 Modeling IP Telephony Services / 111
5.5 Generator for XML / 112
5.6 Framework Support / 117
5.7 Main Results / 118
5.8 Summary / 118

6 INSURANCE PRODUCTS

6.1 Introduction and Objectives / 120
6.2 Development Process / 121
6.3 Language for Modeling Insurances / 123
6.4 Modeling Insurance Products / 131
6.5 Generator for Java / 132
6.6 Framework Support / 138
6.7 Main Results / 138
6.8 Summary / 139

7 HOME AUTOMATION

7.1 Introduction and Objectives / 140
7.2 Development Process / 142
7.3 Home Automation Modeling Language / 144
7.4 Home Automation Modeling Language in Use / 150
7.5 Generator / 153
7.6 Main Results / 157
7.7 Summary / 158

8 MOBILE PHONE APPLICATIONS

8.1 Introduction and Objectives / 160
8.2 Development Process / 163
8.3 Language for Application Modeling / 164
8.4 Modeling Phone Applications / 174
8.5 Generator for Python / 176
8.6 Framework Support / 184
8.7 Main Results / 185
8.8 Extending the Solution to Native S60 C++ / 185
8.9 Summary / 189

9 DIGITAL WRISTWATCH

9.1 Introduction and Objectives / 191
9.2 Development Process / 193
9.3 Modeling Language / 193
9.4 Models / 207
9.5 Code Generation for Watch Models / 212
9.6 The Domain Framework / 220
9.7 Main Results / 222
9.8 Summary / 224

PART IV: CREATING DSM SOLUTIONS

10 DSM LANGUAGE DEFINITION

10.1 Introduction and Objectives / 227
10.2 Identifying and Defining Modeling Concepts / 228
10.3 Formalizing Languages with Metamodeling / 247
10.4 Defining Language Rules / 250
10.5 Integrating Multiple Languages / 253
10.6 Notation for the Language / 257
10.7 Testing the Languages / 261
10.8 Maintaining the Languages / 264
10.9 Summary / 266

11 GENERATOR DEFINITION

11.1 ‘‘Here’s One I Made Earlier’’ / 268
11.2 Types of Generator Facilities / 270
11.3 Generator Output Patterns / 276
11.4 Generator Structure / 297
11.5 Process / 304
11.6 Summary / 308

12 DOMAIN FRAMEWORK

12.1 Removing Duplication from Generated Code / 313
12.2 Hiding Platform Details / 315
12.3 Providing an Interface for the Generator / 317
12.4 Summary / 327

13 DSM DEFINITION PROCESS

13.1 Choosing Among Possible Candidate Domains / 329
13.2 Organizing for DSM / 330
13.3 Proof of Concept / 335
13.4 Defining the DSM Solution / 339
13.5 Pilot Project / 345
13.6 DSM Deployment / 347
13.7 DSM as a Continuous Process in the Real World / 352
13.8 Summary / 356

14 TOOLS FOR DSM

14.1 Different Approaches to Building Tool Support / 357
14.2 A Brief History of Tools / 359
14.3 What is Needed in a DSM Environment / 365
14.4 Current Tools / 390
14.5 Summary / 395

15 DSM IN USE

15.1 Model Reuse / 397
15.2 Model Sharing and Splitting / 400
15.3 Model Versioning / 404
15.4 Summary / 407

16 CONCLUSION

16.1 No Sweat Shops—But no Fritz Lang’s Metropolis Either / 409
16.2 The Onward March of DSM / 410

APPENDIX A: METAMODELING LANGUAGE 411

REFERENCES 415

INDEX 423