Skip to content
Snippets Groups Projects
requirements.tex 12.4 KiB
Newer Older
\documentclass[12pt]{article}

\usepackage{indentfirst}
\usepackage[nottoc,numbib]{tocbibind}
Justin's avatar
Justin committed
\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}

\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 
	\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

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}

Justin's avatar
Justin committed
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}

Justin's avatar
Justin committed
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. 
Justin's avatar
Justin committed
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}

Justin's avatar
Justin committed
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}

Justin's avatar
Justin committed
The product should be easy to add more content to. It should be simple 
to create more levels and add them to the game. 
Justin's avatar
Justin committed
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. 
Justin's avatar
Justin committed
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. 
Justin's avatar
Justin committed
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.
\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}