Y3S1-LabDBWeb

ER: Requirements Specification Component

A1: OnlyFEUP

The main goal of the OnlyFEUP project is the development of a web-based social network with the purpose of creating connections between students and staff, sharing resources about courses and subjects. This is a tool that can be used by anyone from FEUP. After signing up and verifying the user is related to the university (students/teachers), they can start using it for a better experience at FEUP.

A team of administrators is defined, which will be responsible for managing the system, ensuring it runs smoothly, removing illegal content and material in which they are not the author or have permission to share.

This application allows users to integrate into groups and follow students/teachers whom they find their work interesting, they can also create groups if none was found. Users will be able to more easily share resources with people who are actually interested (their followers).

Users are separated into groups with different permissions. These groups include the above-mentioned administrators, with access and modification privileges, student users and teacher (FEUP staff) users.

The platform will have an adaptive design, allowing users to have a pleasant browsing experience. The product will also provide easy navigation and an excellent overall user experience.

To facilitate the lives of people related to feup by showing relevant information by allowing them to follow and block content, instead of the actual model of e-mail, which are sent to everyone (even people completely unrelated to the matter). Follow that to allow users to more easily connect with/find students, teachers, groups they are part in, etc.

Main features

A2: Actors and User stories

Actors and user stories contain specifications about the people that are going to use OnlyFeup in any way and how they are going to use it. It serves as a simple and fast documentation to the projectś requirements.

2.1 Actors

For the OnlyFEUP system, the actors are represented in Figure 1 and described in Table 1.

Actors

Figure 1: OnlyFEUP actors | Identifier | Description | |————|————-| | User | Generic user that has access to public information | | Visitor | Unauthenticated user that can register itself (sign-up) or sign-in in the system and view the public feed | | Authenticated | Authenticated users that can consult information, insert works, items and ideas, comment on another person’s work and manage and chat in your groups. | | Group Owner | Users that created or have permissions to edit the group name, description, group’s visibility, add/remove participants, edit participants permissions (member to owner or vice-versa). | | Group Member | Users that can participate, chat and socialize in a community/group but don’t have the permissions of an owner | | Post Author | Users that can edit or delete their own post | | Comment Author | Users that can comment on someone’s or on their own posts | | Administrator | Administrator have the power to remove posts (to remove offensive posts) and block/unblock people |

Table 1: OnlyFEUP actors description

2.2 User Stories

For the OnlyFEUP system, consider the user stories that are presented in the following sections.

2.2.1 User

**Identifier** **Name** **Priority** **Description**
US01 See Home Page high As a User, I want to see the Home Page so that I can start navigating the site.
US02 View Public Timeline high As a User, I want to be able to view the Public Timeline so that I can keep up with what’s happening.
US03 View Public Profiles high As a User, I want to be able to view public profiles so that I can see their posts and information.
US04 Search Public Users high As a User, I want to be able search for public users so that I can view their profiles.
US05 See About Us medium As a User, I want an ‘About Us’ section so that I can find out more about OnlyFEUP’s creators.
US06 Consult FAQ / Help / Contacts medium As a User, I want a ‘FAQ / Help’ section so that I can find a solution to a problem
US07 See Main Features medium As a User, I want a ‘Main Features’ section, so that I can find what can I expect from OnlyFEUP

Table 2: User user stories

2.2.2 Visitor

**Identifier** **Name** **Priority** **Description**
US08 Sign-up high As a Visitor, I want to register myself into the system, so that I can authenticate myself into the system
US09 Sign-in high As a Visitor, I want to authenticate into the system, so that I can access privileged information

Table 3: Visitor user stories

2.2.3 Authenticated User

**Identifier** **Name** **Priority** **Description**
US10 Sign-out high As an Authenticated User, I want to sign out, so that I am not logged in anymore.
US11 View User Profiles high As an Authenticated User, I want to see User Profiles, so that I can see their posts
US12 View personalized timeline high As an Authenticated User, I want to view a personalized timeline, so that I can view posts that I actually have an interest in.
US13 Create Post high As an Authenticated User, I want to create posts, so that I can share information to my followers.
US14 View Own Profile medium As an Authenticated User, I want to see my profile, so that I can see what I wrote in the past
US15 Support Profile Picture medium As an Authenticated User, I want to see my profile picture, so that I can share my face.
US16 Recover Password medium As an Authenticated User, I want to recover my password, so that Change it in case I forget it.
US17 Delete Account medium As an Authenticated User, I want to delete my account, so that I can stop thinking about FEUP.
US18 Send Follow Request medium As an Authenticated User, I want to send follow request to a private profile, so that I can show interest in following the respective user.
US19 View profiles followed medium As an Authenticated User, I want to view profiles followed, so that I can get information and view posts about people that I follow.
US20 Search for Posts, Comments, Groups and Users medium As an Authenticated User, I want to search for stuff, so that I can find things relevant for me at a certain time.
US21 Exact Match Search medium As an Authenticated User, I want to search exactly what I am looking for, so that I can find things relevant for me at a certain time.
US22 Full-Text Search medium As an Authenticated User, I want to search in Posts and Comments texts, so that I can find things relevant for me.
US23 Search filters medium As a user, I want to be able to filter the search results so that I can find what I want more efficiently
US24 Search over Multiple Attributes medium As a user, I want to be able to search over text attributes, like name or username, description or title, so that I can find relevant data more efficiently.
US25 Follow someone medium As an Authenticated User, I want to follow someone with a public profile, so that I can start viewing their posts in my feed.
US26 Manage Received Follow Requests medium As an Authenticated User, I want to manage received follow requests, so that I can control who can follow me or not.
US27 Manage Followers medium As an Authenticated User, I want to manage followers, so that I can remove someone from following me.
US28 Comment on Posts medium As an Authenticated User, I want to comment on posts, so that I can share my point of view or pass information related to the post.
US29 React to post medium As an Authenticated User, I want to like posts, so that I can show my support of it.
US30 React to comment medium As an Authenticated User, I want to like comments, so that I can show my support of it.
US31 Create Groups medium As an Authenticated User, I want to create a group, so that I can share information about specific topics to people who are interested in it.
US32 Manage Group Invitations medium As an Authenticated User, I want to manage group invitations, so that I can control the amount of invitations that I receive about a certain topic.
US33 Edit profile medium As an Authenticated User, I want to edit my profile, so that I can change my picture, my name and/or my description.
US34 View Personal notifications medium As an Authenticated User, I want to view notifications, so that I can view who interacted (or wants to interact) with me.
US35 Placeholders in Form Inputs medium As an Authenticated User, I want to see placeholders in form inputs, so I can have help on what to write there.
US36 Contextual Error Messages medium As an Authenticated User, I want to see contextual error messages after inputs, so I can have help on what went wrong.
US37 Contextual Help medium As an Authenticated User, I want to see contextual help, so I can have help on how to perform any task.
US38 Follow Requests Notification medium As an Authenticated User, I want to receive notification when someone requests to follow me, so I keep informed about possible followers.
US39 Started Following Notification low As an Authenticated User, I want to receive notification when someone starts to follow me, so I keep informed about new followers.
US40 Accepted Follow Notification low As an Authenticated User, I want to receive notification when someone accepts my follow request, so I keep informed about users that I've been following recently
US41 Invite Group Notification low As an Authenticated User, I want to receive notification when someone invites me to join their group, so I can accept or not the invitation.
US42 Reply to Comments low As an Authenticated User, I want to reply to comments, so that I can share my point of view or pass information related to a comment.
US43 Tag Users in Posts low As an Authenticated User, I want to be able to tag users in my posts so that I can inform the viewers of the people related to the posts and their respective accounts.
US44 Post Tagging Notification low As an Authenticated User, I want to receive notification when someone tags me in their post, so I keep informed.
US45 Comment and Reply Tagging Notification low As an Authenticated User, I want to receive notification when someone tagged me in their comment or reply, so I keep informed.
US46 Join Public Group low As an Authenticated User, I want to be able to join public groups so that I can view its posts and interact with its members.
US47 Request to Join Private Group low As an Authenticated User, I want to able to request join private groups, so that I can view its posts and interact with its members
US48 Manage my notifications low As an Authenticated User, I want to be able to manage what notifications I receive, so that I am only notified for things I care about.
US49 Delete notifications low As an Authenticated User, I want to delete old notifications, so that I clear my notifications page.
US50 Hashtags low As an Authenticated User, I want to be able to create, see and search for hashtags in posts, comments or descriptions
US51 Notification context low As an Authenticated User, I want to see notification context, so that I can see post/comment/subcomment associated it
US52 Send Private Messages low As an Authenticated User, I want to send private messages to another OnlyFEUP user, so I can contact them directly.
US53 Private Messages Status low As an authenticated user, I want to see if there are any new unseen private messages so I can quickly see who has contacted me recently
US54 Send Private Media low As an Authenticated User, I want to send media (photos, videos or audios) to another OnlyFEUP user, so I can contact them directly and in private mode.

Table 4: Authenticated User user stories

2.2.4 Group Owner

**Identifier** **Name** **Priority** **Description**
US55 Edit Group Information medium As a Group Owner, I want to edit the name or the description of the group, so that the purpose of the group is well explained.
US56 Remove member medium As a Group Owner, I want to remove/ban a member of a group, so that they can no longer access the information of the group.
US57 Add to group medium As a Group Owner, I want to add someone to the group, so that they can access the group information.
US58 Remove post from group low As a Group Owner, I want to remove a post from a group, so that its information is no longer visible.
US59 Change group privacy low As a Group Owner, I want to change the group privacy, so that I can choose if the group information is public or not and who can enter in the group.
US60 Manage Group invitations low As a Group Owner, I want to manage my invitations, so that I can delete an invitation if I change my mind.
US61 Manage Join Requests low As a Group Owner, I want to manage group join requests, so that I can accept or reject possible members.
US62 Delete my group low As a Group Owner, I want to delete my group so all members can no longer access the information of the group
US63 Give Ownership low As a Group Owner, I want to give ownership of my group, so that I will be not group owner anymore
US64 Request Join Notification low As a Group Owner, I want to receive request join notifications, so that I see who wants to join in my group.
US65 Joined Notification low As a Group Owner, I want to receive join notifications, so that I see who is joining my group.
US66 Accepted Invite Notification low As a Group Owner, I want to receive accepted invite notifications, so that I see who accepts my invitation to join my group.
US67 Leave Group Notification low As a Group Owner, I want to receive leave group notifications, so that I see who leaves my group.

Table 5: Group owner user stories

2.2.5 Group Member

**Identifier** **Name** **Priority** **Description**
US68 View group members medium As a Group Member, I want to see the members of a group, so that I can see users with the same likes as me
US69 Post on group medium As a Group Member, I want to post on a group, so that all members can see or access the idea/resource that I shared.
US70 Leave group medium As a Group Member, I want to be able to leave a group, so that I no longer receive notifications from it.
US71 Favorite low As a Group Member, I want to be able to mark groups as my favorites
US72 Ban Notification low As a Group Member, I want to receive notification when I get banned from a group, so I keep informed.
US73 Ownership Notification low As a Group Member, I want to receive a notification when I become the group owner, so I can stay informed about my new group.

Table 6: Group member user stories

2.2.6 Post Author

**Identifier** **Name** **Priority** **Description**
US74 Edit post high As a Post Author, I want to edit my post, so that I can correct a mistake I made.
US75 Delete post high As a Post Author, I want to delete a post, so that I can remove something that I put by mistake.
US76 Likes on Own Post Notification medium As a Post Author, I want to receive notification when someone likes my post, so I stay informed.
US77 Comments on Own Posts Notification medium As a Post Author, I want to receive notification when someone comments on my post, so I keep informed of the user's opinions.
US78 Manage post visibility low As a Post Author, I want to manage post visibility, so that I can restrict the post visibility only to my followers.
US79 Post media low As a Post Author, I want to see my posts with media (photos, videos), so I can share them instead of text.

Table 7: Post Author user stories

2.2.7 Comment Author

**Identifier** **Name** **Priority** **Description**
US80 Edit comment medium As a Comment Author, I want to edit my comment, so that I can correct a mistake I made.
US81 Delete comment medium As a Comment Author, I want to delete my comment, so that I can remove a comment that is no longer relevant.
US82 Likes on Own Comment Notification low As a Comment Author, I want to receive notification when someone likes my comment, so I stay informed.
US83 Replies on Own Comment Notification low As a Comment Author, I want to receive notification when someone replies to my comment, so I keep informed of the user's opinions.

Table 8: Comment Author user stories

2.2.8 Administrator

**Identifier** **Name** **Priority** **Description**
US84 Special Search privileges high As an Administrator, I want to search for profiles and groups even if they are private, so that I can investigate if there is something against the guidelines.
US85 Administrator Account medium As an Administrator, I want to have an administrator account, so I can see OnlyFEUP data with privileges.
US86 Administer user accounts medium As an Administrator, I want to administer user accounts, so that I can investigate a report.
US87 Block and unblock user accounts medium As an Administrator, I want to block an user, so that I can punish them for not following the guidelines.
US88 Delete user account medium As an Administrator, I want to delete an user account, so that I can remove an user that repeatedly broke the guidelines.
US89 Delete posts and comments medium As an Administrator, I want to delete posts and comments, so that I can remove content that does not follow the guidelines.
US90 Delete groups low As an Administrator, I want to delete groups, so that I can remove content that does not follow the guidelines.

Table 9: Administrator user stories

2.3 Supplementary Requirements

2.3.1 Business rules

**Identifier** **Name** **Description**
BR01 Deleted account The history of an item must be maintained even if the item is deleted in order not to lose the loan record for all items.
BR02 Only people related to Feup Since it will only work when connected to the university’s wifi or VPN, it is already restricted to people related to FEUP.
BR03 Media types Media types needs to be as required because of the size of files itself: * Images in jpg,png,jpeg,gif * Videos in mp4 * Audios in mp3 Since they are more compact (although not lossless) and will be less taxing on the database.
BR04 Profiles Profiles can be public or private. Content of private profiles are only visible to followers or administrators.
BR05 Interact with own Posts Authenticated users can comment/like their own posts/comments.
BR06 Dates The date of each post is always less than or equal to the current date.

Table 10: OnlyFEUP Business Rules

2.3.2 Technical requirements

**Identifier** **Name** **Description**
TR01 Availability The system must be available 99 percent of the time.
**TR02** **Accessibility** **The system should work with different hardware and software, so that OnlyFEUP can be available to a plethora of users (even if the hardware/software is reasonably old).**
**TR03** **Usability** **The system should be simple and easy to use.**
TR04 Performance The system should have response times that are reasonably fast and does not handicap the users’ usability of the product.
TR05 Web application The system should be implemented HTML, CSS, javascript and PHP
TR06 Portability The server-side system should be platform independent and work with different hardware/software to accommodate eventual changes and upgrades deemed necessary.
TR07 Database The system should store data in a reliable and non-redundant database.
**TR08** **Security** **The system shall protect information from unauthorized access, ensuring that only the user itself, the people whom the user has shared the information and administration of onlyFEUP can access the data, and even so only as a necessity.**
TR09 Robustness The system must be prepared to handle errors and be able to continue working/boot itself up in case of a failure.
TR10 Scalability The system must be prepared to deal with the growth in the number of users, and the number of posts and files to be stored.
TR11 Ethics The system must respect the legislation of the places where it operates (in our case Portugal), and the system should respect the users’ preferences and privacy.

Table 11: OnlyFEUP technical requirements

Usability and accessibility were chosen as the most critical technical requirements because, since it is a social network, it needs to be simple and easy to use by any user, also because of the many users and their different equipment, software, operating system, ways of using the systems, versions of software, etc it needs to be robust to handle all of the these mentioned above.

Since the user is also going to be creating and submitting information as normal usage of the system, it is important that their information is secure from unauthorized access and in compliance with the privacy regulations.

2.3.3. Restrictions

**Identifier** **Name** **Description**
R01 Deadline The system should be ready to be used by the end of the semester
R02 Database The database should use PostgreSQL

Table 12: OnlyFEUP restrictions


A3: Information Architecture

1. Sitemap

The image below represents the pages that are going to exist in onlyFEUP and how they can be accessed or used. It is a simple design of the process of using the website.

Sitemap

Figure 2: OnlyFEUP SiteMap

2. Wireframes

The wireframes below show the template and localization of the important interactive elements. The home page is the most significant page in our system and because of it it is represented below, the next pages that required some clarification and thinking about its usability are the profile page and the groups page. As such they also have wireframes.

UI01: Home Page

HomePage

Figure 3: OnlyFEUP HomePage

  1. Dropdown menu with various options
  2. Side-bar for quick access to groups
  3. Button to reach the Groups Page
  4. Buttons to reach pages with help and information about the developers
  5. Zone to interact with Posts; owner of the post have option to edit or delete post
  6. Direct access to search feature
  7. Notifications and post buttons respectively

UI10: Profile Page

ProfilePage

Figure 4: OnlyFEUP ProfilePage

  1. Dropdown menu with various options
  2. Buttons to reach pages with help and information about the developers
  3. Zone to interact with Posts; owner of the post have option to edit or delete post
  4. Post button
  5. Side-bar with access to edit profile page and the media of the user
  6. Button to return to the previous page
  7. Access to the Followers and Following pages respectively

UI20: Groups Page

GroupsPage

Figure 5: OnlyFEUP Groups Page

  1. Dropdown menu with various options
  2. Side-bar for quick access to groups
  3. Buttons to reach pages with help and information about the developers
  4. Direct access to search feature
  5. Button to return to the previous page
  6. Direct access to the “Create new group” page
  7. Toggle between “groups I take part in” and “public groups”
  8. Direct access to the group where you can define if it is favorite or not

Revision history

Artifacts: A1

Editor: Fábio Sá

September 22:
Context of project, stakeholders, motivation
by:
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

September 25:
Main features, groups, relation between groups, goals and objectives
by:
André Costa
Lourenço Gonçalves
Marcos Ferreira Pinto

Artifacts: A2

Editor: Marcos Ferreira

September 25:
Identifying actors and their descriptions, started user stories; business rules 1,2,3
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

September 26:
Started formating tables for user stories
by:
Fábio Sá
Marcos Ferreira Pinto

September 27:
Finished user stories, business rules, technical requirements, restrictions.
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

October 02:
Text reformatting and some corrections
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

October 04:
Corrections to user stories, business rules and technical requirements
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

Artifacts: A3

Editor: Lourenço Gonçalves

September 27:
Started and finished sitemap.
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

September 29:
Corrections to sitemap. Started working on wireframes
by:
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

October 02:
Finished wireframes.
by:
André Costa
Lourenço Gonçalves
Marcos Ferreira Pinto

October 04:
Sitemap labels. Final corrections to sitemap.
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto


Group lbaw2255, 25/09/2022