Skip to content
Snippets Groups Projects
requirements.tex 11.6 KiB
Newer Older
Justin's avatar
Justin committed
\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}

\title{Software Requirements for PicPuzzle} 
Justin's avatar
Justin committed
\author{Justin Kapinski, Boyun Deng, Yuchen Liu}
\date{\today}
	
\maketitle

\setlength{\parskip}{1em}

\tableofcontents

\listoffigures

\newpage

\section{Revision History}
\begin{description}
	\item[Revision 1.0] Nov 22, 2015: Fixed spelling and grammar and updated requirements
Justin's avatar
Justin committed
	\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 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 
Justin's avatar
Justin committed
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 of the code that is messy and 
not well planned out. Due to these factors, our project will not reuse any 
Justin's avatar
Justin committed
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: \\
Justin's avatar
Justin committed
Customer Satisfaction: 3                   Customer Dissatisfaction: 5


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: \\
Justin's avatar
Justin committed
Customer Satisfaction: 4                   Customer Dissatisfaction: 5


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: \\
Justin's avatar
Justin committed
Customer Satisfaction: 3                   Customer Dissatisfaction: 5


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: \\
Justin's avatar
Justin committed
Customer Satisfaction: 3                   Customer Dissatisfaction: 5


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: \\
Justin's avatar
Justin committed
Customer Satisfaction: 4                   Customer Dissatisfaction: 5


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: \\
Justin's avatar
Justin committed
Customer Satisfaction: 4                   Customer Dissatisfaction: 5


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: \\
Justin's avatar
Justin committed
Customer Satisfaction: 4                   Customer Dissatisfaction: 5


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: \\
Justin's avatar
Justin committed
Customer Satisfaction: 5                  Customer Dissatisfaction: 5


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: \\
Justin's avatar
Justin committed
Customer Satisfaction: 5                  Customer Dissatisfaction: 5


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: \\
Justin's avatar
Justin committed
Customer Satisfaction: 5                  Customer Dissatisfaction: 5
\section{Non-functional Requirements}

\subsection{Look and Feel Requirements}

PicPuzzle's GUI should be look similar to PicrossEngine's pictured below.
Justin's avatar
Justin committed

\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.
\item The investigation is now complete and there is no need for an external library to be used.
Justin's avatar
Justin committed
\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, and the 
project's source code. This documentation will be completed at the same 
Justin's avatar
Justin committed
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}