Skip to content
Snippets Groups Projects
Commit 71fbfe3b authored by Justin's avatar Justin
Browse files

Created rough draft of design document

parent 36c5667d
No related branches found
No related tags found
No related merge requests found
Uses.png 0 → 100644
Uses.png

11.1 KiB

File added
\documentclass[12pt]{article}
\usepackage{multirow}
\usepackage{indentfirst}
\usepackage[nottoc,numbib]{tocbibind}
\usepackage{graphicx}
\usepackage{xcolor} % for different colour comments
\usepackage{hyperref}
\hypersetup{
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=black,
urlcolor=black
}
%% Comments
\newif\ifcomments\commentstrue
\ifcomments
\newcommand{\authornote}[3]{\textcolor{#1}{[#3 ---#2]}}
\newcommand{\todo}[1]{\textcolor{red}{[TODO: #1]}}
\else
\newcommand{\authornote}[3]{}
\newcommand{\todo}[1]{}
\fi
\newcommand{\wss}[1]{\authornote{magenta}{SS}{#1}}
\newcommand{\hm}[1]{\authornote{blue}{HM}{#1}} %Hediyeh
\newcommand{\tz}[1]{\authornote{blue}{TZ}{#1}} %Tahereh
\newcommand{\pl}[1]{\authornote{blue}{PL}{#1}} %Peng
\newcounter{TestNumberCounter}
\newcommand{\resettestcounter}{\setcounter{TestNumberCounter}{0}}
\newcommand{\testnumber}{\arabic{section}.\arabic{subsection}.\arabic{TestNumberCounter}\stepcounter{TestNumberCounter}}
\begin{document}
\title{Test Plan for Pic-Puzzle}
\author{Justin Kapinski, Boyun Deng, Yuchen Liu}
\date{\today}
\maketitle
\setlength{\parskip}{1em}
\tableofcontents
\listoftables
\listoffigures
\newpage
\section{Revision History}
\begin{description}
\item[Revision 0] Nov 2, 2015: Created document
\end{description}
\newpage
\section{Introduction}
\section{Anticipated and Unlikely Changes}
\subsection{Anticipated Changes}
Anticipated changes are parts of the system that are likely to change.
Due to this, it is very important that these parts are hidden within
modules to gaurd the rest of the system against these changes.
\begin{description}
\item[AC1:] The hardware the system will run on
\item[AC2:] The format the images are stored on persistent storage
\item[AC3:] The format an image is stored in memory
\item[AC4:] The GUI layout
\item[AC5:] The representation of the hints for the image
\item[AC6:] The behaviour of the game
\item[AC7:] The visualization of a Nonogram
\item[AC8:] The number of levels in the game
\end{description}
\subsection{Unlikely Changes}
Some parts of the system are not intended to change. Trying to
generalize the system to anticipate change to these parts is overly
complex and unnecessary.
\begin{description}
\item[UC1:] The images will be stored in files
\item[UC2:] The mouse will be used for input
\item[UC3:] The game will be played using the GUI
\end{description}
\section{Module Hierarchy}
The system can be decomposed into separate modules, each having a
specific task. The overall module design is described in this section.
The following list is a list of all the leaf modules in the module
hierarchy.
\begin{description}
\item[M1:] Hardware Hiding Module
\item[M2:] Nonogram Hint Module
\item[M3:] Nonogram Module
\item[M4:] Game GUI Module
\item[M5:] Nonogram GUI Module
\item[M6:] Game Logic Module
\item[M7:] Graphics Module
\item[M8:] Input Module
\item[M9:] Image Decoding Module
\end{description}
Not all of these modules will actually be implemented. M1 is implemented
by the operating system the program will be running on. M7 and M8 are
implemented by Java so there is no need to re-implement them.
\begin{center}
\begin{table}[h]
\centering
\caption{Module Hierarchy} \label{tab:title}
\begin{tabular}{ | l | l | }
\hline
Level 1 & Level 2 \\ \hline
Hardware Hiding Module & \\ \hline
\multirow{5}{*}{Behaviour Hiding Module} & Nonogram Hint Module \\
& Nonogram Module \\
& Game GUI Module \\
& Nonogram GUI Module \\
& Game Logic Module \\ \hline
\multirow{3}{*}{Software Decision Module} & Graphics Module \\
& Input Module \\
& Image Decoding Module \\ \hline
\end{tabular}
\end{table}
\end{center}
\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
dependency cycles.
\begin{figure}[h]
\caption{Uses Hierarchy}
\centering
\includegraphics[width=1\textwidth]{Uses.png}
\end{figure}
\section{Scheduling}
\subsection{Timeline}
\subsection{Pert Chart}
\subsection{Gantt Chart}
\clearpage
\begin{thebibliography}{9}
\end{thebibliography}
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment