Skip to content

Project report 2

Zerytle edited this page Mar 6, 2019 · 15 revisions

Introduction

Here follows the second deliverable project report. In this deliverable we are tasked with fully implementing and testing a backend service with all the use cases fulfilled. This report contains meeting minutes and a description of how we implemented the use cases.


Meeting Minutes

Meeting 2:

Date: February 25 2019
Time: 11:30 AM

In attendance:

  • Zirui He
  • Binyuan Sun
  • Tritin Truong
  • Zhong Yu Yang
  • Mark Zhu

Progress Report

Progress has been made in terms of documenting what must be done and familiarity with Mockito Api and Junit. Discussion about how the use cases should be implemented, what form should the Rest Controller take. Mark Zhu asked questions about the usage of certain service methods.

Task Distribution

Team looked over project requirements and discussed time frames and feasibility once again.

Task will be redistributed as follows:

  • Tritin Truong shall work on Document upload use cases, application form and project management
  • Mark Zhu and Zirui He shall work on the unit test, integration tests and Software quality document
  • Binyuan Sun shall work on maintaining continuous integration, implementing login and general tech help
  • Zhong Yu Yang shall work on implementing progress viewing and reminders

Next meeting
Meeting was adjourned, members were tasked with complete their use cases

Sprint retrospective:

Date: February 19 2019
Time: 11:30 AM

In attendance:

  • Zirui He
  • Binyuan Sun
  • Tritin Truong
  • Zhong Yu Yang
  • Mark Zhu

Retrospective
Team discussion about problems with the previous sprint, team looked over the feedback for the previous sprint. Technical problems were as follows:

  • Requirements model were not specific enough
  • Use case diagrams were missing names and were too large
  • UML model: some classes were missing and missing association classes
  • Testing of the persistence layer was missing documentation
  • Testing did not check for attribute or reference persistence
  • Code style, names were too short
  • Lack of documentation for running the tests

Appropriate problems will be addressed as issues in the following sprint.

There were also issues with time management, the project was started approximately a week before the deadline, and as such we were strapped for time near the end of the sprint. Teams will start working at a much higher frequency to compensate.

Task Distribution

Team looked over project requirements and discussed time frames and feasibility. Discussion about

Task were distributed as follows:
It was decided that every member shall work on a use case, which includes implementing the business method, writing the unit test and contributing to the Quality assurance document.

Next meeting
Meeting was adjourned, members were tasked with reading up on their use cases and starting the implementation

Back end Implementation

Student Creation

There exists a simple controller for initializing a new student, who can then be logged into using the student login system. This controller simply takes in the inputs, builds a Student Dto out of these arguments, and saves this Dto in the backend service.

Student Login

The student login system is implemented using the Spring Security framework. The use of the framework provides us with built-in security features such as the BCrypt encoder, but also session management. In order to make it work, first, a custom UserDetailsService class was needed to provide support for the existing Student model. Then, the WebSecurityConfigurerAdapter was implemented to customize the routes and the parameters of the login. Finally, a new helper service was implemented in order to get the current logged in Student for many tasks that requires authentication.

Document upload and re-upload

In this use case, we had to make sure that a student would be able upload a document to the database to progress in his co-op term. To accomplish this, a service was implemented to store the documents as an array of bytes. Then to view the document, the service also stores the document type and file name. With this information, the file can be viewed using a ResponseEntity which parses the data stored and allows a user to download the document using their browser. File re-upload was accomplished by checking if the student has already stored a document for a specific internship and specific document type. If so, it updates the existing document; else it creates a new one.

For uploading and reuploading documents

For reviewing previously uploaded documents

Student Reminders

In this use case, the student needs to be able to receive reminders created by other roles. To do so, a REST controller takes the parameters from the POST request, and creates a new reminder associated with the student with the provided student ID.

For giving reminders to the student whose ID is an argument

For reading the reminders associated with that student

Application Form

In this use case, the student needs to be able to post a web form to apply to a coop term. This form confirms they have landed an internship and contains various information about it. To accomplish this, the rest controller takes in the necessary parameters from the browser and posts sends the information to the database where it is transformed into a ApplicationForm object. This application form can also be retrieved using the rest API by an internship object as a key.

For uploading an application form

For reading an application form

Progress viewing

In this use case, a user needs to be able to view their progress within the co-op term. To solve this, we implemented a rest controller that fetches the student progress. This progress is just an array of boolean that corresponds to the documents uploaded by the student. This progress can be viewed with an internship key.

Student profile viewing

In this use case, a user needs to view basic information about the student. A REST API is implemented to send a student DTO when called.

Views the information of the student that is logged in

Software quality Document

Our quality assurance plan can be found here

Clone this wiki locally