Analysis Document
Table of Contents
1. Introduction
1.1 Project Overview
MuSpace is a music-based social media platform focused on connecting music fans with one another and allowing them to share their tastes with the world. Each MuSpace user will be provided with a personal feed to post about songs, albums, artists, and playlists that they are interested in. Users will be able to add friends on MuSpace who they can chat with, and look at their detailed Spotify listening history. Users will also be able to view detailed statistics about their own listening habits, such as listening time, favourite artists, and more.
2. Object Classification
2.1 Object Diagram
2.2 Entity Objects
-
User (Object) - A person using/interacting with MuSpace
- User ID (unique Long, private) - A unique ID is given to every single User object.
- First Name - (String, private) - The User’s First Name.
- Last Name - (String, private) - The User’s last name.
- Username (String, private) - The User’s account name.
- Password (Hash) - The password to a User’s account.
- Date of Birth (Long, private) - The User’s date of birth.
- Email (String, private) - The User’s email address.
- List of Statistic ID (List of unique Longs, private) - a reference to the User’s Statistic object - every User has one statistic object.
- List of Feed ID (List of unique Longs, private) - a reference to the User’s Feed object - every User has one statistic object.
- List of Chat ID (List of unique Longs, private) - a reference to the Chat ID’s for the User Object.
- List of Friend ID (List of unique Longs, private) - a reference to the Friend ID’s for the User object.
-
Feed (Object) - Collection of posts created by a User
- Feed ID (Long, private) - A unique ID is given to every single feed.
- Posts (Object, public)
- Post ID (unique Long, private) - A unique ID is given to every single post.
- Text (String) - The contents of the post
- Spotify URL (String)- a link to the song, album, or artist attached to the post.
-
Statistic (Object) - Collection of specific user statistics (e.g listening time, top album/artist)
- Statistic ID (unique Long, private) - A unique ID is given to every single statistics object.
- Listening Time (float [seconds], public) - total listening time for songs, artists, albums, stored in seconds (float) and converted into minutes and hours.
- Top Artist (String, Public) - top artist the user listens to (artist with most listening time).
- Friend (Object(s)) - A User connecting with other Users.
-
Chat (Object) - Chat information and history between two users
- Chat ID - A unique ID is given to every single chat object.
- Messages (List of Message-IDs, private) - Written communication sent to or left for a recipient who cannot be contacted directly.
-
Message (Object) - A message sent from one user to another.
- Message-ID (unique Long, private) - A unique ID is given to every single Message object.
- Author ID (unique Long, private) - User ID of User who authored the message.
- Timestamp
- Text (String) - The contents of the message.
-
Friend (Object) - A friend that the user has been added / accepted
- Friend ID (unique Long, private) - User ID of Friend.
- Message - Written communication sent to or left for a recipient who cannot be contacted directly.
- Content (String) - String of characters
-
Notification (Object) - a message sent by the application to a user when the application is not open.
- Notification ID (unique Long, private)
- Message - Written communication sent to or left for a recipient who cannot be contacted directly.
- Content (String) - String of characters
2.3 Boundary Objects
- LoginView - Where a User goes to log in.
-
RegisterView - Where a User goes to sign up.
- LinkSpotifyView - Where a User goes to link Spotify with their account.
-
HomeView - Where a user goes to see highlights of recent Feed posts, their most active Friend’s Statistics, and the current most popular Song
- StatsView - Where a User’s Statistics of their Listening history on Spotify are displayed such as favourite Artist and Song, as well as, Statistics for their most active Friend.
- ChatView - Where a User can send/receive messages to their Friends on the platform.
-
FriendsPageView - Where a User goes to see their friends.
- FriendsListView - Where a User views a list of all their Friends
- AddFriendsView - Where a User can see to search for Friends.
-
ProfileView - Where a User can view another User’s music preferences and Feed. If a User is looking at their own Profile they can add a new Post to their Feed.
- FeedView - Where a User can look at the Statistics of their Music history
- AddPostView - Where a User can add a new post to their FeedPage consisting of a message and exactly one Spotify song, album, or artist.
- SearchBarView - Where a User searches for other User by username.
- SettingsPageView - Where a User can view and edit their user profile information such as display picture, email, password, and full name.
2.4 Control Objects
- Login Controllers
- AuthenticateUserController - Coordinates the flag to view protected pages that require a logged-in User.
- Registration Controllers
- RegisterUserController – Coordinates the registration of a new User to the site.
- SpotifyConnectionController - Coordinates the connection of a new User account to a Spotify account.
- Home Page Controllers
- DisplayProfileStatsController - Coordinates the User-specific data that is shown on the home page.
- DisplayFriendListeningActivityController - Coordinates the music that the User’s friends are currently listening to.
- DisplayFriendMusicDataController - Coordinates music data related to the User’s friends.
- Friends Controllers
- DisplayFriendListController - Coordinates the list of friends that is displayed to the User.
- DisplayFriendMusicDataController - Coordinates music data related to the User’s friends.
- DisplayFriendListeningActivityController - Coordinates the music that the User’s friends are currently listening to.
- Chat Page Controllers
- DisplayRecentMessagesController - Coordinates the list of recently messaged friends from the User to be displayed.
- DisplayMessageRetreivalController - Coordinates the retrieval of the list of all messages sent and received from a specific User.
- SendMessageController - Coordinates the sending of a message to another User.
- ReceiveMessageController - Coordinates the receiving of a message from another User.
- NewMessageController - Coordinates starting a new chat with another User.
- Settings Page Controllers
- EditUserController - Coordinates changing and deletion of User data, like the Username, email, password, and date of birth.
- DisplayUserController - Coordinates the display of User data.
- Profile Page Controllers
- FeedPageController - Coordinates the User’s FeedPage and what posts are displayed on the page.
- AddNewPostController - Coordinates the addition of a new post to the User’s FeedPage.
- SearchController - Coordinates all the search tasks.
3. Further Steps
3.1 State Diagram
4. Non Functional Attributes
Performance and compatibility. Which hardware, operating systems, browsers, and their versions does the software run on? Does it conflict with other applications and processes within these environments?
MuSpace will be accessible on any device with a modern web browser such as Google Chrome or Firefox as long as the user has a Spotify account and an internet connection to utilize the app. It will also be available on iOS and Android mobile devices in the near future.
Security. How are the system and its data protected against attacks?
All data will be securely transferred from a client to the server with Google Firebase’s implementation of data privacy and security. All endpoints used on Firebase are secured through Google’s servers. See
here
for more information on how Google Firebase uses security.
Localization. Does the system match local specifics?
This attribute defines how well a system or its element falls in line with the context of the local market-to-be. The context includes local languages, laws, currencies, cultures, spellings, and other aspects. The more a product sticks with it, the more success it should have with a particular target audience.
The date format must be as follows: day.month.year
Usability. How easy is it for a customer to use the system?
Usability of the app is straightforward, the app is laid out in such a way that any user can understand what is happening. Each button goes to the titled page, making the learning curve small, if not non-existent.
5. Data Dictionary
6. Classes
This is an ongoing diagram that is being continuously updated.
7. Extra Details
Version History:
- Version 0.1.0 [Sections 1-3] Preliminary Document
- June 8th
- Members - All members
- Version 0.1.1 [Polishing Sections 1-3]
- June 10th
- Members - All members
- Version 1.0.0 [Adding 4-7, Finalizing and Publishing]
- June 24th
- Members - All members
- Version 1.0.1 [Editing 4-7, Reviewing Feedback and Finalizing]
- July 27th
- Members - All members
- Version 1.1.0 [Sections 1-7, Update to Reflect Changes Made]
- July 30th
- Members - Jagveer, Jiten
Authored By:
- Ali, Farzan
- Alting-Mees, Adrian
- Aylani, Jiten
- Goldman, Jacob
- Hollingworth, Declan
- Kellner, Kelvin
- Maan, Gur Armaan
- Manimaran, Mathu
- Mazza, Robert
- Olowonefa, Peju
- Rao, Nausher
- Sangha, Jagveer
- Tewari, Nish
- Yasin, Daner