Pattern-Oriented Software Architecture (Vol.1)