Essential Software Development by John David Dawson & Adrian Janson