Software design - Budgen, David (Addison-Wesley, 2003)