Have you ever wanted to go on a road trip with your friends? Have you ever decided to rent a car so you could all ride together? Vehi-cool Rentals can help you:
- Locate nearby car rentals
- Make a reservation for any available car
- Find an affordable car within your price range
- Provide car information such as model year and mileage.
Use our web application to find and make a reservation for your future car rental. Find the perfect car for you that is nearby. In quick simple steps, you will be all set, and your car rental will be ready!
- As a student going on a road trip with multiple friends, I want to be able to find available car rentals.
- Car rental companies have cars to rent.
- Car rental places are legit and safe.
- Car rentals are near the student's location within 30 miles.
1.1
- Given a car rental place is 25 miles from my location.
- When I input car rental places within 30 miles from my location in the search bar.
- Then I can find a car rental place that is 25 miles from my location.
1.2
- Given a Jeep Wrangler is available for rental.
- When I input "Jeep Wrangler" in the search bar.
- Then I can locate the nearby car rental with a Jeep Wrangler.
1.3
- Given a Honda Civic is available for rental.
- When I input "Honda Civic" in the search bar.
- Then I can locate the nearby car rental with a Honda Civic.
- As a student looking for a car rental, once I find the car I would like to rent, I would like to make a reservation.
- Students meet car rental companies' reservation policy.
- Students are eligible to rent a car.
- Students have a driver's license.
2.1
- Given I find a Jeep Wrangler that I would like to rent.
- When I click "rent."
- Then the website will prompt if the Jeep Wrangler is available. If so, students can input their information, such as driver's license and credit card.
2.2
- Given I find a Honda Civic that I would like to rent.
- When I click "rent."
- Then the website will prompt if the Honda Civic is available. If so, students can input their information, such as driver's license and credit card.
2.3
- Given I find a Toyota Tacoma that I would like to rent.
- When I click "rent."
- Then the website will prompt if the Toyota Tacoma is available. If so, students can input their information, such as driver's license and credit card.
- The class diagram consists of the following classes:
Car.java
: Represents a car available for rental, with attributes such as make, model, and year.Customer.java
: Represents a customer who can rent cars, with attributes like name, email, and contact number.Rental.java
: Represents a rental transaction, with attributes such as rental ID, rental dates, and associated car and customer.Payment.java
: Represents a payment made for a rental, with attributes like payment ID, amount, and payment status.RentalService.java
: Interface for managing car-rental-related operations, such as creating rentals, calculating rental charges, and processing payments.CarService.java
: Interface for managing renting-related operations, such as checking car availability, making reservations, and canceling bookings.PaymentService.java
: Interface for managing payment-related operations, such as processing payments, generating payment receipts, and handling refunds.RentalServiceImpl.java
: Interface for accessing and manipulating rental data in the persistence layer.CarServiceImpl.java
: Interface for accessing and manipulating car data in the persistence layer.CustomerServiceImpl.java
: Interface for accessing and manipulating customer data in the persistence layer.
- The classes in the diagram have relationships as follows:
Rental.java
has a one-to-one association withCar.java
, indicating that a rental is associated with a specific car.Rental.java
has a one-to-one association withCustomer.java
, indicating that a rental is associated with a specific customer.Rental.java
has a one-to-one association withPayment.java
, indicating that a rental is associated with a specific payment.- The business layer interfaces (
RentalService.java
,CarService.java
,PaymentService.java
, andCustomer Service.java
) depend on the persistence layer interfaces (RentalServiceImpl.java
,CarServiceImpl.java
,RentalServiceImpl.java, and CustomerServiceImpl.java
.). - The UI layer depends on the business layer interfaces (
RentalService.java
,CarService.java
,PaymentService.java
, andCustomerServiceImpl.java
) for interaction and functionality.
Milestones:
- UI Expansion and Unit Test Implementation
- Interface and Stub/Mock Development
- Integration of Interfaces and Stubs
- Actual Implementation and Unit Testing
- Backend-UI Coordination and JSON Output
- Logic Organization and Package Refactoring
- Completion of Unit Tests
Tasks:
-
UI Expansion and Unit Test Implementation
- Research and gather requirements for UI enhancements
- Create wireframes and design prototypes for UI improvements
- Implement UI enhancements based on wireframes and design prototypes
- Write unit tests for each non-UI class
-
Interface and Stub/Mock Development
- Identify the components requiring interfaces
- Design and define interfaces for the identified components
- Document the interfaces and their specifications
- Determine the components that require stub/mock classes
- Design and implement stub/mock classes based on the defined interfaces
- Document the stub/mock classes and their purpose
-
Integration of Interfaces and Stubs
- Collaborate with team members to exchange interfaces and stubs
- Integrate received interfaces and stubs into the project
-
Actual Implementation and Unit Testing
- Review the interfaces and stubs to understand the requirements
- Develop implementation classes that fulfill the interface specifications
- Test the implementation classes for functionality and integration
-
Backend-UI Coordination and JSON Output
- Identify the necessary communication points between backend and UI
- Implement event listeners and handlers to enable communication
- Integrate JSON output formatting for appropriate data exchange
-
Logic Organization and Package Refactoring
- Analyze the existing codebase and determine appropriate package structure
- Refactor the codebase to organize backend, business, and persistence logic into separate packages
-
Completion of Unit Tests
- Write unit tests using Behavior Driven Design syntax for each identified class
Tasked Stories for Sprint #1:
- Expand UI
- Create Interfaces for Business Logic and Persistence
- Create Stub/Mock Classes
- Swap Interfaces and Stubs with Team Members
- Program Actual Implementation Classes
- Coordinate Listening from Backend to UI
- Consider JSON Output
- Organize Backend, Business, and Persistence Logic
- Write Unit Tests
Scrum Roles:
- Scrum Master & Product Owner: Nick Johnson
- Business Layer/Backend: Levi Huff
- UI/Frontend: Jake Plagge, Wilmer Esquivel
The Vehi-cool Rentals team gets together every Tuesday @ 8pm EST on Discord