Welcome to the University Board Management System (UBMS) README! This comprehensive document will provide you with an in-depth understanding of the UBMS project, its purpose, use cases, and the technologies used to develop it.
UBMS is a full-stack web application developed for a Bachelor's Thesis defense on Faculty of Organizational Sciences. The primary objective of this system is to streamline the management of university boards and facilitate efficient communication between university employees and board members. The application allows users to create, delete, modify, search, and sort boards. It also enables employees to upload comments and files to boards, with the added functionality of downloading those files.
UBMS was developed following Craig Larman's software development method, which emphasizes an iterative and incremental approach to software development. My software development went through 5 phases:
1. Requirements Gathering
2. Analysis
3. System Design
4. Implementation
5. Testing
Thoroughly understanding the requirements for the university board management system. I managed to identify 18 use cases and diveded them in 4 groups:
1. Board administration
2. Employee management
3. File management
4. Comments section
Also I realized that users should have different privileges and roles (group of privileges) so different sections and actions can be enabled/disabled for different users. For thesis writing purpose, I analized in detail 10 of 18 Use Cases, although in application all Use Cases were implemented in the end. Below is UML Case Diagram for my project:
For every Use Case defined in previous phase, in Analysis I defined UML Sequence Diagram which describes interaction between System and User. Here is an example of one Sequence Diagram:
As a result of this phase I got description of the structure and behavior of the software system. Structure is described using UML Class Diagram and behaviour using list of system operations:
In Design phase I worked on details about previously defined System Operations through UML Sequence Diagrams.In addition, the design of screen forms and user interaction with them was carried out too. As result of this phase we get the final architecture of the software system:
As we can see there are 3 layers of system. UI layer is an client application made primarily using React library. Application logic layer consists of 2 Web Services made using Spring framework. One web service is main who is responsible for almost whole business logic and also there is file service which is made for only file management. It is responsible for downloading, uploading and deleting files to/from AWS S3 service. This service can be use for any other project which needs file management system and storage. Storage layer is implemented using MySQL RDMS and Amazon S3
In this phase, my task was to choose techonologies and implement everything till now was specified in previouse phases.
Frontend techonologies:
- Typescript
- React
- Axios
- Material UI (MUI)
Backend techonologies:
- Java 18
- Spring Boot 3
- Spring Security 6
- MySQL
- Amazon AWS S3
Notable libraries and plugins:
- Spring WebFlux
- Lombok
- Mapstruct
- Maven spotless plugin
- Hibernate JPA Metamodel Generator
- Thymeleaf
- JWT
- JavaMailSender
- Amazon SDK S3
In this study example, manual testing of all use cases was performed, during which the behavior of the software and its response were monitored. Testing included validation of all possible data and their permitted values. By entering the correct and incorrect data values, the validation and operation of the software was checked, and during the testing, all the errors and deficiencies that were discovered were incrementally removed. Testing also included checking the safety and security of the software system itself, that is, its resources depending on the users themselves and their privileges.
- Dockerization
- Unit and Integration testing
- Implementing Microservice architecture
- Hosting whole system
- API and User documentation