Skip to content

Latest commit

 

History

History
289 lines (210 loc) · 30.6 KB

er.md

File metadata and controls

289 lines (210 loc) · 30.6 KB

ER: Requirements Specification Component

A1: Tu-Do

Motivation and Context

As college students, we have to deal with various teams and work in different group projects along the semester. The due dates get overwhelming and a good planning of these projects is essential for a good semester. For that reason, we decided to create Tu-Do. A web based information system where one could centralize and manage all their personal or team projects and communicate with their teams! Having access to a lot of features for the better organisation and division of work.

Goals and Objectives

The main goal of Tu-Do is to give people a convenient way for managing projects, either working by themselves or with a team. From simple tasks like organizing house chores to complex ones like managing software development in a huge company, Tu-Do aims to provide a complete, yet easy and interactive environment to do so.

Features

After setting up an account, either by your own initiative or by receiving an email invitation, Tu-Do allows its users to create new projects or to be invitied by someone else to an existing one. Once he is part of a project, the user will be able to access its boards, where he and his team (if there is one) share an intuitive interface for creating, managing and assigning tasks. This way the whole squad can easily keep track of what needs to be done, who should do it, along with other details, as well as seeing their progress by marking tasks as completed.
Since communication is essential to a project's success, we offer all members of a project a simple way to view information about the elements of his team, including their contacts, so the team can always stay in touch.
To keep the workflow in order, every team will have a coordinator responsible for inviting and removing members, assigning members to tasks, managing every detail about the project and its tasks and might even choose to step down and appoint a more capable coordinator.
Tu-Do helps its users stay organized by keeping all their projects easily accessable in their profile and allows them to mark them as favorite so they can stay focused on whats more important. It also provides a powerful search feature so our users can find any information they might be looking for.
Finally, Tu-Do is very keen on having a welcoming and clean platform, so our administrators are able to browse every project and view their details, to ensure nothing sketchy is going on, and will terminate user accounts that are disrespectul or offensive.

Access Groups

Tu-Do has 5 main types of users: Guest users, which have not authenticated themselves into the system will only have a very basic access to the platform. Once they register an account and log in, they become Authenticated Users. This type of user unlocks the ability to take part in projects and will have a profile of his own. When an user becomes part of a project they are called Collaborators, unlocking all the helpful project and task management features that Tu-Do provides. Every project will have a special type of Collaborator called the Coordinator. The Coordinator's job is, well, to coordinate! He is responsible for managing the project, its tasks, and its collaborators. Finally, there is a special type of account responsible for moderating the platform: the Administrator. The role is only given to a few trustworthy individuals and they are trusted to keep the platform as friendly as possible.

2. A2: Actors and User stories

Below, are presented user stories and the actors' specification. It is the project's requirements agile documentation that will help us in the developement of this project.

2.1 Actors

Actors diagram

Figure 1: Tu-Do actors.

Identifier Description
User Basic user with very minimal access.
Guest An unauthenticated user that can log-in if he already has an account, or register a new one.
Authenticated User A logged-in user that is able to create new projects and accept invites to existing ones.
Collaborator An authenticated user that is part of a project. He is able to view the details of the project and be assigned tasks. His permissions within a project may vary.
Coordinator An authenticated user that has the most permissions within a project. He can manage everything related to the project and give permissions to other collaborators. May also choose to appoint a new coordinator.
Administrator A special type of account that is responsible for moderating the platform. He is able to terminate user accounts and projects.
Sign-In API External Google API that allows registering or logging in to the system.

Table 1: Tu-Do actors description.

2.2 User Stories

2.2.1 Guest

IdentifierNamePriorityDescription
US01 Sign-in high As a Guest, I want to authenticate into the system, so that I can access privileged information.
US02 Guest Sign-up high As a Guest, I want to register myself into the system, so that I can authenticate myself into the system.
US03 Recover Passwordmedium As a Guest, I want to recover my password, so that if it happens that I forget it I can still have access to the app.
US04 Sign-in with Googlelow As a Guest, I want to sign-in through my Google account, so that I can authenticate myself into the system.
US05 Sign-up with Googlelow As a Guest, I want to register a new account linked to my Google account, so that I do not need to create a whole new account to use the platform.

Table 1: Guest user stories

2.2.2 User

IdentifierNamePriorityDescription
US06 See Home high As an User, I want to access the home page, so that I can see a brief presentation of the website.
US07 Search (full text and exact match) high As an User, I want to search the platform keywords, so that I can quickly find users and/or projects that I am looking for.
US08 See About Us medium As an User, I want to access the about page, so that I can see a complete description of the website and its creators.
US09 See Main Features medium As an User, I want to have access to a page that lists the main features of the product, so that I know what use it can have for me.
US10 Accept Email Invitation medium As an User, I want to accept email invitations to projects, so that, if I accept, other users can add me to their projects as a collaborator.
US11 Search Filters medium As an User, I want to have the ability to filter the contents that I see (by category, etc.),so that I can find the content easily.
US12 See Contacts medium As an User, I want to see the Contact Us page, so that I can know how to reach out to the owners of the website and its creators.
US13 Change to dark/light mode medium As an User, I want to be able to switch between dark and light mode, so that I can better adapt the website to my preferences.
US14 Placeholders in Form Inputs medium As an User, I want placeholders in my form inputs, so that some information might already be filled out by default.
US15 Contextual Error Messages medium As an User, I want to see error messages, so that when something goes wrong I can get more details on what happened.
US16 Contextual Help medium As an User, I want to see help messages, so that I can have guidance on some features.
US17 Sort low As an User, I want to have the ability to sort search results, so that I can find content easily.
US18 See FAQ low As an User, I want to see the FAQ page, so that I can get answers to common questions that I might have.

Table 2: User user stories

2.2.3 Authenticated User

IdentifierNamePriorityDescription
US19 Project Creation high As an Authenticated User, I want to be able to create a project, so that I can define tasks needed to accomplish it and centralize them.
US20 Logout high As an Authenticated User, I want to Logout of the system, so that my session terminates, and no one can have access to It during my absence.
US21 View my projects high As an Authenticated User, I want to view all my projects, so that I can have an overview and select one of them.
US22 View profile high As an Authenticated User, I want to view my profile, so that I can see my profile details.
US23 Edit profile high As an Authenticated User, I want to edit my user profile, so that I can change my details as I desire or update them.
US24 Delete Account medium As an Authenticated User, I want to delete my account, so that my account abandons the system.
US25 Support Profile Picture medium As an Authenticated User, I want to have the ability to change my profile picture, so that people that I am in a team with can recognize my face.
US26 Favorite Projects medium As an Authenticated User, I want to favorite certain projects, so that I can have faster access to them.
US27 Project Invitation managing low As an Authenticated User, I want to manage my project invitations, so that I can accept/reject invitations according to my preferences.

Table 3: Authenticated User user stories

2.2.4 Collaborator

IdentifierNamePriorityDescription
US28 Task Creation high As a Collaborator, I want to be able to create tasks, so that I can contribute to the organization of the project.
US29 Task Management high As a Collaborator, I want to be able to manage tasks and change some aspects like their priority, due date and other labels, so that I can better organize them.
US30 View Task Details high As a Collaborator, I want to be able to view the details of each task, so that I can have access to details such as due time, priority, etc.
US31 Task Completion high As a Collaborator, I want to be able to mark an assigned task as completed, so that it's known that it is already done.
US32 Search Tasks high As a Collaborator, I want to have the ability to search tasks so that I can quickly find tasks by their name, labels, due date or members assigned.
US33 Task Deletion medium As a Collaborator, I want to be able to delete tasks that I created, so that I can focus on the most important tasks.
US34 Comment on a task medium As a Collaborator, I want to be able to comment on tasks, so that I can expose its progress and share useful information about it.
US35 Assign users to task medium As a Collaborator, I want to have the ability to assign users to a task, so that everyone knows what it's their responsibility.
US36 View Board Columns medium As a Collaborator, I want to view the columns on each board, so that I can better locate taks by their category (column).
US37 Change tasks' column medium As a Collaborator, I want to move a task to any existing column, so that I can make sure that the tasks are always in their most adequate category.
US38 Notification on Coordinator change medium As a Collaborator, I want to be notified when the Coordinator of the project changes, so that I can always be aware of who is currently the head of the project.
US39 Notification on task assignment medium As a Collaborator, I want to be notified when I am assigned to a task, so that I can immediately know when I have been delegated some work.
US40 Notification on task completion medium As a Collaborator, I want to be notified when a task I was assigned to is completed, so that I know that I no longer need to work in that task.
US41 Leave Project medium As a Collaborator, I want to be able to exit the project, so that I can better organize my chores excluding projects that I am no longer participating in.
US42 View Team Members Profile medium As a Collaborator, I want to be able to view the team members' profiles, so that I can have access to information such as their contacts and therefore easily contact them.
US43 View Project Team medium As a Collaborator, I want to be able to see the team on a project I am enrolled in, so that I can find their contacts and contact them.
US44 Post Messages to Project Forum low As a Collaborator, I want to be able to post messages in the project forum, so that I can communicate my progress as well as share issues found and help others.
US45 Browse the Project Message Forum low As a Collaborator, I want to be able to browse messages on the project forum, so that I can find them easily.
US46 View Project Timeline low As a Collaborator, I want to see the project timeline, so that I can see the due dates and better organize my time.
US47 Edit Post low As a Collaborator, I want to have the ability to edit a post I created, so that I can update it or fix typos.
US48 Delete Post low As a Collaborator, I want to be able to delete a post I created so that I can delete something that is no longer relevant.
US49 View Board low As a Collaborator, I want to be able to view the different boards in a project I am in, so that the tasks in the project can be better organized.
US50 View Project Details low As a Collaborator, I want to be able to view the details of the project I'm in, so that I can have access to details such as the current project coordinators/collaborator, project description and others.

Table 4: Collaborator user stories

2.2.5 Coordinator

IdentifierNamePriorityDescription
US51 Add Users to Project high As a Coordinator, I want to be able to add users to my project, so that they become collaborators.
US52 Assign a new Coordinator medium As a Coordinator, I want to be able to assign a project collaborator as coordinator, so that I can give my role to someone who is better suited.
US53 Edit Project Details medium As a Coordinator, I want to be able to edit project details, so that I can change previously defined aspects of the project.
US54 Assign Tasks to Collaborators medium As a Coordinator, I want to assign tasks to members, so that members know what tasks are their responsibility to complete.
US55 Remove Collaborators medium As a Coordinator, I want to be able to remove Coordinators, so that I can remove someone who is no longer part of the project.
US56 Archive Projects medium As a Coordinator, I want to archive projects, so that I can discard/abandon certain projects.
US57 Notification on accepted invitation medium As a Coordinator, I want to be notified when someone accepts an invitation to join the project, so that I can immediately be aware of new Collaborators.
US58 Notification on task completion medium As a Coordinator, I want to be notified when a task is completed, so that I can always be aware of the progress of my team.
US59 Add/create new Board columns medium As a Coordinator, I want to be able to add new columns to the board, so that other members can use them to organize tasks.
US60 Set completed tasks column medium As a Coordinator, I want to set a column to be the column for completed tasks, so that the team can easily keep track of all completed tasks.
US61 Manage Collaborators' permissions lowAs a Coordinator, I want to manage Collaborators' permissions, so that Collaborators acquire/lose certain controls, according to their role in the project.
US62 Invite to Project via email low As a Coordinator, I want to invite users to projects via email, so that I can send invites in an way that might be more convenient.
US63 Create Board low As a Coordinator, I want to be able to create boards with different departments, so that the project can be better organized.
US64 Create new roleslow As a Coordinator, I want to create new roles with some set permissions, so that I can divide the Collaborators into different groups according to their role within the project.
US65 Atribute roleslow As a Coordinator, I want to atribute roles to Collaborators, so that they are given permissions according to their role in the project.

Table 5: Coordinator user stories

2.2.6 Administrator

IdentifierNamePriorityDescription
US66 Administer User Accounts high As an Administrator, I want to be able to create/edit/view and search user accounts, so that I can control/change all user accounts.
US67 Delete user account medium As an Administrator, I want to delete a user from the system, so that his account no longer exists in the system.
US68 Block/Unblock user accounts medium As an Administrator, I want to block/unblock a user from the system, so that I can control if the user can no longer access restricted contents of the site.
US69 Browse projects medium As an Administrator, I want to browse all projects, so that I can access any project.
US70 View project details medium As an Administrator, I want to view the details of any project, so I can better moderate the platform.
US71 Remove comments low As an Administrator, I want to remove a comment, so that I can remove inappropriate content.
US72 Unfreeze projects low As an Administrator, I want to be able to unfreeze a project, so that if its Coordinator deleted his account, his project can be recovered.
US73 Accept user low As an Administrator, I want to accept the registration of a new system user, so that he can access restricted content.

Table 6: Administrator user stories

2.3 Supplementary Requirements

This section contains business rules, technical requirements and restrictions on the project.

2.3.1 Business rules

Identifier Name Description
BR01 Deleted Account The system shouldn’t delete all of a user’s information, it should anonymously keep its participation (comments,posts,tasks done) in shared projects.
BR02 Deleted Coordinator If a project's Coordinator deletes his account without first setting a new Coordinator, his projects will become frozen, instead of being deleted.
BR03 Administrator accounts Administrator accounts are independent of the user accounts. They cannot create or participate in projects.
BR04 Notifiable Tasks Tasks with a label from the notifiable category should send a notification/email some time before that tasks’ due date
BR05 Self commenting It is allowed for a Collaborator to comment on tasks created by him.

Table 8: Tu-Do business rules

2.3.2 Technical requirements

Identifier Name Description
TR01 Customizability It is of the utmost importance that our users can customize the system to their needs.
The system is meant to be used by a wide range of people, from just an individual making his grocery list to a large company with dozens of projects and hundreds of employees.
TR02 Web Application The system should be implemented as a web application with dynamic pages (HTML5, JavaScript, CSS3 and PHP).
Due to all the possible different technological backgrounds of our users, our system should be easy to get started with, without the need for installing specific software or specialized hardware. (Low entry barrier)
TR03 Security The system must protect information from unauthorized access through the use of an authentication and verification system, as well as prevent common attack vectors (XSS, Man-In-The-Middle, CSRF, etc).
Since our system may be used by companies to manage projects that they dont want to be made public, we must protect them from an attacker that might leak important information.
TR04 Availability The system downtime must not add up to more than 1 day per year
TR05 Accessibility The system must be easily accessible to everyone, independently of their web browser , device or disabilities
TR06 Scalability The system must be prepared to deal with the growth in the number of users and their actions
TR07 Robustness The system must be prepared to handle and continue operating when runtime errors occur
TR08 Ethics The system must respect the ethical principles in software development (for example, personal user details, or usage data, should not be collected nor shared without full acknowledgement and authorization from its owner)
TR09 Performance The system should have response times shorter than 2 seconds to ensure the user's attention and live feedback

Table 9: Tu-Do technical requirements

2.3.3 Restrictions

Identifier Name Description
C01 Deadline The system must be fully functional by the end of the semester
C02 Team Limit The system must be developed using only the same team of 4 software developers
C03 Technologies The developer team is restricted in the technologies they are allowed to use. They must use HTML, CSS and JavaScript as client languages, PHP for server-side programming, PostgreSQL as the DBMS, Laravel as the server framework, Docker as the virtualization environment, NGINX as the web server, and Git as the version control system

Table 10: Tu-Do technical requirements


A3: Information Architecture

This artefact contains a sitemap and some wireframes representing information about the system to be developed. The sitemap represents the main connections between the system's pages. The wireframes represent the contents and features of some of the main pages.

1. Sitemap

Sitemap presenting the overall structure of the Tu-Do's web application.
Multiple instances of the same page are presented as page stacks.

The pages presented in the sitemap are:

  • Homepage;
  • Admin Pages (pages only available to the Administrators for the system's management);
  • User Pages (pages that are only available and specific to an Authenticated User);
  • Static Pages (pages that are the same for all users no matter the context);
  • Project Pages (pages specific to the projects);
  • Authentication Pages.

Site Map

2. Wireframes

UI: Home Page

Home Page

UI: User Projects

View Projects Page

UI: Project

Project Page

UI: Board

Board Page

UI: User Profile

Profile Page

UI: Edit User Profile

Edit Profile Page

UI: Sign Up Page

Sign Up Page

UI: Log In Page

Log In Page


Revision history

Changes made to the first submission:

  1. Item 1
  2. ...

GROUP2215, 04/10/2022