UIC CS 342 Software Design