| |
| |
Figures | |
| |
| |
Foreword | |
| |
| |
Preface | |
| |
| |
Organization of This Book | |
| |
| |
Frequently Asked Questions | |
| |
| |
Acknowledgments | |
| |
| |
| |
Introduction | |
| |
| |
Raising the Level of Abstraction | |
| |
| |
Raising the Level of Reuse | |
| |
| |
Design-Time Interoperability | |
| |
| |
Models as Assets | |
| |
| |
| |
MDA Terms and Concepts | |
| |
| |
Models | |
| |
| |
Metamodels and Platforms | |
| |
| |
Mapping Between Models | |
| |
| |
Marking Models | |
| |
| |
Building Languages | |
| |
| |
Model Elaboration | |
| |
| |
Executable Models | |
| |
| |
Agile MDA | |
| |
| |
Building an MDA Process | |
| |
| |
Executing an MDA Process | |
| |
| |
| |
Building Models | |
| |
| |
Why Model? | |
| |
| |
Abstraction, Classification, and Generalization | |
| |
| |
Subject Matter and Language Abstraction | |
| |
| |
Model Projections | |
| |
| |
Models and Platforms | |
| |
| |
Using Models | |
| |
| |
| |
Building Metamodels | |
| |
| |
Why Metamodels? | |
| |
| |
Metamodels | |
| |
| |
The Four-Layer Architecture | |
| |
| |
MOF: A Standard For Metamodeling | |
| |
| |
Using Metamodels | |
| |
| |
| |
Building Mappings | |
| |
| |
Why Mappings? | |
| |
| |
An Informal Example | |
| |
| |
Mapping Functions | |
| |
| |
Query, Views, and Transformations (QVT) | |
| |
| |
Scenarios for Mappings | |
| |
| |
Refining Mappings | |
| |
| |
Abstracting Mappings | |
| |
| |
Representing Mappings | |
| |
| |
Migrating Mappings | |
| |
| |
Merging Mappings | |
| |
| |
Merging Mappings for Weaving | |
| |
| |
Using Mappings | |
| |
| |
| |
Building Marking Models | |
| |
| |
Why Marks? | |
| |
| |
Marks and Marking Models | |
| |
| |
Applying Marks and Marking Models | |
| |
| |
Relating Marks and Model Elements | |
| |
| |
Other Marks | |
| |
| |
Mark and Marking Model Implementations | |
| |
| |
The Theory of Marking Models | |
| |
| |
Using Marks | |
| |
| |
| |
Building Languages | |
| |
| |
Why Build a Language? | |
| |
| |
Who Defines a Language? | |
| |
| |
What's In a Language? | |
| |
| |
Building a Language Using MOF | |
| |
| |
Building a Language Using Profiles | |
| |
| |
Stereotypes | |
| |
| |
Constraints | |
| |
| |
Building Graphical Notations | |
| |
| |
Using Languages That You've Built | |
| |
| |
| |
Elaborating Models | |
| |
| |
Why Elaborate Models? | |
| |
| |
Managing Manual Changes to Generated Models | |
| |
| |
Reversibility of Mappings | |
| |
| |
Incorporating Legacy Code | |
| |
| |
Using Elaboration | |
| |
| |
| |
Building Executable Models | |
| |
| |
Why Executable Models? | |
| |
| |
Executable UML | |
| |
| |
The Execution Model | |
| |
| |
Translating Models | |
| |
| |
Model Compilers | |
| |
| |
Using Executable UML | |
| |
| |
| |
Agile MDA | |
| |
| |
Why Agile MDA? | |
| |
| |
Agile Methods | |
| |
| |
Models, Models, Models | |
| |
| |
Design-Time Interoperability Revisited | |
| |
| |
Using Agile MDA | |
| |
| |
| |
Building an MDA Process | |
| |
| |
Why Build an MDA Process? | |
| |
| |
How to Approach the Problem | |
| |
| |
Charting the MDA Process | |
| |
| |
Identifying Models | |
| |
| |
Identifying the Metamodels and Marking Models | |
| |
| |
The Long and the Short of Mapping Chains | |
| |
| |
Constraint Propagation and Verification | |
| |
| |
Using an MDA Process | |
| |
| |
| |
Executing an MDA Process | |
| |
| |
Formalizing Knowledge | |
| |
| |
Gathering Requirements | |
| |
| |
Abstracting Solutions | |
| |
| |
Modeling | |
| |
| |
Testing the Model | |
| |
| |
Building Bridges | |
| |
| |
Specifying Mapping Functions | |
| |
| |
Marking the Models | |
| |
| |
Verifying the Mappings | |
| |
| |
Transforming the Models | |
| |
| |
An Example Model-Driven Process | |
| |
| |
Iterating the Process | |
| |
| |
Testing the System | |
| |
| |
Executing an MDA Process | |
| |
| |
| |
The Future of MDA | |
| |
| |
Why Not MDA? | |
| |
| |
The Importance of Standards | |
| |
| |
Building a Tool Chain | |
| |
| |
Working with Models-as-Assets | |
| |
| |
Beyond UML | |
| |
| |
Back from the Future | |
| |
| |
Glossary | |
| |
| |
Bibliography | |
| |
| |
Index | |