CW Software Maintenance Spec Sheet Academic Year 2022/2023
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit
CW Software Maintenance Spec Sheet
Academic Year 2022/2023
This coursework is about maintaining and extending a re-implementation of a classic game called 2048. The new implementation has never been completed, but at least it runs, once it is set up properly. The game 2048 is played on a simple 4X4 grid with sliding numbered tiles that may be moved with the four arrow keys. Each turn, a new tile with a value of either 2 or 4 randomly appears in an unoccupied space on the board . The user's score starts at zero, and is increased whenever two tiles combine, by the value of the new tile. When a 2048-valued tile arrives on the board, the game is won. Players can keep playing after that to earn higher scores. The game is over when there are no more legal moves left for the player (i.e., there are no more empty spaces or adjacent tiles of the same value). More information about the original 2048 game and its history is available on Wikipedia (https://en.wikipedia.org/wiki/2048_(video_game)). In addition, you will find many opportunities on the internet to play the original game online.
Number of Credits: 75% of a 20-credit module. This coursework is contributing 75% to your overall gradeand will be marked out of 100.
Deadline: December 16th, 2022, 11:59 PM
Assessment: The marks will be split as follows:
• 10% for git use (show your screenshot of GitHub and history on your version control)
• 30% for refactoring
• 30% for additions
• 15% for documentation (Javadocs + class diagram)
• 15% for a video, explaining your refactoring activities and additions
Note: You are gently reminded that we are at liberty to use plagiarism detection software on your submission. Plagiarism will not be tolerated, and academic offences will be dealt with in accordance with university policy and as detailed in the student handbook. This means you may informally discuss the coursework with other students, but your submission must be your own work. Please also note that it is not permitted for you to copy and paste text from another source without correct referencing. If you are unclear about this process, please discuss with the module convenors during one of our lab sessions or at the end of a teaching session.
Requirement Specification
This coursework is about maintaining and extending existing code. So, for the maintenance part you have to use the existing code as a basis, and not write your own game from scratch.
Basic Requirements (to pass the assessment with 40%):
1. Set up a PRIVATE git repository at GitHub and use it actively for version control activities.
2. Do some basic maintenance of the delivered code base (this should include things like providing a meaningful Readme.md file and Javadocs, organising files in a meaningful way into packages, breaking up large classes in a meaningful way to support the idea of single responsibility, improving encapsulation, etc.)
3. Extend the delivered code base by adding: 3.1 A module-info.java file
3.2 A START screen with a colour theme choice for the GAME screen and a button that allows going to the GAME screen.
3.3 A SCORE pop-up, appearing at the end of game.
Additional Requirements: For higher marks: In addition to the previous, do some of the following:
A1. Refactor the code by adding some design patterns to enhance maintainability.
A2. Create a permanent high score list (using a file to store scores and player names)
A3. Add interesting levels to the game (based either on your own ideas or on the original game)
A4. Add meaningful JUnit tests
A5. Use build files
A6. Come up with your own groundbreaking idea ... surprise us :)
Assignment Submission and Organization
This section describes which files need to be submitted for assignment and how they should be organised. Remember, there are a LARGE number of students in the class, thus the organisation of your submission is very important. You are required to create a root folder called COMP2042surnameFirstname, where "surname" is replaced with your surname, likewise for "firstname", The COMP2042surnameFirstname folder contains (and organises) digital copies of all of the files that compose the assignment.
Assignment Report: A Readme.md file (max. 500 words), documenting the work you conducted (highlighting the key changes you made for maintenance and extension, where you made them, and why you made them). WARNING: If you do not mention it here, do not blame us later if we miss it.
Your report contains the following information:
1. Your name and student number,
2. How to compile the code to produce the application,
3. Where your Javadoc documentation is stored (the path to the directory)
4. A list of features that are implemented and are working properly,
5. A list of features that are implemented and are not working properly,
6. A list of features, if any, that are not implemented with an explanation of why they were not implemented,
7. A list of new Java classes that you introduced for the assignment,
8. A list of Java classes that you modified from the given code base,
The report also informs the reader if any unexpected problems arose during the course of the assignment. Feel free to add any information which you feel is relevant.
Design Diagram: A file called Design.pdf contains a high-level class diagram that shows the structure of the final version of your game (considering only classes (excluding fields and methods, unless they are relevant for understanding design principles/patterns), interfaces, relationships, and multiplicity). If you use software to reverse engineer your class diagram, make sure the delivered diagram is correct and follows the above requirements.
Source Code Documentation: A copy of your generated Javadoc documentation is required. Javadoc produces a series of linked HTML web pages in order to facilitate the browsing of project implementations. The HTML web pages produced by Javadoc are placed in a folder called javadoc that resides in the COMP2042surnameFirstname folder described above. Recall that the Java output contains: (1) a brief description of each class, (2) a description of each method including input and return parameters, and (3) the original source code. The new Java classes you write use the following author tag convention: @author FirstName Surname. All modified Java classes from the previous code base use the following author tag convention: @author FirstName Surname-modified. In addition to reading your README file, we will look at the Javadocs to find out how you maintained and extended the game. If it is not obvious from there, we might miss it. Also, we have only a limited amount of time to look at each coursework submitted. So, please make sure to provide informative but concise Javadocs.
Project Implementation Files and Folders Description: A zip file containing your entire local project folder. it needs to be possible to import (or open) and run your project in either eclipse or IntelliJ. To avoid disappointment later, test your final version on a different computer. This should help to uncover hardcoded path dependencies, which was a major issue in previous years. Name your zip file SurnameFirstName_IDE_JavaVersion.zip, where IDE represents the name of the IDE you used, and Java Version represents the Java version you used. Here is an example: "TanChyeCheah_IntelliJ_12.zip". Place the .zip file in a folder called project that resides in the COMP2042surnameFirstname folder described above.
Version Control: Set up a PRIVATE remote git repository at GitHub and add my account (kooitt) into your collaborator list. Your remote repository needs to be named COMP2042_CW_UserName (e.g., in my case it would be COMP2042_CW_kcztcc). Then follow the setup instructions provided to "Push an existing folder" (i.e. do an initial push to upload files from your local to your remote repository). Now you are ready for coding with version control.
Demo via Screen Capture: Use screen capturing software to demonstrate the features of your application. The video should be approximately 3 minutes in length. The video file needs to be saved in MPEG or MP4 format. Also, you can use MPEG2 and MPEG4 compression formats. Your screen capture demo has to be called surnameFirstnameDemo.mp4 (or .mp2 or .mpg) and resides in the COMP2042surnameFirstName folder described above. Note that the demo video will be the primary way in which we assess whether or not your software is working. The demo
video shows your software running and then (for the main part) explains your refactoring activities and additions. You also have to highlight the TWO achievements you are most proud of.
Folder and File Organisation
Thus, when completing the submission of the assignment, you have a directory structure in your COMP2042surnameFirstname folder that looks like this:
README.md
Design.pdf
javadoc
surnameFirstnameDemo.mp4
project/SurnameFirstName_JavaVersion.zip
For this coursework, Moodle limits uploads to a single file of up to 250MB. Before you upload your coursework, please create a zip archive of your COMP2042surnameFirstname folder and then upload that zip archive to Moodle (https://moodle.nottingham.ac.uk/course/view.php?id=112983)
2022-12-17