Software architecture and design illuminated - Qian, Kai (Jones and Bartlett illuminated series., 2010)