Preface
1 Introduction
1.1 Why object-oriented frameworks?
1.2 Problems with frameworks
1.3 Role modeling for framework design
1.4 Dissertation overview
1.5 Actors in this dissertation
2 Frameworks, Related Work, and
Thesis Statement
2.1 Overview of framework concepts
2.1.1 Object-oriented software architecture
2.1.2 Review of framework terminology
2.1.3 Problems with frameworks
2.2 Related work
2.2.1 Object-oriented design
2.2.2 Programming methods
2.2.3 Development methods
2.2.4 Role modeling concepts
2.2.5 Object-oriented frameworks
2.2.6 Review of related work
2.3 Thesis statement of dissertation
2.3.1 What is the scope of "design and documentation"?
2.3.2 What does "easier" mean?
2.3.3 Who is the subject?
2.3.4 Final version of the thesis
3 Role Modeling
3.1 Chapter overview
3.2 Object modeling fundamentals
3.2.1 Object and class (definition)
3.2.2 Value and value type (definition)
3.2.3 Figure class (example)
3.2.4 Relationships and relationship descriptions (definition)
3.2.5 Inheritance (definition)
3.2.6 Object collaboration and class model (definition)
3.2.7 Figure class model (example)
3.3 Role modeling extensions
3.3.1 Role and role type (definition)
3.3.2 Figure, Child, etc. (example)
3.3.3 Class (revised definition)
3.3.4 Choice of type specification mechanism
3.3.5 Object collaboration task and role model (definition)
3.3.6 Role constraint (definition)
3.3.7 Figure role models (examples)
3.3.8 Composing role models
3.3.9 Class model (revised definition)
3.3.10 Figure class model (revised example)
3.3.11 Design patterns in role modeling
3.3.12 Visual role model shorthands
3.4 Summary
4 Framework Design
4.1 Chapter overview
4.2 Framework design
4.2.1 Framework (definition)
4.2.2 Free role type (definition)
4.2.3 Built-on class (definition)
4.2.4 Extension-point class (definition)
4.2.5 Figure and Graphics framework (examples)
4.3 Framework use
4.3.1 Direct coupling through free role models
4.3.2 Examples of direct coupling
4.3.3 Properties of free role types
4.4 Framework extension
4.4.1 Domains and applications
4.4.2 Framework extension (definition)
4.4.3 Figure and SimpleFigures framework extensions (examples)
4.5 Framework layering
4.5.1 Layers and tiers
4.5.2 Traditional layer coupling
4.5.3 Role-model-based layer coupling
4.5.4 KidsEditor framework layering (example)
4.6 Framework documentation
4.6.1 What and when to document
4.6.2 How role modeling can help
4.6.3 A simple design documentation template
4.7 Summary
5 Extension of Industry Standards
5.1 Chapter overview and motivation
5.2 Common properties
5.2.1 Extending an industry standard
5.2.2 General requirements
5.2.3 Handling role types and role models
5.2.4 Figure framework (example)
5.3 Design notations
5.3.1 Extending design notations
5.3.2 Extending UML with role modeling
5.3.3 Extension properties
5.4 Programming languages
5.4.1 Extending programming languages
5.4.2 Problems of programming language extension
5.4.3 Extending Java with role modeling
5.4.4 Extending C++ with role modeling
5.4.5 Extending Smalltalk with role modeling
5.4.6 Extension properties
5.5 Summary
6 Case Study: The Geo Object Framework
6.1 Case study overview
6.1.1 Project history
6.1.2 The case study
6.1.3 Chapter structure
6.2 The Geo Object framework
6.2.1 Framework overview
6.2.2 Class model
6.2.3 Role models
6.2.4 Built-on classes
6.2.5 Example extension
6.3 Experiences and evaluation
6.3.1 Statistics of case study
6.3.2 Complexity of classes
6.3.3 Complexity of object collaboration
6.3.4 Clarity of requirements put upon use-clients
6.3.5 Reuse of experience
7 Case Study: The KMU Desktop Tools
Framework
7.1 Case study overview
7.1.1 Project history
7.1.2 The case study
7.1.3 Chapter structure
7.2 The original Tools framework
7.2.1 Framework overview
7.2.2 Classes and their functionality
7.2.3 How to use the framework
7.3 Problems with the original framework
7.4 The redesigned Tools framework
7.4.1 Framework overview
7.4.2 Class model
7.4.3 Free role models
7.4.4 Internal role models
7.5 The new Environment framework
7.6 Experiences and evaluation
7.6.1 Statistics of case study
7.6.2 Complexity of classes
7.6.3 Complexity of object collaboration
7.6.4 Clarity of requirements put upon use-clients
7.6.5 Reuse of experience through design patterns
7.6.6 Further evolution of framework
8 Case Study: The JHotDraw Framework
8.1 Case study overview
8.1.1 JHotDraw history
8.1.2 The case study
8.1.3 Chapter structure
8.2 The JHotDraw framework
8.2.1 Design discussion overview
8.2.2 The Figure classes
8.2.3 The Drawing and DrawingView classes
8.2.4 The DrawingEditor classes
8.3 Experiences and evaluation
8.3.1 Statistics of the JHotDraw framework design
8.3.2 Observations from the case study
8.3.3 Comparison of documentation techniques
8.3.4 Complexity of classes
8.3.5 Complexity of object collaboration
8.3.6 Clarity of requirements put upon use-clients
8.3.7 Reuse of experience through design patterns
9 Thesis Validation
9.1 Thesis review and validation strategy
9.2 Thesis validation
9.2.1 Describes class as composition of role types
9.2.2 Breaks up relationship descriptions into role models
9.2.3 Makes requirements on clients explicit
9.2.4 Supports reuse of experience
9.2.5 Consolidation of validation
9.3 Summary (meaning of validation)
10 Conclusions
10.1 Contributions
10.2 Future work
10.3 Final conclusions
A References
B Glossary
C Design Notation
C.1 Classes and role types
C.2 Object relationships
C.3 Class and role models
C.4 Role constraints
C.5 Role model shorthands
C.6 Frameworks
D Design Patterns
D.1 Abstract Factory
D.2 Adapter
D.3 Bridge
D.4 Chain of Responsibility
D.5 Class Object
D.6 Composite
D.7 Decorator
D.8 Factory Method
D.9 Manager
D.10 Mediator
D.11 Metaobject
D.12 Null Object
D.13 Object Registry
D.14 Observer
D.15 Product Trader
D.16 Property List
D.17 Prototype
D.18 Role Object
D.19 Type Object
D.20 Serializer
D.21 Singleton
D.22 Specification
D.23 State
D.24 Strategy
D.25 Visitor
E Pointers to Further Material
|