Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
Assignment 1: Planning and Design
For the remainder of the semester, you will be working in teams on a relatively large software project.
You will design and implement new functionality to add to an existing system that we will provide to
you.
This assignment has been designed to be done in pairs, and we will not allow you to work on your own.
You will be paired with another student in your lab by unit staff. If there is an odd number of students
in your lab, your lab may have one team of three — the teaching staff at your campus will decide which
team.
To help you manage your time on this project, we have divided it into three phases. These will be
assessed separately. In this phase you will familiarise yourselves with the code base, decide on how
to split up the tasks for the next assignment, and most importantly, create some preliminary designs
for the extra functionality you will implement in the next phase (Assignment 2). You will extend the
system again in Assignment 3, so do the best you can to keep your design and implementation for the
system extensible and maintainable.
Managing and Submitting Your Work
This is a large project, and you will need a way to share files with your partner and unit staff. Instead
of requiring you to submit your work on Moodle, we will provide you with a Monash-hosted GitLab
repository that we can also read. There are a number of advantages to doing it this way:
You learn to use Git to manage code and other software engineering artefacts. Git is a fullyfeatured
modern version control system. It is the most widely used version control software for
commercial, open-source, and hobbyist software projects today.
It provides you with a mechanism for sharing files with your partner. You will be able to access
your Monash GitLab repository from Monash and from home — anywhere you have internet
access. Note that Git support is built into Eclipse, and almost all modern IDEs.
You do not need to “submit” anything. Instead, ww will use the state of your Git repository at
the due date and time. You just need to ensure that the master branch is ready for marking at that
time.
Your changes are automatically tracked. If you and your partner have a dispute about sharing the
workload, unit staff can easily see whether you are adhering to your agreed tasks and timelines.
every time you make a change, you include a comment that summarises what was done. This
greatly aids communication within your team.
Getting Started
The initial code base is available in a zip archive on Moodle. This archive includes a directory with
some UML design documents that describe the code base.
Download the archive and create a project in your IDE so that you can explore it. You will need to
spend considerable time trying out its functionality, and reading the code in the harrypotter.* packages.
Once you have your Monash GitLab repository, you will add this code base to it, and commit all changes
to the repository.
Background
You will be working on a text-based “rogue-like” game. Rogue-like games are named after the first such
program: a fantasy game named rogue. They were very popular in the days before home computers
were capable of elaborate graphics, and still have a small but dedicated following.
The game is set in the Harry Potter universe, loosely based on J.K. Rowling’s novels featuring the
character Harry Potter. You are not required read the books — the specifications will give you enough
information. If you have read the books or seen the movies, you are welcome to incorporate your
knowledge of the story in your program.1
The main character is Harry Potter, a trainee wizard. Harry goes to a school for wizards called Hogwarts.
Harry’s best friends at Hogwarts are Hermione Granger and Ron Weasley. Harry and his friends
have a series of adventures as Harry battles to defeat Voldemort, the leader of an evil group of wizards
called the Death Eaters. In the Harry Potter world, ordinary (non-magical) humans are called Muggles.
There are numerous magical creatures, such as dementors, dragons, unicorns, ghosts, house elves,
basilisks and more.
As it stands, the game functions, but is missing a lot of desired functionality. Over the course of this
project, you will incrementally add new features to the game.
Design Documents
For Assignment 1, you are not required to write any code. Instead, you must produce preliminary
design documentation to explain how you are going to add the specified new functionality to the system.
The new functionality is specified in the Project Requirements section.
We expect that you will produce class diagrams for all of the new features. Your class diagrams do
not have to show the entire system. You only need to show the new parts, the parts that you expect
to change, and enough information to let readers know where your new classes fit into the existing
system. As it is likely that the precise names and signatures of methods will be refactored during
development, you do not have to put them in this class diagram. However, the overall responsibilities
of the class need to be documented somewhere, as you will need this information to be able to begin
implementation.
To help us understand how your system will work, you must also write a design rationale to explain the
choices you made. You must explain both how your proposed system will work and why you chose to
do it that way.