niezbednikstudenta_docs/Witkowski/lang-sheet/Project requirements.md

231 lines
9.4 KiB
Markdown
Raw Normal View History

# Project requirements
Project title: Langsheet
Authors: Andrew Moskovets, Kiryl Averkiyeu, Bohdan Bakhlul
Date: 15.11.2020
## 0. Document versions
1.0 - current
## 1. Project components (project products)
Programming components:
- React-framework-based frontend component - semesters 1 & 2
- Django-framework-based backend component - semesters 1 & 2
- Database server instance based on MongoDB - semester 2
Non-programming components:
- Functional specification - semesters 1 & 2
- Layouts designed with AdobeXD - semesters 1 & 2
- Test reports - semester 2
- Documentation considering the architecture of the application - semesters 1 & 2
## 2. Project boundaries
- Mobile application (iOS, Android) will not be created. It is unreasonable because of the small display working area
- Worksheet constructor will not be available on mobile devices via the browser. It is unreasonable because of the small display working area
## 3. Functional requirements list
##### Teacher:
- Teacher can upload images in order to use them as text sources.
- Teacher can choose the number of points for every exercise.
- Teacher can export the worksheet to PDF.
- Teacher can edit his worksheet
- Teacher can delete exercises.
- Teacher can save the worksheet.
- Teacher can preview separate exercises.
- Teacher can preview the whole worksheet.
- Teacher can create “Fill in the gaps” type exercises.
- Teacher can create “Match paragraphs with titles” type exercises.
- Teacher can create “Open question” type exercises.
- Teacher can create “Closed question” type exercises.
- Teacher can create “Test question” type exercises.
- Teacher can create “Fill in missing sentences” type exercises.
- Teacher can create “Match paragraphs with titles” type exercises.
- Teacher can create “True/false” type exercises.
- Teacher can create “Fill in with word by given base form” type exercise.
- Teacher can create “Create titles for paragraphs” type exercise.
- Teacher can send the link with the worksheet to the chosen student(s).
- Teacher can generate a teachers sheet with a solution.
- Teacher can choose a language for the exercises statements.
- Teacher defines when the sheet is available and for who.
##### Student:
- Student can view worksheets.
- Student can solve worksheets online.
- Student can print worksheets.
- Student can see his result.
## 4. Nonfunctional requirements list
- We want to be able to create worksheets in an easy way, with as many automated elements as possible. Elements are created by the app with minimal help from the user. Moreover, we would like to be able to use text from photos taken by the user. The application will focus on the Spanish language but should work also for other languages without problems. The application should be designed for people which are not proficient in using computer tools.
- Product is targeted for use in Google Chrome (86.0 and newer), Safari (14.0 and newer), Mozilla Firefox (82.0 and newer).
- Product is targeted for use in Spanish and English languages.
- Worksheet creation and editing are available only on the desktop.
- Optimal resolution for creating a worksheet is 1920x1080.
- Optimal resolution for solving worksheet is 375x660 for mobile and 1920x1080 for desktop.
## 5. Measurable implementation indicators
The project will be deployed to domain langsheet.com after our client will provide testing and approve deployment action. At the end of December, the closed beta version of the product is going to be released. In January 1.0 version will be released.
## 6. Project acceptance criteria for semester one
##### Required:
- Worksheet constructor
- PDF generation
- High level of automatization
##### Expected:
- At least 10 types of exercises, which can be used in the worksheet
- Optical character recognition feature
- Lack of errors and failures, which harm product usability
- User-friendly design
- Multilingualism
##### Planned:
- Dark mode of the website
## 7. Project acceptance criteria for semester two
##### Required:
- Deploy to the server
- Product tested and approved positively by the client
- Possibility to solve tests online
- Possibility to share test for solving via link
##### Expected:
- The product is tested and approved positively by the group of users
- Teacher registration via our system
- Teacher registration via external systems (Facebook, Google)
##### Planned:
- Explanatory dictionary support
- Import article text from its link
## 8. Teamwork organization
##### Andrii Moskovets:
- Creating UI/UX design
- Creating mock-ups for the whole app
- App testing and bug fixing
- Creating previews for separate exercises
- Creating documentation (project vision, acceptance criteria, presentation, technical documentation)
- Future tasks
##### Bohdan Bakhlul:
- Creating an optical character recognition program
- Creating previews for separate exercises
- Manual testing
- Creating mockups for specific components
- Creating documentation (project vision, acceptance criteria, presentation, technical documentation)
- Fixing bugs, UX-mistakes
- Future tasks
##### Kiryl Averkiyeu:
- Creating specific components for the front-end part of the application, e.g
- Component for editing worksheet
- Component for editing exercises
- Component for worksheet preview
- etc.
- Code reviewing
- Creating documentation (project vision, acceptance criteria, presentation, technical documentation)
- Bug fixing
- Manual testing
- Text tokenizing
- Future tasks
#### Roles:
##### Andrii Moskovets
- full-stack developer
- UX/UI designer
##### Bohdan Bakhlul
- full-stack developer
- Test Lead
##### Kiryl Averkiyeu
- full-stack developer
- DevOps Engineer
Communication with the client is organized via real-time Teams meeting after every sprint. Everyone from the team is communicating with the client.
We use personalized Agile, meeting with clients after each sprint: refining requirements + prioritizing tasks for the next sprint. 1st semester - 2 weeks sprints, 2nd semester - 1 month sprints. The waterfall methodology was rejected because the client is able to meet with us often and give ideas and prioritize tasks to ensure quality of final product.
Source code and backlog is managed with GitLab version control system. Diagram of the task life cycle:
```
Open -> To Do -> Doing -> Code Review -> Testing -> (Rejected) -> Merge Request -> Closed
() - optional step
```
## 9. Project risks
##### Resource-related:
- The small size of the team (3 out of 4) leads to bigger responsibility and amount of work to be done for every member
- Member leaving leads to huge difficulties in finishing the product
- Time restrictions on product creation
- Most of the used technologies are new to all team members and are learned during the whole development process
##### Others:
- Adding new requirements by the client may lead to difficulties in finishing the project on time or errors occurring in new functionalities
- Team misunderstandings about implementation solutions, architecture, functionality, or technologies used
- Lack of proper commitment to the project on the part of the team
- Sudden lack of support or termination of used development technology or tools - the need to re-implement, or continuing implementation in unused / poorly designed tool, library
- A tight deadline, team communication problems as a consequence of pandemic, university workload, and private issues may negatively affect the work on the application
## 10. Milestones
#### 1st semester: 2-week sprints.
Due to a change of project topic, development started in mid-April (2nd sprint of the month)
- April
- 2nd sprint
- Add blank backend
- Add blank frontend
- Create a view for the worksheet constructor
- Create Gap Fill Generator
- Create an endpoint for text tokenization
- Set up linters
- Create common .gitignore file
- Create an endpoint for constructing PDF file
- PDF document preview
- Bug fixing
- May
- 1st sprint
- Create an “official” mockup of the whole web application
- Create a model for storing data
- Create Acceptance Criteria document
- Bug fixing
- 2nd sprint
- Test OCR libraries
- Test Gap Fill Generator for different encodings
- Create a view for adding text using the photo upload
- Create an endpoint for OCR
- Bug fixing
- June
- 1st sprint
- Reconstructing front-end corresponding to worksheet constructor due to mock-up created before
- Modernization of PDF document generator
- Adding new features
- Bug fixing
- Testing
- 2nd sprint
- Bug fixing
- Testing
- Prepare Minimum Viable Product for presenting to the committee
- Prepare presentation for the committee
#### 2nd semester: 1-month sprints.
- October sprint
- Multiple question types feature
- Testing
- Bug fixing
- November sprint
- Create a layout for online solving
- Research online worksheet solving
- Testing
- Bug fixing
- December sprint
- Implement solving worksheets online
- Implement sharing worksheets via link
- Testing
- Bug fixing
- Presenting product to the client
- January sprint
- Deploying
- Implement dictionary support
- Implement article import support
- Testing application on a small group
- Bug fixing
- Presenting product to the client
- February sprint
- Bug fixing
- Presenting product to the client
- Presenting product to the committee