Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %Copyright 2014 Jean-Philippe Eisenbarth
- %This program is free software: you can
- %redistribute it and/or modify it under the terms of the GNU General Public
- %License as published by the Free Software Foundation, either version 3 of the
- %License, or (at your option) any later version.
- %This program is distributed in the hope that it will be useful,but WITHOUT ANY
- %WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- %PARTICULAR PURPOSE. See the GNU General Public License for more details.
- %You should have received a copy of the GNU General Public License along with
- %this program. If not, see <http://www.gnu.org/licenses/>.
- %Based on the code of Yiannis Lazarides
- %http://tex.stackexchange.com/questions/42602/software-requirements-specification-with-latex
- %http://tex.stackexchange.com/users/963/yiannis-lazarides
- %Also based on the template of Karl E. Wiegers
- %http://www.se.rit.edu/~emad/teaching/slides/srs_template_sep14.pdf
- %http://karlwiegers.com
- %
- %Further additions of this sofware have been made by Ryan Zarmbinski
- \documentclass{scrreprt}
- \usepackage{listings}
- \usepackage{ragged2e}
- \usepackage{wrapfig}
- \usepackage{underscore}
- \usepackage{array}
- \usepackage{indentfirst}
- \usepackage{multirow}
- \usepackage{graphicx}
- \usepackage{enumitem}
- \usepackage{caption}
- \usepackage{float}
- \floatstyle{boxed}
- \restylefloat{figure}
- \setlist{nolistsep}
- \renewcommand*\rmdefault{ptm}
- \DeclareCaptionLabelFormat{blank}{}
- \graphicspath{{part1images/}{part1images/sequenceDiagrams/}{part1images/stateDiagrams/}{part1images/screenshots/}}
- \usepackage[bookmarks=true]{hyperref}
- \renewcommand{\contentsname}{Table of Contents}
- \hypersetup{
- %bookmarks=false, % show bookmarks bar?
- pdftitle={Software Requirement Specification}, % title
- pdfauthor={Ryan zarmbinski}, % author
- pdfsubject={Rowdy Radio Application}, % subject of the document
- pdfkeywords={Software, Rowdy, Radio, App, Application, UTSA, Android, Stream}, % list of keywords
- colorlinks=true, % false: boxed links; true: colored links
- linkcolor=black, % color of internal links
- citecolor=black, % color of links to bibliography
- filecolor=black, % color of file links
- urlcolor=purple, % color of external links
- linktoc=page % only page is linked
- }%
- \date{}
- \author{}
- \title{%
- \flushright
- \rule{\textwidth}{5pt}\vskip0.5cm
- \begin{bfseries}
- \Huge{SOFTWARE REQUIREMENTS\\ SPECIFICATION}\\
- \vspace{1em} %vertical space?
- for\\
- \vspace{1em}
- Rowdy Radio Application\\
- \vspace{1em}
- Prepared by: {\LARGE Evanilson Braulio,\\
- Lymari Montijo,\\
- Francisco Platas,\\
- Zachary Rodriguez,\\
- Ryan Zarmbinski}\\
- \vspace{1em}
- May 4, 2016
- \end{bfseries}
- \vskip0.5cm\rule{\textwidth}{5pt}
- }
- \usepackage{hyperref}
- \begin{document}
- \renewcommand*\listfigurename{Table of figures}
- \maketitle
- \tableofcontents
- \begingroup
- \let\clearpage\relax
- \endgroup
- \listoffigures
- \listoftables
- \chapter{Introduction}
- \section{Purpose}
- The purpose of this document is to enumerate all components and functionality of the Rowdy Radio Streaming Application. It will detail the features available for the system and the user interface, and will provide explanations of the usage and constraints of the app.
- \par
- The intended audience of this document consists of the stakeholders and developers of the system.
- \section{Software Summary}
- The Rowdy Radio Application will be an Android based app that will support UTSA’s Rowdy Radio online services. The main purpose of this software is to allow users to have a seamless mobile experience of the Rowdy radio stream in their Android mobile devices. The target audience for this software is primarily for the UTSA student body, faculty and personnel, but the app is open to anyone that wants to listen. The only requirement is having an account, which is free of charge.
- The application will be a live Internet-based radio client for the Rowdy Radio stream. In order for the user to access the Radio Stream, he must have an account with UTSA’s Radio services. If the user has an account, he can log in from the app and be granted access to the stream. In the case of first time users, the app allows the user to create an account. Once logged in, the app will take the user to the main screen with the stream, where it will play automatically. The current song information, such as the album artwork, title and artist will be displayed in the main screen. Also the user will have the option of rating the current song using a five star rating system. The app will also feature a news feed which will be part of the main screen where the user can read UTSA and Rowdy Radio’s latest news. Another function of the app will be an alarm feature where the user can create as many alarms as his device will allow, in which the stream will play when the alarm goes off. The application will also gather some user data such as GPS location, song rating information and session log in and log out times to provide the radio services with useful analytics.
- \clearpage
- \section{Document Conventions, Acronyms and Abbreviations}
- All class, state and sequence diagrams use conventions according to UML. This document also uses the following conventions:
- \begin{itemize}
- \item \underline{Rowdy Radio Application:} the server-side System, the client-side Application and all interactions thereof.
- \item \underline{System:} all architecture that is owned and maintained by developers, owners and Stakeholders in charge of maintenance.
- \item \underline{Stakeholder:} any individual that has potential access to the system.
- \item \underline{Newsfeed:} a single, regularly updated table that contains a brief description of current events and links to the full articles.
- \item \underline{Server:} all application servers and databases that are within the System's scope.
- \item \underline{RSS Feed:} \emph{``Rich Site Summary''}, a single news-feed that contains brief descriptions of news articles and a method of reading the full articles online.
- \item \underline{Application/App:} the client-side Android application.
- \end{itemize}
- \section{Overview}
- Section 2 of the SRS Document will enumerate all requirements for the Rowdy Radio Application. The appendix of this document contains the minutes for the meeting held with the stakeholder.
- \chapter{Specific Requirements}
- \section{Functional requirements}
- \subsection{System Architecture}
- The chosen system architecture for the Rowdy Radio Application will be a combination of the Model-View-Controller (MVC) for the Android Application logic, look and control of operations and a client-server architecture that will communicate with the Rowdy Radio Server to request the live stream, request the latest news feed updates and for the server to collect the user data that it needs.
- % Make a diagram depicting the system architecture. ?
- \subsection{Use Case Diagram}
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{UseCaseDiagramRowdy}
- \caption[Use Case Diagram]{Full Diagram of the Use Cases for the Rowdy Radio Application}
- \end{figure}
- For the Rowdy Radio Application Use Case Diagram, there are a total of 14 use cases and three main actors: The user, the server and the system administrator. The user and server will be in constant communication with each other, the user interacting with the app’s main features and the server will feed the requested data such as the Radio Stream, song info and account validation for logging in or creating an account. A brief description of each use case follows.
- \pagebreak
- \subsection{Use Case Descriptions}
- \begin{center}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Log In}\\ \hline
- ID: UC1\\ \hline
- Preconditions: \\
- 1. User must have an account with Rowdy radio services \\ \hline
- Flow of Events: \\
- 1. The user will open the app.\\
- 2. The user will enter the username and password.\\
- 3. The user will hit the log in button
- 4. The server will validate credentials \\ \hline
- Postconditions: \\
- 1. The user will be logged in and in the main view\\
- \hline
- \end{tabular}
- \caption{Log In Use Case }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Log Out}\\ \hline
- ID: UC2\\ \hline
- Preconditions:\\
- 1. User must be logged in \\ \hline
- Flow of Events: \\
- 1. The user will click on the logout button\\
- 2. The app will take the user back to the log in screen\\ \hline
- Postconditions: \\
- 1. The user will be logged out of the app.\\
- \hline
- \end{tabular}
- \caption{Log Out Use Case }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Create Account}\\ \hline
- ID: UC3\\ \hline
- Actors: User, Server \\ \hline
- Preconditions: \\
- 1. The user does not have an account \\ \hline
- Flow of Events: \\
- 1. The user will open the app and will be greeted by the log in screen.\\
- 2. User will fill out the Create Account form creating a username and password.\\
- 3. Server will validate the new user and create an account within the system.\\ \hline
- Postconditions: \\
- 1. User will have an account and will be able to log in.\\
- \hline
- \end{tabular}
- \caption{Create Account Use Case }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Read News feed}\\ \hline
- ID: UC4\\ \hline
- Actors: User, Server \\ \hline
- Preconditions: \\
- 1. User is logged into the app and has an Internet connection \\ \hline
- Flow of Events: \\
- 1. The user will select a news feed headline from the main screen where all the news headlines will be located. \\
- 2. App will display the news article in app or redirect to social media. \\
- 3. User can refresh the feed by scrolling down with the finger as is common in most apps.\\
- 4. Server will receive the latest status and send the newsfeed links that the user doesn't have. \\ \hline
- Post-conditions: \\
- 1. User will have read the latest headlines.\\
- \hline
- \end{tabular}
- \caption{Read News Feed Use Case }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Update News Feed}\\ \hline
- ID: UC5\\ \hline
- Actors: System Administrator, Server \\ \hline
- Preconditions: N/A \\ \hline
- Flow of Events: \\
- 1. System Admin will push the latest headlines and news content through the appropriate channels in the UTSA Rowdy Radio Server.
- 2. If the user is logged in, the app sends the latest update and the app refreshes. Also the user can refresh by scrolling with the finger. \\ \hline
- Postconditions: \\
- 1. System Administrator will have updated the app users with the latest news.\\
- 2. User will have the latest updates in the app\\
- \hline
- \end{tabular}
- \caption{Update Newsfeed Use Case }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Rate Song}\\ \hline
- ID: UC6\\ \hline
- Actors: User, Server \\ \hline
- Preconditions: \\
- 1. The User is in the play stream view and the album artwork and rating system is visible. \\ \hline
- Flow of Events: \\
- 1. The user will rate the current song using a five star rating system. \\
- 2. The rating given by the user will be stored temporarily in a file. \\
- 3. The server will collect user data that will contain the song rating and time of rating. \\ \hline
- Postconditions\\
- 1.The song will be rated and when the song plays in a different occasion, the song rating will be displayed. \\
- \hline
- \end{tabular}
- \caption[Rate Song Use Case]{}
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Display Song Details}\\ \hline
- ID: UC7\\ \hline
- Actors: User, Server \\ \hline
- Pre-Conditions: \\
- 1. The stream will be playing\\ \hline
- Flow of Events: \\
- 1. The user will play the stream \\
- 2. App will request the radio feed from server. \\
- 3. Server sends radio feed along with song information \\ \hline
- Post-Conditions: \\
- 1. Song details will be displayed in the stream \\
- \hline
- \end{tabular}
- \caption{Display Song Details Use Case }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Create Alarm} \\ \hline
- ID: UC8\\ \hline
- Actors: User \\ \hline
- Preconditions: N/A \\ \hline
- Flow of Events: \\
- 1. User will click on the alarms button. \\
- 2. The app will take the user to the alarms view.\\
- 3. The user will choose "add new alarm". \\
- 4. User will select alarm date, time, repeat and snooze options. \\ \hline
- Postconditions: \\
- 1. Alarm will be set up. \\
- \hline
- \end{tabular}
- \caption{Create Alarm Use Case }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Modify Alarm} \\ \hline
- ID: UC9\\ \hline
- Actors: User \\ \hline
- Preconditions: At least an alarm exists \\ \hline
- Flow of Events: \\
- 1. User will navigate to the alarms view, where each alarm has an option to be modified or deleted. \\
- 2. User will select "modify alarm". \\
- 3. User will change the desired alarm parameters.\\
- 4. User will save changes. \\ \hline
- Post-Conditions: \\
- 1. Existing alarm will be modified.\\
- \hline
- \end{tabular}
- \caption{Modify Alarm }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Delete Alarm} \\ \hline
- ID: UC10\\ \hline
- Actors: User \\ \hline
- Preconditions:\\
- 1. At least an alarm exists \\ \hline
- Flow of Events: \\
- 1. User will navigate to the alarms view, where each alarm has an option to be modified or deleted. \\
- 2. User will select "delete alarm". \\ \hline
- Postconditions: \\
- 1. Alarm will be deleted and not exist. \\
- \hline
- \end{tabular}
- \caption{Delete Alarm}
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- Use Case: Play Stream \\ \hline
- ID: UC11\\ \hline
- Actors: User \\ \hline
- Preconditions: \\
- 1. The user is logged in and there is an Internet connection \\ \hline
- Flow of Events: \\
- 1. User will log in to the app.\\
- 2. Server validates user and establishes a connection to get the radio feed. \\ \hline
- Post-Conditions: \\
- 1. Stream is playing in the app. \\
- \hline
- \end{tabular}
- \caption{Play Stream }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Control Volume} \\ \hline
- ID: UC12\\ \hline
- Actors: User \\ \hline
- Preconditions: The stream is playing \\ \hline
- Flow of Events: \\
- 1. The user will scroll up or down for the volume or press the mute button. \\
- 2. The volume will go up, down or be muted accordingly. \\ \hline
- Postconditions: \\
- 1. The volume will be modified. \\
- \hline
- \end{tabular}
- \caption{Control Volume }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Pause Stream} \\ \hline
- ID: UC13\\ \hline
- Actors: User \\ \hline
- Preconditions: The stream is playing. \\ \hline
- Flow of Events: \\
- 1. The user will press the pause button.\\
- 2. The stream will pause. \\
- 3. When the user presses play again, the stream will play like in UC 11 - Play Stream. \\ \hline
- Postconditions: \\
- 1. The stream will stop. \\
- \hline
- \end{tabular}
- \caption{Pause Stream }
- \label{tab:testtab1}
- \end{table}
- \begin{table}[!ht]
- \centering
- \begin{tabular}{|p{11 cm}|}
- \hline
- \textbf{Use Case: Collect User Data} \\ \hline
- ID: UC14\\ \hline
- Actors: User, Server \\ \hline
- Preconditions: The User has been logged into the app and listening to the stream for a determined amount of time.\\ \hline
- Flow of Events: \\
- 1. The user will log into the app and play the stream. \\
- 2. After some time, the server will collect the information such as song rating, gps location and session connect times. \\ \hline
- Post-Conditions: \\
- 1. Servers will have user information for their analytics. \\
- \hline
- \end{tabular}
- \caption{Collect User Data }
- \label{tab:testtab1}
- \end{table}
- \end{center}
- \clearpage
- \subsection{Use Case Story Backlog}
- \begin{enumerate}
- \item Create Account
- \begin{enumerate}
- \item As a new user, I want to be able to create an account to be able to login to the app.
- \begin{enumerate}
- \item (10 pts) Create UI form for user to be able to enter in account info
- \item (12 pts) Setup backend for account info to be stored
- \end{enumerate}
- \end{enumerate}
- \item Log In
- \begin{enumerate}
- \item As a user, I want to be able to login to the app using the information I gave when I created my account.
- \begin{enumerate}
- \item (10 pts) Create UI form for entering username \& password
- \item (12 pts) Setup backend to validate information
- \item (6 pts) Direct user to stream page upon successful login
- \item (3 pts) Display error message upon unsuccessful login attempt
- \end{enumerate}
- \end{enumerate}
- \item Log Out
- \begin{enumerate}
- \item As a user, I want to logout of the app once I am done using it.
- \begin{enumerate}
- \item (3 pts) Add logout button/option to UI
- \item (4 pts) Stop stream/data once logged off
- \item (5 pts) Return user to login page if logout is successful
- \end{enumerate}
- \end{enumerate}
- \item Play Stream
- \begin{enumerate}
- \item As a user, I want to be able to hear the rowdy radio stream after I log in to the app.
- \begin{enumerate}
- \item (10 pts) Add Stream/Main page UI to the app
- \item (15 pts) Implement streaming functionality/backend
- \end{enumerate}
- \end{enumerate}
- \item Pause Stream
- \begin{enumerate}
- \item As a user, I want to be able to pause the stream, so that it no longer consumes data or outputs sound.
- \begin{enumerate}
- \item (3 pts) Add pause button to streaming screen
- \item (5 pts) Implement ability to stop gathering stream data upon pause click
- \end{enumerate}
- \end{enumerate}
- \item Display Song Details
- \begin{enumerate}
- \item As a user, I want to see information about the song that is currently playing on the radio stream
- \begin{enumerate}
- \item (8 pts) Retrieve track information if a valid song is playing in stream
- \item (8 pts) Display song info on main page of playing stream
- \end{enumerate}
- \end{enumerate}
- \item Create Alarm
- \begin{enumerate}
- \item As a user, I want to be able to create an alarm from within the app after logging in. I should be able to specify a date/time and volume for the created alarm and well as setup a repeating schedule.
- \begin{enumerate}
- \item (4 pts) Add alarm button on main screen
- \item (8 pts) Create alarm add page
- \item (10 pts) Create alarm listing page
- \item (10 pts) Setup location to store alarm data
- \item (12 pts) Implement alarm scheduling
- \end{enumerate}
- \end{enumerate}
- \clearpage
- \item Modify/Delete Alarm
- \begin{enumerate}
- \item As a user, I want to be able to modify or delete any alarm(s) that I have previously created.
- \begin{enumerate}
- \item (9 pts) Create Edit alarm page
- \item (6 pts) Add delete button next to each alarm in the alarm list
- \item (6 pts) Add delete button to edit alarm page
- \end{enumerate}
- \end{enumerate}
- \item Read News Stream
- \begin{enumerate}
- \item As a user, I want to keep up with the latest news about rowdy radio. A news stream should be visible once I login to the app.
- \begin{enumerate}
- \item (8 pts) Add news stream UI to main screen
- \item (9 pts) Pull news stream data from source
- \item (10 pts) Populate news stream with gathered data
- \end{enumerate}
- \end{enumerate}
- \item Update News Feed
- \begin{enumerate}
- \item As a user, I want the news feed that I see to be updated periodically with the latest news.
- \begin{enumerate}
- \item (7 pts) Implement update/refresh news functionality
- \item (4 pts) Add manual refresh button to news stream
- \end{enumerate}
- \end{enumerate}
- \item Control Volume
- \begin{enumerate}
- \item As a user, I want to control the volume of the radio stream from within the app itself.
- \begin{enumerate}
- \item (5 pts) Add volume bar to main page
- \item (5 pts) Tie volume bar to system volume
- \end{enumerate}
- \end{enumerate}
- \item Rate Song
- \begin{enumerate}
- \item As a user, I want to rate each song that I hear on the radio stream as a way to give feedback to the app.
- \begin{enumerate}
- \item (4 pts) Add stars/rating UI to main screen under song info
- \item (8 pts) Create enable/disable functionality for the rating system depending on if a song is playing
- \item (9 pts) Connect rating to currently playing song/user and send data back to server
- \item (8 pts) Populate rating if song has been previously rated by user
- \end{enumerate}
- \end{enumerate}
- \item Collect User Data
- \begin{enumerate}
- \item As an admin, I want to be able to know information about who is using my app
- \begin{enumerate}
- \item (10 pts) Track user logins
- \item (10 pts) Obtain GPS location
- \end{enumerate}
- \end{enumerate}
- \end{enumerate}
- \begin{center}
- \subsection{Class Diagram}
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{ClassDiagram}
- \caption[Class Diagram]{Full Class Diagram of the Rowdy Radio Application}%Ryan Zarmbinski
- \end{figure} %evanilson
- \justify
- The Class Diagram for the system is composed of 8 classes and they all allow the listener to interact with the app. The UserAccount class represents the user of the app, with a unique username and password. It has methods for logging in and out of the account and it also allows for the creation of an account in app. This class is also responsible for storing and facilitating the required user data that the server will collect. The Stream Class is an abstract class and it pertains to the main screen of the app where the stream can be both seen and heard. The methods \texttt{Play()} and \texttt{Pause()} will affect the sound and the \texttt{DisplayInfo()} method will interact with any of the three subclasses, Song, Podcast or Commercial to change the look of the screen. The Song class will also have a method that will store the user rating of the song. The Volume class will have the methods to control the volume up, down or completely mute the sound. The Newsfeed Class will receive information and updates from the rowdy radio server which will feed updates which will be displayed in the top of the screen. The method \texttt{read()} will let the user select a news headline and take the user to the appropriate link or social media site. The Alarm class will store the user designated alarm, which can be zero, one or more, as in most android devices. The class will have methods to setup a new alarm, modify or delete an existing one and to sound off the alarm. The interactions between the Stream class and Song, Podcast and Commercial classes is a generalization. The relationship between the Stream and Volume classes is a composition and the rest of the relationship between classes is an association. %Lymari
- \end{center}
- \subsection{State Diagrams}
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{StreamStateDiagram}
- \caption[Stream State Diagram]{State Diagram for the Live Audio Stream}%Ryan
- \end{figure}%Francisco
- The Stream State Diagram displays 2 main states those being Playing and Paused. The Stream is in the Playing state when the user logs in or plays the stream. The stream changes to the paused state when the pause button is pressed or when the user logs out.%Francisco
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{AlarmStateDiagram}
- \caption[Alarm State Diagram]{State Diagram for the Alarm Clocks}%Ryan
- \end{figure}%Francisco
- The Alarm State Diagram displays 3 main states those being Active, Inactive, Going Off and a final state when the alarm is removed. When an alarm is created it is active unless it is modified later on to be inactive. When the time is equal to the specified hour and minute for the alarm then it goes into the going off where the stream is started up, unless there is no network connection and instead a default alarm sound is played at a pre-specified volume. After the alarm goes off it goes into either the active state if it is set to repeat or the inactive state if it is not set to repeat. An alarm can be disabled to put it in an inactive state and reactivated to put it in the active state. If an alarm is removed it goes into an end state and is deleted.%Francisco
- \subsection{Sequence Diagrams}
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{login}
- \caption[Log-in Sequence Diagram]{Sequence Diagram for the User Log-in}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{logout}
- \caption[Log-out Sequence Diagram]{Sequence Diagram for the User Log-out}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{CreateAccount}
- \caption[Create Account Sequence Diagram]{Sequence Diagram for Creating a New Account with Rowdy Radio}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{ReadNewsFeed}
- \caption[Read News Feed Sequence Diagram]{Sequence Diagram for Reading the News Feed}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{RateSong}
- \caption[Rate Song Sequence Diagram]{Sequence Diagram for Rating the Current Song}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{DisplaySongDetail}
- \caption[Display Song Detail Sequence Diagram]{Sequence Diagram for Displaying the Details of the Current Song}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{CreateAlarm}
- \caption[Create Alarm Sequence Diagram]{Sequence Diagram for Creating a New Alarm Clock}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{ModifyAlarm}
- \caption[Modify Alarm Sequence Diagram]{Sequence Diagram for Modifying an Existing Alarm Clock}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{DeleteAlarm}
- \caption[Delete Alarm Sequence Diagram]{Sequence Diagram for deleting an Existing Alarm Clock}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{PlayStream}
- \caption[Play Stream Sequence Diagram]{Sequence Diagram for Starting the App's Reception of the Live Stream}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{ControlVolume}
- \caption[Control Volume Sequence Diagram]{Sequence Diagram for Controlling the Volume of the Stream}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{PauseStream}
- \caption[Pause Stream Sequence Diagram]{Sequence Diagram for Pausing the App's Reception of the Live Stream}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{CollectUserData}
- \caption[Collect User Data Sequence Diagram]{Sequence Diagram for Collecting User Data Through the App}%Ryan
- \end{figure}%Lymari
- \begin{figure}[H]
- \centering
- \includegraphics[width=\textwidth]{UpdateNewsFeed}
- \caption[Update News Feed Sequence Diagram]{Sequence Diagram for Updating the News Feed Items}%Ryan
- \end{figure}%Lymari
- \section{User Interface Requirements}
- \floatstyle{plain}
- \restylefloat{figure}
- \begin{figure}[H]
- \centering
- \includegraphics[width=0.4\textwidth]{LoginView}
- \caption[Log-in View]{The Main Screen for Logging Into the App or Creating a New Account}
- \label{fig:login}
- \end{figure}
- When a new or returning User opens up the App and he/she is not still logged in, the main landing screen shall be the Login View. (\textit{see Figure \ref{fig:login}}) This screen provides the User with the ability to log into their account or create a new account. Additionally, this screen contains a button that will allow the user to change a forgotten password. The top half of this View contains the following elements:\par
- \vspace{0.5em}
- \begin{itemize}
- \item Username: a text field for the User’s username
- \item Password: a text field for the User’s password
- \item Forgot Password: a button that will allow the user to reset a forgotten login credential through the main website
- \item Log In: a button that will submit the login form for validation
- \end{itemize}
- \vspace{0.5em}
- The User may enter his/her username and password in the corresponding fields and press enter, or the Forgot Password button may be selected which will forward the user to www.rowdyradio.org in order to reset his/her login credentials. If Forgot Password is selected, the remainder of the interactions will take place on the Rowdy Radio website. If the Log In button is selected, the entered information will be sent to the Server for validation. If the entered credentials match those on record, the App will transition to the Stream View. (\textit{see Figure \ref{fig:stream}})\par
- \noindent The bottom half of this View contains the following elements:\par
- \vspace{0.5em}
- \begin{itemize}
- \item Username: a text field for the User’s new username
- \item Password: a text field for the User’s new password
- \item Re-enter Password: a text field to verify the User’s new password
- \item Create Account: a button that will submit the new login credentials for storage
- \end{itemize}
- \vspace{0.5em}
- The User may enter a new username and password along with a verification of the same password and press Create Account. This will verify that the two aforementioned password fields match, then the App will send the new login credentials to the Server for storage. Once a new account is created, the App automatically logs in the User and the App changes to the Stream View.\par
- \begin{figure}[H]
- \centering
- \includegraphics[width=0.4\textwidth]{StreamView}
- \caption[Stream View]{The Main Landing Screen After the User Has Logged Into Their Account}
- \label{fig:stream}
- \end{figure}
- The main dashboard for the App shall be the Stream View. (\textit{see Figure \ref{fig:stream}}) This screen will allow the user to view and interact with currently-streaming audio and the most up-to-date news from the Rowdy Radio RSS Feed. Additionally, this screen features two navigation buttons to change the current View. This View contains the following elements:\par
- \vspace{0.5em}
- \begin{itemize}
- \item Alarms (button on top left with the clock icon): a button that will navigate the user to the Display Alarms View
- \item Logout (button on top right with the right arrow): a button that will log the user out of the App and navigate to the Log In View
- \item Rowdy Radio News: an embedded RSS Feed
- \item Stream window: a window that contains the information and album artwork of the song that is currently playing
- \item Pause Button: a button that will pause the App’s reception of the Live Stream
- \item Rate Song: a row of stars that can be used to rate the song that is currently playing
- \item Volume Controls: a menu that allows the user to mute or adjust the volume of the Stream (this is available on any screen of the app)
- \end{itemize}
- \vspace{0.5em}
- The User may scroll and select a news item from the RSS Feed which will forward the User to the full article in their web browser. The User may pause and continue the Live stream by interacting with the Pause button. \par
- \begin{figure}[H]
- \centering
- \includegraphics[width=0.4\textwidth]{VolumeControlsView}
- \caption[Volume Controls View]{The Menu That Allows the User to Adjust the Volume of the Live Stream}
- \label{fig:volume}
- \end{figure}
- The User may tap one of the stars visible below the song details in order to rate the song. If the User wishes to adjust the volume, the Volume Controls menu (\textit{see Figure \ref{fig:volume}}) may be opened from this or any other View, or the User may simply use the device’s volume control side buttons. \par
- \begin{figure}[H]
- \centering
- \includegraphics[width=0.4\textwidth]{ViewAlarmsView}
- \caption[Display Alarms View]{The Screen That Displays All Saved Alarms}
- \label{fig:dispAlarm}
- \end{figure}
- Additionally, the User may select the Logout button which will log the user out of their account and navigate back to the Log In View (\textit{see Figure \ref{fig:login}}), or the User may select the Alarms button to navigate to the Display Alarms View. (\textit{see Figure \ref{fig:dispAlarm}})\par
- After the User has selected the Alarms button, the App shall redirect to the Display Alarms View. This screen shows a list of currently saved alarms along with brief information about each alarm. This View contains the following elements:\par
- \vspace{0.5em}
- \begin{itemize}
- \item Alarms: a table that contains all of the saved alarms. Each row contains the following elements:
- \begin{itemize}
- \item Delete (button with a trash can icon): a button that will delete the alarm
- \item Edit (button with a pencil icon): a button that will edit the alarm
- \end{itemize}
- \item Add Alarm (button on bottom right with a plus sign): a button that will add a new alarm
- \item Exit (button on the top right with an ‘X’): a button that will navigate the User back to the Stream View
- \end{itemize}
- \vspace{0.5em}
- The User may select the Add Alarm button in order to add a new alarm. Doing this will navigate the User to the New Alarm View. (\textit{see Figure \ref{fig:newAlarm}}) If the User wishes to Edit a saved alarm, the Edit button may be selected which will navigate the User to the Edit Alarm View. (\textit{see Figure \ref{fig:editAlarm}}) \par
- \begin{figure}[H]
- \centering
- \includegraphics[width=0.4\textwidth]{DeleteAlarmView}
- \caption[Delete Alarm Warning box]{The Warning That Will Pop Up if the User Selects the Delete Button}
- \label{fig:delAlarm}
- \end{figure}
- Additionally, the User may select the Delete button which will cause the App to warn the User about deleting the selected alarm. (\textit{see Figure \ref{fig:delAlarm}}) If the User selects “no,” the App will resume the normal Display Alarms View. Otherwise, the App will delete the selected alarm. Finally, the User may navigate back to the main Stream View (\textit{see Figure \ref{fig:stream}}) by selecting the Exit button.\par
- \begin{figure}[H]
- \centering
- \includegraphics[width=0.4\textwidth]{EditAlarmView}
- \caption[Edit Alarm View]{The Screen That Allows the User to Edit a Saved Alarm}
- \label{fig:editAlarm}
- \end{figure}
- After the User has selected the Edit button from the Display Alarms View, the App shall display the Edit Alarm View. (\textit{see Figure \ref{fig:editAlarm}}) This screen will allow the user to view and edit the properties of a previously-saved alarm. This View contains the following elements:\par
- \vspace{0.5em}
- \begin{itemize}
- \item Hours, Minutes and Period (spinners at the top of the screen): 3 spinners that will allow the user to view and change the hour, minute and the 12-hour period (AM or PM) for the alarm
- \item Repeat: an element of the property table that will allow the user to select which days the alarm will repeat.
- \item Type: an element of the property table that will allow the user to select an alarm mode. The available options are “Sound,” “Vibrate”or “Sound and Vibrate.”
- \item Alarm Volume: a slider bar that will allow the User to view and edit the desired volume of the Alarm
- \item Snooze: a switch that will allow the User to activate or de-activate the snooze function of the alarm
- \item Alarm Name: a text field that will allow the User to view and edit the name of the alarm
- \item Save (button on top right with a floppy-disk icon): a button that will allow the user to save changes made to the alarm
- \item Exit (button on top right with an ‘X’): a button that will allow the user to exit the Edit Alarm View without saving the changes to the Alarm
- \end{itemize}
- \vspace{0.5em}
- The User may view and edit any of the aforementioned fields by either incrementing or decrementing the spinners, sliding the volume bar, typing the alarm name, or by tapping the Repeat and Type elements in order to specify the days for the alarm to repeat or the type of the alarm respectively. The last two interactions will forward the User to another View within the Edit Alarm View either to select the days (\textit{see Figure \ref{fig:days}}) or the type of the alarm. \par
- \begin{figure}
- \centering
- \includegraphics[width=0.4\textwidth]{SelectDaysView}
- \caption[Select Days Menu]{The Screen That Allows the User to Select the Days For the Alarm to Go Off}
- \label{fig:days}
- \end{figure}
- Finally, the User may select the Save button to save the changes made for the alarm, or the User may select the Exit button to proceed without saving. Both of these interactions will navigate the User back to the Display Alarms View. (\textit{see Figure \ref{fig:dispAlarm}})\par
- \begin{figure}[H]
- \centering
- \includegraphics[width=0.4\textwidth]{NewAlarmView}
- \caption[New Alarm View]{The Screen That Allows the User to Create a New Alarm}
- \label{fig:newAlarm}
- \end{figure}
- After the User has selected the Add button from the Display Alarms View, the App shall navigate the User to the New Alarm View. (\textit{see Figure \ref{fig:newAlarm}}) This screen will be identical to the Edit Alarm View with two exceptions:\par
- \vspace{0.5em}
- \begin{enumerate}
- \item The title displayed at the top of the screen will read ``Add New Alarm'' instead of ``Edit Alarm''
- \item The property table and time spinners will be prepopulated with default values instead of those from a previously saved alarm.
- \end{enumerate}
- \vspace{0.5em}
- The User may interact with this View in an identical manner as the Edit Alarm View. If the User selects the Save button, the App will save the newly created alarm on the User’s device. If the User selects the Exit button, the new alarm will be discarded. As in the Edit Alarm View, both of these interactions will navigate the User back to the Display Alarms View. (\textit{see Figure \ref{fig:dispAlarm}})
- \clearpage
- \section{Non-Functional Requirements}
- \centering
- \begin{table}[!ht]
- \begin{tabular}{|l|l||p{5 cm}|p{2 cm}|p{2 cm}|}
- \hline
- NF-ID & Name & Description & Precondition & Postcondition \\ \hline
- NF-1 & Performance & XXX & XXX & XXX \\ \hline
- NF-2 & Security & The System will require a password with a minimum length of – letters and -- numbers & XXX & XXX \\ \hline
- NF-3 & Platform & The system is an Android Application & XX & XX \\ \hline
- NF-4 & Memory & The app would use – space on the device, the app will not store any songs device. Only thing stored on the device is the information the App gathers in the case that there is no internet connection. & XX & XX \\ \hline
- NF-5 & Interface & The System would need to interact with the Rowdy Radio Server to receive the Stream, as well as the Newsfeed & XX & XX \\ \hline
- NF-6 & Documentation & The System will have detailed Installation, and Testing documentation. & XX & XX \\ \hline
- NF-7 & Accessibility & The App is able to read in the stream, and news feed at any time. & XX & XX \\ \hline
- NF-8 & Operational & Technical /System administrators will handle and operate the system. & xx & xx \\ \hline
- NF-9 & Maintainability & XX & XX & XX \\ \hline
- NF-10 & Packaging & Any user can follow the installation instructions to install the app on their android device. & XX & XX \\ \hline
- NF-11 & Usability & The app has an easy to understand interface. & XX & XX \\ \hline
- NF-12 & Scalability & The System should be scalable to support 1000 active concurrent users. & XX & XX \\ \hline
- NF-13 & Backup \& Recovery & XX & XX & XX \\
- \hline
- \end{tabular}
- \caption{Non-Functional Requirements}
- \label{tab:testtab1}
- \end{table}
- \chapter{Appendix}
- \section{Stakeholder Meeting Minutes}
- Meeting was held on Monday March 21, 2016 at 12:00 and lasted 24 minutes.
- All group members were present for the Stakeholder meeting.\par
- \vspace{0.5em}
- \noindent Stakeholder - John Heaps
- \subsection*{Question 1.}
- Pertaining to the stream, is the app sort of like (A) Pandora, where there radio stations are created and music plays according to what is available on the Pandora catalog, or is it like (B), Spotify, where the user can search for music and create playlists, listen to new albums or © is it just for listening to the UTSA radio.\par
- \vspace{1em}
- John - We are just going to assume it will be an app streaming one channel only, which will be the rowdy station.\par
- \vspace{1.5em}
- \subsection*{Question 2.}
- For the app news feed, the specifications say that the news feed will have 3 major topics: music related topics, information about the organization and info about local concerts and giveaways. The question is, does the customer want an assorted news feed where all three topics are intertwined, or can the user can browse the three different topics within the news feed screen?\par
- \vspace{1em}
- John - RSS feed. We can embed it into the app. The choice of the newsfeed implementation can be up to us.\par
- \vspace{1.5em}
- \subsection*{Question 3:}
- Will the user have control over which song to hear? Can the user choose a genre, skip a song, create a playlist?\par
- \vspace{1em}
- John - No skipping. It’s just the stream.\par
- \vspace{1.5em}
- \subsection*{Question 4:}
- Will there be multiple stations within the rowdy radio station? Will the user be able to pick a station? If there is only one general channel, (a station), will the user only be able to mute-unmute it? Can the user access past podcasts or past radio programs? Or will it all be live?\par
- \vspace{1em}
- John - “One channel. Mock backend. Don’t worry about integrating them right now.”\par
- \vspace{1.5em}
- \subsection*{Question 5:}
- What components of the functionality of the system are already implemented? Which components need improvement and which functions need to be completely implemented?\par
- \vspace{1em}
- Securenet systems.\par
- \vspace{1.5em}
- \subsection*{Question 6.}
- If a user gives a bad rating for a song, will the radio automatically play another song? Does this action play part in the radio’s algorithm? It's just for analytics. For the backend only. \par
- \vspace{1em}
- John - The app will not do this because it’s only one stream, but rating the song helps the personnel decide not to play a song that no one likes. For example if a song gets a bad rating throughout the whole week, then the radio station might decide not to play it as much, if at all.\par
- \vspace{1em}
- You can have the option of rating the song once, and then the app will remove the option of not rating that song again, or you can design the app such that you can always rate the song, just in case you change your mind of the song has grown on you.\par
- \vspace{1.5em}
- \subsection*{Question 7.}
- The app requires an internet connection to be used. Just to be clear, this only refers to be able to access and listen to live radio. It also says that the system must store user information, such as GPS location, date and time, device id and send it to the system’s servers. It also states that when there is no connection, the information must be stored somehow. If the user has no connection, he/she won’t be able to listen to the stream. So even when there is no connection, rowdy app wants the previously mentioned information?\par
- \vspace{1em}
- John - Data to attempt to connect. The time that they opened the app, the device id, GPS? Store it somehow. JSON file, or some other place.\par
- \vspace{1.5em}
- \subsection*{Question 8.}
- Alluding to the previous question, storing date and time, GPS location and device id are important. But what about the song they were listening to? What about the user rating of the song? Should that be stored as well? Will having the date and time from the user be enough information to determine what the user was listening to?\par
- \vspace{1em}
- John - The back end would know, so it's not necessary to the song, but the rating would be the most important data to upload for UTSA radio.\par
- \vspace{1.5em}
- \subsection*{Question 9.}
- Will the app allow users to store music files for offline use? What about saving podcasts of the different radio shows? In general, what can be some of the allowed features of the offline mode of the app? \par
- \vspace{1em}
- John - It would be cool, to implement the past week’s 5 podcasts. Or link the soundcloud with the podcasts.\par
- \vspace{1em}
- Alarm would be one of them. Maybe store a temporary song, or commercial, in case there user is offline, but the app can still wake them up.\par
- \vspace{1.5em}
- \subsection*{Question 10.}
- For the news feed, how will the information be sent. Will someone post links on the news feed? Will the news feed be composed of tweets? Will the user be redirected to a rowdy radio website or blog. Basically, how will the news feed be updated, so that we may know how all the users can receive it at the same time?\par
- \vspace{1em}
- John - Social media? Low level social media. Admin would push that. The rowdy radio has its own RSS feed. We can take advantage of that.\par
- \section{Daily Stand up Meetings}
- \subsection {Monday, April 25, 5:00 pm}
- \begin{flushleft}
- In Attendance: Ryan Z., Zach R., Lymari M. \& Francisco P.
- Topics Discussed:
- \begin{itemize}
- \item Work distribution for the Software Engineering Project 2 prototype.
- \item SRS Document
- \item Program Source code.
- \item Who is the APO and Scrum Master
- \end{itemize}
- Distribution of Responsibilities: \\
- \begin{itemize}
- \item Lymari - Putting together the SRS Document, preparing to present as the Scrum Master.
- \item Zach - will work on the Android Source Code. Specifically implementing the alarm views.
- \item Francisco - Will work on putting the Live Demo Presentation slides and \\ the Non-functional requirements.
- \item Ryan - Will work on setting up Android Studio and working on getting the Server up and running.
- \end{itemize}
- \end{flushleft}
- \subsection{Friday, April 29, 5:00 pm}
- \begin{flushleft}
- In Attendance: Ryan Z., Zach R., Lymari M. \& Francisco P.
- Topics Discussed:
- \begin{itemize}
- \item We discussed each other's progress and roadblocks.
- \item Things still left to do: Set up the server for the log in.
- \item Finish the non-functional requirements list
- \item Finish the alarm feature for the prototype.
- \item Finish the log in interface.
- \item Ryan was working on a service interface for calling the web services for the radio stream.
- \end{itemize}
- \end{flushleft}
- \subsection{Sunday, May 1, 5:00 pm}
- \begin{flushleft}
- In Attendance: Ryan Z., Zach R., Lymari M. \& Francisco P.
- Topics Discussed:
- \begin{itemize}
- \item Deciding the architecture of the software prototype.
- \item MVC and Client Server architecture was decided upon
- \item Ryan is still working on setting up web services.
- \item Zach is working on the alarms view and functionality.
- \item Francisco added more things to the presentation slides and finished the non-functional requirements.
- \end{itemize}
- \end{flushleft}
- \subsection{Monday, May 2, 5:00 pm}
- \begin{flushleft}
- In Attendance: Ryan Z., Zach R., Lymari M. \& Francisco P.
- Topics Discussed:
- \begin{itemize}
- \item First Item
- \end{itemize}
- \end{flushleft}
- \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement