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