Assignment 1 (15 points) The purpose of this assignment is to work on a small team (2 students), design the software first, and then code the software last of all. The application the team will design and code is a guessing game implemented as a graphical user interface (GUI) to allow a user to play unlimited games trying to guess the computer's number. The design and software should incorporate at least 3 nontrivial classes. The game requirements are: User 1. The user shall be welcomed to the game. 2. The user shall enter his/her first name upon system start. 3. The user shall be allowed to specify the range for guessing the number if desired, such as 1 to 100 or 500 to 505. 4. If the user does not enter a range or enters an invalid range, the user shall guess a number in the default 1 to 100 range. 5. If the user enters an invalid range, the user is warned. 5. The user shall be allowed to enter a guess for up to (rangetop-rangebottom)/2 times. 6. The user shall be given feedback if the guess is too low, too high, or very close when the guess is within + or - 10. 7. If the user enters a number out of range or does not enter a number, the user shall be warned and no feedback on the guess shall be given. 8. If the user enters a number in or out of range, the guess shall be counted. 9. The user shall be able to see the number of guesses left during game play. 10. The user shall see his/her name, wins, and losses displayed while using the system. 11. The user shall be able to play an unlimited number of games. 12. The user shall be able cancel a game with no penalty. 13. The user may exit the game before or after game play. 14. The user shall be informed of a win or loss after each game. 15. The user shall be able to display a list of users' first names and associated wins/losses from highest number of wins to lowest number of wins before or after game play. System 1. The system shall have a Graphical User Interface (GUI) to play the game that is easy for the user to understand, fun for the user, easy on the eyes, colorful, and conforming to typical user interface standards. 2. The system shall record the user's first name along with the number of wins and losses for that user to a text file in the following format: name wins losses name wins losses ... names wins losses end of file 3. The system shall allow one user at a time to play the game. 4. The system shall allow an unlimited number of users to play the game. 5. The system shall generate a random number within the specified range at the start of the game for the user to guess. 6. The system shall seed the random number generator with the current time. This assignment will have the following deliverables: ---1. (5 points) Object-oriented design using UML Class and Sequence Diagrams showing the location of the User and System requirements in the design ---2. (5 points) Object-oriented code implemented in Java, Python, or C# since a GUI is needed also showing the location of the User and System requirements in the code ---3. (5 points) Maximum two-page report (11-point black font, 1.5 line spacing, 1" margins) discussing how well the team followed the requirements, UML was able to be used by the team to first design the software, then export the design to code skeletons, and then complete the code. Answer such questions as: a. Were you able to become more familiar with UML? b. In what ways did UML help with the design of the code? c. In what ways did it seem to hinder the design of the code? d. Did doing design first help to work out implementation issues? e. Were any issues found in implementation that design missed? f. Were you able to use a UML tool? If so, how did the tool perform? g. Were you able to trace the requirements from design through to code? h. Were there any requirements that caused issues? i. Did the team break up the work in tasks and work in parallel? j. What tasks did each person on the team perform during design and coding? k. What parts of the report did each team member write? All submitted artifacts should be free of error, documented well, communicate clearly to the reader, and be comprehensive enough to help someone else understand and use your work.