Maintenance manual
Requirements:
​
-
device with Android operation system
-
internet connectivity
​
Setup:
-
download the .apk file to your device and install it.
-
Open a Firebase project for this system.
-
on your PC, from the 'app' folder run 'firebase deploy' to use the remote DB, storage and functions (one time only).
note: our version uses the free plan of firebase with limited storage space and access to the DB and functions. For a scaled app you should consider to change the firebase plan.
Main app structure:
every use case in our system implemented in the following architecture.
If one wishes to change something in the system bare in mind that structure:
​We designed our system in a way that each use case, has a corresponding MVVM "instance" as described in the following diagram, meaning that each use-case aUseCase has an associated view class (probably named aUseCaseFragment.java), associated view-mode class (aUseCaseViewModel.java) and associated model classes that are associated to the logic of the use-case. We belive that the use-case diagram is intuitive and a comfortable way to devide the system, while building it and on maintanence.
​
Activity/ Fragment - UI functionality
ViewModel - binding between the UI and the data it holds
Repositories - intended to give a good user experience so he will always see his information, thanks to this component indirect dependency on both local and remote data sources.
Model - the different data models the repositories manages
imageProcessing - component for manipulating and processing images
communication - component that bridges between the data models and the persistent data (local and remote).
Local Data Source - manages the operations on the local persistent data.
Remote Data Source - manages the operations on the remote persistent data.
Remote Functions - this component purpose is to create and update the output file for each exam - a spreadsheet.
This structure enables modularity in terms of changing the existing system.
For example:
-
replacing the algorithm that detects the exam and finds the students answers would require changes in imageProcessing
-
changing the method for calculating a student's grade would require changes in the Exam Model.
Future Versions:
There are some additions we reckon would be beneficial to the system:
-
Changing the format of the exam from one page only to multiple pages.
-
Enable the user flexibility in terms of his actions in the app. For instance, enable editing an exam answers, deleting a scan, add a grader to exam after its creation, etc.
-
Show user the accumulated average of solutions scanned by ALL graders