Part I: The UML-F profile 1 Chapter 1: Why a UML profile for frameworks? 3 1.1 UML profiles 3 1.2 Object-oriented frameworks extensibility is the key 5 1.2.1 White-box components of frameworks 7 1.2.2 Black-box components of frameworks 8 1.3 Pros and cons of frameworks 9 1.
3.1 UML-F as a means of supporting framework development and adaptation 10 1.4 Goals for the UML-F profile 11 Chapter 2: UML essentials for framework documentation 13 2.1 UML overview 14 2.2 Class diagrams 15 2.3 Object diagrams 19 2.3.1 Object diagram example 19 2.
3.2 Exemplar nature of object diagrams 21 2.4 Sequence diagrams 22 2.4.1 Sequence diagram example 23 2.4.2 Considerations about collaboration diagrams 24 2.5 Summary 26 Chapter 3: Basic elements of the UML-F profile 27 3.
1 UML-F as a profile 28 3.1.1 Properties of the UML-F profile 28 3.2 UML-F tags standard UML tagged values and stereotypes unified 31 3.2.1 Stereotypes 31 3.2.2 Tagged values 33 3.
2.3 UML-F tags for describing properties 34 3.3 Standard UML tags for framework documentation 35 3.4 UML-F presentation tags 38 3.4.1 Completeness and abstraction 38 3.4.2 Flat and hierarchical representation of classes and expanded class views 41 3.
4.3 UML-F extensions of the object diagram notation 44 3.4.4 Tags for sequence diagrams 45 3.5 UML-F framework tags 51 3.5.1 Framework and application classes 52 3.5.
2 Overview of adaptation tags 53 3.5.3 Method adaptation tags 54 3.5.4 Tags in the context of classes and interfaces 57 3.5.5 Tags in the context of generalization 59 3.6 The UML-F mechanism for defining new tags 63 3.
7 Summary 65 Chapter 4: UML-F tags for framework construction principles and patterns 67 4.1 Unification principle adaptation by inheritance 68 4.1.1 UML-F template and hook tags 72 4.1.2 UML-F tags for the Unification construction principle 77 4.2 Separation principle adaptation through composition 79 4.2.
1 Compositional adaptation with predefined black-box components 80 4.2.2 Extending a set of black-box components at runtime 81 4.2.3 UML-F tags for the Separation construction principle 83 4.3 Terminology and concept excursion: abstract classes, abstract coupling, Java interfaces 87 4.3.1 Abstract classes and abstract coupling 87 4.
3.2 Java interfaces 88 4.4 Hooks as name designators of pattern catalog entries 91 4.4.1 GoF patterns with a template hook unification 92 4.4.2 GoF patterns with a template hook separation 93 4.4.
3 GoF patterns with recursive template hook combinations 94 4.5 UML-F tags for framework patterns 95 4.5.1 UML-F tags for the Factory Method pattern 97 4.5.2 UML-F tags for the Strategy pattern 99 4.5.3 UML-F tags for the Composite pattern 103 4.
5.4 UML-F tags for a domain-specific pattern 107 4.5.5 UML-F tags for non-framework GoF patterns? 110 4.6 How essential framework construction principles scale 110 4.6.1 Finding a balance between template and hook methods 111 4.7 Summary 112 Chapter 5: Framework adaptations of UML-F pattern annotations 113 5.
1 Cookbooks for framework adaptation 113 5.2 A sample cookbook recipe 116 5.3 Recipe for adapting the Unification construction principle 119 5.4 Recipe for adapting the Separation constuction principle 120 5.5 Recipe for adapting the Composite pattern 121 5.6 Automating the adaptation of UML-F pattern annotations 123 5.7 Summary 123 Part II: UML-F @ work 125 Chapter 6: UML-F based documentation and adaptation of the JUnit testing framework 127 6.1 An overview of JUnit 127 6.
1.1 Test cases 129 6.1.2 Test suites 130 6.1.3 Reporting the test results 132 6.2 Recipe for defining new tests 134 6.2.
1 Recipe for creating automated tests in JUnit 135 6.2.2 Cookbook recipe for the definition of a test case 137 6.2.3 Definition of several test cases in one source code file 140 6.3 Organizing test cases into test suites 144 6.3.1 A cookbook recipe for composing a test suite 144 6.
3.2 Adaptation of a sample test suite 146 6.4 Reporting test results 147 6.5 Summary 149 Chapter 7: Hints and guidelines for the framework development and adaptation process 151 7.1 The cluster cycle process model of framework development and adaptation 152 7.2 Defining the key abstractions as an initial step 156 7.3 Class families, class teams, and subsystems 157 7.4 Identification of a framework''s variation points 160 7.
4.1 Variation point driven framework development 160 7.4.2 Definition of a specific object model 162 7.4.3 Variation point identification 162 7.4.4 Framework (re)design 163 7.
4.5 Framework usage 163 7.5 The AOCS framework: a case study 163 7.5.1 Controller functionality 165 7.5.2 The telemetry functionality 170 7.6 The AOCS manager pattern 173 7.
7 Framelets as an aid to framework design 176 7.8 eXtreme Design (XD), with implementation cases 181 7.8.1 Implementation cases as a vehicle for framework specification 183 7.8.2 Implementation cases to cookbook recipes 184 7.9 Framework adaptions through cookbook recipes, adaptation cases, and adaptation reports 186 7.9.
1 Adaptation cases 187 7.9.2 Adaptation reports 193 7.10 Summary 196 7.11 UML-F outlook 196 Appendix A: UML-F tag quick reference 197 A.1 Tag notations 197 A.2 Presentation tags 198 A2.1 Completeness and hierarchy tags 198 A2.
2 Enhanced graphical inheritance indicators 198 A2.3 Sequence diagram tags 199 A.3 Basic framework modeling tags 200 A.4 Essential tags for the framework construction principles 200 A4.1 Template and hook tags 200 A4.2 Tags for the Unification and Separation.