Software design. : From programming to architecture. - Braude, Eric J. (John Wiley & Sons, Inc., 2005)