Pattern Oriented Software Architecture (POSA)