Newer
Older
\documentclass[12pt]{article}
\usepackage{indentfirst}
\usepackage[nottoc,numbib]{tocbibind}
\usepackage{xcolor} % for different colour comments
\usepackage{hyperref}
\hypersetup{
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=black,
urlcolor=black
}
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
%% 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}
\title{Software Requirements for Pic-Puzzle}
\author{Justin Kapinski, Boyun Deng, Yuchen Liu}
\date{\today}
\maketitle
\setlength{\parskip}{1em}
\tableofcontents
\listoffigures
\listoftables
\newpage
\section{Revision History}
\begin{description}
\item[Revision 0.2] Oct 7, 2015: Filled in Functional Requirements
54
55
56
57
58
59
60
61
62
63
64
65
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
105
106
107
108
109
110
111
112
113
114
115
\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}
The purpose of the Pic-Puzzle is to emulate a type of logic puzzle
called Nonograms on the computer. Anything that can be done with
Nonograms on paper should be able to be done in Pic-Puzzle. This project
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
documented. In addition, it has a very simple design that is messy and
not 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}
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
Requirement: 2 Requirement Type: 9 Event/Use Case: 2
Description: If the players click on the right small square that the program designed to be, the colour of the small square will turn to black.
Rational: That is how the original game works.
Originator: Requirement Analyst
Fit Criterion:
Customer Satisfaction: 4 Customer Dissatisfaction: 5
Requirement: 3 Requirement Type: 9 Event/Use Case: 3
Description: If the players click on the wrong small square that the program designed to be, the colour of the small square will not change.
Rational: That is how the original game works.
Originator: Requirement Analyst
Fit Criterion:
Customer Satisfaction: 3 Customer Dissatisfaction: 5
Requirement: 4 Requirement Type: 9 Event/Use Case: 4
Description: If the players click on the small squares that are already black, the colour of the small squares will not change.
Rational: That is how the original game works.
Originator: Requirement Analyst
Fit Criterion:
Customer Satisfaction: 3 Customer Dissatisfaction: 5
Requirement: 5 Requirement Type: 9 Event/Use Case: 5
Description: If the players click on the small squares that are already black, the colour of the small squares will not change.
Rational: That is how the original game works.
Originator: Requirement Analyst
Fit Criterion:
Customer Satisfaction: 3 Customer Dissatisfaction: 5
Requirement: 6 Requirement Type: 9 Event/Use Case: 6
Description: If the players successfully finished the graph, the program will pop up messages to tell the players they finished one game.
Rational: Players will know when they completed the graph.
Originator: Requirement Analyst
Fit Criterion:
Customer Satisfaction: 4 Customer Dissatisfaction: 5
Requirement: 7 Requirement Type: 9 Event/Use Case: 7
Description: After popping up messages to tell the players they finished one game, there will be a button “next” for players to clicl, so they can go the next game.
Rational: Players can choose to go the next game.
Originator: Requirement Analyst
Fit Criterion:
Customer Satisfaction: 4 Customer Dissatisfaction: 5
Requirement: 8 Requirement Type: 9 Event/Use Case: 8
Description: After popping up messages to tell the players they can continue to next game, there will be a next button for players to click, so they can continue the next game.
Rational: Players can continue to next game if they want.
Originator: Requirement Analyst
Fit Criterion:
Customer Satisfaction: 4 Customer Dissatisfaction: 5
Requirement: 9 Requirement Type: 9 Event/Use Case: 9
Description: After the players finish one game, they should be able to click on the next button on the interface to play another new game.
Rational: Players will know how to continue the next game.
Fit Criterion:
Customer Satisfaction: 4 Customer Dissatisfaction: 5
Requirement: 10 Requirement Type: 9 Event/Use Case: 10
Description: After the players finish all the games the program have, the program will pop up messages to tell the players they finished all the games.
Rational: Players will know when they finished all the games.
Fit Criterion:
Customer Satisfaction: 5 Customer Dissatisfaction: 5
Requirement: 11 Requirement Type: 9 Event/Use Case: 11
Description: After popping up messages to tell the players they finished all the games, there will be another message to tell the players they can either close the game or go back to the beginning to play the game again.
Rational: Players will know what they can do when they finished all the games.
Fit Criterion:
Customer Satisfaction: 5 Customer Dissatisfaction: 5
Requirement: 12 Requirement Type: 9 Event/Use Case:12
Description: After popping up messages to tell the players they can either close the game or go back to the beginning to play the game again, there will be two buttons (“close” and “next”) for players to click.
Rational: Players can choose close the game or play the game again.
Fit Criterion:
Customer Satisfaction: 5 Customer Dissatisfaction: 5
\section{Non-functional Requirements}
\subsection{Look and Feel Requirements}
Pic-Puzzle's GUI should be look similar to PicrossEngine's pictured below.
\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.
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
293
294
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
321
\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.
\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
Document, Design Document, Test Plan, Test Report, User's Guide, and the
projects source code. This documentation will be completed at the same
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}
\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}