Newer
Older
\documentclass[12pt]{article}
\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
\begin{document}

Justin
committed
\title{Software Requirements for PicPuzzle}
\author{Justin Kapinski, Boyun Deng, Yuchen Liu}
\date{\today}
\maketitle
\setlength{\parskip}{1em}
\tableofcontents
\listoffigures
\newpage
\section{Revision History}
\begin{description}

Justin
committed
\item[Revision 1.0] Nov 22, 2015: Fixed spelling and grammar and updated requirements
\item[Revision 0.2] Oct 7, 2015: Filled in Functional Requirements
\item[Revision 0.1] Oct 6, 2015: Filled in most sections other than Functional and Non-functional requirements
\item[Revision 0] Oct 5, 2015: Created document
\end{description}
\newpage
\section{Project Drivers}
\subsection{Purpose of the Project}

Justin
committed
The purpose of PicPuzzle is to emulate a type of logic puzzle
called a Nonogram on the computer. Anything that can be done with
Nonograms on paper should be able to be done in PicPuzzle. This project
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
will let users have fun while working on a logic puzzle.
\subsection{The Stakeholders}
The client for this project is Dr. Smith and the TAs of 3XA3. They
commissioned the project to test our understanding of Software
Engineering principles.
The users for this project are people who like to play puzzle games. The
typical user will want to play a puzzle game for many reasons. Some
examples are: they are bored and they want they want to play a game,
they want to excersize their brains, or they just like Nonograms.
The other users for this project will be Dr. Smith and the TAs of 3XA3.
They will be testing our project and ensuring it matches our
requirements.
\section{Project Constraints}
\subsection{Mandated Constraints}
The first constraint the project has is that it must be completed by
early December. Another constraint is that the final product should at
least replicate the functionality of another project called
PicrossEngine. This project was also created to replicate Nonograms.
\subsection{Naming Conventions and Terminology}
\begin{description}
\item[3XA3:] \hfill \\ An experiential software engineering course at McMaster University with a large software project.
\item[Nonogram:] \hfill \\ A logic puzzle involving setting pixels of a picture to black or white \cite{nonogram}.
\item[PicrossEngine:] \hfill \\ The project this one is based on. It is a Nonogram game \cite{picrossengine}.
\item[Player:] \hfill \\ See user.
\item[User:] \hfill \\ The user is a person who will use the final product.
\end{description}
\subsection{Relevant Facts and Assumptions}
The project this one will be replicating, PicrossEngine, is very poorly

Justin
committed
documented. In addition, it has a very simple design of the code that is messy and
not well planned out. Due to these factors, our project will not reuse any
code or documentation.
The completed project will assume that the player knows how to play a
Nonogram since it is a simple game to learn and it eliminates the need
for an in game manual.
\section{Functional Requirements}

Justin
committed
Requirement: 1 Requirement Type: 9 Event/Use Case: 1 \\
Description: The layout of the game should be a big square with n*n small squares in it. On the top of the big square, there should be numbers for each column to indicate how many squares that column have will be black against the background colour. And also there should be numbers for each row on the side of the big square to do the same thing for columns. \\
Rational: That is how the original game works. \\
Originator: Requirement Analyst \\
Fit Criterion: \\
Customer Satisfaction: 3 Customer Dissatisfaction: 5

Justin
committed
Requirement: 2 Requirement Type: 9 Event/Use Case: 2 \\
Description: If the player clicks on the right square, the colour of the square will turn black. \\
Rational: That is how the original game works. \\
Originator: Requirement Analyst \\
Fit Criterion: \\
Customer Satisfaction: 4 Customer Dissatisfaction: 5

Justin
committed
Requirement: 3 Requirement Type: 9 Event/Use Case: 3 \\
Description: If the player clicks on the wrong square, the colour of the square will not change. \\
Rational: That is how the original game works. \\
Originator: Requirement Analyst \\
Fit Criterion: \\
Customer Satisfaction: 3 Customer Dissatisfaction: 5

Justin
committed
Requirement: 4 Requirement Type: 9 Event/Use Case: 4 \\
Description: If the player clicks on the squares that are already black, the colour of the squares will not change. \\
Rational: That is how the original game works. \\
Originator: Requirement Analyst \\
Fit Criterion: \\
Customer Satisfaction: 3 Customer Dissatisfaction: 5

Justin
committed
Requirement: 5 Requirement Type: 9 Event/Use Case: 5 \\
Description: If the player successfully finishes a level, the program will pop up a message to tell the player they finished it. \\
Rational: Players need to know when they completed a level. \\
Originator: Requirement Analyst \\
Fit Criterion: \\
Customer Satisfaction: 4 Customer Dissatisfaction: 5

Justin
committed
Requirement: 6 Requirement Type: 9 Event/Use Case: 6
Description: After popping up a message to tell the players they finished one level, there will be a button “next” for players to click, so they can go the next level.
Rational: Players need to be able to choose to go the next level. \\
Originator: Requirement Analyst \\
Fit Criterion: \\
Customer Satisfaction: 4 Customer Dissatisfaction: 5

Justin
committed
Requirement: 7 Requirement Type: 9 Event/Use Case: 7 \\
Description: After the player finishes one level, they should be able to click on the next button on the interface to play the next level. \\
Rational: Players need to be able to choose to go the next level. \\
Fit Criterion: \\
Customer Satisfaction: 4 Customer Dissatisfaction: 5

Justin
committed
Requirement: 8 Requirement Type: 9 Event/Use Case: 8 \\
Description: After the player finishes all the level the program has, the program will pop up a message to tell the player they finished all the levels. \\
Rational: Players need to be able to do something when the game is over. \\
Fit Criterion: \\
Customer Satisfaction: 5 Customer Dissatisfaction: 5

Justin
committed
Requirement: 9 Requirement Type: 9 Event/Use Case: 9 \\
Description: After popping up messages to tell the player they finished all the levels, there will be a button that the player can click to restart the game. \\
Rational: Players need to be able to do something when the game is over. \\
Fit Criterion: \\
Customer Satisfaction: 5 Customer Dissatisfaction: 5

Justin
committed
Requirement: 10 Requirement Type: 9 Event/Use Case:10 \\
Description: When the restart button is clicked, the game restarts. \\
Rational: Players need to be able to do something when the game is over. \\
Fit Criterion: \\
Customer Satisfaction: 5 Customer Dissatisfaction: 5
\section{Non-functional Requirements}
\subsection{Look and Feel Requirements}

Justin
committed
PicPuzzle's GUI should be look similar to PicrossEngine's pictured below.
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
\begin{figure}[h]
\caption{Example of PicrossEngine's GUI}
\centering
\includegraphics{uiexample.png}
\end{figure}
\subsection{Usability and Humanity Requirements}
The product should easy to use for people above 8 years old. It should
be easy to learn even for people who are not familiar with computers.
\subsection{Performance Requirements}
The product should not have any noticable loading times. The data to
load is very small and should take much less than 1 second to completely
load.
The GUI of the product should be responsive and react to any user
interaction within 0.5 seconds.
\subsection{Operational and Environmental Requirements}
The product should run on any computer that has a Java environment. Some
main ones are Windows, Mac OS X, and Linux.
\subsection{Maintainability and Support Requirements}
The product should be easy to add more content to. It should be simple
to create more levels and add them to the game.
\subsection{Security Requirements}
The product will not be handling any sensitive data so security is not
very relevant. The only concern is that any data files should not be
able to be exploited to run arbitrary code.
\subsection{Cultural Requirements}
The product contains images, so care needs to be taken so that no
symbols are included that some cultures would offensive. Also all text
should not be offensive.
\subsection{Legal Requirements}
The project should only use open sourced libraries that are compatible
with the license of the project.
\section{Project Issues}
\subsection{Open Issues}
\begin{itemize}
\item The investigation into whether or not an external library will be necessary for the GUI is not complete.

Justin
committed
\item The investigation is now complete and there is no need for an external library to be used.
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
\item It is unclear if the implementation will require special care to work on multiple platforms.
\end{itemize}
\subsection{Off-the-Shelf Solutions}
There are a few off-the-shelf solutions for the problem the product will
solve. The first off-the-shelf solution is called PicrossEngine. It is
an implementation of a Nonogram game that is simple and does not have
many features beyong the bare minimum to be considered a Nonogram.
Another off-the-shelf solution is called Picross DS. This is a video
game made by Nintendo for their DS portable game console. It has many
advanced features such as a score and downloading additional puzzles
from online \cite{picrossds}.
\subsection{New Problems}
Not applicable to this project.
\subsection{Tasks}
The project's life cycle will follow the schedule for Software
Engineering 3XA3. The project must be completed by the end of the
semester.
\subsection{Migration to the New Product}
Not applicable to this project.
\subsection{Risks}
The main risk our project faces is not completing a GUI for the game.
This could happen due to the short amount of time required to produce a
finished product. GUI programming can be tricky and because of this the
time required to code one might exceed our initial estimate. As a
contingency plan we can create a command line interface to the program
instead.
\subsection{Costs}
Not applicable to this project.
\subsection{User Documentation and Training}
The documentation will include, the Problem Statement, Requirements

Justin
committed
Document, Design Document, Test Plan, Test Report, and the
project's source code. This documentation will be completed at the same
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
time the project is completed.
\subsection{Waiting Room}
An additional feature that would improve the project if there is time
for implementing it would be a level selection screen. This would let
the user pick a level they want to play and tell them if they have
completed that level yet.
\subsection{Ideas for Solutions}
None yet.
\newpage
\begin{thebibliography}{9}
\bibitem{nonogram} "Nonogram." Internet: https://en.wikipedia.org/wiki/Nonogram, Sept 27, 2015 [Oct 5, 2015]
\bibitem{picrossengine} "Picross Puzzle Engine using Python." Internet: https://github.com/Elliotpwnz/PicrossEngine, Jun 26, 2015 [Oct 5, 2015]
\bibitem{picrossds} "Picross DS." Internet: http://ca.ign.com/games/picross-ds/nds-876330, Jul 12, 2007 [Oct 5, 2015]
\end{thebibliography}
\end{document}