Object-oriented design: A goal-driven and pattern-based approach
A Pattern Language: Towns, Buildings, Construction