Requirements
Project Background
Knowledge 4 All Foundation has two main streams of activities, on one side pioneering Machine Learning methods of pattern analysis, statistical modelling, and computational learning and on the other, transforming these into technologies for large scale applications in Open Education. We were asked to combine these two streams of activities and create an automatic question generation API with a website
Project Goal
Our project goal is to develop an API and a web application that can generate different types of questions from educational material. The API will be usable by anyone. Our API will be connected to a database and to a web application. The database will be used to store information related to users' progress and metrics to improve question generation. The web application is for displaying and allowing the users to interact with the generated questions. The API should be able to generate questions about any text that was written by the user as long as it is educational. Also, it should give the option to the user on which type of question to generate.
Client Requirements
With the knowledge of the project background, we met our clients to discuss what features our API should have. We also agreed on meeting weekly, when we could report our real-time progress and get feedback from the client. The client requirements are the following:
Generate questions out of educational text/material
Have an interactive website to display the questions
Track user progress
On top of the client requirements, we also considered the requirements users can provide us. We gathered the user requirements by conducting semi-structured interviews. The interviews can be found here. The main user requirements are the following:
Give the option to pick how many options each question should have
Will have the option to see the educational material while the question is displayed
Users will be able to see statistics on their performance
User Interviews
After evaluating the different methods of capturing requirements, we decided to conduct a semi-structured interview as it allows us to go in-depth and probe where necessary. We both interviewed students and teachers which our system is aimed for.
Student Interview
Q: Have you tried different online testing platforms to revise the content you have learned?
Yes, I have.
Q: Would you prefer an app where you can generate randomized questions off a piece of text and don’t have repeating questions?
Yes definitely. Especially the content of the questions can be very repetitive on most online platforms. It sometimes feels like a waste of time.
Q: Would you prefer it if the difficulty of the question was stated before you attempt it?
I would prefer it if I had the option to know the difficulty of the question before I attempt it. That way it can be my choice.
Q: Do you think multiple-choice questions are a good way to test your knowledge?
For factual knowledge, it is quite useful but for the type of content that is more subjective, the multiple-choice questions won’t be sufficient.
Teacher Interview
Q: Do you prefer writing your questions or do you use online resources?
I usually prefer writing my questions but sometimes I do get inspired by other questions I come across online.
Q: Do you ever run out of unique ideas for questions?
Yes, it can be hard to come up with different types of questions out of the same content.
Q: Would you use automated question generation software that creates questions out of a piece of text?
Yes, I would consider using it as a resource or maybe as small-scale assignments for my students.
Q: Would you like to have the questions generated to be shareable?
Yes, it would be better if I could share the questions with my students or colleagues.
Personas
After conducting the interviews, we created two personas for our target users. One representing teachers and another representing students
Use Cases
We created a very simple use case diagram that shows the functionality behind question generation and tracking user progress. These are all the options the user can choose but in a very simplified way.
MoSCoW List
Lastly, we held a meeting with our client with the finalised functional and non-functional MoSCoW lists:
Functional Requirements:
Requirements | Priority |
---|---|
Web application that can interact with a user and have a back end database | Must Have |
An API endpoint that will host the database and QG logic, but will communicate with a front end application | Must Have |
Independent front end application that talks to the API | Must Have |
Processes educational and factual text, generates questions out of the text input | Must Have |
We need to be able to store the questions in the database (with the text extract) | Must Have |
Users can login to access and track their progress | Must Have |
Responsive User Interface | Must Have |
For each question, it can check if the user's answer is right or wrong and warn the user | Must Have |
Gives the option to see the text input when on the question page (optional to the user) | Should Have |
The user can attempt the question again or skip to the next question | Should Have |
A Dashboard that shows the number of right and wrong answers | Should Have |
Can choose the number of options the question should have | Could Have |
Decides the difficulty of the question and gives the user the option to see it | Could Have |
Generates different types of questions (such as drag and drop or fill in the blank) | Could Have |
Wikipedia based wordcloud for correct answers and wrong answers | Could Have |
Questions that require long written answers | Won't Have |
Questions with answers beyond the input text | Won't Have |
Questions with Images or non-textual media | Won't Have |
Non-functional Requirements:
Requirements | Priority |
---|---|
The web app shall be accessible by anyone | Must Have |
The API shall have a plug and play structure and shall be able to use different algorithms | Must Have |
There shall be clear documentation on how to use the API | Must Have |
The API shall have a extensible structure for new the addition of new features | Should Have |
The database shall have a large capacity | Should Have |
The API shall be reliable and should always generate a question | Could Have |
The system should ask for permission before storing the performance of the user | Could Have |