Desktop Application for Organizing Seminars in Java based on Sockets, with MySQL Database (Final Project for University Courses Software Design and Advanced Programming)
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-23 15:14:53 +02:00
SeminarsOrganizerClient SOs now use test objects from JSON 2023-12-05 00:37:48 +01:00
SeminarsOrganizerCommon All tests for domain classes now use test objects from JSON 2023-12-08 01:02:14 +01:00
SeminarsOrganizerServer All tests for domain classes now use test objects from JSON 2023-12-08 01:02:14 +01:00
Aleksa_Radojičić_20240165_Documentation.pdf docs: rename documentation to latin; provide link in readme 2025-11-08 16:35:09 +01:00
README.md docs: update README.md with new 'Key Engineering Concepts' section 2026-07-23 15:14:53 +02:00

Desktop Application for Organizing Seminars in Java

The objective of this project was to develop a desktop application in Java for organizing seminars that is TCP socket-based, with its own MySQL database. This was the final project for the mandatory course Software Design and the elective course Advanced Programming at the Faculty of Organizational Sciences, Information Systems and Technologies.

Project Overview

The project follows a simplified Larman's methodology¹ of software development, consisting of these steps:

  • Gathering User Requirements;
  • Analysis;
  • Design;
  • Implementation;
  • Testing.

Below are all use cases of the software, shown using a UML use-case diagram:

The software system contains tests written in JUnit for all system operations and domain classes. Every system operation and domain class is documented using Javadoc.

Key Engineering Concepts

  • Client–server architecture with TCP socket communication
  • Layered architecture and separation of concerns
  • Concurrent request handling
  • Repository and Service Layer patterns
  • Command pattern for representing and dispatching client requests
  • DTOs and shared contracts between distributed application components
  • Facade and remote-service abstractions
  • Multi-module architecture (Client, Server and Common)
  • Object-oriented domain modeling and relational persistence (MySQL)
  • UML-based software design and requirements-driven development
  • Unit testing with JUnit
  • Javadoc documentation

Software Structure

The project consists of three separate subprojects:

  • Client — client-side GUI application;
  • Server — server-side GUI application;
  • Common — subproject containing files required for both client and server sides.

Below is a diagram of the entire software system, focusing on the structure of the application logic.

Documentation

The detailed documentation in Serbian is available as PDF in this repository: link.

Literature

¹ Влајић, Синиша. Пројектовање софтвера (скрипта - радни материјал), вер. 1.3. Факултет организационих наука. Београд 2020. Available at: ResearchGate.

Acknowledgements

I would like to thank my mentor Dragica Ljubisavljević for her guidance throughout the development of the Software Design component of the project.