Course Content
Design and architecture
- what is software architecture?
- describing or defining an architecture
- reuse of knowledge
- patterns in software design
Pattern structure
- basic form
- problem and forces
- solution and consequences
- an example: the Composite pattern
- documenting patterns
- documenting pattern use
Organizing patterns
- pattern catalogues
- the "Gang of Four"
- "Pattern-Oriented Software Architecture" (POSA)
- strategic versus tactical patterns
- review of organizational patterns
- review of analysis patterns
- review of architectural patterns
- review of design patterns and idioms
- pattern languages
Delegation patterns
- basic principles
- Adapter and its variations
- Proxy
- Bridge
- Manager
Decoupling patterns
- layers
- Interface Decoupling
- Role Decoupling
- Observer
- The Law of Demeter
Creational patterns
- Factory Method
- Disposal Method
- Singleton (and issues)
- Cloning
- Copy Constructor
Value patterns
- value-based programming
- Whole Value
- Value Object
- Enumeration Values
- Class Factory Method
- Copied Value
- Immutable Value
- Mutable Companion
Functional patterns
- Named Selector
- Command
- Command Processor
- Command Adapter
- Composite Command
- Composite Exception
- Block
- Active Object
Sequential patterns
- Combined Method
- Finally for Each Release
- Execute-around Method
Iteration patterns
- Iterator
- Combined Iterator
- Enumeration Method
Selection patterns
- Null Object
- State-based Selection
- Objects for States (State)