Software Architecture Patterns. Mark Richards.