Software design: from programming to architecture - Braude, Eric J. (John Wiley, 2004)