This project is a Concurrent Ticketing System developed as part of my BEng Software Engineering coursework at the University of Westminster. The system is implemented in Java and models a real-world ticketing scenario involving passengers and technicians interacting with a shared Ticket Machine. The project also incorporates Finite State Processes (FSP) to design and verify the system using the LTSA tool.
I achieved an exceptional score of 96/100 for this project, highlighting its quality and adherence to concurrency best practices.
- Multi-threaded Design: Simulates concurrent interactions between passengers and technicians.
- Thread Safety: Ensures mutual exclusion for shared resources (paper and toner).
- FSP Modeling: Modeled system behavior using FSP and verified with LTSA.
- Resource Management: Implements realistic scenarios of paper and toner exhaustion and replenishment.
- Randomized Delays: Simulates real-world timing differences between operations.
- Manages resources: paper and toner.
- Handles ticket printing requests with synchronization to avoid conflicts.
- Allows refilling of resources by technicians.
- Represents a user purchasing tickets from the Ticket Machine.
- Requests multiple tickets and waits for the machine to be ready if resources are insufficient.
- Refills the Ticket Machine with paper when required.
- Attempts refilling up to three times, with randomized delays.
- Replaces the toner cartridge in the Ticket Machine.
- Attempts replacement up to three times, with randomized delays.
- Models the system's behavior for verification.
- Includes processes for the Ticket Machine, Passengers, and Technicians.
- Verified and animated using the LTSA tool.
- Concurrency and Multithreading: Hands-on experience in designing and implementing thread-safe systems.
- Problem-Solving: Tackled challenges like mutual exclusion and deadlock prevention.
- Formal Verification: Modeled and verified system behavior using the LTSA tool.
- Java Programming: Advanced proficiency in Java threading and synchronization.