-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Welcome to the GitHub Wiki for Group 7's term project for ECSE 321! This project is designed to create the website for an independent game shop's business by creating an online store that streamlines management tasks for the owner and employees while offering a seamless shopping experience for customers.
Through this web application, store staff can manage their product catalog, inventory, and orders, while customers enjoy a user-friendly interface to browse games, track orders, and leave reviews. The project will include an administrative dashboard for managing games, staff, and customer interactions. Our team is excited to share our progress and documentation, helping future contributors and users explore and build upon this work!
Name | Role |
---|---|
Naji El Khouri | Software Engineer |
Laurier Gauvin | Project Manager |
Manuel Hanna | Frontend Developer |
Arjun Sharma | Backend Developer |
Sara Tahdi | Software Engineer |
Justin Tremellen | Testing Engineer |
This project focuses on developing a web application for an independent game shop to expand its business with an online store. The application is designed to meet the needs of various stakeholders, including store employees, customers, and the store owner. The key features include inventory management, customer order tracking, and an administrative dashboard. The project is divided into 3 deliverables which will be submitted throughout the fall 2024 semester.
Deliverable 1 focused on defining the foundation of the application by identifying system requirements, creating a domain model, and implementing a database design. The following tasks were completed:
-
Requirements Model:
- Identified 15 key system requirements, including 10 functional and 5 non-functional requirements.
- Each requirement was assigned a unique ID and registered as an issue in the project backlog.
- Two use case diagrams were created to illustrate key use cases for the system, showing how different actors (e.g., store staff, customers, the owner) interact with the system.
- Detailed specifications of six use cases were documented, outlining the main flow and any alternative or exceptional flows.
-
Domain Model:
- A UML class diagram was developed to represent the relationships between entities in the system, such as games, customers, and orders.
- Key decisions made during the creation of the domain model were explained to ensure clarity and alignment with system requirements.
-
Persistence Layer:
- A PostgreSQL database was designed, and a persistence layer was developed using Hibernate to store data from the application.
- The persistence layer adheres to the domain model and allows for the correct storage and retrieval of data.
-
Testing of the Persistence Layer:
- A test suite was created to verify that the persistence layer functions correctly, including tests for reading and writing data for all domain model classes.
- The tests ensure that objects, attribute values, and references between objects are properly persisted.
-
Build System:
- A build system was set up to automate the compilation, testing, and packaging of the code, ensuring a smooth development process.
-
Project Management:
- The team utilized GitHub to manage the project backlog, assign issues, and track progress.
- A project report documented key design decisions, meeting minutes, and team contributions.
Deliverable 2 focused on the complete backend implementation, covering key areas:
-
Backend Services and Persistence Layer:
- All required use cases were implemented as business methods and made accessible through RESTful HTTP endpoints using Java Spring.
- The persistence layer from Deliverable 1 was enhanced as needed to support new backend requirements, ensuring smooth integration with the database for reliable data management.
- Each RESTful endpoint was documented with details on URLs, parameters, and expected outcomes.
-
Software Quality Assurance:
- A software quality assurance plan was created with defined target coverage for both statement and branch tests.
- Challenges in achieving the target coverage were identified and addressed.
- The achieved coverage was reported, and tests were organized into unit and integration tests as per project requirements.
-
Unit Testing:
- A comprehensive test suite was developed using JUnit to verify each business method in isolation, ensuring that unit tests did not interact directly with the database.
-
Integration Testing:
- Integration tests were developed for each REST API endpoint to verify their correct functionality, including at least one test per endpoint for both valid and invalid requests.
-
Build System:
- A Gradle-based build system was set up to automate compiling, packaging, and testing the code.
- The system includes a task to execute all tests and generate test coverage reports.
-
Project Management:
- The team utilized GitHub for project management, maintaining an organized backlog and assigning responsibilities to team members.
- A project report documented key design decisions, meeting minutes, and team contributions, ensuring traceability and effective collaboration.
The final deliverable will focus on the development of the frontend, which will provide a user-friendly interface for the store’s customers and employees. This will include creating views for browsing games, managing orders, and interacting with the administrative dashboard. The frontend will be responsive and designed to offer a seamless shopping experience across devices.
-
Creation of graphical user interface:
- Use of HTML, CSS, and JavaScript technology to implement GUI.
- Use of components (e.g. Table) to maintain consistency of the aesthetic.
- Ensured that all user types can easily navigate web app.
-
Integration of Web Frontend with Backend Service:
- Made asynchronous calls to backend services via the RESTful API
-
Build System:
- A Gradle-based build system was implemented to streamline code compilation, packaging, and testing.
- It features a task for running all tests and generating detailed test coverage reports
-
Project Management:
- The team utilized GitHub for project management, maintaining an organized backlog and assigning responsibilities to team members.
- A project report documented key design decisions, meeting minutes, and team contributions, ensuring traceability and effective collaboration.
- Because the work is done, the issue backlog is empty
Home
How to run the Application
- Domain Model
- Requirements Model
- Use Case Specifications
- Use Case Diagrams
- Deliverable 1 Testing Documentation
- Deliverable 1 Record of Operations
- Extra Notes