Flexible Software Design: Systems Development for Changing Requirements - Johnson, Bruce (CRC Press, 2009)