Pattern-Oriented Software Architectures