The researcher has organized the process of creating the system into three main parts: the creation of the specifications where the features will be documented; the development of the system itself; and testing the functional requirements of the system.
The researcher will use Behavioral Driven Development (BDD) in creating the system. The requirements needed will be listed as user stories describing who needs the feature, what is the feature, and why the feature is needed. Each feature will have a gherkin file that will contain the scenarios of the feature. The gherkin file describes the behavior of the feature and will be used in the creation of tests later.
As stated in BDD practices, the tests will be created before the implementation of the feature to create a better interface improving overall code quality. The tests will be written using Cucumber and in Node.js. In writing the tests, the researcher will employ an outside-in approach, creating component/module/integration tests first, then creating unit tests. After writing the tests, an OpenAPI file will be created to describe the application programming interface (API) of the application as shown with the tests.
Design for the clients will be created matching the behaviors described in the gherkin file. The design will be mobile first with reactive components.
The backend server will be written in Node.js for ease of development. Each feature will be implemented after the test for that feature is finished. Each implementation should make tests pass and the number of tests passing will indicate the progress of development. This development will iterate until all tests are passing. This style of development is known as red-green-refactor from the Test Driven Development (TDD) approach where BDD is based from.
After the development of the backend server, the server will be split into small services (microservice) which will create a microservice architecture. Each microservice will have its own Dockerfile for simplifying deployment, and Kubernetes files will be created so the service can scale easily and be deployed to any cloud service that supports Kubernetes.
The client will be written using the Angular 6 framework. Using web technologies, the researcher is able to create a native mobile app using the same code base by using Apache Cordova. This enables the researcher to focus on the development of the systems and decreases the context switch needed compared to making a native app using the native language for creating applications, eg Java and Kotlin for Android, and Objective-C and Swift for iOS.
The system’s performance will be tested using load testing toolkit Artillery.io. The usability of the application will be tested by conducting a usability and user experience survey to potential users of the system, the reporters and the viewers of the reports.
The features will be listed in the first week and the gherkin files will be created for the next two weeks. Afterwards, the rest of the time will be devoted to the red-green-refactor cycle, developing the software until all features are developed.