Design and construction of software assignment