[Java, JS, SQL] Coffee shop inventory and order management system, team course project

Background

I took CSC 326 Software Engineering in Fall 2023. This course explored the software development lifecycle, including:

  1. Initiation
  2. Design
  3. Implementation
  4. Testing
  5. Deployment
  6. Maintenance
  7. Agile

The course project was facilitated through a weekly lab section.

Project

In the first half of the semester, we worked in teams of three to implement prescribed requirements. This worked as a warm-up exercise, to prepare us for the second half of the semester.

In the second half of the semester, we worked in teams of four to six. We wrote our own requirements and designs, then implemented them. For the second half of the semester, I worked with four teammates (C. Bolnykh, C. Hardwick, S. Holikatti, A. Senn).

The back end of the project was written in Java, using Java Spring. The front end in JavaScript, using AngularJS. The data was stored in a MySQL database.

Coffee Maker

In summary, Coffee Maker was a beverage ordering and fulfillment system. Users could sign in as baristas or customers. A barista could manage inventory, create and edit recipes, and view and fulfill orders. A customer could place an order and view its completion status.

Agile

The weekly lab sessions were operated on a biweekly cadence. In the first week, we’d work on design. In the second week, we’d work on implementation and test. We had two major iterations in the second half of the semester.

Design

To support our design process, we developed the following documents:

  • UML class diagrams
  • Sequence diagrams
  • API endpoint descriptions

In each iteration, we would revise our documents to match up with our updated requirements.

Implementation and test

The most difficult part of implementation was integrating Spring Security. This was because in order to implement user roles, a customer would not be able to access what the barista could access, and vice versa. Testing required additional annotations, in order to ensure that each page and operation had the correct restrictions in place.

The majority of the website’s functionality was based around CRUD activities. A barista could create a recipe, a customer could create an order. A barista could read recipes, inventory, and orders. A barista could update inventory. A barista could delete recipes.

These operations were reflected in our API endpoints, which were created with the RESTful framework in mind.

Additional Artifacts

In addition to producing design documents and code, we also wrote a Privacy Policy and generated a Security Audit.