SDD - omkh54564/car-rental GitHub Wiki

Table Of Contents

  1. Introduction
  2. System Architecture
  3. Design Patterns and Principles
  4. Design Patterns
  5. Interaction
  6. Class diagram
  7. Data Design
  8. Generated UI Design

Introduction

The Cars Rental System vehicle rentals by offering a comprehensive platform for users to explore, and book vehicles for their transportation needs. With a diverse range of vehicles available.

The Software Design Document (SDD) presents a detailed description of the design and architecture of the Car Rental System. This document serves as a blueprint for developers, testers, and stakeholders involved in the development, implementation, and maintenance of the system. It outlines the structure, components, and functionalities of the system, providing a comprehensive guide for its construction and future enhancements.

System Architecture

The Online Car Rental System is a web-based platform designed to streamline the process of renting vehicles for various purposes. It provides users with a convenient and efficient way to search for, book, and manage car rental transactions, all from the comfort of their computer or mobile device. Components:

User Management:

  • Responsible for user authentication, registration, and profile management functionalities.
  • Ensures secure access to the system and maintains user-specific data.
  • Allows users to register, log in, manage their profiles, and handle account-related tasks securely.

Vehicle :

Stores and manages the inventory of vehicles available for rental, Provides functionalities for adding, editing, categorizing, and retrieving vehicle information.

Search Engine:

Empowers users to discover rental vehicles based on various criteria such as location, date, vehicle type, and amenities.

Booking and Reservation System:

Allows users to search for available vehicles, make reservations, and confirm bookings.

User Interface (UI):

Represents the frontend components of the system, including web pages, mobile applications, and interactive elements.

API Layer:

  • Facilitates communication and data exchange between different system components.
  • Exposes endpoints for accessing system functionalities, such as user authentication, vehicle search, and booking management.

Design Patterns and Principles

Design patterns and principles play a crucial role in shaping the architecture and implementation of software systems, including car rental platforms.

Design Patterns

Design patterns are proven solutions to recurring design problems in software development. the following design patterns have been utilized:

  • Model-View-Controller (MVC):

    MVC is a widely used architectural pattern for designing user interfaces. In the context of a car rental system, MVC can help separate the presentation layer (UI), business logic (vehicle management, booking), and data storage (database). This separation of concerns enhances maintainability and flexibility .

  • Factory Method:

    The Factory Method pattern can be employed to create instances of rental vehicles based on user requests. Different vehicle types (e.g., compact, SUV, luxury) can be implemented as subclasses of a common interface (e.g., Vehicle), with a factory method responsible for instantiating the appropriate type of vehicle based on user preferences.

  • Singleton:

    The Singleton pattern can ensure that certain components, such as the database connection pool or the user session manager, are instantiated only once throughout the lifecycle of the application. This helps manage resources efficiently and ensures consistency in data access or user session management.

Interaction

Sequence Diagram:

image

Class diagram

image

Principles

In the realm of software development, adhering to fundamental design principles is paramount to the creation of robust, maintainable, and scalable systems.

  • Single Responsibility : Each class or module within the Cars Rental system should have a single responsibility.

  • Open/Closed Principle: The Cars Rental system should be open for extension but closed for modification.

  • Liskov Substitution Principle: Objects of a superclass should be replaceable with objects of its subclass without affecting the correctness of the program.

  • Interface Segregation Principle : Clients should not be forced to depend on interfaces they don't use. Instead, interfaces should be tailored to the specific needs of clients.

  • Dependency Inversion Principle : High-level modules should not depend on low-level modules; both should depend on abstractions.

Data Design

The Online Car Rental System organizes data using a relational database. It stores information like user profiles, vehicle inventory, rentals, and reservations. Each piece of data is neatly arranged in tables with clear connections between them. This setup ensures smooth operation and easy access to information for users. Security measures are also in place to protect sensitive data like user credentials and payments.

Welcome page

image

Login page

image

Home page

image

Car search page

image

Result page

image

Generated UI Design

image image image image image