Pattern Oriented Software Architecture Volume 5: On Patterns and Pattern Languages