Pattern-oriented software architecture - Buschmann, Frank. (Wiley series in software design patterns., 1996)