\section{Tools employed}
\label{tools}

Several tools were used for the creation of \myprog{}, some of which also
proved useful during the creation of this thesis.
Their use is described briefly in this section.

Thank is proffered to the contributers of these tools, all of which are free
and open-source software TODO.

\subsubsection{Debian GNU/Linux}
The operating system to run the other tools on was \name{Debian GNU/Linux},
version $8.0$ (``Jessie'').

\subsubsection{Basic Unix tools}
Some of the basic Unix shell tools, namely \name{find}, \name{cat}, \name{grep},
\name{sed}, \name{less}, \name{diff}
and, of course, the shell itself (\name{bash} was used) were very
useful, for instance, for searching all source code files for common errors
or for remains of obsolete constructs that were replaced,
for carrying out changes on all source files and
for detecting and removing debugging code.

All of the tools were implementations created as part of the \name{GNU} project.

\subsubsection{\name{git}}
\name{git} was used both for version control and for shared access to the
source code and related artifacts.

\subsubsection{\name{vim}}
To apply changes involving advanced regular expressions, to perform block editing
(insert or remove columns from multiple lines at once), to insert debugging code
and similar editing tasks, \name{vim} was very useful.

\subsubsection{\name{Eclipse}}
The IDE to develop the program in was \name{Eclipse}.
It proved very useful particularly due to its abilities to easily create
packages and move source files between them, to ease the creation of in-code
documentation and other useful features like automatic indention or the
automatic insertion of \code{final} keywords.

\subsubsection{\name{OpenJDK}}
The \name{Java} compiler, the \name{Javadoc} tool (see next paragraph),
the \name{Java} debugger and the \name{Java} Runtime Environment
used were the implementations provided by
the \name{OpenJDK} project, version $7$.

\subsubsection{\name{Javadoc}}
\name{Javadoc} was used as the primary documentation generation system due to
its ability to create clear and well-arranged documentations.
Besides, documentations created by \name{Javadoc} are familiar to most
\name{Java} programmers and cleanly integrate into the \name{Java} environment;
for example, methods (automatically) inherited from the \code{Object}
class are incorporated and links to methods and classes
provided by the \name{Java} API are automatically generated.

\subsubsection{\name{Doxygen}}
To complement the documentation generated by \name{Javadoc} (see previous
paragraph), \name{Doxygen} was used, which supports all used \name{Javadoc}
constructs.
This was particularly sensible, because \name{Doxygen} is able to create a
much more in-depth documentation, that for instance includes \code{private}
and \code{protected} members, the complete source code with syntax highlighting
and references to it and detailed dependency and call graphs for all classes
or methods, respectively.
Thus, the \name{Doxygen} documentation is meant to be a more extensive,
detail-oriented documentation providing insight into implementation issues.
