| Preface | 6 |
|---|
| Acknowledgements | 9 |
|---|
| Contents | 10 |
|---|
| Part I | 17 |
|---|
| Chapter | 17 |
| 18 | 17 |
|---|
| 1.1 What Is Meta-Programming? | 18 |
| 1.2 Origins of Meta-Programming and Its Evolution | 20 |
| 1.3 Other Definitions of Meta-Programming | 22 |
| 1.4 Why Is Meta-Programming Needed? | 23 |
| 1.5 Meta-Programming as a Higher-Level Thinking Paradigm to Develop Systems | 26 |
| 1.6 The Topics This Book Addresses | 26 |
| 1.7 Summary and Concluding Remarks | 27 |
| 1.8 Exercise Questions | 28 |
| References | 28 |
| Chapter | 28 |
| 31 | 28 |
|---|
| 2.1 What Is Taxonomy? | 31 |
| 2.2 Fundamental Concepts of Meta-Programming | 31 |
| 2.2.1 Transformation | 32 |
| 2.2.2 Generation | 33 |
| 2.2.3 Meta-Program | 33 |
| 2.2.4 Levels of Abstraction | 34 |
| 2.2.5 Generalization | 35 |
| 2.2.6 Separation of Concerns | 35 |
| 2.2.7 Reflection | 36 |
| 2.2.8 Metadata | 36 |
| 2.3 Taxonomy of Meta-Programming Concepts | 36 |
| 2.4 Analysis of Meta-Programming Sources | 39 |
| 2.5 What Can One Learn from Meta-Programming Taxonomy? | 39 |
| 2.6 Summary | 42 |
| 2.7 Exercise Questions | 42 |
| References | 42 |
| Chapter | 42 |
| 44 | 42 |
|---|
| 3.1 Introduction | 44 |
| 3.2 Preliminary Principles | 45 |
| 3.3 Fundamental Principles of Meta-Programming | 46 |
| 3.3.1 Separation of Concepts | 46 |
| 3.3.2 Taxonomy Axes to Describe Relationships Between Concepts | 48 |
| 3.3.3 Levels of Abstractions and Meta-Programming | 50 |
| 3.3.4 Integration of Concepts | 51 |
| 3.4 Process-Based Relationships of Meta-Programming Concepts | 52 |
| 3.5 Multidimensional Separation of Concepts and Meta-Programming | 54 |
| 3.6 Representation of Meta-Programming Concepts Using Feature Diagrams: MDSoC View | 56 |
| 3.7 Summary
|