Software architecture patterns : understanding common architecture patterns and when to use them | NiceBooksReads