Team members:
- Fabio Moreira
- Luís Afonso
- João Cunha
- Pedro Coelho
- José Maçães
AskIt, a platform to manage the very limited time to ask questions at the end of the lecture, ensuring the best ones get answered first.
Have you ever felt frustrated by the lack of quality of the questions taking up the very limited time at the end of lectures? AskIt optimizes everyone's experience by allowing all the attendees to vote on the best questions, leading to a better use of the time. From now on you can attend any conference knowing that only the most pertinent questions will be asked, leading to more intriguing discussions.
Actor: Atendee
Description: User can post questions regarding the lecture he is attending. He can also mark the number of the slide relevant to his question.
Normal Flow: The user writes a question, selects the slide number and then submits the question.
Actor: Atendee
Description: User can download the presentation if it has been made available by the speaker.
Normal Flow: User downloads the presentation file.
Actor: Atendee
Description: User sees all questions in a list and may choose to rate any question.
Normal Flow: User scrolls through the list and votes on the questions he desires.
Actor: Speaker
Description: User may choose a file from his device and upload it into the app.
Normal Flow: User presses upload lecture, and navigates through his device to select the file to upload.
Actor: Speaker
Description: User sees the list of questions ordered by their current rating.
Normal Flow: User can scroll through the list of submitted questions.
Actor: Speaker
Description: After the lecture has ended, the user may submit an answer to questions that there was no time for.
Normal Flow: User selects one question and may submit an answer.
As a user, I want to log into the app.
Scenario:
Given There are fields for user to input email and password
When User fills those fields
And The information is correct
Then The user is logged in
Scenario:
Given There are fields for user to input email and password
When User fills those fields
And The information is incorrect
Then The user is not logged in
Value: Must have
Effort: M
As a user, I want to filter and view lectures that I have attended or will attend.
Scenario:
Given A list of lectures associated with the user
When User selects the "lecturer" filter
Then Only lectures where user was the lecturer are displayed
Scenario:
Given A list of lectures associated with the user
When User selects the "attendee" filter
Then Only lectures where user was an attendee are displayed
Scenario:
Given A list of lectures associated with the user
When User selects the "upcoming" filter
Then Only lectures that will be happening in the future are displayed
Scenario:
Given A list of lectures associated with the user
When User selects the "previous" filter
Then Only lectures that already happened will be displayed
Value: Must have
Effort: S
As a lecturer, I can create a new lecture
Scenario:
Given The form for creating a new lecture
When User fills all the fields
Then A new lecture is created and added to the user's lectures list with role "Lecturer"
Scenario:
Given The form for creating a new lecture
When User selects a date in the past
Then The creation process fails and an error message is displayed
Value: Must have
Effort: L
As a user, I want to be able to see upcoming lectures (w/ filters) and choose one to attend.
Scenario:
Given A list of the upcoming lectures
When User presses the lecture they want to attend
And They press the "Join" button
Then Lecture is added to the lectures list of the user with role "Attendee"
Scenario:
Given A list of the upcoming lectures
When User selects a lecture that is already at maximum capacity
Then Message is displayed to the user letting them know lecture is full
Value: Must have
Effort: L
As a lecturer, I can change the status of my presentation (Live/Finished)
Scenario:
Given The options regarding the status of the lecture
When The current status is "Not started yet"
And User presses "Live"
Then The status should change to "Live"
Scenario:
Given The options regarding the status of the lecture
When The current status is "Live"
And User presses "Finished"
Then The status should change to "Finished"
Scenario:
Given The options regarding the status of the lecture
When The current status is "Live"
And User presses "Not started yet"
Then The status should not change
And An error message should be displayed
Scenario:
Given The options regarding the status of the lecture
When The current status is "Finished"
And User presses any other state
Then The status should not change
And An error message should be displayed
Value: Should have
Effort: L
As a lecturer I can submit my presentation so that attendees can follow along my presentation.
Scenario:
Given Lecturer is on the page of the Lecture
When Lecturer presses the "Select File" button
And Chooses a file
Then The file should be uploaded
Value: Must have
Effort: S
As an attendee, I can access the slides submitted by the lecturer to follow along
Scenario:
Given Lecturer submitted slides
When The user is on the lecture page
And User presses the name of the file
Then The presentation file should open
Scenario:
Given Lecturer did not submit the presentation
When The user is on the lecture page
Then Message should be displayed that slides are not available
Value: Must have
Effort: M
As a user I can select which slide I have a doubt so that it is easier for the lecturer to answer my question.
Scenario:
Given User is in the process of submitting a question
When The user selects the slide number of the question
And Submits it
Then The question description should have the correct slide number associated with it
Value: Must have
Effort: L
As a user, I can vote on which questions I like the most so that they are more likely to get answered.
Scenario:
Given User is in the questions page of a lecture
And Qestions were submitted
When User presses the up arrow next to the question
Then The rating should be incremented by one
Scenario:
Given User is in the questions page of a lecture
And Questions were submitted
And User already pressed the up arrow
When User presses the up arrow next to the question
Then The rating should stay the same
Scenario:
Given User is in the questions page of a lecture
And Questions were submitted
And User already pressed the up arrow
When User presses the down arrow next to the question
Then The rating should be decreased by 2
Scenario:
Given User is in the questions page of a lecture
And Questions were submitted
When User presses the down arrow next to the question
Then The rating should be decreased by one
Scenario:
Given User is in the questions page of a lecture
And Questions were submitted
And User already pressed the down arrow
When User presses the down arrow next to the question
Then The rating should stay the same
Scenario:
Given User is in the questions page of a lecture
And Questions were submitted
And User already pressed the down arrow
When User presses the up arrow next to the question
Then The rating should be increased by 2
Value: Must have
Effort: XL
As a lecturer I can look at the highest rated questions so that I can answer the most wanted questions first.
Scenario:
Given Lecturer is in the "Manage Lecture" page
When Lecturer presses "View Questions"
And Questions exist
Then Questions should be displayed sorted by rating
Scenario:
Given Lecturer is in the "Manage Lecture" page
When Lecturer presses "View Questions"
And Questions do not exist
Then A message should be displayed alerting that there are no questions
Value: Must have
Effort: S
As a user I can reply to other user's questions after the lecture has ended so that more questions can get answered.
Scenario:
Given User pressed in one of the questions present in the lecture's question list
When User presses "Reply to this question"
Then User should be able to write their reply and post it
Value: Should have
Effort: L
As a user, I want to sort the existent questions by rating or by new.
Scenario:
Given User is in the lecture's question page
And Questions exist
When User selects the "New" filter
Then Recent questions should appear first
Scenario:
Given User is in the lecture's question page
And Questions exist
When User selects the "Rating" filter
Then Questions with the highest score should appear first
Value: Could have
Effort: M
Each lecture has a title, description, date, current attendance, a maximum capacity and a field representing the status (0 - Not started yet; 1 - Live; 2 - Finished). Aditionally, the lecturer can also upload the presentation so that the attendees can follow along.
Each user of the app can attend several lectures, either as the Lecturer or as an Attendee. Furthermore, attendees can ask questions in a specific lecture and vote on other existing questions.
NB: Replies to Questions are not represented in the model as we decided not to implement that feature.
The following sections show the connection between the technologies and modules used in this project.
Our goal was to divide our code into three different packages, in order to follow the MVC pattern.
Model - used to hold the information regarding each question and lecture.
View - responsible for displaying the app to the user.
Controller - processes user input in order to update the display and navigate through packages. It also updates the stored information via the database functions.
Our project's physical structure is quite simple. All of the app information is stored in a remote database, so that when a user creates a lecture or submits a question, another user can see the new information in real time upon accessing the respective page.
The logs for our product increments can be found here
There are several ways of documenting testing activities, and quality assurance in general, being the most common: a strategy, a plan, test case specifications, and test checklists.
In this section it is only expected to include the following:
test plan describing the list of features to be tested and the testing methods and tools; test case specifications to verify the functionalities, using unit tests and acceptance tests. A good practice is to simplify this, avoiding repetitions, and automating the testing actions as much as possible.
Configuration and change management are key activities to control change to, and maintain the integrity of, a project’s artifacts (code, models, documents).
We used a very simple approach, just to manage feature requests, bug fixes, and improvements, using GitHub issues and following the GitHub flow.
Software project management is an art and science of planning and leading software projects, in which software projects are planned, implemented, monitored and controlled.
We decided to use Github Projects.