\subsection{Software Development Methodology}
+I decided to use a iterative development method, in order to maintain quality of the code, and to ensure the code was completed on time and with the necessary features. This was done by iteratively designing a new feature in accordance with the overal aim, implementing the feature and then testing it. This cycle was repeated until all the necessary features were implemented. This enforced encapsulation of a feature with a single element of code, providing separation of concerns. It also ensured that each feature was built on a stable base. On each iteration of the code, all the tests were run to ensure that no regression had occured. These tests provide a good set of debugging features which ensured that refactoring the code did not impact code quality.
+
\subsection{Source Control}
In order to version and backup my code, I used a distributed version control system, Git. Git allowed me to maintain multiple copies of my code, review changes and manage the code effectively. My git repository was held on both my desktop and a laptop, and a copy of the repository was pushed to my server hosted offsite, and a commercial service GitHub \ref{github} which provides hosting for Git repositories. It also provides a good interface to view changes between different branches of the code.