Software architecture organizational principles and patterns - Dikel (Prentice Hall, 2001)