Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • namy2/se3xa3
  • bokhari/se3xa3
  • kanwalg/se3xa3
  • sunx20/se3xa3
  • hameea1/se3xa3
  • aij/se3xa3
  • hanzy3/se3xa3
  • linl20/se3xa3
  • zhous20/se3xa3
9 results
Show changes
Commits on Source (63)
Showing
with 1100 additions and 197 deletions
......@@ -8,33 +8,6 @@
%% Saved with string encoding Unicode (UTF-8)
@inproceedings{Parnas1978,
Address = {Piscataway, NJ, USA},
Author = {David L. Parnas},
Booktitle = {ICSE '78: Proceedings of the 3rd international conference on Software engineering},
Date-Added = {2016-10-28 03:56:16 +0000},
Date-Modified = {2016-10-28 03:56:16 +0000},
Isbn = {none},
Location = {Atlanta, Georgia, United States},
Pages = {264--277},
Publisher = {IEEE Press},
Title = {Designing Software for Ease of Extension and Contraction},
Year = {1978}}
@article{Parnas1972a,
Author = {David L. Parnas},
Date-Added = {2016-10-28 03:55:43 +0000},
Date-Modified = {2016-10-28 03:55:43 +0000},
Journal = {Comm. ACM},
Month = {December},
Number = {2},
Pages = {1053--1058},
Title = {On the Criteria To Be Used in Decomposing Systems into Modules},
Volume = {15},
Year = {1972},
Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QOS4uLy4uLy4uLy4uLy4uLy4uL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9QYXJuYXMxOTcyLnBkZtIXCxgZV05TLmRhdGFPEQGmAAAAAAGmAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAAXAgwOUGFybmFzMTk3Mi5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3+xs9CaVP4AAAAAAAAAAAAGAAQAAAkgAAAAAAAAAAAAAAAAAAAAClJlZmVyZW5jZXMAEAAIAADOl6vDAAAAEQAIAADQmptOAAAAAQAUABcCDAAXAE0AFv3tAAj3ZgACZI4AAgBGTWFjaW50b3NoIEhEOlVzZXJzOgBzbWl0aHM6AFdvcms6AFJlc2VhcmNoOgBSZWZlcmVuY2VzOgBQYXJuYXMxOTcyLnBkZgAOAB4ADgBQAGEAcgBuAGEAcwAxADkANwAyAC4AcABkAGYADwAaAAwATQBhAGMAaQBuAHQAbwBzAGgAIABIAEQAEgA0VXNlcnMvc21pdGhzL1dvcmsvUmVzZWFyY2gvUmVmZXJlbmNlcy9QYXJuYXMxOTcyLnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOAMoAzwDXAoECgwKIApMCnAKqAq4CtQK+AsMC0ALTAuUC6ALtAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAu8=}}
@inproceedings{ParnasEtAl1984,
Author = {D.L. Parnas and P.C. Clement and D. M. Weiss},
Booktitle = {International Conference on Software Engineering},
......@@ -45,23 +18,3 @@
Year = {1984},
Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QPy4uLy4uLy4uLy4uLy4uL3NlNHNjL1NjaUNvbXBBbmRTb2Z0RW5nUGFwZXJzL1Bhcm5hc0V0QWwxOTg0LnBkZtIXCxgZV05TLmRhdGFPEQHcAAAAAAHcAAIAAAxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAADOl3ODSCsAAAkx/Q0SUGFybmFzRXRBbDE5ODQucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTH9RNNvBNMAAAAAAAAAAAAFAAMAAAkgAAAAAAAAAAAAAAAAAAAAF1NjaUNvbXBBbmRTb2Z0RW5nUGFwZXJzAAAQAAgAAM6Xq8MAAAARAAgAANNvPRMAAAABABQJMf0NCTHuxwASFacACPdmAAJkjgACAFVNYWNpbnRvc2ggSEQ6VXNlcnM6AHNtaXRoczoAUmVwb3M6AHNlNHNjOgBTY2lDb21wQW5kU29mdEVuZ1BhcGVyczoAUGFybmFzRXRBbDE5ODQucGRmAAAOACYAEgBQAGEAcgBuAGEAcwBFAHQAQQBsADEAOQA4ADQALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAENVc2Vycy9zbWl0aHMvUmVwb3Mvc2U0c2MvU2NpQ29tcEFuZFNvZnRFbmdQYXBlcnMvUGFybmFzRXRBbDE5ODQucGRmAAATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANAA1QDdAr0CvwLEAs8C2ALmAuoC8QL6Av8DDAMPAyEDJAMpAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAys=}}
@book{RobertsonAndRobertson2012,
Author = {James Robertson and Suzanne Robertson},
Date-Added = {2016-09-22 13:54:40 +0000},
Date-Modified = {2016-09-22 14:01:42 +0000},
Edition = {16},
Publisher = {Atlantic Systems Guild Limited},
Title = {Volere Requirements Specification Template},
Year = {2012}}
@article{ParnasAndClements1986,
Author = {David L. Parnas and P.C. Clements},
Date-Added = {2016-09-10 13:11:57 +0000},
Date-Modified = {2016-09-10 13:11:57 +0000},
Journal = {IEEE Transactions on Software Engineering},
Number = {2},
Pages = {251--257},
Title = {A Rational Design Process: How and Why to Fake it},
Volume = {12},
Year = {February 1986},
Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QRi4uLy4uLy4uLy4uLy4uL3NlNHNjL1NjaUNvbXBBbmRTb2Z0RW5nUGFwZXJzL1Bhcm5hc0FuZENsZW1lbnRzMTk4Ni5wZGbSFwsYGVdOUy5kYXRhTxEB9gAAAAAB9gACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAzpdzg0grAAAJMf0NGVBhcm5hc0FuZENsZW1lbnRzMTk4Ni5wZGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkx/UPTbwTTAAAAAAAAAAAABQADAAAJIAAAAAAAAAAAAAAAAAAAABdTY2lDb21wQW5kU29mdEVuZ1BhcGVycwAAEAAIAADOl6vDAAAAEQAIAADTbz0TAAAAAQAUCTH9DQkx7scAEhWnAAj3ZgACZI4AAgBcTWFjaW50b3NoIEhEOlVzZXJzOgBzbWl0aHM6AFJlcG9zOgBzZTRzYzoAU2NpQ29tcEFuZFNvZnRFbmdQYXBlcnM6AFBhcm5hc0FuZENsZW1lbnRzMTk4Ni5wZGYADgA0ABkAUABhAHIAbgBhAHMAQQBuAGQAQwBsAGUAbQBlAG4AdABzADEAOQA4ADYALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAEpVc2Vycy9zbWl0aHMvUmVwb3Mvc2U0c2MvU2NpQ29tcEFuZFNvZnRFbmdQYXBlcnMvUGFybmFzQW5kQ2xlbWVudHMxOTg2LnBkZgATAAEvAAAVAAIADf//AACABtIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNdTlNNdXRhYmxlRGF0YaMdHyBWTlNEYXRhWE5TT2JqZWN00hscIiNcTlNEaWN0aW9uYXJ5oiIgXxAPTlNLZXllZEFyY2hpdmVy0SYnVHJvb3SAAQAIABEAGgAjAC0AMgA3AEAARgBNAFUAYABnAGoAbABuAHEAcwB1AHcAhACOANcA3ADkAt4C4ALlAvAC+QMHAwsDEgMbAyADLQMwA0IDRQNKAAAAAAAAAgEAAAAAAAAAKAAAAAAAAAAAAAAAAAAAA0w=}}
No preview for this file type
......@@ -12,10 +12,11 @@
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=red,
linkcolor=black,
urlcolor=blue
}
\usepackage[round]{natbib}
\usepackage{verbatim}
\newcounter{acnum}
\newcommand{\actheacnum}{AC\theacnum}
......@@ -29,18 +30,16 @@
\newcommand{\mthemnum}{M\themnum}
\newcommand{\mref}[1]{M\ref{#1}}
\title{SE 3XA3: Software Requirements Specification\\Title of Project}
\title{SE 3XA3: Software Requirements Specification\\Snake 2.o}
\author{Team \#, Team Name
\\ Student 1 name and macid
\\ Student 2 name and macid
\author{Team 30, VUA30
\\ Andy Hameed | Hameea1
\\ Usman Irfan | Irfanm7
\\ Student 3 name and macid
}
\date{\today}
\input{../../Comments}
\begin{document}
\maketitle
......@@ -67,6 +66,18 @@ Date 2 & 1.1 & Notes\\
\section{Introduction}
Almost everyone nowadays relies on a computer as a multipurpose tool for research, video streaming, gaming and many other tasks. With the emergence of fast computing, gaming has become a popular pastime activity and a source of entertainment for many. However, not everyone has a device powerful enough to support extensive game applications. A simple, memory-effecient application of the Snake game allows it to be accessible for gamers without the need for extensive hardware or a high-performance computer. Our team, VUA30, will be creating a desktop application for the well-known “Snake” game with new enhancements and features. This competitive and addictive game can allow the user to play at their own pace and challenge their own high score.
Buying a computing device with high storage and faster performance can be out of budget. Complicated software covers up all the storage and the user is bound to use these applications as opposed to downloading other software. The importance of the redevelopment of “The Snake” is to save computing device’s personal storage and allow the user to play a game 24/7 with strong performance, even offline. Creating a desktop version of the snake game can fit into the category of downloadable calssical games such as the solitaire suite. The recreation of this game will allow the user to enjoy the classical game anytime and anywhere as long as they have installed the application. Improving aspects such as graphics and custom speed will also make the game more interesting. We would like to add more features to the game to make it more customizable and help people enjoy the classical game in an exciting and new way.
The scope of the project will cover the reimplementation of the game as well as enhancements to the game, in particular, changes that pertain to gameplay themes, different modes/ difficulties and so on. Due to the time constraints of the project, not all enhancements will be implemented but at least one enhancement will be implemented to differentiate Snake 2.o from previous remakes of the game.
The Module Guide (MG) document will outline the structure of the reimplementation through modular programming. It highlights the components of the system such that each component can easily be identified by project members, whether they are maintaining or designing the software. Among the list of internal stakeholders that may make use of this document, any new members that are added to the team will also be able to use the MG as a convenient reference to specific modules that they are concerned with or working on~\citep{ParnasEtAl1984}.
\begin{comment}
Decomposing a system into modules is a commonly accepted approach to developing
software. A module is a work assignment for a programmer or programming
team~\citep{ParnasEtAl1984}. We advocate a decomposition
......@@ -115,6 +126,7 @@ modules. Section \ref{SecTM} includes two traceability matrices. One checks
the completeness of the design against the requirements provided in the SRS. The
other shows the relation between anticipated changes and the modules. Section
\ref{SecUse} describes the use relation between modules.
\end{comment}
\section{Anticipated and Unlikely Changes} \label{SecChange}
......@@ -197,13 +209,29 @@ actually be implemented.
\end{tabular}
\caption{Module Hierarchy}
\label{TblMH}
\end{table}
\end{table}//
\section{Connection Between Requirements and Design} \label{SecConnection}
The design of the system is intended to satisfy the requirements developed in
the SRS. In this stage, the system is decomposed into modules. The connection
between requirements and modules is listed in Table \ref{TblRT}.
The Design of the software product was designed to meet the functional and non-functional
requirements. The user-interference file displays the game interface that allows the user to either start
the game or to select different modes, themes or even check the high score. The design was kept to
keep the interface simple and easy to use. When the user runs the main file, it opens a title page
which has multiple options from which a user can select options. To meet the functional requirement
of outputting high score, the main interface file has a button which when pressed open a new window
displaying the highest score of the game so far. A quit button and a Main Menu button has been
added in the high score window so the user can either go back or end the game. In the Main Menu,
there are different themes combined that the user can select letting us meet another requirement.
The principal part of the design was to open a new window which begins the snake game. It was
created by adding a new button ``Game Time" in the Main Menu window. The design of the snake
game is kept simple where a snake and food appears randomly on the window, upon pressing the
Arrow direction keys the snake moves to the respective location proceeding the game smoothly and
connecting our requirement to its design. The current score of the game displays on the top which
keeps updating as the snake eats the food, and a quit button will be added on the bottom of the
screen so the user can quit the game whenever they feel like.\\
To enhance our design, in the future the group has planned to add radio buttons, drop-down menus or
use a slider to make the game interactive. The radio buttons would be installed where the user can
select the difficulty modes of the game, the drop-down menus would be helpful in selecting the theme
and the slider would work to alter the speed of the snake.
\section{Module Decomposition} \label{SecMD}
......@@ -238,40 +266,62 @@ selected.
\begin{description}
\item[Secrets:]The contents of the required behaviours.
\item[Services:]Includes programs that provide externally visible behaviour of
\item[Services:] Includes programs that provide externally visible behaviour of
the system as specified in the software requirements specification (SRS)
documents. This module serves as a communication layer between the
hardware-hiding module and the software decision module. The programs in this
module will need to change if there are changes in the SRS.
\item[Implemented By:] --
\end{description}
\subsubsection{Input Format Module (\mref{mInput})}
\subsubsection{Input Format Module}
\begin{description}
\item[Secrets:]The format and structure of the input data.
\item[Services:]Converts the input data into the data structure used by the
input parameters module.
\item[Implemented By:] [Your Program Name Here]
\item[Secrets:] Input Data
\item[Services:] Collects data on customized fields in the game
such as speed, theme, difficulty and other important variables.
\item[Implemented By:] Pygame library
\end{description}
\subsubsection{Etc.}
\subsubsection{Snake Module}
\begin{description}
\item[Secrets:] Snake
\item[Services:] Defines the snake class and its attributes and behaviours. This
includes the movement of the snake depending on its attributes and its interaction with
user events.
\item[Implemented By:] Pygame library
\end{description}
\subsubsection{Food Module}
\begin{description}
\item[Secrets:] Food
\item[Services:] Defines the food item class for spawning the food item during gameplay.
\item[Implemented By:] Pygame library
\end{description}
\subsubsection{Themes Module}
\begin{description}
\item[Secrets:] Themes
\item[Services:] Allows the user to choose different themes of the snake game.
\item[Implemented By:] Pygame library
\end{description}
\subsection{Software Decision Module}
\begin{description}
\item[Secrets:] The design decision based on mathematical theorems, physical
facts, or programming considerations. The secrets of this module are
\emph{not} described in the SRS.
\item[Services:] Includes data structure and algorithms used in the system that
do not provide direct interaction with the user.
\item[Secrets:] Text files
\item[Services:] Creates a text file which stores the game score
% Changes in these modules are more likely to be motivated by a desire to
% improve performance than by externally imposed changes.
\item[Implemented By:] --
\item[Implemented By:] N/A
\end{description}
\subsubsection{Etc.}
%\subsubsection{Etc.}
\section{Traceability Matrix} \label{SecTM}
......
No preview for this file type
\documentclass{article}
\usepackage{pdfpages}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{hyperref}
\title{SE 3XA3: Development Plan\\Title of Project}
\author{Team \#, Team Name
\\ Student 1 name and macid
\\ Student 2 name and macid
\\ Student 3 name and macid
\title{SE 3XA3: Development Plan\\Snake 2.o}
\author{Team \# 30, VUA30
\\ Vaibhav Chadha , chadhav
\\ Usman Irfan , irfanm7
\\ Andy Hameed , hameea1
}
\date{}
\input{../Comments}
\begin{document}
......@@ -23,9 +26,12 @@
\toprule
\textbf{Date} & \textbf{Developer(s)} & \textbf{Change}\\
\midrule
Date1 & Name(s) & Description of changes\\
Date2 & Name(s) & Description of changes\\
... & ... & ...\\
Sept 25, 2018 & Vaibhav, Usman, Andy & Worked on part 1 to 4\\
Sept 27, 2018 & Vaibhav, Usman, Andy & Worked on part 4 to 8\\
Sept 27, 2018 & Vaibhav & Added the information from the meeting documents to the LaTeX file\\
Sept 28, 2018 & Andy & Proof of concept, Git workflow, Final editing and formatting\\
Sept 28, 2018 & Usman & Updated proof of concept\\
Oct 12, 2018 & Andy & Made changes according to feedback on development plan and added section on POC demo\\
\bottomrule
\end{tabularx}
\end{table}
......@@ -34,25 +40,97 @@ Date2 & Name(s) & Description of changes\\
\maketitle
Put your introductory blurb here.
\section{Team Meeting Plan}
Meetings will be held \textbf{twice a week} at the following times:
\begin{itemize}
\item Mondays 5:30 - 6:30 pm at KTH Computer Labs
\item Wednesdays 12:30 to 2:00pm at Health science library
\end{itemize}
\subsection{Roles and Agenda}
\textbf{Chair}: Andy Hameed
\begin{itemize}
\item Responsible for creating the agenda and selecting topics that pertain to all team members
\item Agenda items will be listed as questions\\
\end{itemize}
\textbf{Notettaker}: Usman Irfan
\begin{itemize}
\item Responsible for taking meeting minutes
\item Meeting decisions will be summarized in a statement at the end of the meeting
\end{itemize}
\textbf{Timekeeper}: Vaibhav Chadha
\begin{itemize}
\item Keeps track of time in case we are spending too much time on one topic
\end{itemize}
\section{Team Communication Plan}
Main source of communication is \textbf{Facebook Messenger}, it will be used for general inquiries, updates, reminders of team meetings, any links to useful resources and so on. Phone and texting will be used as a backup in case of urgent matters, for example not being able to get in contact with a team member through messenger.
Aside from these, the team will be using Workflowy to assign small tasks that are promptly due or ones that may not necessarily fit on the gantt chart because they are minor - this tool will be used to delegate a small to-do list for each team member .
\section{Team Member Roles}
Vaibhav Chadha:
\begin{itemize}
\item Latex Documentation
\item Analyst - makes sure the requirements of the clients are met through the software
\item gantt chart management\\
\end{itemize}
Usman Irfan:
\begin{itemize}
\item Scribe
\item Technology Research
\item operation manager -ensures project development is running smoothly and software is being developed according to milestones \\
\end{itemize}
Andy Hameed:
\begin{itemize}
\item Final editing
\item latex documentation
\item team leader\\
\end{itemize}
All:
\begin{itemize}
\item GIT project management
\end{itemize}
\section{Git Workflow Plan}
We will be using the Git Feature Branch Workflow to manage the software development. Using branches, each team member is capable of
working on different modules or sections of the software at the same time in localized branches, before pushing their changes to the master branch.
The following procedures will be followed:
\begin{itemize}
\item Vaibhav will be tagging any major milestones for final submission. This makes the submission process consistent. Otherwise, Andy or Usman will agree on one person to tag and submit for final submission.
\item Any major changes can be placed in a branch to avoid merging conflicts and overwriting existing work. They can be merged later on upon team agreement.
\end{itemize}
\section{Proof of Concept Demonstration Plan}
The original project is built using Javascript, HTML and CSS in contrast to our development plan using python and the Pygame library. Since we are using an OOP language, we will be able to create classes for different components of the snake game such as the snake unit block, snake body, and snake bate. The hardest part of the implementation will be the movement of the snake according to the user's keyboard inputs, and second to that would be the process of expanding the snake once a food item is captured. Besides that, the interface may be difficult to implement in python but could be simple with the use of a python framework such as PyQT5.\\
Once our game application has been developed the next part would be to test the project and for that we will be using Pytest, since our backend language is python this will help us test all possible functions and aspects. The functions that will be difficult to test would be to see if the snake eats the food, does the food appear at random locations after eaten by the snake and if the snake tries to leave the borders, will the game end. Portability will have to be taken into consideration since the application is being built for windows. However, it can be compiled and run on any system as long as the necessary files and libraries are download.
\subsection{POC Demo}
The team will be demonstrating the movement of a snake around the screen using unit blocks for the body of the snake. Lengthening the snake body, scoring and eating the bate will not be demonstrated in the demo. This POC should demonstrate that with the movement of the snake, which is the main component of the game, the team will be able to develop classes to represent other components of the game such as the score, food bate, and lengthening of the snake body.
\section{Technology}
Coding Language: Python, Kivy for GUI\\
IDE: IDLE scripting\\
Testing: PyUnit testing\\
Documentation: Doxygen\\
\section{Coding Style}
We will be using the \href{https://github.com/google/styleguide/blob/gh-pages/pyguide.md}{Google Python Style Guide}
for our coding style. It encompasses all the necessary naming conventions and standards required for the project development.
\section{Project Schedule}
Please see the following pages for the project schedule in the form of a gantt chart.
Provide a pointer to your Gantt Chart.
\includepdf[page=-]{../../ProjectSchedule/Team_Gantt}
\section{Project Review}
......
No preview for this file type
......@@ -3,17 +3,17 @@
\usepackage{tabularx}
\usepackage{booktabs}
\title{SE 3XA3: Problem Statement\\Title of Project}
\title{SE 3XA3: Problem Statement\\ \textbf{Snake Game}}
\author{Team \#, Team Name
\\ Student 1 name and macid
\\ Student 2 name and macid
\\ Student 3 name and macid
\author{Team \#30, VUA30
\\ Usman Irfan - irfanm7
\\ Andy Hameed - hameea1
\\ Vaibhav Chadha - chadhav
}
\date{}
\date{2018-09-21}
\input{../Comments}
\usepackage[left=2cm, right=5cm, top=2cm]{geometry}
\begin{document}
......@@ -23,9 +23,10 @@
\toprule
\textbf{Date} & \textbf{Developer(s)} & \textbf{Change}\\
\midrule
Date1 & Name(s) & Description of changes\\
Date2 & Name(s) & Description of changes\\
... & ... & ...\\
2018-09-20 & Vaibhav & Made the LaTeX file and wrote the section with what the Problem is\\
2018-09-20 & Usman & Added the Importance of Problem section while formatting the LaTeX\\
2018-09-21 & Andy Hameed & Formatted LaTeX file and added Context section, giving the final editing to the document\\
2018-10-09 & Andy Hameed & Edited doc to reflect web app to desktop app decision change\\
\bottomrule
\end{tabularx}
\end{table}
......@@ -34,16 +35,17 @@ Date2 & Name(s) & Description of changes\\
\maketitle
Put your problem statement here.
\subsection*{The Problem}
\wss{comment}
Almost everyone nowadays relies on a computer as a multipurpose tool for research, video streaming, gaming and many other tasks. With the emergence of fast computing, gaming has become a popular pastime activity and a source of entertainment for many. However, not everyone has a device powerful enough to support extensive game applications. A simple, memory effecient application of the Snake game allows it to be accessible for gamers without the need for extensive hardware or a high-performance computer. Our team, VUA30, will be creating a desktop application for the well-known Snake game with new enhancements and features. This competitive and addictive game can allow the user to play at their own pace and challenge their own high score.
\ds{comment}
\subsection*{Importance of the Problem}
\mj{comment}
Buying a computing device with high storage and faster performance can be out of budget. Complicated software covers up all the storage and the user is bound to use these applications as opposed to downloading other software. The importance of the redevelopment of The Snake is to save computing devices' personal storage and allow the user to play a game 24/7 with strong performance, even offline. Creating a desktop version of the snake game can fit into the category of downloadable calssical games such as the solitaire suite. The recreation of this game will allow the user to enjoy the classical game anytime and anywhere as long as they have installed the application. Improving aspects such as graphics and custom speed will also make the game more interesting. We would like to add more features to the game to make it more customizable and help people enjoy the classical game in an exciting and new way.
\cm{comment}
\mh{comment}
\subsection*{Context}
The stakeholders are mainly the gaming audience, the older generation of game enthusiasts, youth and teens. Some other stakeholders that Although the game can be played by anyone, it is targeted towards the audience mentioned above who are most invested in the game. The environment is native app development using Python. This provides provides less flexibility than web API's but there still exists many useful libraries which can be used such as Pygame for example.
\end{document}
\end{document}
\ No newline at end of file
......@@ -7,6 +7,11 @@
%% Saved with string encoding Unicode (UTF-8)
@article{devArticle,
Author = {Sumit Jain},
Title = {Game Development Life Cycle},
Year = {May 2017}
}
@book{RobertsonAndRobertson2012,
Author = {James Robertson and Suzanne Robertson},
......
No preview for this file type
......@@ -7,22 +7,21 @@
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=red,
linkcolor=black,
urlcolor=blue
}
\usepackage[round]{natbib}
\title{SE 3XA3: Software Requirements Specification\\Title of Project}
\author{Team \#, Team Name
\\ Student 1 name and macid
\\ Student 2 name and macid
\\ Student 3 name and macid
\author{Team 30, VUA
\\ Andy Hameed and hameea1
\\ Usman Irfan and irfanm7
\\ Vaibhav Chadah and chadhav
}
\date{\today}
\input{../Comments}
\begin{document}
......@@ -38,7 +37,7 @@
\begin{tabularx}{\textwidth}{p{3cm}p{2cm}X}
\toprule {\bf Date} & {\bf Version} & {\bf Notes}\\
\midrule
Date 1 & 1.0 & Notes\\
Oct 5, 2018 & 1.0 & Andy worked on Project Drivers and Project Issues. Usman worked on Functional requirements. Vaibhav worked on Non-Functional Requirements\\
Date 2 & 1.1 & Notes\\
\bottomrule
\end{tabularx}
......@@ -57,52 +56,262 @@ to the template, you should explicity state what modifications were made.
\subsection{The Purpose of the Project}
Almost everyone nowadays relies on a computer as a multipurpose tool for research, video streaming, gaming and many other tasks. With the emergence of fast computing, gaming has become a popular pastime activity and a source of entertainment for many. However, not everyone has a device powerful enough to support extensive game applications. A simple, memory-effecient application of the Snake game allows it to be accessible for gamers without the need for extensive hardware or a high-performance computer. Our team, VUA30, will be creating a desktop application for the well-known “Snake” game with new enhancements and features. This competitive and addictive game can allow the user to play at their own pace and challenge their own high score.
Buying a computing device with high storage and faster performance can be out of budget. Complicated software covers up all the storage and the user is bound to use these applications as opposed to downloading other software. The importance of the redevelopment of “The Snake” is to save computing device’s personal storage and allow the user to play a game 24/7 with strong performance, even offline. Creating a desktop version of the snake game can fit into the category of downloadable calssical games such as the solitaire suite. The recreation of this game will allow the user to enjoy the classical game anytime and anywhere as long as they have installed the application. Improving aspects such as graphics and custom speed will also make the game more interesting. We would like to add more features to the game to make it more customizable and help people enjoy the classical game in an exciting and new way.
\subsection{The Stakeholders}
Stakeholders involved will be contained within the gaming community, more specifically the desktop gaming community and casual PC owners who are
looking for a fun reliever for boredom or quick game to play.This also includes members invested in the project which are mentioned in the subsesctions below.
\subsubsection{The Client}
Since this game is a separate entity, the clients are the designers in this project team. In further developments and upon increase in game popularity, the clients
could be a desktop gaming distribution service such as steam, google play or apple store. Otherwise, the main client would be Dr. Bokhari who has assigned the project.
\subsubsection{The Customers}
The main users or customers are desktop gamers, older generation of game enthusiasts, youth and teens. However, the client can be anyone with a PC and an interest in classical gaming or a sudden craving for playing the classical Snake game. Often times, these games are a quick fix to boredom for those who are casually browing their PC's, so the game will be designed to provide enough stimulus and excitmement for regular computer users, similar to the solitaire suite.
\subsubsection{Other Stakeholders}
Aside from the clients and customers, other stakeholder include 3rd party Desktop game distribution stores and open source project banks which may make use of this project for development purposes:
\begin{itemize}
\item 3rd party desktop game distribution stores.
\item Game Testers.
\item Technology Experts [Part of Project Team].
\item Usability experts.
\item Dr. Bokhari.
\item Project Development Experts: This can include teaching assistants, the professor, experienced peers and so on.
\end{itemize}
\subsection{Mandated Constraints}
Some constraints that apply to the project include the following:
\begin{itemize}
\item No project budget provided; Project cannot use costly API memberships or resources.
\item Application should take less than 400MB of storage space to meet requirements.
\item The project must be completed within a 4-month period.
\item Limited resources in terms of domain experts, specifically in graphic design.
\item Application will be developed for one OS due to time constraint.
\item open source project must be translated to Python due to development language and scope.
\end{itemize}
\subsection{Naming Conventions and Terminology}
The naming conventions listed below will be used to clearly define words and termiology that will come up in the project development process. Below is a list
of naming conventions, terms, and special vocabularly and their meaning. Since the desktop application is straighforward, there is not much terminology being
used as of now:
\begin{itemize}
\item DDS: Digital Distribution Service such as play store, microsoft play, etc.
\item OS: Operating System.
\item Python: The programming language used for application development.
\item Pygame: Computer graphics Python library.
\item Snake 2.o: The desktop application being developed in Python.
\item The interface: The graphics developed using Pygame.
\item The source game: The open source original Python snake game being used for this project.
\end{itemize}
\subsection{Relevant Facts and Assumptions}
User characteristics should go under assumptions.
Some factors that might affect the outcome of the product are listed as follows:
\begin{itemize}
\item DDS contribution will be necessary for the public release of the game.
\item Contribution of the development team will affect the outcome of the product.
\item Feedback from game testers.
\item Availability of resources from pygame library to replicate front-end design in HTML,CSS and JS.
\item Time remaining once initial objectives and goals are met. This could affect which additional functionality is added.
\end{itemize}
There are also assumptions that pertain to the intended operational environment and anything affecting the product:
\begin{itemize}
\item Pygame library offers enough functionality to recreate the web app graphics in Python.
\item The user is using Windows for game execution otherwise they must compile the source code to run the application.
\item The application will not be an exact replica of the source game. Added functionality and a change of graphics is expected.
\item The game application will prioritize the completion of the snake game as the central attraction.
\end{itemize}
Some user characteristics will affect the final deisgn and written requirements:
\begin{itemize}
\item Users expect the game to be responsive and timely due to the nature of wanting quick stimulus .
\item The game should have an attractive user inteface due to the nature of the users expectations. It is mainly used for entertainment and should
have a smooth user-interface.
\end{itemize}
\section{Functional Requirements}
\subsection{The Scope of the Work and the Product}
% Summarize Gantt Chart
\subsubsection{The Context of the Work}
%
The scope of the project is deliver a Product that has the requirement documentation, and a desktop application that can be installed on a user's system.\\
\\To achieve the goals of the Product, the following are decided to be the deadlines of the goal to be on the track:\\
$\bullet$ Development Plan \date{28/09/18}\\
\\$\bullet$ Requirements Document Revision \date{05/10/18}\\
\\$\bullet$ Proof of Concept Demonstration \date{16/10/18}\\
\\$\bullet$ Test Plan Revision \date{26/10/19}\\
\\$\bullet$ Design \& Document Revision \date{09/11/18}\\
\\$\bullet$ Revise all the Documentation \date{13/11/18}\\
\\$\bullet$ Final Documentation \date{06/12/18}\\
\subsubsection{Work Partitioning}
%breakdown your task into sub-task e.g. break logic and user interface
The desktop application involves different processes to successfully run: making a user-interface so the user can interact with the application, the logic behind the user-interface that can handle all the inputs given by the user and outputs the result according to the requirements.
These tasks can be divided into sub-task. For example, the system uses the microphone as an input, so whenever the sake completes a functional requirement (the requirements are described below) it will output an audio to make the game much more interesting. Another example would be, the movement of the snake and it get larger would be done by the logic at the back-end and its output will be displayed on the screen so the user can continue playing.
Tasks such as displaying the food, making snake appear at random locations in the beginning, etc. should all be divided and can be worked individually as this would more efficient to complete and the developer would know how to test these functions.
\subsubsection{Individual Product Use Cases}
%
The user can use the system-to-be (the desktop application) to entertain themselves when they are bored. They can use the system to improve their response time, with playing the game in difficulty modes it can be more challenging and the user has to be fast. In addition, the desktop application would be a fun means of entertainment between friends as they can play turn-by-turn and challenge each other.
\subsection{Functional Requirements}
$\bullet$ Requirement number: FR(Functional Requirement)1\\
When the user sees the interface it can start the game by pressing any button key.\\
Rationale: If the user presses any button and the game does not work as it is expected to be.\\
$\bullet$ Requirement number: FR2 \\
User's can press F11 key to play the desktop application in Full screen mode.\\
$\bullet$ Requirement number: FR3\\
The user can press the UP key to move the snake's direction in the upwards direction.\\
$\bullet$ Requirement number: FR4\\
The user can press the DOWN key to move the snake's direction in the downwards direction.\\
$\bullet$ Requirement number: FR5\\
The user can press the LEFT key to move the snake's direction in the left direction.\\
$\bullet$ Requirement number: FR6\\
The user can press the LEFT key to move the snake's direction in the right direction.\\
$\bullet$ Requirement number: FR7\\
The game should display the user's highest score.\\
$\bullet$ Requirement number: FR8\\
The initial location of the snake should be random whenever the user starts the game or when it restarts.\\
$\bullet$ Requirement number: FR9\\
The user has the option to play in three different modes: easy, medium and hard.\\
$\bullet$ Requirement number: FR10\\
The game should display the user's highest score.\\
$\bullet$ Requirement number: FR11\\
The desktop application provides a facility to toggle in different themes, e.g. Dark to Light.\\
$\bullet$ Requirement number: FR12\\
The desktop application provides a facility to toggle in different themes, e.g. Dark to Light.\\
$\bullet$ Requirement number: FR13\\
When the snake eats its food its length should be increased by 5 units. For instance, when the game is started and the snake's length is only 1 unit, but after eating a block of food its new length should be 6 units.\\
$\bullet$ Requirement number: FR14\\
By pressing the spacebar key the game should be paused.\\
$\bullet$ Requirement number: FR15\\
By pressing the spacebar key the game should be resumed, only if the game was paused initially.\\
$\bullet$ Requirement number: FR16\\
Snake's food should be randomly placed on the screen in the beginning of the game, once the snake eats its food, the food should reappear on the screen.\\
$\bullet$ Requirement number: FR17\\
The snake is allowed to move around in a certain space, if the snake crosses that space it should die and a message should prompt on the screen to restart the game.\\
$\bullet$ Requirement number: FR18\\
If the snake bites itself, the game should be over and a message should prompt on the screen to restart the game.\\
$\bullet$ Requirement number: FR19\\
If the user is successful in making the snake eat 10 food units consecutively, a food unit with more value should be displayed on the screen that would give the snake more points but will increase its length with the same amount, as previously stated.\\
$\bullet$ Requirement number: FR20\\
The snake should change its colour when it dies.\\
\section{Non-functional Requirements}
\subsection{Look and Feel Requirements}
\subsubsection{Appearance Requirements}
The final product shall be a desktop application which will contain a playground with a snake in it. It shall have different theme options and buttons to customize the speed of the snake. Also, it shall show the highest score made on the specific device.
\subsubsection{Style Requirements}
The product should be given a modern style by adding a nice background to it with a user-friendly interface.
\subsection{Usability and Humanity Requirements}
The application must be simple for a person aged 10 or above. It should be understandable by any person within the age group who is familiar to the technology. No feature should restrict the player to a non-knowledgeable outcome.
\subsection{Performance Requirements}
\subsubsection{Speed Requirements}
\begin{description}
\item[$\bullet$] All valid interaction should have a maximum response time of half a second.
\item[$\bullet$] The speed for snake should be customizable by the user and should not increase or decrease by itself.
\end{description}
\subsubsection{Safety Critical requirements}
The game shall not consume any private data from the user's device.
\subsubsection{Precision Requirements}
\begin{description}
\item[$\bullet$] The speed of the snake should be consumed through integer values.
\item[$\bullet$] The turn for snake should match with the users key and should be done as precisely as possible.
\end{description}
\subsubsection{Reliability and Availability Requirements}
The game should be available 24 hours, 365 days per year to the user.
\subsubsection{Capacity Requirements}
The game shall not overload the clients device's memory.
\subsection{Operational and Environmental Requirements}
\subsubsection{Expected Physcial environment}
The application is intended to be used anywhere, at any desktop device. It can be used in any climatic condition from harsh summers to chilly winter( given that the device is working as well).
\subsubsection{Expected Technological environment}
This application should work on any desktop device as long as the device is working.
\subsection{Maintainability and Support Requirements}
\subsubsection{Maintainability}
The application shall require minimum maintenance. Also, the application shall be revised every year.
\subsubsection{Portability}
The application is expected to run on Windows, Mac OS and Linux environment.
\subsection{Security Requirements}
This is an open-ended application. However, the application must not break the privacy policy by interfering with files stored on the desktop. Authors credits must be given when used by another party for any kind of development.
\subsection{Cultural Requirements}
The application will not use any kind of communicating data that will offend any religion, country or user in any way. The product will give a detailed explanation in case of use of any cultural or political symbol.
\subsection{Legal Requirements}
The application shall comply with all national and federal laws. In addition, the application must agree to the MIT Open License.
\subsection{Health and Safety Requirements}
This section is not in the original Volere template, but health and safety are
......@@ -111,25 +320,94 @@ issues that should be considered for every engineering project.
\section{Project Issues}
\subsection{Open Issues}
Below is a list of open issues pertaining to the project scope:
\begin{itemize}
\item Investigating and understanding the capabilities of the Pygame library is yet to be completed.
\item Integrating additional features is not decided on as of yet. It is dependant on time constraints.
\item snake-game multiplayer mode is an open issue on the open source project which we may or may not choose to implement as time permits.
\end{itemize}
\subsection{Off-the-Shelf Solutions}
Although there are available solutions on developing such a game, the project team is aiming to enhance the game by producing a desktop version with
added functionality.
Ready-made simple implementations of the projects are available and can be used as reference but otherwise, enhanced features will have to be created from scratch (light/ dark theme, custom player settings, high scores and so on).
\subsection{New Problems}
\subsubsection{Effects on the Current Environment}
The Microsoft Store contains the "250k snake" app for windows, an implementation of the old-school snake game. Aside from this application, other applications that appear when searching "snake" or "snake game" do not reflect the classical snake game. By developing the snake game as a desktop app, we will be able to provide game shoppers with more options to pick from.
\subsubsection{Effects on the Installed Systems}
The existance of the 250k snake will make it difficult to push the project team's implementation of the game, Snake 2.o, into the microsoft store market successfully. However, the new snake game will fill a niche for cutsomizability by allowing users to pick from many different settings.
\subsection{Tasks}
An article on linkedIn by Sumit Jain summarizes the steps involved in the game development process [ ~\cite{devArticle} ]. In his article, he outlines 6 main steps to the game development cycle: Idea \& Story, Conceptualize \& Design, Technical Analysis, Development, Testing, Deployment. Considering the project scope and the redevelopment of the snake game, the main three steps involved in the developement cycle are the following:
\begin{itemize}
\item Technical Analysis: Use reverse engineering to understand how the game was originally built and analyze the main modules/ framework used to develop the game.
\item Development: Using Python and Pygame to develop the source code for the game; Analysis from the previous step will be necessary to break down the developement process.
\item Testing: Test using unittest in python and principles of white box and black box testing. In further developments, this would also include intergation testing with the user interface and the collection of modules created for the application.
\end{itemize}
Project members should expect the development cycle to resemble the previously mentioned framework. Once the cycle has been iterated until completion of Snake 2.o, the team will move on to the deployment stage, considering options for making the game available on a DDS such as the Microsoft Store.
\subsection{Migration to the New Product}
Snake 2.o will be require the following conversion tasks:
\begin{itemize}
\item Converting JS,HTML and CSS graphics and animations to Pygame graphics.
\item Comverting the source project into modularized step-based tasks.
\item Converting from JS,HTML and CSS source code to Python source code.
\end{itemize}
The source project will be run with Snake 2.o for performance comparison and visual feedback on the accuracy of the redevelopment as well as the enhance features that were added to snake 2.o.
\subsection{Risks}
Snake 2.o will be a classical desktop application and therefore does not present many risks to the user or any stakeholders involved. In terms of taking risk to advance the project, there is risk in striving for the completion of a multiplayer mode for the game since it may take substantial time and effort. However, this risk is low since the project requirements have already been met and other features of the game have been enhanced, aside from the addition of a multiplayer mode.
In the case that more risks are perceived in the future, the project team will take the following course of action to come up with early warnings:
\begin{itemize}
\item If the development is taking place 1 week prior to the project deadline, an early warning will be issued and the group must decide to continue or dismiss the development.
\item If the development is currently taking place with 2 weeks left until the project deadline and less than 50\% of the development is in place, it will be dismissed.
\item If the main project is missing any component (testing, code modularization, documentation, commenting, etc.) no development will proceed until the main requirements (minimum requirements) are met.
\item If any of the main project components are deemed to have lower quality, a warning is issued and the team members must discuss whether to continue with further development or improving the existing product.
\end{itemize}
\subsection{Costs}
As mentioned in the development plan document, team members will be dedicating 2 hours outside of lab time for team meetings and discussions along with 5 hours of individual work on the project itself. Since the project is open source and uses open libraries such as Pygame, the monetary cost is \$0. However, there may be additional costs to publishing Snake 2.o with a DDS.
\subsection{User Documentation and Training}
The user will be provided with the following documentation and training:
\begin{itemize}
\item Snake 2.o User Manual: The document will explain the basic permisses of the game, user settings, graphic themes, menu headings, and any other information necessary for the user to understand the features of the game.
\item Snake 2.o Installation Manual: Provided that the user will not be using Windows or the native OS that is decided on, this document will provide simple installation instructions for compiling the code on different OS's.
\end{itemize}
\subsection{Waiting Room}
In future releases of the project, the following requirements might be included in the revised requirements document:
\begin{itemize}
\item Snake 2.o User Manual - Multiplayer Mode: A section explaining how to connect and play the snake game with friends
\item additional 'multiplayer mode' module: A separate module to encapsulate the multiplayer mode
\item additional 'themes' module - a module encapsulating the different graphic themes available for the game
\end{itemize}
\subsection{Ideas for Solutions}
Some rudimentary ideas for project modules and solutions have been mentioned down below:
\begin{itemize}
\item Classes/modules for individual objects like the snake, food block, the frame, the menu bar, the settings bar and so on.
\item import graphics developed in adobe illustrator into the game as characters, props and so on.
\item the snake class can have method that correspond to the snakes functionality such as moveLeft, moveRight, moveUp, moveDown, and Lengthen.
\item the food item can have a randomPlacement method for when being placed at random around the window.
\item UI: a custom header section can contain the entry fields for custom speed and other important parameters.
\end{itemize}
\bibliographystyle{plainnat}
\bibliography{SRS}
......
No preview for this file type
......@@ -3,26 +3,27 @@
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{hyperref}
\usepackage{amsmath}
\usepackage{url}
\hypersetup{
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=red,
linkcolor=black,
urlcolor=blue
}
\usepackage[round]{natbib}
\title{SE 3XA3: Test Plan\\Title of Project}
\title{SE 3XA3: Test Plan\\Snake 2.o}
\author{Team \#, Team Name
\\ Student 1 name and macid
\\ Student 2 name and macid
\\ Student 3 name and macid
\author{Team 30, VUA30
\\ Andy Hameed and hameea1
\\ Usman Irfan and irfanm7
\\ Vaibhav Chadah and chadhav
}
\date{\today}
\input{../Comments}
\begin{document}
......@@ -38,7 +39,8 @@
\begin{tabularx}{\textwidth}{p{3cm}p{2cm}X}
\toprule {\bf Date} & {\bf Version} & {\bf Notes}\\
\midrule
Date 1 & 1.0 & Notes\\
10/25/2018 & 1.0 & Usman added section 3.1, Vaibhav added section 3.2, Andy added section 4. \\
10/26/2018 & 1.0 & Andy added section 1 and 7, Vaibhav added section 2 and 5, Usman added section 6.\\
Date 2 & 1.1 & Notes\\
\bottomrule
\end{tabularx}
......@@ -48,13 +50,17 @@ Date 2 & 1.1 & Notes\\
\pagenumbering{arabic}
This document ...
\section{General Information}
\subsection{Purpose}
Testing will be conducted to ensure that the software meets the requirements set in the original development as well as the new requirements that are set as enhancements to the original game. The generated test cases will also serve as guiding rules for developing code using TDD.
The reinvention of the Snake game as Snake 2.o will involve new features such as custom speed, high score menu, customizable themes and a multiplayer mode if time permits. These new features, along with the requirements set for the original implementation of the game will be tested to detect any bugs or errors. The use of the Pygame library allows for a GUI that will enable integrated and system testing. Peers will be able to demo the game and catch any errors or bugs by doing so. White box testing will be used as well on the existing code that was used for the POC demonstration. Automated testing will be implemented using the unittest framework built into Python. Aspects that have not yet been implemented or would be hard to detect visually, like for example the speed of the moving snake, will be tested using static analysis along with automated testing.
\subsection{Scope}
Testing will cover all of the behaviours mentioned below. Note that this is a general overview and more details are provided further on in the document.
The expected behaviour is to have a menu that leads to the game screen. Once the game is initiated, the objective is for the snake to eat the food block and continue doing so until the snake dies. Each time the snake eats, the score should increase by one and the length of the snake body should increase by some predetermined number of blocks. The snake dies if it runs into itself by looping around its body or by hitting the edges of the game window.
Looking at the Git respository for the original game, there are no test modules that can be seen so the test cases will be based on any test cases generated by the three team members.
\subsection{Acronyms, Abbreviations, and Symbols}
......@@ -65,8 +71,11 @@ This document ...
\toprule
\textbf{Abbreviation} & \textbf{Definition} \\
\midrule
Abbreviation1 & Definition1\\
Abbreviation2 & Definition2\\
T1D1 & Test 1 ID 1\\
TDD & Test-Driven Development\\
POC & Proof of Concept\\
GUI & Graphical User Interface\\
N/A & Not Applicable\\
\bottomrule
\end{tabularx}
......@@ -79,8 +88,11 @@ Abbreviation2 & Definition2\\
\toprule
\textbf{Term} & \textbf{Definition}\\
\midrule
Term1 & Definition1\\
Term2 & Definition2\\
Pygame & open source Python library used to create game graphics\\
White Box testing & a method of testing where the code is examined in order to create the test cases. This mostly corresponds to testing functional requirements based on the description of functions and methods in each component module\\
Black Box testing & a method of testing where the code is not examined in order to create the test cases. This mostly corresponds to non-functional requirements\\
Test Driven Development& a method of developing software using a set of test cases that are written prior to the code itself. The test cases can identify how functions and methods should behave\\
PyUnit& Testing framework for python software development\\
\bottomrule
\end{tabularx}
......@@ -88,164 +100,496 @@ Term2 & Definition2\\
\subsection{Overview of Document}
The document will summarize the test cases that will be conducted on Snake 2.o, a remake of the orignal snake game using Python and the Pygame library. Several testing techniques are used including automated testing, white box testing, black box testing, manual testing, integration and system testing and static analysis. The document will outline the plan for testing, a description of the test system with non-functional and functional test cases, unit testing and POC testing, and other details pertaining to the testing of Snake 2.o.
\section{Plan}
\subsection{Software Description}
The software will act as a medium of entertainment to the users. It is a snake game with added functionality such as different speed and theme options. The implementation of this software is done using Python.
\subsection{Test Team}
The individuals responsible for testing are Vaibhav Chadha, Usman Irfan and Andy Hameed. Each person will be responsible for testing one's own work. For example, Vaibhav is working on the Graphical User interface of the main screen, hence is responsible for testing it. Usman and Andy will be collaboratively working on the snake game ( which includes recording highest score, current score, snake movement etc.) and will be responsible for testing them likewise.
\subsection{Automated Testing Approach}
One of the more difficult parts of testing the software will be manual testing. The reason behind this is that a game can be tested better when played as the user can see errors and delays better.
However, automated testing will also be done in order to check certain functionality of the software. For this, PyUnit testing will be used.
\subsection{Testing Tools}
PyUnit testing will be used as a testing tool for this program.
\subsection{Testing Schedule}
See Gantt Chart at the following url ...
See \href{https://gitlab.cas.mcmaster.ca/hameea1/se3xa3/tree/master/BlankProjectTemplate/ProjectSchedule}{Gantt Chart} for details about the testing schedule
\section{System Test Description}
\subsection{Tests for Functional Requirements}
\begin{enumerate}
\subsubsection{Testing Functions \& Methods}
\item{\textbf{TID1}\\}
\subsubsection{Area of Testing1}
Type: Functional, Dynamic, manual
\paragraph{Title for Test}
Initial State: The desktop application starts waiting for the user to enter a command to begin.
Input: The user presses any button key.
Output: The desktop application begins moving the snake towards the Right.
How test will be performed: The test will be done dynamically, that means once the program will be executed the developer will press any key to see if it would run the game, making the snake move.
\begin{enumerate}
\item{test-id1\\}
\item{\textbf{TID2}\\}
Type: Functional, Dynamic, Manual, Static etc.
Type: Functional, Dynamic, Manual
Initial State: The desktop application executes and displays a screen with a headline \textbf{High Score:} in the top
Initial State:
Input: NULL
Output: The game would display the highest score of the user from the day they started to play till the present date.
Input:
How test will be performed: When the game is played for the first time its Highest Score should be 0, the developer plays for a while and tests the score they made by playing should be the highest score when playing the second time.\\
When the game is restarted or turned off the game still holds the highest score.\\
Two more scenarios are present to test the highest score requirement. Take for example a current high score of 85:\\
1. The user beats the highest score, and the highest score is updated to the user's score when playing the next time.\\
2. The user is not able to defeat the highest score and the highest score will still be 85 when they play the game next time.
\item{\textbf{TID3}\\}
Type: Functional, Dynamic, Manual
Output:
Initial State: The desktop application executes and displays the snake at a random location.
Input: NULL
Output: The snake displays the snake at random location when played the next time.
How test will be performed:
How test will be performed: The user can track the location of the snake the first time the game is played. The game should be restarted to ensure that the snake's position changes every time the game starts.
\item{\textbf{TID4}\\}
Type: Functional, Dynamic, Manual
\item{test-id2\\}
Initial State: The snake's food is at a random location.
Input: NULL.
Type: Functional, Dynamic, Manual, Static etc.
Output: The food reappears on the screen at a random location when the snakes eat the previous one.
How test will be performed: The developer will test this requirement by moving the snake's head location equal to the food's location. When the snake eats the food, instantly another food should display on the screen at a random location.
\subsubsection{Testing of Keyboard/Mouse Interactions}
\item{\textbf{TID5}\\}
Type: Functional, Dynamic, Manual
Initial State:
Initial State: The desktop application starts waiting for the user to enter a command to begin.
Input:
Input: The user presses F-11 key.
Output:
Output: The desktop application screen is changed to full-screen mode.
How test will be performed:
How test will be performed: The test will be done dynamically, that means once the program will be executed the developer will press the F-11 key to test if the size of the screen changes to full-screen mode.
\end{enumerate}
\item{\textbf{TID6}\\}
\subsubsection{Area of Testing2}
Type:Functional, Dynamic, Manual
Initial State: The game waits for the user to press a direction key to move the snake.
Input: The user presses UP key.
Output: The snake in the game would moves up by one-unit length.
How test will be performed: The test will be done dynamically, that means once the program will be executed the developer will press the UP key to test if the snake moves in the upward direction.
...
\item{\textbf{TID7}\\}
\subsection{Tests for Nonfunctional Requirements}
Type: Functional, Dynamic, Manual
Initial State: The game waits for the user to press a direction key to move the snake.
Input: The user presses DOWN key.
Output: The snake in the game would moves down by one-unit length.
How test will be performed: The test will be done dynamically, that means once the program will be executed the developer will press the DOWN key to test if the snake moves in the downward direction.
\subsubsection{Area of Testing1}
\paragraph{Title for Test}
\begin{enumerate}
\item{\textbf{TID8}\\}
\item{test-id1\\}
Type: Functional, Dynamic, Manual
Initial State: The game waits for the user to press a direction key to move the snake.
Input: The user presses LEFT key.
Output: The snake in the game would moves left by one-unit length.
How test will be performed: The test will be done dynamically, that means once the program will be executed the developer will press the LEFT key to test if the snake moves in the left direction.
Type:
\item{\textbf{TID9}\\}
Type: Functional, Dynamic, Manual
Initial State: The game waits for the user to press a direction key to move the snake.
Input: The user presses RIGHT key.
Initial State:
Output: The snake in the game would moves right by one-unit length.
How test will be performed: The test will be done dynamically, that means once the program will be executed the developer will press the RIGHT key to test if the snake moves in the right direction.
\item{\textbf{TID10}\\}
Type: Functional, Dynamic, Manual
Input/Condition:
Initial State: The desktop application executes and displays three modes to be played.
Input: Mouse Cursor
Output: The application should open the specific mode the user has requested to play.
Output/Result:
How test will be performed: Different modes in the game will be opened using the mouse cursor, their display or speed should be different from other modes. Easy having the slowest speed and allowing the snake to exit from the one-direction boundary and enter from the other direction of the boundary (e.g. leaving from right side boundary and entering from the left side boundary). While playing the hard mode, the speed should be much faster than the Easy mode, and would not allow the snake to cross the boundary. If the snake touches the boundary the snake should die and terminating the game.
\item{\textbf{TID11}\\}
Type: Functional, Dynamic, Manual
How test will be performed:
Initial State: The desktop application executes and displays three modes to be played.
Input: Mouse Cursor
Output: Changes the theme of the game application.
\item{test-id2\\}
How test will be performed: If the game is initially set to Light mode. On clicking the Theme button the game changes the theme from Light to Dark theme.
Type: Functional, Dynamic, Manual, Static etc.
\item{\textbf{TID12}\\}
Type: Functional, Dynamic, Manual
Initial State:
Initial State: The initial length of the snake would be one-unit length.
Input: The user presses the Direction keys to control the snake
Output: The length of the snake should not equal to one-unit length when it dies (Hard mode would be an exception).
Input:
How test will be performed: The developer moves the snake by pressing the direction keys. When the snake's head location equals the food location, its length should be increased by five unit-length. When the snake dies its increase in length should be divisible by 5.
\item{\textbf{TID13}\\}
Type: Functional, Dynamic, Manual
Output:
Initial State: The game is already executed, and the user is playing the game.
Input: The user presses the Space key to pause the snake.
Output: The snake's movement has been stopped.
How test will be performed: The developer will test this requirement by pressing the Spacebar key in between the game, will track down's snake location and see if the snake stops on the screen of the Spacebar key is pressed for the first time.
To test the pause movement, we can think of pausing and resuming of the game as two states. If the Spacebar key is pressed odd time it will be in the pause state else, it will be in the resume state.
\item{\textbf{TID14}\\}
Type: Functional, Dynamic, Manual
How test will be performed:
Initial State: The snake's movement has been stopped.
Input: The user presses the Space key to resume the snake's movement.
Output: The snake's movement has been resumed.
How test will be performed: The developer will test this requirement by pressing the spacebar key in between the game, will track down's snake location and see if the snake moves on the screen if the spacebar key is pressed for the second time.
To test the pause movement, we can think of pausing and resuming of the game as two states. If the spacebar key is pressed odd time it will be in the pause state else, it will be in the resume state.
\subsubsection{Testing Game Ending}
\item{\textbf{TID15}\\}
Type: Functional, Dynamic, Manual
Initial State: The snake is not one-unit length..
Input: NULL.
Output: The screen displays a screen biting itself, and a message prompts on the screen display "GAME OVER!".
How test will be performed: The developer will test this requirement by moving the snake's head location equal to the snake's body location. When the snake eats its body the snake's movement should stop and will be able to see the error message.
\item{\textbf{TID16}\\}
Type: Functional, Dynamic, Manual
Initial State: The snake is red colour
Input: NULL.
Output: The screen displays a screen biting itself in red colour .
How test will be performed: The developer will test this requirement by intentionally killing the snake. The function should change the snake's colour from green to red. If the snake's colour is red before replaying the game, the function passes its test (exception: the user presses the restart button and doesn't want to play the game till the end).
\end{enumerate}
\subsubsection{Area of Testing2}
...
\subsection{Tests for Nonfunctional Requirements}
\subsection{Traceability Between Test Cases and Requirements}
\subsubsection{Look and Feel}
\begin{enumerate}
\item{\textbf{TID17}\\}
Type: Structural, Dynamic, Manual
Initial State: The game should be installed on the device.
Input/Condition: The game is opened and ran on the device.
Output/Result: The User Interface should open with different buttons, alongside with a playground with a snake in it.
How the test will be performed: The program will manually run on the device and checked by the human eye to see if it meets the criteria.
\end{enumerate}
\subsubsection{Usability}
\begin{enumerate}
\item{\textbf{TID18}\\}
Type: Structural, Dynamic, Manual
Initial State: The program will be running for a human nearing 10 years of age or above
Input/Condition: The program will be set on its default settings
Output/Result: The person testing should be able to understand the game and play it. He/she should be able to customize themes and speed of the game.
How the test will be performed: A younger human of nearing age 10 will be asked to operate this game and recorded if he/she is able to operate it successfully or not.
\end{enumerate}
\subsubsection{Performance}
\begin{enumerate}
\item{\textbf{TID19}\\}
Type: Functional, Dynamic, Manual
Initial State: The program will be running with the main user interface open.
Input/Condition: The button is pressed.
Output/Result: The response time for button should be less than half a second.
How the test will be performed: It will be performed using human actions. The response would be times to be as precise as possible. Also, it will be taken into consideration that the user doesn't have to wait for a long observable time.
\item{\textbf{TID20}\\}
Type: Structural, Dynamic, Manual
Initial State: The snake Game will be running on the device.
Input/Condition: Various speed inputs for the snake.
Output/Result: Different snake speeds according to what the user has decided
How the test will be performed: The game will be played with inputting different speeds. Then, the speed difference will be observed as the game progressed through and taken care that the game goes at the constant speed at each level.
\item{\textbf{TID21}\\}
Type: Structural, Dynamic, Manual
Initial State: The snake Game will be running on the device.
Input/Condition: The snake will be moving around and keys will be pressed to change directions.
Output/Result: Snake should change directions promptly.
How the test will be performed: While the game is going on, the buttons will be pressed to change the direction of the snake.
\end{enumerate}
\subsubsection{Operational and Environmental}
\begin{enumerate}
\item{\textbf{TID22}\\}
Type: Structural, Dynamic, Manual
Initial State: The program will be moved on a USB.
Input/Condition: The USB will be inserted into any other working computer/ Desktop.
Output/Result: The game should be able to run on it as long as the device is powered and in working state.
How test will be performed: Many different laptops, alongside with desktops, will be used to test. The game will be played on different devices with different specifications to make sure that the game is playable regardless of the specs of the device.
\end{enumerate}
\subsubsection{Maintainability and Support Requirements}
\begin{enumerate}
\item{\textbf{TID23}\\}
Type: Functiona Dynamic, Manual
Initial State: The program will be moved to a Windows, Mac OS and Linux operating devices.
Input/Condition: The program will be executed.
Output/Result: The game should run.
How test will be performed: The game will be taken and transferred to the systems operating on different OS's. For this, the target is Windows device, Mac OS device and a Linux Device.
\end{enumerate}
\subsubsection{Security and Cultural}
\begin{enumerate}
\item{\textbf{TID24}\\}
Type: Structural, Dynamic, Manual
Initial State: The program will be running.
Input/Condition: All the interfaces running.
Output/Result: No offensive or illegal content on the entire application.
How test will be performed: The application will be executed and each page and option will be approached to make sure there is no offensive or illegal content. Also, there is a Static module to this requirement where all the files (including code) will be looked to make sure about no offensive or illegal content.
\end{enumerate}
\section{Tests for Proof of Concept}
\subsection{Area of Testing1}
The POC consists of a simple demonstration of the moving snake in the game window along with a start menu. The food item will not be created in the demo, instead, the testing will only involve the movement of the snake and the main menu that has been created at the start of the game.
\subsection{Snake Dynamics}
\paragraph{Title for Test}
\paragraph{Snake Movement and Speed}
\begin{enumerate}
\item{test-id1\\}
\item{\textbf{TID25}\\}
Type: Functional, Dynamic, Manual, Static etc.
Type: Dynamic
Initial State:
Initial State: The snake body - graphically represented by a red square - is initially motionless. It exists somewhere within the frame of the window.
Input:
Input: Keyboard Event - user clicks on one of the directions on the keyboard arrow pad.
Output:
Output: Snake moves according to the direction chosen. This can logically represented by the expression keyboardEvent.direction == snakeMovementDirection. Note that the variables used are arbitrary and are dependant on Python syntax.
How test will be performed:
How test will be performed:
\begin{itemize}
\item A method will be created under the POC test class where the keyboard event is manually set to the code representing each of the directions on the arrow keypad - up, down, left and right. The direction inserted will be asserted equal to the direction of the moving snake, set by some variable.
\item After starting the game, the user will click on each one of the four directions and verify whether or not the snake is moving in the corresponding direction, using the graphical interface created with Pygame.
\end{itemize}
\item{\textbf{TID26}\\}
Type: Dynamic, Functional testing
\item{test-id2\\}
Type: Functional, Dynamic, Manual, Static etc.
Initial State: The snake body - graphically represented by a red square - is initially motionless. It exists somewhere within the frame of the window.
Initial State:
Input: Keyboard Event - user clicks on one of the directions on the keyboard arrow pad.
Input:
Output: Snake moves accurately according to the speed set in the snake module. Statically, this can represented for the vertical movement of the snake by this expression:
\begin{align*}
(snakeFinalPosition - snakeInitPosition) == (speed \times timeElapsed)*vel
\end{align*}
where vel is the distance defined for 1 single step and speed is the delay between each step in milliseconds
How test will be performed: A method will be created under the POC test class where the keyboard event is manually set to the code representing each of the directions on the arrow keypad - up, down, left and right. The logical expression above is implemented into an assert statement verifying that the distance moved corresponds to the speed and velocity that were used as well as the time that has elapsed - this can be obtained from the time object in Pygame.
\end{enumerate}
\subsection{Integration and System Testing}
\begin{enumerate}
\item{\textbf{TID27}\\}
Type: Integration, System testing
Output:
Initial State: The game menu is loaded onto the window with options for starting the game and quitting the game.
How test will be performed:
Input: The following sequence of inputs
\end{enumerate}
\begin{enumerate}
\item User clicks start game
\item Keyboard Event - user clicks on one of the directions on the keyboard arrow pad.
\item user exits the window by clicking the exit tab on the top right corner of the screen
\end{enumerate}
\subsection{Area of Testing2}
Output: Snake game runs as intended. The "start game" option leads the user to the game screen where the snake body sits motionless. The user moves the snake body using the keyboard arrow pad, moving in directions that correspond apprioriately to the arrows clicked and in the correct sequence. The game window is closed once the user clicks the exit button on the top right corner.
How test will be performed: Several peers will be asked to test the game from start to finish for this integration and system test.
...
\end{enumerate}
\section{Comparison to Existing Implementation}
Currently, we have the following tests that compare to the existing comparison:
\begin{enumerate}
\item TID3 : In the Proof of Concept, it has already been tested that the snake appears at a random position everytime a new game is played.
\item TID6, TID7, TID8, TID9 : In the code, its already tested that the snake moves in the direction of the button pressed as soon as it is pressed.
\item TID19 : The current code for the game meets the requirement as it launched the operation of a button as soon as it is pressed. For this, the "Play Game" button and "Quit" button has been tested.
\item TID23 : The present code was transferred on windows and Mac OS devices and was working completely fine.
\item TID25 : All the mentioned testing has been done for the POC.
\end{enumerate}
\section{Unit Testing Plan}
The PyUnit testing framework would be used to test our desktop application.
\subsection{Unit testing of internal functions}
\subsection{Unit testing of output files}
The PyUnit testing framework will be used to test our source code's functions, this is an automated testing unit, and it provides classes which can ease different testing functions. By using PyUnit we can check the robustness of our program, if wrong inputs are given will the program be able to handle such cases without crashing. Besides, the requirement of the program can be tested to see if our program matches with the functional and non-functional requirements of the program. For example, the function that moves the snake in X-axis and Y-axis can be tested by entering the snake's X, Y location, the axis it wants to go and its direction (up or down for y-axis, and left or right for x-axis). The goal is to test as many functions examining all possible cases which can make our application run smoothly without crashing. \subsection{Unit testing of output files}
The testing of the output files through unit testing will tell the developers if all the test cases designed by them run efficiently. The snake's movement would be compared to the actual output if the user is pressing the UP key and the snake is moving in the respective direction it would pass the unit testing. Testing the output files can also help us to find that if different modes of the game are selected then different rules of the games should be followed. The game being played in the Hard mode could be tested that the snake is not allowed to cross boundaries and this could be compared with automated testing allowing us to know if our output files have passed their unit test.
\bibliographystyle{plainnat}
\bibliography{SRS}
\newpage
\section{Appendix}
This is where you can place additional information.
\subsection{Symbolic Parameters}
The definition of the test cases will call for SYMBOLIC\_CONSTANTS.
Their values are defined in this section for easy maintenance.
N/A
\subsection{Usability Survey Questions?}
This is a section that would be appropriate for some teams.
The following questions will be asked to peers when conducting integrated and system testing:
\begin{itemize}
\item Does the game lag at any point?
\item Does the game maintain consistent speed performance as you advance through the game?
\item Is the main menu clear and understandable?
\item Is the game exciting to play?
\item Is the game visually appealing? Does it look visually complete?
\end{itemize}
Other questions will be asked to validate the game, mostly focusing on non-functional requirements whose completeness is subjective to the user.
\end{document}
\ No newline at end of file
File added
\documentclass{article}
\usepackage{pdfpages}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{hyperref}
\title{SE 3XA3: Development Plan\\Snake 2.o}
\author{Team \# 30, VUA30
\\ Vaibhav Chadha , chadhav
\\ Usman Irfan , irfanm7
\\ Andy Hameed , hameea1
}
\date{}
\begin{document}
\begin{table}[hp]
\caption{Revision History} \label{TblRevisionHistory}
\begin{tabularx}{\textwidth}{llX}
\toprule
\textbf{Date} & \textbf{Developer(s)} & \textbf{Change}\\
\midrule
Sept 25, 2018 & Vaibhav, Usman, Andy & Worked on part 1 to 4\\
Sept 27, 2018 & Vaibhav, Usman, Andy & Worked on part 4 to 8\\
Sept 27, 2018 & Vaibhav & Added the information from the meeting documents to the LaTeX file\\
Sept 28, 2018 & Andy & Proof of concept, Git workflow, Final editing and formatting\\
Sept 28, 2018 & Usman & Updated proof of concept\\
Oct 12, 2018 & Andy & Made changes according to feedback on development plan and added section on POC demo\\
\bottomrule
\end{tabularx}
\end{table}
\newpage
\maketitle
\section{Team Meeting Plan}
Meetings will be held \textbf{twice a week} at the following times:
\begin{itemize}
\item Mondays 5:30 - 6:30 pm at KTH Computer Labs
\item Wednesdays 12:30 to 2:00pm at Health science library
\end{itemize}
\subsection{Roles and Agenda}
\textbf{Chair}: Andy Hameed
\begin{itemize}
\item Responsible for creating the agenda and selecting topics that pertain to all team members
\item Agenda items will be listed as questions\\
\end{itemize}
\textbf{Notettaker}: Usman Irfan
\begin{itemize}
\item Responsible for taking meeting minutes
\item Meeting decisions will be summarized in a statement at the end of the meeting
\end{itemize}
\textbf{Timekeeper}: Vaibhav Chadha
\begin{itemize}
\item Keeps track of time in case we are spending too much time on one topic
\end{itemize}
\section{Team Communication Plan}
Main source of communication is \textbf{Facebook Messenger}, it will be used for general inquiries, updates, reminders of team meetings, any links to useful resources and so on. Phone and texting will be used as a backup in case of urgent matters, for example not being able to get in contact with a team member through messenger.
Aside from these, the team will be using Workflowy to assign small tasks that are promptly due or ones that may not necessarily fit on the gantt chart because they are minor - this tool will be used to delegate a small to-do list for each team member .
\section{Team Member Roles}
Vaibhav Chadha:
\begin{itemize}
\item Latex Documentation
\item Analyst - makes sure the requirements of the clients are met through the software
\item gantt chart management\\
\end{itemize}
Usman Irfan:
\begin{itemize}
\item Scribe
\item Technology Research
\item operation manager -ensures project development is running smoothly and software is being developed according to milestones \\
\end{itemize}
Andy Hameed:
\begin{itemize}
\item Final editing
\item latex documentation
\item team leader\\
\end{itemize}
All:
\begin{itemize}
\item GIT project management
\end{itemize}
\section{Git Workflow Plan}
We will be using the Git Feature Branch Workflow to manage the software development. Using branches, each team member is capable of
working on different modules or sections of the software at the same time in localized branches, before pushing their changes to the master branch.
The following procedures will be followed:
\begin{itemize}
\item Vaibhav will be tagging any major milestones for final submission. This makes the submission process consistent. Otherwise, Andy or Usman will agree on one person to tag and submit for final submission.
\item Any major changes can be placed in a branch to avoid merging conflicts and overwriting existing work. They can be merged later on upon team agreement.
\end{itemize}
\section{Proof of Concept Demonstration Plan}
The original project is built using Javascript, HTML and CSS in contrast to our development plan using python and the Pygame library. Since we are using an OOP language, we will be able to create classes for different components of the snake game such as the snake unit block, snake body, and snake bate. The hardest part of the implementation will be the movement of the snake according to the user's keyboard inputs, and second to that would be the process of expanding the snake once a food item is captured. Besides that, the interface may be difficult to implement in python but could be simple with the use of a python framework such as PyQT5.\\
Once our game application has been developed the next part would be to test the project and for that we will be using Pytest, since our backend language is python this will help us test all possible functions and aspects. The functions that will be difficult to test would be to see if the snake eats the food, does the food appear at random locations after eaten by the snake and if the snake tries to leave the borders, will the game end. Portability will have to be taken into consideration since the application is being built for windows. However, it can be compiled and run on any system as long as the necessary files and libraries are download.
\subsection{POC Demo}
The team will be demonstrating the movement of a snake around the screen using unit blocks for the body of the snake. Lengthening the snake body, scoring and eating the bate will not be demonstrated in the demo. This POC should demonstrate that with the movement of the snake, which is the main component of the game, the team will be able to develop classes to represent other components of the game such as the score, food bate, and lengthening of the snake body.
\section{Technology}
Coding Language: Python, Kivy for GUI\\
IDE: IDLE scripting\\
Testing: PyUnit testing\\
Documentation: Doxygen\\
\section{Coding Style}
We will be using the \href{https://github.com/google/styleguide/blob/gh-pages/pyguide.md}{Google Python Style Guide}
for our coding style. It encompasses all the necessary naming conventions and standards required for the project development.
\section{Project Schedule}
Please see the following pages for the project schedule in the form of a gantt chart.
\includepdf[page=-]{../../ProjectSchedule/Team_Gantt}
\section{Project Review}
\end{document}
\ No newline at end of file
File added
\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs}
\title{SE 3XA3: Problem Statement\\ \textbf{Snake Game}}
\author{Team \#30, VUA30
\\ Usman Irfan - irfanm7
\\ Andy Hameed - hameea1
\\ Vaibhav Chadha - chadhav
}
\date{2018-09-21}
\usepackage[left=2cm, right=5cm, top=2cm]{geometry}
\begin{document}
\begin{table}[hp]
\caption{Revision History} \label{TblRevisionHistory}
\begin{tabularx}{\textwidth}{llX}
\toprule
\textbf{Date} & \textbf{Developer(s)} & \textbf{Change}\\
\midrule
2018-09-20 & Vaibhav & Made the LaTeX file and wrote the section with what the Problem is\\
2018-09-20 & Usman & Added the Importance of Problem section while formatting the LaTeX\\
2018-09-21 & Andy Hameed & Formatted LaTeX file and added Context section, giving the final editing to the document\\
2018-10-09 & Andy Hameed & Edited doc to reflect web app to desktop app decision change\\
\bottomrule
\end{tabularx}
\end{table}
\newpage
\maketitle
\subsection*{The Problem}
Almost everyone nowadays relies on a computer as a multipurpose tool for research, video streaming, gaming and many other tasks. With the emergence of fast computing, gaming has become a popular pastime activity and a source of entertainment for many. However, not everyone has a device powerful enough to support extensive game applications. A simple, memory effecient application of the Snake game allows it to be accessible for gamers without the need for extensive hardware or a high-performance computer. Our team, VUA30, will be creating a desktop application for the well-known Snake game with new enhancements and features. This competitive and addictive game can allow the user to play at their own pace and challenge their own high score.
\subsection*{Importance of the Problem}
Buying a computing device with high storage and faster performance can be out of budget. Complicated software covers up all the storage and the user is bound to use these applications as opposed to downloading other software. The importance of the redevelopment of The Snake is to save computing devices' personal storage and allow the user to play a game 24/7 with strong performance, even offline. Creating a desktop version of the snake game can fit into the category of downloadable calssical games such as the solitaire suite. The recreation of this game will allow the user to enjoy the classical game anytime and anywhere as long as they have installed the application. Improving aspects such as graphics and custom speed will also make the game more interesting. We would like to add more features to the game to make it more customizable and help people enjoy the classical game in an exciting and new way.
\subsection*{Context}
The stakeholders are mainly the gaming audience, the older generation of game enthusiasts, youth and teens. Some other stakeholders that Although the game can be played by anyone, it is targeted towards the audience mentioned above who are most invested in the game. The environment is native app development using Python. This provides provides less flexibility than web API's but there still exists many useful libraries which can be used such as Pygame for example.
\end{document}
# Development Plan
# Problem Statement
The folders and files for this folder are as follows:
......
# Software Requirements Specification
The folders and files for this folder are as follows:
Describe ...
File added