-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path3-requisites.tex
392 lines (316 loc) · 16.7 KB
/
3-requisites.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
\chapter{Requirement Analysis}
\label{chap:requirements}
\begin{chapterintro}
This chapter describes one of the most important stages in software development: the requirement analysis using different scenarios. For this, a detailed analysis of the possible use cases is made using the Unified Modeling Language (UML). This language allows us to specify, build and document a system using graphic language.
\end{chapterintro}
\cleardoublepage
\section{Overview}
The result of this chapter will be a complete specification of the requirements, which will be matched by each module in the design stage. This helps us also to focus on key aspects and take apart other less important functionalities that could be implemented in future works.
\section{Use cases}
These sections identify the use cases of the system. This helps us to obtain a complete specification of the uses of the system, and therefore define the complete list of requisites to match. First, we will present a list of the actors that are in the system and a UML diagram representing all the actors participating in the different use cases. This representation allows, apart from specifying the actors that interact in the system, the relationships between them.
These use cases will be described the next sections, including each one a table with their complete specification. Using these tables, we will be able to define the requirements to be established.
\subsection{Actors dictionary}
\noindent The list of primary and secondary actors is presented in table \ref{tab:actores}. These actors participate in the different use cases, which are presented later.\\
\begin{table}[!htpb]
\centering
\begin{tabular}{|c|c|x{6cm}|}
\noalign{\hrule height 2pt}
\textbf{Actor identifier} & \textbf{Role} & \textbf{Description}\tn
\hline
ACT-1 & Gamer & End user that plays the game using the physical instruments and the application\tn
\hline
ACT-2 & Instrument recognition algorithm & Algorithm that detects what physical figure has been placed on the application recognition zones\tn
\hline
ACT-3 & Client & Company that has outsourced the game development\tn
\hline
ACT-4 & Flurry & Technology that manages application metrics and errors\tn
\noalign{\hrule height 2pt}
\end{tabular}
\caption{Actors list}
\label{tab:actores}
\end{table}
\clearpage
\FloatBarrier
\subsection{Game modes use case}
\label{subsec:gamemodes}
This use case package collects the game play modes and their functionalities, as shown in \ref{fig:pack-uc1}.
The use cases presented in this section are as shown in the Figure \ref{fig:pack-uc1}:
\begin{itemize}
\item \textit{play instrument} detailed in sub-section \ref{subsec:playinstrument}.
\item \textit{conduct orchestra} detailed in sub-section \ref{subsec:conductorchestra}.
\item \textit{discover instrument} detailed in sub-section \ref{subsec:discoverinstrument}.
\item \textit{watch demo} detailed in sub-section \ref{subsec:watchdemo}.
\item \textit{select melody} detailed in sub-section \ref{subsec:selectmelody}.
\item \textit{select instrument} detailed in sub-section \ref{subsec:selectinstrument}.
\end{itemize}
\begin{figure}[h]
\centering
\includegraphics[width=400pt]{graphics/requisites/uc1.pdf}
\caption{Game modes use case}
\label{fig:pack-uc1}
\end{figure}
\newpage
\subsubsection{Play instrument}
\label{subsec:playinstrument}
\begin{table}[!htpb]
\centering
\begin{tabular}{|c|x{1cm}x{5cm}x{5cm}|}
\noalign{\hrule height 2pt}
\textbf{Use Case Name} & \multicolumn{3}{c|}{play instrument}\\
\hline
\textbf{Use Case ID} & \multicolumn{3}{x{11cm}|}{UC1.1}\\
\hline
\textbf{Primary Actor} & \multicolumn{3}{c|}{Gamer}\\
\hline
\textbf{Pre-Condition} & \multicolumn{3}{x{11cm}|}{The application is showing the home screen and the gamer has the instruments physical miniatures}\\
\hline
\textbf{Post-Condition} & \multicolumn{3}{x{11cm}|}{Optionally, the gamer can watch a demo, change the instrument or change the melody}\\
\hline
\textbf{Flow of Events} & \multicolumn{1}{c|}{} & \multicolumn{1}{x{5cm}|}{Actor Input} & \multicolumn{1}{x{5cm}|}{System Response}\\
\hline
\textbf{} & \multicolumn{1}{x{0.5cm}|}{1} & \multicolumn{1}{x{5cm}|}{The gamer puts an instrument miniature on home screen. The instrument is placed in the detection zone circle that represents the play instrument game mode} & \multicolumn{1}{x{5cm}|}{The application loads the play instrument mode game with the instrument that has been placed on the screen and the default melody. }\\
\hline
\end{tabular}
\end{table}
\FloatBarrier
\newpage
\subsubsection{Conduct orchestra}
\label{subsec:conductorchestra}
\begin{table}[!htpb]
\centering
\begin{tabular}{|c|x{1cm}x{5cm}x{5cm}|}
\noalign{\hrule height 2pt}
\textbf{Use Case Name} & \multicolumn{3}{c|}{conduct orchestra}\\
\hline
\textbf{Use Case ID} & \multicolumn{3}{x{11cm}|}{UC1.2}\\
\hline
\textbf{Primary Actor} & \multicolumn{3}{c|}{Gamer}\\
\hline
\textbf{Pre-Condition} & \multicolumn{3}{x{11cm}|}{The application is showing the home screen and the gamer has the instruments physical miniatures}\\
\hline
\textbf{Post-Condition} & \multicolumn{3}{x{11cm}|}{Optionally, the gamer can play, stop or change the melody, enable or disable an instrument and change the instrument family}\\
\hline
\textbf{Flow of Events} & \multicolumn{1}{c|}{} & \multicolumn{1}{x{5cm}|}{Actor Input} & \multicolumn{1}{x{5cm}|}{System Response}\\
\hline
\textbf{} & \multicolumn{1}{x{0.5cm}|}{1} &
\multicolumn{1}{x{5cm}|}{The gamer puts an instrument miniature on home screen. The instrument is placed in the detection zone circle that represents the conduct orchestra game mode} &
\multicolumn{1}{x{5cm}|}{The application loads the conduct orchestra game mode with all instruments enabled, the family instrument selector of the family instrument that has been placed on the screen enabled, and the default melody.}\\
\hline
\end{tabular}
\end{table}
\FloatBarrier
\newpage
\subsubsection{Discover instrument}
\label{subsec:discoverinstrument}
\FloatBarrier
\begin{table}[!htpb]
\centering
\begin{tabular}{|c|x{1cm}x{5cm}x{5cm}|}
\noalign{\hrule height 2pt}
\textbf{Use Case Name} & \multicolumn{3}{c|}{discover instrument}\\
\hline
\textbf{Use Case ID} & \multicolumn{3}{x{11cm}|}{UC1.3}\\
\hline
\textbf{Primary Actor} & \multicolumn{3}{c|}{Gamer}\\
\hline
\textbf{Pre-Condition} & \multicolumn{3}{x{11cm}|}{The application is showing the home screen and the gamer has the instruments physical miniatures}\\
\hline
\textbf{Post-Condition} & \multicolumn{3}{x{11cm}|}{Optionally, the gamer can play the an instrument sound and change the instrument family}\\
\hline
\textbf{Flow of Events} & \multicolumn{1}{c|}{} & \multicolumn{1}{x{5cm}|}{Actor Input} & \multicolumn{1}{x{5cm}|}{System Response}\\
\hline
\textbf{} & \multicolumn{1}{x{0.5cm}|}{1} &
\multicolumn{1}{x{5cm}|}{The gamer puts an instrument miniature on home screen. The instrument is placed in the detection zone circle that represents the discover instrument game mode} &
\multicolumn{1}{x{5cm}|}{The application loads the discover instrument game mode with the instruments of the family instrument that has been placed on the screen. The game mode shows instrument information and sounds}\\
\hline
\end{tabular}
\end{table}
\FloatBarrier
\newpage
\subsubsection{Watch demo}
\label{subsec:watchdemo}
\begin{table}[!htpb]
\centering
\begin{tabular}{|c|x{1cm}x{5cm}x{5cm}|}
\noalign{\hrule height 2pt}
\textbf{Use Case Name} & \multicolumn{3}{c|}{watch demo}\\
\hline
\textbf{Use Case ID} & \multicolumn{3}{x{11cm}|}{UC1.4}\\
\hline
\textbf{Primary Actor} & \multicolumn{3}{c|}{Gamer}\\
\hline
\textbf{Pre-Condition} & \multicolumn{3}{x{11cm}|}{Play instrument game mode has been selected}\\
\hline
\textbf{Post-Condition} & \multicolumn{3}{x{11cm}|}{-}\\
\hline
\textbf{Flow of Events} & \multicolumn{1}{c|}{} & \multicolumn{1}{x{5cm}|}{Actor Input} & \multicolumn{1}{x{5cm}|}{System Response}\\
\hline
\textbf{} & \multicolumn{1}{x{0.5cm}|}{1} &
\multicolumn{1}{x{5cm}|}{The gamer touches Demo button with a selected melody and instrument} &
\multicolumn{1}{x{5cm}|}{The melody is played with the instrument selected and musical notes are highlighted}\\
\hline
\end{tabular}
\end{table}
\FloatBarrier
\newpage
\subsubsection{Select melody}
\label{subsec:selectmelody}
\begin{table}[!htpb]
\centering
\begin{tabular}{|c|x{1cm}x{5cm}x{5cm}|}
\noalign{\hrule height 2pt}
\textbf{Use Case Name} & \multicolumn{3}{c|}{select melody}\\
\hline
\textbf{Use Case ID} & \multicolumn{3}{x{11cm}|}{UC1.5}\\
\hline
\textbf{Primary Actor} & \multicolumn{3}{c|}{Gamer}\\
\hline
\textbf{Pre-Condition} & \multicolumn{3}{x{11cm}|}{Play instrument game mode or conduct orchestra have been selected}\\
\hline
\textbf{Post-Condition} & \multicolumn{3}{x{11cm}|}{-}\\
\hline
\textbf{Flow of Events} & \multicolumn{1}{c|}{} & \multicolumn{1}{x{5cm}|}{Actor Input} & \multicolumn{1}{x{5cm}|}{System Response}\\
\hline
\textbf{} & \multicolumn{1}{x{0.5cm}|}{1} &
\multicolumn{1}{x{5cm}|}{The gamer touch Melodies button} &
\multicolumn{1}{x{5cm}|}{A list of the melodies are shown}\\
\hline
\textbf{} & \multicolumn{1}{x{0.5cm}|}{2} &
\multicolumn{1}{x{5cm}|}{The gamer choses one of the available melodies} &
\multicolumn{1}{x{5cm}|}{Selected melody is loaded into game mode}\\
\hline
\end{tabular}
\end{table}
\FloatBarrier
\newpage
\subsubsection{Select instrument}
\label{subsec:selectinstrument}
\begin{table}[!htpb]
\centering
\begin{tabular}{|c|x{1cm}x{5cm}x{5cm}|}
\noalign{\hrule height 2pt}
\textbf{Use Case Name} & \multicolumn{3}{c|}{select instrument}\\
\hline
\textbf{Use Case ID} & \multicolumn{3}{x{11cm}|}{UC1.6}\\
\hline
\textbf{Primary Actor} & \multicolumn{3}{c|}{Gamer}\\
\hline
\textbf{Secondary Actor} & \multicolumn{3}{c|}{Instrument recognition algorithm}\\
\hline
\textbf{Pre-Condition} & \multicolumn{3}{x{11cm}|}{Any game mode is selected and the gamer has the instruments physical miniatures}\\
\hline
\textbf{Post-Condition} & \multicolumn{3}{x{11cm}|}{O-}\\
\hline
\textbf{Flow of Events} & \multicolumn{1}{c|}{} & \multicolumn{1}{x{5cm}|}{Actor Input} & \multicolumn{1}{x{5cm}|}{System Response}\\
\hline
\textbf{} & \multicolumn{1}{x{0.5cm}|}{1} &
\multicolumn{1}{x{5cm}|}{The Gamer place the instrument in the circle recognition zone} &
\multicolumn{1}{x{5cm}|}{The Instrument recognition algorithm processes the instrument pad touches and determines which instrument have been placed}\\
\hline
\textbf{} & \multicolumn{1}{x{0.5cm}|}{2} &
\multicolumn{1}{x{5cm}|}{The Instrument recognition algorithm detects a different instrument} &
\multicolumn{1}{x{5cm}|}{Selected instrument is loaded into game mode}\\
\hline
\end{tabular}
\end{table}
\FloatBarrier
\newpage
\subsection{Game management use case}
\label{subsec:gamemanagement}
This use case package collects the main management use cases of the game, as shown in \ref{fig:pack-uc2}
\begin{itemize}
\item \textit{metrics management} detailed in subsection \ref{subsec:metricsmanagement}
\item \textit{errors management} detailed in subsection \ref{subsec:errorsmanagement}
\end{itemize}
\begin{figure}[h]
\centering
\includegraphics[width=400pt]{graphics/requisites/uc2.pdf}
\caption{Game management use case}
\label{fig:pack-uc2}
\end{figure}
\FloatBarrier
\newpage
\subsubsection{Metrics management}
\label{subsec:metricsmanagement}
\begin{table}[!htpb]
\centering
\begin{tabular}{|c|x{1cm}x{5cm}x{5cm}|}
\noalign{\hrule height 2pt}
\textbf{Use Case Name} & \multicolumn{3}{c|}{Metrics management}\\
\hline
\textbf{Use Case ID} & \multicolumn{3}{x{11cm}|}{UC2.1}\\
\hline
\textbf{Primary Actor} & \multicolumn{3}{c|}{Client}\\
\hline
\textbf{Secondary Actor} & \multicolumn{3}{c|}{Flurry}\\
\hline
\textbf{Pre-Condition} & \multicolumn{3}{x{11cm}|}{Flurry client account has been created. Application is running}\\
\hline
\textbf{Post-Condition} & \multicolumn{3}{x{11cm}|}{Metrics are added to Flurry servers}\\
\hline
\textbf{Flow of Events} & \multicolumn{1}{c|}{} & \multicolumn{1}{x{5cm}|}{Actor Input} & \multicolumn{1}{x{5cm}|}{System Response}\\
\hline
\textbf{} & \multicolumn{1}{x{0.5cm}|}{1} &
\multicolumn{1}{x{5cm}|}{The client access to their Flurry account} &
\multicolumn{1}{x{5cm}|}{Flurry shows all metrics included with their SDK in the application}\\
\hline
\end{tabular}
\end{table}
\FloatBarrier
\newpage
\subsubsection{Errors management}
\label{subsec:errorsmanagement}
\begin{table}[!htpb]
\centering
\begin{tabular}{|c|x{1cm}x{5cm}x{5cm}|}
\noalign{\hrule height 2pt}
\textbf{Use Case Name} & \multicolumn{3}{c|}{Metrics management}\\
\hline
\textbf{Use Case ID} & \multicolumn{3}{x{11cm}|}{UC2.2}\\
\hline
\textbf{Primary Actor} & \multicolumn{3}{c|}{Client/Developer}\\
\hline
\textbf{Secondary Actor} & \multicolumn{3}{c|}{Flurry}\\
\hline
\textbf{Pre-Condition} & \multicolumn{3}{x{11cm}|}{Flurry client and developer accounts has been created. Application is running and an error has been thrown}\\
\hline
\textbf{Post-Condition} & \multicolumn{3}{x{11cm}|}{Errors are sent to Flurry servers}\\
\hline
\textbf{Flow of Events} & \multicolumn{1}{c|}{} & \multicolumn{1}{x{5cm}|}{Actor Input} & \multicolumn{1}{x{5cm}|}{System Response}\\
\hline
\textbf{} & \multicolumn{1}{x{0.5cm}|}{1} &
\multicolumn{1}{x{5cm}|}{The client and the developers accesses to their Flurry account} &
\multicolumn{1}{x{5cm}|}{Flurry shows all errors included with their SDK in the application}\\
\hline
\end{tabular}
\end{table}
\FloatBarrier
\subsection{Summary of requirements}
After analyzing the previous use cases, some clear requirements seem to stand out. Many of
the user cases requires similar features or certain characteristics in the architecture, pointing
out the necessities or requirement of the system. In this section we will present those
requirements, separated in two groups: functional and non-functional requirements.
\subsubsection{Functional requirements}
\begin{itemize}
\item \textbf{FR1:} \textit{The Gamer} must be able to play three different game modes: \textit{Play instrument}, \textit{Conduct orchestra} and \textit{Discover instrument}. We can observe this requirement in use case \ref{subsec:gamemodes}
\item \textbf{FR2:} \textit{The Gamer} must be able to watch a demo within \textit{Play instrument} game mode. We can observe this requirement in use case \ref{subsec:gamemodes}
\item \textbf{FR3:} \textit{The Gamer} must be able to select melody within \textit{Play instrument} and \textit{Conduct orchestra} game modes. We can observe this requirement in use case \ref{subsec:gamemodes}
\item \textbf{FR4:} \textit{The Gamer} must be able to select instrument within \textit{Play instrument}, \textit{Conduct orchestra} and \textit{Discover instrument} game modes. We can observe this requirement in use case \ref{subsec:gamemodes}
\item \textbf{FR5:} \textit{The instrument recognition algorithm} must detect the physical instrument miniature that has been placed on the game recognition zone. We can observe this requirement in use case \ref{subsec:gamemodes}
\item \textbf{FR6:} \textit{The client} must be able to access game metrics and errors. We can observe this requirement in use case \ref{subsec:gamemanagement}
\item \textbf{FR7:} \textit{The developer} must be able to access game errors. We can observe this requirement in use case \ref{subsec:gamemanagement}
\item \textbf{FR8:} \textit{Flurry} must be manage game metrics and errors. We can observe this requirement in use case \ref{subsec:gamemanagement}
\end{itemize}
\subsubsection{Non-functional requirements}
\begin{itemize}
\item \textbf{NFR1:} Game application screens must be user-friendly. We can observe this requirement in use case \ref{subsec:gamemodes}
\item \textbf{NFR2:} Melody and instrument selector modules must be reusable. We can observe this requirement in use case \ref{subsec:gamemodes}
\item \textbf{NFR3:} Instrument recognition algorithm must be robust and must have a low response time. We can observe this requirement in use case \ref{subsec:gamemodes}
\item \textbf{NFR4:} Game metrics and error management should be private and accessible for developers and the client. We can observe this requirement in use case \ref{subsec:gamemanagement}
\end{itemize}
\FloatBarrier
\section{Summary}
In this chapter, we detailed analysis of the possible use cases is made using the Unified Modeling Language (UML) for our application.
Firstly, we represented the actors dictionary, with both primary and secondary actors who will be participating in the different use cases.
Later, we described both Game modes and Game management use cases. With the use cases described we have introduced the basic functionalities that have been implemented in this project. They will help us to understand how the different actors that can interact with our application. They can serve as a base for further development and different use cases that can come to mind.
Finally, we extracted both functional and non-functional requirements that were stood out after analyzing the use cases.