Welcome to the documentation pages of the Seat Management Service of openCX!
You can find here detailed about the (sub)product, hereby mentioned as module, from a high-level vision to low-level implementation decisions, a kind of Software Development Report (see template), organized by discipline (as of RUP):
- Business modeling
- Requirements
- Architecture and Design
- Implementation
- Test
- Configuration and change management
- Project management
So far, contributions are exclusively made by the initial team, but we hope to open them to the community, in all areas and topics: requirements, technologies, development, experimentation, testing, etc.
Please contact us!
Thank you!
Inês Quarteu (up201806279)
Francisca Almeida (up201806398)
João Gonçalves (up201806796)
Nuno Resende (up201806825)
A safe, self distanced, conference seat for everyone.
Nowadays, due to COVID-19, everyone is afraid of attending conferences because we don't know who is sitting beside us. SMS has the solution for you. Our app can reserve your seat and immediately make it unavailable, alongside the seats immediatly next to yours. This way it's possible to keep a secure distance between all participants and confortably watch the session.
Login
Actor: User.
Description: This use case exists so that the user can login into their account, when they enter a correct username and password.
Preconditions and Postconditions: After doing login the user can access the account's information.
Normal Flow:
- The user enters an username and a password in the correspondent boxes.
- The user the presses the button 'Log In'.
- If the username and password are associated to an account with administration clearence, the application opens the administration area, otherwise it enters the atendee area.
Alternative Flows and Exceptions:
- The user enters an username and a password in the correspondent boxes.
- The user the presses the button 'Log In'.
- If the username and password don't match any account in the database, a message of error appears on the screen.
- The user may press the button 'Ok' and return to the login screen.
Logout
Actor: User.
Description: This use case exists so that the user can logout of their account.
Preconditions and Postconditions: After doing logout the user can no longer access the account's information.
Normal Flow:
- The user presses the perfil icon in the upper bar.
- The user presses the button 'Log Out'.
- The user returns to the login screen.
Register
Actor: Atendee.
Description: This use case exists so that the atendees can create an account with an username and a password of their choice.
Preconditions and Postconditions: To be redirected to the register page, the atendee must be logged out and in the initial screen (login) and click the phrase 'Register Here' bellow the button 'Log in'. After the atendee registers, the login is automatically done.
Normal Flow:
- If the atendee doesn't have an account, they may press the 'Register' button.
- A page will appear where the atendee inserts his account's information.
- The atendee presses the button 'Register'.
- The app redirects the atendee to their new account, and opens the folder 'All Conferences', where all events are shown.
Alternative Flows and Exceptions:
- If the atendee doesn't have an account, they may press the 'Register' button.
- A page will appear where the atendee inserts his account's information.
- The atendee presses the button 'Register'.
- If a field does not have any information, or if the password and confirm password are not the same, a message of error appears on the screen.
- The user may press the button 'Ok' and return to the register screen.
Make a Reservation
Actor: Atendee.
Description: An atendee must be able to make a reservation for a conference if there still are seats available for the session.
Preconditions and Postconditions: To be able to make a reservation, the atendee has to first select a conference and an available seat. After the reservation is made, the conference must be added in the atendee's 'My Conferences' and the seat must be shown as occupied for other users.
Normal Flow:
- The atendee must first select a conference in the folder 'All Conferences', shown as still having available seats, that is, associated to the color green.
- The atendee chooses a seat that is shown as available, also colored green.
- The atendee presses the button 'Reserve the seat'.
- The application returns to the folder "All Conferences", where the now reserved event is painted yellow.
Cancel Reservation
Actor: Atendee.
Description: An atendee must be able to cancel a reservation for a conference they had made a reservation on.
Preconditions and Postconditions: To be able to cancel a reservation, the atendee has to have made a reservation to the conference. After the reservation is cancelled, the conference must not appear in the atendee's 'My Conferences' and the seat must be shown as free for other users.
Normal Flow:
- The atendee must first select a conference in which they already have a reserved seat, that is, associated to the color yellow.
- The atendee presses the button 'Cancel the reservation'.
- The application returns to the folder "All Conferences", where the event now appears in a green background.
See conferences atendee is going to
Actor: Atendee.
Description: An atendee must be able to see all the conferences for which the have made a reservation.
Normal Flow:
- The atendee presses the folder 'My Conferences' in the bottom of the page.
- The information from all the conferences that the atendee has reserved is shown on the screen.
Alternative Flows and Exceptions:
- The atendee presses the folder 'My Conferences' in the bottom of the page.
- If the atendde does not have any reservation, the folder with be empty.
Create Conference
Actor: Administration.
Description: This use case exists so that the administration can create new conferences.
Preconditions and Postconditions: After being created, the conference must appear in the list of conferences.
Normal Flow:
- The administration presses the floating button in the bottom of the screen.
- The name, location, and both dates and hours that define the conference must be introduced.
- The administration presses the button 'Add Conference'.
- The application shows the list of conferences where the new conference is now present.
Alternative Flows and Exceptions:
- The administration presses the floating button in the bottom of the screen.
- The name, location, and both dates and hours that define the conference must be introduced.
- The administration presses the button 'Add Conference'.
- If the first date is after the second date, a message of error appears on the screen. The same will happen if nothing is introduced in the fields name and location.
- The administration must press the button 'Ok' and return to the creation of a new conference.
Delete Conference
Actor: Administration.
Description: This use case exists so that the administration can delete an already existing conference.
Preconditions and Postconditions: The conference must exist to be deleted. After being deleted, the conference should disapear from the conference list.
Normal Flow:
- The administration chooses a conference from the list presented to them.
- A page with the conferences information will appear o screen. The administration clicks the floating button in the bottom os the screen.
- The administration presses the button 'Remove Conference'.
- The application shows the list of conferences where the conference is no longer present.
Edit Conference
Actor: Administration.
Description: This use case exists so that the administration can edit the details of an already existing conference.
Preconditions and Postconditions: The conference must exist , for it to be edited. After being edited, the conference must appear in the list of conferences with the altered information.
Normal Flow:
- The administration chooses a conference from the list presented to them.
- A page with the conferences information will appear o screen. The administration clicks the floating button in the bottom os the screen.
- The name, location, and both dates and hours that define the conference may be altered.
- The administration presses the button 'Edit Conference'.
- The application shows the list of conferences where the conference is now present with the new information.
Alternative Flows and Exceptions:
- The administration presses the floating button in the bottom of the screen.
- The name, location, and both dates and hours that define the conference must be may be altered.
- The administration presses the button 'Edit Conference'.
- If the first date is after the second date defined previously, a message of error appears on the screen. The same will happen if either the field name or location is left without any information.
- The administration must press the button 'Ok' and return to the creation of a new conference.
Manage Conference Room Layout
Actor: Administration.
Description: This use case exists so that the administration can change a room layout, increasing or decreasing the number of seats.
See seats that need to be sanitized
Actor: Administration.
Description: The administration must be able to know which seats have been used by atendees and, therefore, will need to be sanitized.
Normal Flow:
- The administration chooses a conference from the list presented to them.
- A page with the conferences information will appear o screen. The seat arrangement appears on screen.
As an atendee, I want to be to cancel a reservation once I've made one, so that I'm free to back away from that commitment.
Value: Must-Have
Effort: L
Acceptance Tests:
Scenario: Checking seat availability.
- Given that I am an user and I want to check the seat availability of a conference. When I select a specific conference, then I should be shown the layout of the conference room, showing all available and unavailable seats.
User interface mockups:
As an atendee, I want to be able to reserve a seat, so that I can safely attend the event.
Value: Must-Have
Effort: M
Acceptance Tests:
Scenario: Reserving a seat.
-
Given that I am an user and I want to reserve a seat. When I select a seat that is available, then I should be able to make a reservation.
-
Given that I am an user and I want to reserve a seat. When I press the button to make a reservation, then the seat I reserved must be shown as unavailable in the "My Conferences" section.
-
Given that I am an user and I want to reserve a seat. When I select a seat that is not available, then nothing will happen.
User interface mockups:
As an atendee, I want to be able to cancel a reservation once I've made one, so that I'm free to back away from that commitment.
Value: Should-Have
Effort: M
Acceptance Tests:
Scenario: Cancelling a reservation.
- Given that I am an user and I want to cancel a reservation. When I select the button to cancel a reservation, then the seat previously shown as unavailable is available again.
User interface mockups:
As part of the administration, I want to be able to change the layout of each conference room, so that the seats can be correctly booked.
Value: Could-Have
Effort: L
Acceptance Tests:
Scenario: Changing the layout of a conference room.
As part of the administration, I want to be able to see the seats that need to be sanitized, so that I can send a team to clean them later.
Value: Could-Have
Effort: L
Acceptance Tests:
Scenario: Cleaning seats that need to be sanitized.
As the administration, I want to be able to manage the conferences, so that I organize the timetable and location for the events.
Value: Should-Have
Effort: L
Acceptance Tests:
Scenario: Managing conferences.
-
Given that I am part of the administration and I want to create or edit a conference When when I insert a date to the end of the conference that is smaller than the date to the begin of the conference, then the program prints an error message.
-
Given that I am part of the administration and I want to create or edit a conference When when I don't define a name or location for the conference, then the program prints an error message..
User interface mockups:
As an user, I want to be able to register and log in, so that I can access the main page of the application.
Value: Must-Have
Effort: M
Acceptance Tests:
Scenario: Logging in/Registering.
-
Given that I am an user, I am prompted to log in. When I don't have an account and press the "register" button, then I should go to the register page.
-
Given that I am an user, I am prompted to log in. When I already have a valid account, then I should go to the home page.
-
Given that I am an user, and I want to log in. When I input invalid data, then I should be warned with a message of "Invalid Information".
-
Given that I am an user, and I want to register. When I input valid data, then I should go to the home page.
-
Given that I am an user, and I am prompted to register. When I already have an account and press the "login" button, then I should go to the login page.
-
Given that I am an user, and I want to register. When I input invalid data, then I should be warned with a message of "Invalid Information".
User interface mockups:
As an user, I want to be able to log out of my account, so that I can switch users.
Value: Must-Have
Effort: S
Acceptance Tests:
Scenario: Logging Out.
- Given that I am an user, and I want to log out. When I click on my profile in the top-right corner and choose to log out, then I should go back to the login page.
As an user, I want to search for a conference, so that I can easily find the event I want to.
Value: Should-Have
Effort: M
Acceptance Tests:
Scenario: Searching for a conference by its name or location.
- Given that I am an user, and I want to search for a conference. When I input a text on the search bar with a location or a name, then I should be shown conferences with those properties.
As an user, I want to be able to choose a conference, so that I can see its information.
Value Must-Have
Effort L
Acceptance Tests:
Scenario: Choosing a conference.
- Given that I am an user, and I want to look for a conference. When I log in, then I can see all conferences available.
Our project is organized in an MVC-like structure. The Model package contains components for the objects present: conference, user and date. All of these are informations that need to be stored and manipulated throught the product's usage. In the View package, the conference_view component describes how a conference is presented to the screen and handles the user interactability. The Controller package contains information on the various pages of our project, pages to handle the registry and sign in processes, the main page, the page for the administration, pages for seat reservation. etc. These are the components that tie together all of the program's pieces.
The only thing needed to run the project is a smartphone. The user interacts with the application directly by touching specific buttons whenever they are prompted. Since we have some handling of the user's inputs, we called it "hidden processing", as these are changes in the database, prompts for the user at an adequate time, alert dialogs on invalid inputs, and all other unpredictable actions that need to be taken in consideration.
The technology used is Flutter, a Dart framework that allows the app to run both on Android and iOS operating systems.