\subsection{Development Methodology}
\input{../developmentMethodology.tex}

\subsection{Informing the Client}
\begin{itemize}
  \item Our team will have an active, regularly updated, wiki on GitHub and we will also use the GitHub Issue Tracker with Milestones to inform the client on the status of the product, features integrated into the working model and any other information deemed important by the team.
	\item Since the client is on site we will have weekly meetings where we will report on what has been done in the past week and discuss what will be done in the coming week. This is also in line with the Aglie development methodology that has been chosen.
	\item Email will be used if the team has questions for the client that can not wait until the next meeting.
	\item The client may request access to the developers scrum server and Slack communication if desired.
\end{itemize}

\subsection{Initial Ideas on Solving Some Technical Challenges}
\begin{itemize}
  \item To produce a scalable, reliable, self-healing and cost effective system a self scalable REST based microservices architecture will be used for the backend which will allow for horizonal scaling.
	\item We will be utilizing a domain expert in Artificial Intelligence to assist in the required machine learning and artificial intelligence algorithms required for this project.
  \item If required a framework for distributed storage and distributed processing of very large data sets on computer clusters built from commodity hardware may be used, e.g. Apache Hadoop.
\end{itemize}

\subsection{Technologies We will Use}
\begin{itemize}
	\item Spring Framework \\
		We will be making extensive use of the Spring Framework which provides Dependency Injection, Aspect Oriented Programming, Spring Cloud to build distributed microservices and various other Spring projects.
	\item Spring Cloud with Netflix OSS \\
		Utilizing Spring Cloud with Netflix OSS components will allow one to build a very stable, scalable and reliable service which will be of great value to the wider open source community.
	\item JVM Language \\
		The backend management service will utilize a combination of a JVM language, like Java or Groovy, with the Spring Framework and Netflix OSS components.
	\item AngularJS \\
		For the frontend web interface AngularJS will be used to connect to the backend REST service to provide a user friendly interface to interact with the system. The web interface will expose both a user and administration section. The administration section will allow one to gain an overview and manage the software system deployment.
	\item Android \\
		The mobile application will be built and deployed for the Android operating system. The mobile application will allow users to view results from there tests and to do limited administration of the system from the mobile application.
	\end{itemize}

  \subsection{What Will The Client Receive}
  On completion of the development cycle the client will receive the following deliverables:
  \begin{itemize}
  	\item The functional application, which includes:
  	\begin{itemize}
  		\item The backend system which will process and expose results via a REST API
  		\item A REST based web interface
  		\item A REST based Android application
  	\end{itemize}
  	\item The source code for the functional application, unit and integration tests
  	\item Associated build files
  	\item The full specification documentation as required by the Agile Development methodology
  	\item An in-depth user manual
  \end{itemize}
