Building blocks of software (The Open University, 2008)