Software Engineering For Parallel And Distributed Systems by Peter Croll