assignment 3 for software construction