Foreword |
|
xi | |
Acknowledgments |
|
xv | |
|
|
1 | (6) |
|
1.1 Purpose and Use of Models |
|
|
1 | (1) |
|
1.2 Modeling for Software Development |
|
|
2 | (1) |
|
1.3 How to Read this Book |
|
|
3 | (4) |
|
|
7 | (18) |
|
|
7 | (2) |
|
2.2 Lost in Acronyms: The MD* Jungle |
|
|
9 | (1) |
|
2.3 Overview of the MDSE Methodology |
|
|
10 | (9) |
|
|
10 | (1) |
|
2.3.2 Domains, Platforms, and Technical Spaces |
|
|
11 | (1) |
|
|
12 | (3) |
|
|
15 | (2) |
|
|
17 | (2) |
|
|
19 | (2) |
|
2.4.1 Drawing Tools vs. Modeling Tools |
|
|
19 | (1) |
|
2.4.2 Model-based vs. Programming-based MDSE Tools |
|
|
20 | (1) |
|
|
21 | (1) |
|
2.5 Adoption and Criticisms of MDSE |
|
|
21 | (4) |
|
|
25 | (18) |
|
3.1 Automating Software Development |
|
|
26 | (7) |
|
|
28 | (3) |
|
3.1.2 Model Interpretation |
|
|
31 | (1) |
|
3.1.3 Combining Code Generation and Model Interpretation |
|
|
32 | (1) |
|
3.2 System Interoperability |
|
|
33 | (3) |
|
|
36 | (3) |
|
3.4 Modeling the Organization |
|
|
39 | (4) |
|
3.4.1 Business Process Modeling |
|
|
39 | (1) |
|
3.4.2 Enterprise Architecture |
|
|
40 | (3) |
|
4 Model-driven Architecture (MDA) |
|
|
43 | (10) |
|
4.1 MDA Definitions and Assumptions |
|
|
44 | (1) |
|
4.2 The Modeling Levels: CIM, PIM, PSM |
|
|
44 | (2) |
|
|
46 | (3) |
|
4.4 General-purpose and Domain-specific Languages in MDA |
|
|
49 | (1) |
|
4.5 Architecture-driven Modernization (ADM) |
|
|
50 | (3) |
|
5 Integration of MDSE in your Development Process |
|
|
53 | (10) |
|
5.1 Introducing MDSE in your Software Development Process |
|
|
53 | (2) |
|
5.1.1 Pains and Gains of Software Modeling |
|
|
54 | (1) |
|
5.1.2 Socio-technical Congruence of the Development Process |
|
|
54 | (1) |
|
5.2 Traditional Development Processes and MDSE |
|
|
55 | (1) |
|
|
55 | (2) |
|
5.4 Domain-driven Design and MDSE |
|
|
57 | (1) |
|
5.5 Test-driven Development and MDSE |
|
|
58 | (1) |
|
5.5.1 Model-driven Testing |
|
|
59 | (1) |
|
5.5.2 Test-driven Modeling |
|
|
59 | (1) |
|
5.6 Software Product Lines and MDSE |
|
|
59 | (4) |
|
6 Modeling Languages at a Glance |
|
|
63 | (22) |
|
6.1 Anatomy of Modeling Languages |
|
|
63 | (1) |
|
6.2 Multi-view Modeling and Language Extensibility |
|
|
64 | (1) |
|
6.3 General-purpose vs. Domain-specific Modeling Languages |
|
|
65 | (1) |
|
6.4 General-purpose Modeling: The Case of UML |
|
|
66 | (8) |
|
|
68 | (1) |
|
6.4.2 Structure Diagrams (or Static Diagrams) |
|
|
68 | (2) |
|
6.4.3 Behavior Diagrams (or Dynamic Diagrams) |
|
|
70 | (4) |
|
|
74 | (1) |
|
6.4.5 Criticisms and Evolution of UML |
|
|
74 | (1) |
|
6.5 UML Extensibility: The Middle Way Between GPL and DSL |
|
|
74 | (3) |
|
|
75 | (1) |
|
|
75 | (1) |
|
|
75 | (1) |
|
|
76 | (1) |
|
|
77 | (2) |
|
|
77 | (2) |
|
6.6.2 Some Examples of DSLs |
|
|
79 | (1) |
|
6.7 Defining Modeling Constraints (OCL) |
|
|
79 | (6) |
|
7 Developing your Own Modeling Language |
|
|
85 | (38) |
|
7.1 Metamodel-centric Language Design |
|
|
85 | (2) |
|
|
87 | (2) |
|
7.3 Abstract Syntax Development |
|
|
89 | (13) |
|
7.3.1 Metamodel Development Process |
|
|
91 | (9) |
|
7.3.2 Metamodeling in Eclipse |
|
|
100 | (2) |
|
7.4 Concrete Syntax Development |
|
|
102 | (12) |
|
7.4.1 Graphical Concrete Syntax (GCS) |
|
|
103 | (5) |
|
7.4.2 Textual Concrete Syntax (TCS) |
|
|
108 | (6) |
|
7.5 A Real-world Example: IFML |
|
|
114 | (9) |
|
|
115 | (1) |
|
7.5.2 Fulfilling the Requirements in IFML |
|
|
115 | (1) |
|
7.5.3 Metamodeling Principles |
|
|
116 | (2) |
|
|
118 | (3) |
|
7.5.5 IFML Concrete Syntax |
|
|
121 | (2) |
|
8 Model-to-Model Transformations |
|
|
123 | (18) |
|
8.1 Model Transformations and their Classification |
|
|
123 | (2) |
|
8.2 Exogenous, Out-place Transformations |
|
|
125 | (7) |
|
8.3 Endogenous, In-place Transformations |
|
|
132 | (5) |
|
8.4 Mastering Model Transformations |
|
|
137 | (4) |
|
8.4.1 Divide and Conquer: Model Transformation Chains |
|
|
137 | (1) |
|
8.4.2 HOT: Everything is a Model, Even Transformations! |
|
|
138 | (1) |
|
8.4.3 Beyond Batch: Incremental and Lazy Transformations |
|
|
138 | (1) |
|
8.4.4 Bi-directional Model Transformations |
|
|
139 | (2) |
|
9 Model-to-Text Transformations |
|
|
141 | (16) |
|
9.1 Basics of Model-driven Code Generation |
|
|
141 | (2) |
|
9.2 Code Generation Through Programming Languages |
|
|
143 | (4) |
|
9.3 Code Generation Through M2T Transformation Languages |
|
|
147 | (5) |
|
9.3.1 Benefits of M2T Transformation Languages |
|
|
147 | (2) |
|
9.3.2 Template-based Transformation Languages: An Overview |
|
|
149 | (1) |
|
9.3.3 Acceleo: An Implementation of the M2T Transformation Standard |
|
|
150 | (2) |
|
9.4 Mastering Code Generation |
|
|
152 | (2) |
|
9.5 Excursus: Code Generation through M2M Transformations and TCS |
|
|
154 | (3) |
|
|
157 | (18) |
|
|
157 | (3) |
|
|
160 | (1) |
|
|
161 | (2) |
|
|
163 | (2) |
|
|
165 | (2) |
|
10.6 Global Model Management |
|
|
167 | (2) |
|
|
169 | (3) |
|
|
170 | (1) |
|
10.7.2 Testing and Validating Models |
|
|
171 | (1) |
|
|
171 | (1) |
|
10.8 Collaborative Modeling |
|
|
172 | (3) |
|
|
175 | (2) |
Bibliography |
|
177 | (8) |
Authors' Biographies |
|
185 | (2) |
Index |
|
187 | |