Software Engineering 1 Course Projects Spring 2024

This repository contains a collection of projects completed as part of the SE1 (Software Engineering 1) Course at UT-CE in Spring 2024. The projects involve enhancing a simple matching engine called TinyME with various features and improvements. Each project (CA) focuses on different aspects of software engineering, from implementing basic Java classes to refining the system design and removing technical debt.

Project Descriptions

  1. CA0: Introduction To Java
  2. CA1: Introduction To Spring/Artemis
  3. CA2: Clean Code Inspection
  4. CA3: Adding Missing Unit Tests
  5. CA4: Minimum Execution Quantity
  6. CA5: Stop Limit Order
  7. CA6: Technical Debt Removal
  8. CA7: Auction Matching
  9. CA8: Cleaning Up And Improving Design

Description: In this CA, we were introduced to Java by implementing simple classes that calculated the dates in which different players were in teams.

Features:

  • Basic Java classes: Implemented classes for managing players and teams.
  • Date calculations: Calculated the period during which players were part of specific teams.

Description: In this CA, we were introduced to the Spring framework and Artemis messaging. We built a simple JMS (Java Message Service) transaction app that allowed deposit operations within the Artemis queues.

Features:

  • Spring framework: Set up a basic Spring application.
  • Artemis JMS: Implemented messaging for transaction management.

Description: In this CA, we inspected the TinyME code to prepare for adding new features. The inspection results are documented as comments in a pull request on this repo.

Features:

  • Code review: Identified areas of improvement and potential issues.
  • Documentation: Added comments and suggestions for clean code practices.

Description: In this CA, we added missing unit tests to check the broker's credit using JUnit.

Features:

  • Unit testing: Created JUnit tests for critical functionalities.
  • Code coverage: Improved test coverage for the TinyME codebase.

Description: This CA, the first group project, introduced the minimum execution quantity (MEQ) feature. Orders with an MEQ are only executed if the sell shares satisfy the MEQ requirement.

Features:

  • MEQ property: Implemented MEQ for orders.
  • Order validation: Ensured orders met MEQ requirements before execution.

Description: In this CA, we added a new order type called stop limit order. This feature allows users to queue orders based on market prices, which are activated when certain price conditions are met.

Features:

  • Stop limit orders: Added logic for handling stop limit orders.
  • Market price conditions: Implemented activation criteria for queued orders.

Description: In this CA, we cleaned up the code from previous CAs, addressing technical debt incurred due to tight deadlines. This was done to simulate real-world scenarios.

Features:

  • Code refactoring: Improved code quality by removing technical debt.
  • Documentation: Enhanced code documentation and readability.

Description: In this CA, we added a new matching mechanism called auction matching. This involves calculating a price based on queued orders and matching orders according to the calculated price.

Features:

  • Auction matching: Implemented an algorithm for price calculation and order matching.
  • Batch processing: Handled multiple orders in auction-style matching.

Description: In the final CA, we overhauled the system design, utilizing design patterns like builder and facade to improve code structure and maintainability.

Features:

  • Design patterns: Applied builder and facade patterns to the codebase.
  • Code cleanup: Refactored code for better design and performance.

Contributing

Feel free to fork this repository, open issues, or submit pull requests. Any contributions are welcome!