Practical Software Engineering by Enricos Manassis