Software engineering - Sommerville Ian (1996)