\section{Connection Between Requirements and Design}
\section{Module Decomposition}
\subsection{Hardware Hiding Module (M1)}
\noindent\textbf{Secrets:} The data structures and algorithms used to interact with the hardware. \\
\textbf{Services:} Allow applications a hardware independent way to access the services provided by the hardware such as graphic and keyboard input. \\
\textbf{Implemented By:} OS \\
\subsection{Behaviour Hiding Module}
\noindent\textbf{Secrets:} The behaviour specific to this project. \\
\textbf{Services:} Provide the main functionality of the system as specified in the SRS. \\
\textbf{Implemented By:} - \\
\subsection{Nonogram Hint Module (M2)}
\noindent\textbf{Secrets:} How to create and represent Nonogram hints. \\
\textbf{Services:} Create the hints for a given Nonogram and store them to be retrieved later. \\
\textbf{Implemented By:} PicPuzzle \\
\subsection{Nonogram Module (M3)}
\noindent\textbf{Secrets:} The logical structure of a Nonogram. \\
\textbf{Services:} Used to create and represent already existing Nonograms. Also used to manipulate or access the information stored in a Nonogram in a way independent to its implementation. \\
\textbf{Implemented By:} PicPuzzle \\
\subsection{Game GUI Module (M4)}
\noindent\textbf{Secrets:} The layout of the GUI. \\
\textbf{Services:} Display a GUI to the user to interact with the game. \\
\textbf{Implemented By:} PicPuzzle \\
\subsection{Nonogram GUI Module (M5)}
\noindent\textbf{Secrets:} How a Nonogram is displayed. \\
\textbf{Services:} Display a Nonogram in a graphical way to the user. \\
\textbf{Implemented By:} PicPuzzle \\
\subsection{Game Logic Module (M6)}
\noindent\textbf{Secrets:} The rules of the game. \\
\textbf{Services:} React to user input in a way that matches the rules of the game. \\
\textbf{Implemented By:} PicPuzzle \\
\subsection{Software Decision Module}
\noindent\textbf{Secrets:} Implementations of generic data structures and algorithms. \\
\textbf{Services:} Provide data structures and algorithms that can be reused in other projects because they are generic and not specific to this project. \\
\textbf{Implemented By:} - \\
\subsection{Graphics Module (M7)}
\noindent\textbf{Secrets:} How to draw to the screen. \\
\textbf{Services:} Draw primitive shapes and text to the screen. \\
\textbf{Implemented By:} Java \\
\subsection{Input Module (M8)}
\noindent\textbf{Secrets:} How input is recieved. \\
\textbf{Services:} Recieve input from the mouse and keyboard and relay it to other modules. \\
\textbf{Implemented By:} Java \\
\subsection{Image Decoding Module (M9)}
\noindent\textbf{Secrets:} How images are stored. \\
\textbf{Services:} Load images in a variety of different formats such as .BMP, .PNG, .JPG. After being loaded the images should be able to be manipulated in a way independent to the format they were stored in. \\
\textbf{Implemented By:} Java \\
\section{Traceability Matrix}
\section{Uses Hierarchy Between Modules}
A uses hierarchy is a diagram that shows how each module uses the
others. A module is said to use another one when it is dependent on the
other module to function. In the diagram below, the arrow point towards
the module being used. From Figure 1 it can be seen that the uses
heirarchy is a DAG which is good because this means there are no