Software Design

Version 3.0


Table of Contents




List of Tables


Section 1

Section 9

Section 10


1. Introduction

This section provides an overview of the StudySpace Software Design Document.

1.1 Purpose

1.2. Audience

The primary intended audience of this document is current and future developers tasked with the creating, testing, and maintenance of the StudySpace web application.

The secondary intended audience of this document is the project client, Mr. David Brown.

1.3. Scope

1.3.1 Software Requirements



1.4. Feature Ranking

1.4.1 Must Haves

1.4.2 Nice-to-Haves


1.5. Development Milestones



1.6. Definitions



1.7. Reference Materials



2. System Overview

StudySpace is a web application that provides students a digital space to interact with other like-minded students.

2.1. Brief Description

At the highest level, the StudySpace web application is organized into key system functionalities, key system components, and key UI components.

2.2. Key System Components

2.3. Key System Functionalities

2.4. Key UI Components



3. Design Considerations



4. Architectural Strategies

4.1. Communication Mechanisms

The front-end and back-end of the application will communicate via RESTful API calls.

4.2. Technology Specifications


4.2.1. Back-end



4.2.2. Front-end




4.2.4. Miscellaneous



4.3. Front-end Goals

4.4. Back-end Goals

4.5. Future Plans

The StudySpace web application developed for the project client is meant to be a proof-of-concept (see: Definitions) to demonstrate the team’s understanding of various software design principles and workflows.

4.6. User Interface Paradigms

ReactJS

The main utility comes from easily creating reusable UI components. Each React component has its own system, state, and life cycles.

React aids the front-end developers in creating key reusable components such as the Search Bar and the User Matches Container.

React Redux

This library allows React components to read data from a global 'store' and allows components to dispatch actions to that store to update the state data.

4.7. External Database Management and Persistence

The use of Heroku as the primary platform for deployment will resolve the problem of database persistence. Every time a new user joins the StudySpace web application, the database is updated and re-deployed to Heroku.



Design Decisions, Policies, and Tactics

5.1. Deployment

The StudySpace website will be deployed using vercel, and will be coded in Javascript, HTML, CSS, PostCSS, and Tailwind. Backend is in Python/Django and the database will be done using sqlite.

5.2. Data Storage

Database will be on a server hosted by the StudySpace team

5.3. Coding Guidelines and Conventions

5.4. Ensuring Requirements Traceability

Requirement Traceability will be ensured using a traceability matrix

5.5. Software Testing

Software is regularly tested by the StudySpace team after every update

Github used for version control and postman used to test API endpoints. White box testing handled by the StudySpace team until April 12, 2021.

5.6. Software Maintenance

Software is maintained by the StudySpace team until April 12, 2021.

5.7. File Structure Organization



6. System Architecture

6.1. System Architecture Description


6.2. System Architecture Diagram



7. Architectural and Component-level Design

7.1. Class Diagram



7.1.1. Main Class


7.1.2. User Class


7.1.3. Moderator Class


7.1.4. Administrator Class


7.1.5. Friend Class


7.1.6. Group Class


7.1.7. Page Class


7.1.8. Desk Class


7.1.9. Post Class


7.1.10. Events Class


7.1.11. Chat Class



8. Data Design

8.1. Data Structures

8.1.1. Global Data Structure

The database will be used globally to retrieve information regarding many components of StudySpace. Each table in the database has its own respective class. The classes representing the data from the database will also be used globally.

8.1.2. Temporary Data Structure

Data structures for and regarding the DESK feature will be all temporary. Since each DESK instance is only temporary; the data structures related to the DESK feature will also be temporary. As soon as people stop using the DESK, every file/data structure will be deleted.

8.1.3. Database Description

For the database, we start with the user’s general information and assign the user a unique ID. With a user’s ID we will be able to link the user’s friends, preferences, groups the user is part of to the user. To keep track of a user’s private messages with other users, we would also need a table keeping track of messages between any given two users. A post table and a response table would be able to keep track of posts made by a group as well as the comments made on the post.

8.2. Database Diagram



8.3. Database Tables

8.3.1.


8.3.2.


8.3.3.


8.3.4.


8.3.5.


8.3.6.


8.3.7.




9. User Interface Design

9.1. User Interface Design

9.1.1. Color Guidelines



9.1.2. Font Guidelines

We will use default fonts as provided by Tailwind CSS. "San Fransico" and "system-ui" for OSX, "Roboto" for Windows.



9.2. User Interface Views

9.2.1. Landing Page (logged out)



9.2.2. Sign Up View



9.2.3. Home Page (logged in)



9.2.4. Groups Home Page



9.2.5. Desk View



9.2.6. Posts View



9.2.7. User Profile Page



9.2.8. Profile Page (another user)



9.2.9. User Match View




10. Data Dictionary




Version History

Version 1.0 - March 6th, 2021

Design document outline created by:

Initial Design document authored by:

First round of SQA conducted by:


Version 2.0 - March 21st, 2021

Adjustments:

Second round of SQA conducted by: (roles switched this time)


Version 3.0 - March 24th, 2021

Final edits:

Document reformatted and converted to HTML by Rohan Uddin.