Flexible software design : systems development for changing requirements - Johnson, Bruce (Auerbach Publications, 2005)