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