0% found this document useful (0 votes)
4 views77 pages

Manahil Project

The document outlines a project proposal for an online car rental system, detailing its goals, objectives, and the technologies to be used. It emphasizes the importance of clear requirements, project scope, and timelines for successful development. Additionally, it includes sections on project feasibility, costing, and a high-level overview of system components and architecture.

Uploaded by

Syed Qasir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views77 pages

Manahil Project

The document outlines a project proposal for an online car rental system, detailing its goals, objectives, and the technologies to be used. It emphasizes the importance of clear requirements, project scope, and timelines for successful development. Additionally, it includes sections on project feasibility, costing, and a high-level overview of system components and architecture.

Uploaded by

Syed Qasir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 77

Chapter 1: Final Project Proposal

1.1 Introduction

Overview of the Proposal

The project proposal for the car rental system is a comprehensive document outlining the
development process for an online car rental platform. This proposal covers everything from
the problem identification, the solution offered, to the technologies chosen and the system
architecture. The goal of the project is to create a system that enables users to rent vehicles from
various car rental agencies easily through a web application.

An essential part of the proposal is the breakdown of functional and non-functional


requirements, which will guide the development phase. Additionally, tools, technologies, and
the methodology for software development are clearly defined to ensure efficiency throughout
the project lifecycle.

Key Components of a Good Proposal

A well-crafted proposal is the backbone of any successful project. In this case, the proposal is
designed to:

 Define the project’s scope: This ensures the project stays on track and focuses on what
is necessary.
 Outline the goals: These goals describe the overall purpose of the project (e.g.,
improving the car rental process).
 List the objectives: Measurable and specific goals that define success (e.g., allowing
customers to book cars within 5 minutes of logging in).
 Provide timelines and milestones: This ensures that stakeholders can track progress and
assess whether the project is on schedule.
 Describe tools and platforms: This ensures that there is a clear understanding of the
resources used in the project development.

Importance of Clear Requirements, Scope, and Schedule

Clear requirements are the foundation of the project. They define what the system should do and
how it should behave under different circumstances. This ensures that the developers build
exactly what the stakeholders need without wasting time on unnecessary features. The scope
helps to focus on the essential elements of the system and avoid feature creep. A well-defined
schedule outlines each step of the project, from planning to implementation, ensuring timely
delivery.
This clarity is especially important for the Car Rental System, where users expect a seamless
and error-free experience. If any part of the project’s goals, scope, or timeline is vague, it can
lead to misunderstandings or delays.

1.2 Project Title

Crafting a Clear and Concise Title

The title is critical because it encapsulates the project’s essence in a short form. A well-crafted
project title helps set expectations and provides clarity.

For instance, the proposed project title:


"Django-Based Car Rental System: A Web Application for Managing Car Rentals"
This title provides a concise summary of the project, indicating both the technology stack
(Django) and the purpose (car rental management).

The title should:

 Reflect the technology being used (e.g., Django).


 Clearly describe the function of the system (car rental management).
 Be short and to the point: It should not be overly long, but rather provide all necessary
context in a few words.

Importance of a Strong Project Title

A strong project title serves multiple purposes:

 Clarity: It immediately tells the reader what the project is about.


 Engagement: It piques interest by being both specific and concise.
 Professionalism: A good title reflects the seriousness and structure of the proposal,
leaving a positive impression on stakeholders.

1.3 Project Overview Statement

Purpose of the Project Overview

The Project Overview section serves as an executive summary. Its primary goal is to provide a
brief but comprehensive introduction to the project. The overview should give readers a clear
picture of the problem that is being solved, the proposed solution, the technology to be used, and
the impact the system will have.
Key Points to Include in the Overview

1. Problem Identification
Car rental businesses often struggle with inefficient manual booking systems, lack of
customer engagement, and poor management of car inventory. These issues can result
in poor customer experiences, delays, and mistakes in rental bookings. Moreover,
manual processes can lead to an increase in operational costs due to time-consuming
tasks.
2. Solution
The proposed Car Rental System is a web-based application that automates the entire
process. It allows users to search for available cars, book rentals online, make payments,
and manage their profiles. Administrators will be able to manage car listings, track
reservations, and handle payments efficiently through a simple dashboard.
3. Target Audience
The system is designed for two main user groups:
o Customers: Individuals or businesses needing a rental vehicle.
o Administrators: Rental companies responsible for managing the fleet of cars,
processing reservations, and payments.
4. Technology
The platform will be built using the Django framework for the back-end, which is
known for its robustness, scalability, and security. MySQL will be used for data storage
and management, ensuring efficient querying and reliable data handling. The front-end
will use HTML, CSS, and JavaScript to ensure a responsive, user-friendly interface.

1.4 Project Goals & Objectives

Project Goals

The primary goals of the Car Rental System are:

1. Efficiency: Automate and streamline car rental processes for both customers and
administrators.
2. Customer Satisfaction: Provide a seamless and intuitive user experience, ensuring that
customers can easily rent cars online.
3. Scalability: The system should be scalable to handle a growing number of car listings,
users, and transactions as the business expands.
4. Security: Protect user data and payment information through secure encryption, data
validation, and compliance with data protection laws.

Project Objectives

1. User Registration and Profile Management: Implement a secure authentication system


for customers to register, log in, and update their profiles.
2. Car Listings Management: Develop an intuitive admin panel for adding, updating, and
deleting cars. Admins can set car availability, prices, and descriptions.
3. Search and Booking System: Allow customers to search for available cars based on
location, dates, and type of car, and make bookings online.
4. Payment Integration: Integrate a reliable payment gateway such as Stripe or PayPal to
securely process payments.
5. Admin Panel for Car and User Management: Provide a dashboard for administrators
to manage car listings, bookings, and users.

1.5 High-level System Components

Component No. 1: Car Management

The Car Management system will enable administrators to:

 Add new cars: Admins can upload car details, including the vehicle make, model, daily
rental price, and image.
 Update car details: Admins can update details like car availability, price adjustments, or
other metadata.
 Delete cars: If a car is no longer available for rent, the admin can remove it from the
system.

Component No. 2: User Management

The User Management system will include features such as:

 User registration: Customers will create accounts to save their preferences, booking
history, and payment methods.
 Profile management: Users can view and edit their profiles, such as updating contact
details or changing their password.
 Security: The system will employ password hashing and SSL certificates to ensure
data privacy.

Component No. 3: Rental Management

This module will:

 Handle reservations: Customers can book cars for specific dates, which will be tracked
in the system.
 Confirm bookings: After a successful booking, the user receives a confirmation email
with booking details.
Component No. 4: Payment System

The payment module will integrate with external payment processors (e.g., Stripe, PayPal) to
securely process credit card payments and provide an invoice to the user.

1.6 List of Optional Functional Units

Optional Features

 Mobile App: Create a mobile version of the platform to expand accessibility and increase
user engagement.
 Analytics Dashboard: A detailed reporting feature to help admins track bookings,
revenues, and customer behavior.
 User Ratings: Allow customers to rate and review their rental experience, helping
improve service quality.

1.7 Exclusions

Features Not Included

 Offline car rentals: The system will focus exclusively on online booking and rental
management, excluding offline or manual processes.
 Global Expansion: Initially, the system will cater to a single location or region. Future
updates may allow for global service availability.

1.8 Application Architecture

System Architecture Type

The three-tier architecture will be employed:

1. Presentation Layer (UI): Built with HTML/CSS and JavaScript to provide an intuitive
interface.
2. Business Logic Layer: Developed using Django, which serves as the backend and
manages the business logic.
3. Data Layer: MySQL database to store all user, car, and payment data securely.
Architecture Diagram

A diagram depicting the interaction between the user interface, Django back-end, and MySQL
database will be included in this section.

1.9 Gantt Chart

Timeline and Milestones

The Gantt chart will break the project down into clear phases, including:

 Requirement gathering: 2 weeks


 System design: 3 weeks
 Development: 10 weeks
 Testing: 4 weeks
 Deployment: 2 weeks

1.10 Hardware and Software Specifications

Hardware

 Cloud server: 4GB RAM, 100GB storage.

Software

 Backend: Django framework


 Frontend: HTML/CSS, JavaScript
 Database: MySQL

1.11 Tools and Technologies Used with Reasoning

Tools and Technologies

 Django: A powerful Python framework for rapid development and scalability.


 MySQL: A relational database that will store the system’s data.
 HTML/CSS: The building blocks for the user interface.
 Stripe/PayPal: Payment gateways for secure payment processing.
Chapter 2: First Deliverable

2.1 Introduction

The First Deliverable is the first major output of the project and is essential for ensuring that the
project progresses according to plan. This deliverable establishes the foundation for the project
by defining the project's feasibility, scope, costs, timelines, and resources required. It also
introduces the key components that will be tackled in the project, including the tools and
technologies, team roles, and risk management strategies.

Key Elements of the First Deliverable:

1. Project Feasibility
2. Project Scope
3. Project Costing
4. Task Dependency Table
5. Critical Path Method Analysis (CPM)
6. Gantt Chart
7. Introduction to Team Members
8. Tasks and Member Assignment Table
9. Tools and Technologies
10. Vision Document
11. Risk List
12. Product Features

Each section focuses on providing clarity on different aspects of the project to ensure a smooth
and successful development process. The diagrams and tables provided will serve to support
and visually represent the core concepts discussed.

2.2 Project/Product Feasibility Report

A Feasibility Report is critical to assess the viability of the proposed project before significant
resources are invested. It evaluates multiple dimensions such as technical, economic, schedule,
and operational feasibility to determine whether the project is practical.

2.2.1 Technical Feasibility

Technical feasibility investigates whether the required technologies and resources are available
to successfully develop and implement the Car Rental System.

 Key Questions:
o Do we have the necessary technical expertise within the team to implement the
project?
o Are the technologies, such as Django and MySQL, suitable for building the
project?
o Do we have the infrastructure to support the development and deployment of the
system?
 Considerations:
o The use of Django for the back-end provides robust features for rapid
development, security, and scalability.
o The use of MySQL as the relational database ensures reliable data storage and
management.
o The front-end technologies (HTML, CSS, and JavaScript) are widely supported
and suitable for creating a responsive user interface.

2.2.2 Operational Feasibility

Operational feasibility examines the system's ability to function within the existing operational
framework of the organization, evaluating the ease of implementation and integration into daily
operations.

 Key Questions:
o Can the team operate and maintain the system after deployment?
o Are the end-users (customers and admins) able to easily interact with the system?
o Will the system require significant training for operational staff?
 Considerations:
o The admin panel has been designed to be intuitive for administrators to manage
cars, bookings, and payments.
o The system will include user manuals and training materials for new users and
administrators.

2.2.3 Economic Feasibility

Economic feasibility involves assessing the project’s costs and benefits to determine whether it
makes financial sense to proceed with development.

 Cost Estimates:
o Development Costs: One-time costs for software development, hardware
infrastructure, and team resources.
o Maintenance Costs: Ongoing costs for system updates, bug fixes, and support.
 Benefit Estimates:
o Tangible Benefits: Increased revenue from car rentals, reduced operational costs,
and improved customer satisfaction.
o Intangible Benefits: Enhanced brand reputation, better user experience, and long-
term customer loyalty.
2.2.4 Schedule Feasibility

Schedule feasibility assesses the likelihood of completing the project on time.

 Considerations:
o The project will be divided into phases: requirements gathering, design,
development, testing, and deployment.
o The timeline for each phase is outlined in the Gantt Chart.

2.2.5 Specification Feasibility

Specification feasibility looks at whether the project’s requirements are clearly defined,
achievable, and within scope.

 Key Questions:
o Are the project requirements clear and specific enough to guide development?
o Are the scope boundaries well-defined, and does the team understand them?

2.2.6 Information Feasibility

This assesses the quality, completeness, and reliability of the data used within the system.

 Considerations:
o Ensuring user data, payment information, and car rental data are accurate,
consistent, and up-to-date.

2.2.7 Motivational Feasibility

Motivational feasibility looks at the enthusiasm and willingness of the stakeholders to carry out
the necessary tasks.

 Considerations:
o Are team members motivated and clear about their roles and responsibilities?
o Does the system align with the stakeholders' goals?

2.2.8 Legal & Ethical Feasibility

This involves checking that the system adheres to legal and ethical standards.

 Considerations:
o Compliance with GDPR (for data protection) and relevant payment security
regulations.
o Ensuring that there are no violations of intellectual property or other ethical
concerns.
2.3 Project/Product Scope

The scope defines the boundaries of the project, specifying what is included and what is
excluded from the development.

 Included Features:
o User Registration and Profile Management: Secure user sign-up, login, and
profile updates.
o Car Management System: Admins can add, update, and remove car listings.
o Booking System: Customers can search for available cars, book them, and
receive confirmation.
o Payment Integration: Integration with Stripe or PayPal for processing
payments.
o Admin Dashboard: A management interface for overseeing car rentals,
payments, and users.
 Scope Management:
o Requirements and features will be prioritized and implemented incrementally,
ensuring a focus on the most important functionalities first.

2.4 Project/Product Costing

Project Costing is critical to determine the resources needed to complete the project within
budget. Accurate costing helps ensure the project is financially viable.

2.4.1 Project Cost Estimation by Function Point Analysis

Function Point Analysis (FPA) measures the size of the system based on its functionality, and the
total project cost is derived based on this measurement.

 Formula:

Cost=FP×(0.65+0.01×Functionality Adjustment Factor (Fi))\text{Cost} = \text{FP} \times \


left( 0.65 + 0.01 \times \text{Functionality Adjustment Factor (Fi)} \
right)Cost=FP×(0.65+0.01×Functionality Adjustment Factor (Fi))

Where FP is the total number of function points, and Fi is the adjustment factor based on
the system's complexity.

2.4.2 Project Cost Estimation by using COCOMO'81 (Constructive Cost Model)

The COCOMO model provides detailed estimates based on historical data for similar projects.

 Estimation Formula:
o Effort: Calculated in person-months (PM) using the formula for different project
types (e.g., Organic, Semi-detached, Embedded).

2.4.3 Activity-Based Costing (ABC)

Activity-Based Costing allocates costs based on the activities performed.

 Key Cost Drivers:


o Resources required for each activity.
o The duration of each task.

2.5 Task Dependency Table

A Task Dependency Table lists tasks and their dependencies. It helps in organizing and
scheduling tasks efficiently.

Table: Task Dependency Table


Task Name Duration (days) Dependencies

T1 8 None

T2 15 None

T3 15 T1 (M1)

T4 10 None

T5 10 T2, T4 (M2)

T6 5 T1, T2 (M3)

T7 20 T1 (M1)

T8 25 T4 (M5)

T9 15 T3, T6 (M4)

T10 15 T5, T7 (M7)

T11 7 T9 (M6)

T12 10 T11 (M8)


2.6 CPM - Critical Path Method

Critical Path Method (CPM) identifies the longest sequence of dependent tasks and helps
predict the project completion time. The activities on the critical path cannot be delayed without
delaying the overall project.

Steps in CPM:

1. Specify all activities.


2. Establish the sequence of tasks.
3. Create a network diagram showing task dependencies.
4. Estimate the duration for each task.
5. Identify the critical path, which represents the longest duration path through the project.
6. Update the CPM diagram as the project progresses.

2.7 Gantt Chart

A Gantt Chart visually represents the timeline of tasks and their respective durations.

Gantt Chart Example


Task Start Date End Date Duration Dependencies

Task 1 01/01/2025 01/09/2025 8 days None

Task 2 01/01/2025 01/16/2025 15 days None

Task 3 01/10/2025 01/25/2025 15 days Task 1


2.8 Introduction to Team Members

In this section, introduce the team members involved in the project. Each member's skill set and
responsibilities should be outlined.

 Jane: Developer - Responsible for building the back-end using Django.


 Anne: Designer - Responsible for creating the UI design using HTML/CSS.
 Fred: Tester - Responsible for testing the system and ensuring bug-free operations.

2.9 Task and Member Assignment Table

This table assigns tasks to specific team members, ensuring that each task is completed by the
appropriate individual based on their skills.

Table: Task and Member Assignment


Task Member Role

Task 1 Jane Developer

Task 2 Anne Designer


Task Member Role

Task 3 Fred Tester

2.10 Tools and Technologies with Reasoning

This section outlines the tools and technologies used for both the front-end and back-end
development. The reasons for selecting these tools are also provided.

 Django: Chosen for its ease of use, scalability, and security features.
 MySQL: A relational database management system chosen for its robustness and
reliability.
 HTML/CSS/JavaScript: Standard front-end technologies for building the user interface.
 Stripe/PayPal: Integrated payment systems for secure transactions.

2.11 Vision Document

The Vision Document defines the core objectives of the system, including key features and use
cases.

Key Features:

 User Registration: Secure account creation and login.


 Car Management: Admin interface for managing car details.
 Booking System: A system for booking cars online.

2.12 Risk List

The Risk List identifies potential risks to the success of the project and suggests mitigation
strategies.

Risk Table
Risk Description Mitigation Strategy

Resource unavailability Cross-train team members

Delay in payment gateway integration Use reliable third-party services


2.13 Product Features/ Product Decomposition

This section breaks down the system features into smaller, manageable components to ensure
each aspect of the system is thoroughly developed.

Product Features:

 Car Booking System:

Customers can book cars for specific dates.

 Payment:

Secure use local payment method as Mobile accounts and Banks .

 Admin Panel:

Dashboard for managing users and cars.

Chapter 3: Second Deliverable For Object-Oriented Approach

3.1 Introduction:

The requirements engineering process plays an essential role in ensuring that the car rental
system meets user needs. It involves gathering, analyzing, specifying, and validating system
requirements to ensure that the final product is of high quality and fulfills all user requirements.
For the Car Rental System, the goal is to ensure all customer interactions, administrative
functionalities, and payment systems are automated and efficient.

Key Phases in the Requirements Engineering Process for the Car Rental System:

1. Requirements Elicitation: Involves gathering information from stakeholders like


customers, rental agencies, and administrators to understand their needs.
2. Requirements Analysis and Negotiation: The system must satisfy user needs while
balancing constraints like cost and time.
3. Requirements Specification: The requirements must be specified in a clear and
unambiguous manner to guide the system's design.
4. System Modeling: Using visual diagrams to represent how the system will behave (e.g.,
Use Case Diagrams, DFDs).
5. Requirements Validation: Ensuring that all requirements have been captured correctly
and will be fulfilled by the system.
6. Requirements Management: Tracking and managing requirements throughout the
project lifecycle.

The system specification will provide the foundational details needed for design and
implementation.

3.1.1 System Specifications

The System Specifications document provides a detailed overview of the system's functionality
and architecture. For the Car Rental System, it includes the following clauses:

Introduction

This clause introduces the Car Rental System, its purpose, and how it benefits both customers
and rental companies. The system allows customers to search for and book rental cars online,
while providing rental agencies with tools to manage bookings, car inventories, and customer
interactions.

Existing System

Currently, car rental businesses often use manual systems for booking, inventory management,
and customer management. These manual processes lead to inefficiencies, booking errors, and
customer dissatisfaction. The new system aims to automate these processes to increase efficiency
and improve the customer experience.

Organizational Chart

The system involves several departments, such as:

1. Admin Department: Manages car listings, customer records, bookings, and payments.
2. Customer Service: Handles customer queries and assists with bookings.
3. Finance Department: Manages payments, refunds, and invoicing.

Diagram to Include:
 Organizational Chart of the Car Rental System:


 Scope of the System

The scope of the Car Rental System includes the following business areas:

1. Customer Account Management: Customers can register, log in, and manage their
profiles.
2. Car Listings: Admins can manage the car inventory, including pricing, availability, and
details.
3. Booking System: Customers can search for available cars, make bookings, and receive
booking confirmations.
4. Payment Gateway: Integration with third-party payment systems (like Stripe or PayPal)
for processing payments.

3.1.2 Identifying External Entities

External entities are users or systems that interact with the Car Rental System. They include:
1. Customer: The user who rents a car.
2. Admin: The user who manages car listings, customer data, and booking details.
3. Payment Processor: External service (like Stripe or PayPal) used for processing
customer payments.

Over-Specify Entities from Abstract

Entities identified in the abstract may include:

 Customer: Manages profiles, searches for cars, and places bookings.


 Admin: Manages cars, bookings, users, and payments.
 Payment Processor: Handles online payments.

Diagram to Include:

 External Entities Diagram:


3.1.3 Context-Level Data Flow Diagram (DFD)

The Context-Level DFD provides a high-level overview of the entire system. It represents the
system as a single process and illustrates how external entities interact with it. This diagram does
not show internal processes or data stores.

Diagram to Include:

 Context-Level DFD: Depicts the system as a single process and its interactions with
external entities like customers, admin, and payment processors.

3.1.4 Capture "Shall" Statements

The "shall" statements outline the system's functional requirements. These statements are
typically phrased as:

1. "A customer shall register an account"


2. "The system shall display available cars based on customer input"
3. "The system shall allow customers to make a payment for bookings"

These statements form the core of the system’s functionality and serve as the foundation for the
design.
3.1.5 Allocate Requirements

Once the requirements are captured, they must be allocated to specific use cases. For example:

 UC_Register_Customer: Handles the registration process for customers.


 UC_Book_Car: Manages the process of booking a car.
 UC_Payment_Processing: Handles payment transactions.

3.1.6 Prioritize Requirements

Not all requirements are equally urgent. Some requirements must be addressed immediately,
while others can be handled later. For example:

 Highest Priority: Account creation, car booking, payment processing.


 Medium Priority: Customer profile updates, booking history tracking.
 Lowest Priority: User reviews, advanced reporting features.

3.1.7 Requirements Traceability Matrix (RTM)

The Requirements Traceability Matrix (RTM) is used to track which requirements have been
implemented and tested. It links the system requirements to corresponding use cases and ensures
that each requirement is addressed.

Sr# Para # System Specification Text Use Case Name Category

1 1.0 A customer shall register an account UC_Register_Customer Business

2 2.0 The system shall process payments UC_Payment_Processing Functional

3.2 Example (Car Rental System)

3.2.1 Introduction

The Car Rental System allows customers to search for cars, make bookings, and process
payments online. Administrators manage car listings, handle customer data, and process
bookings.

3.2.2 Existing System


Currently, the system relies on manual processes for booking, inventory management, and
payment processing, which results in inefficiencies. The new system will automate these
processes to provide a seamless experience for both customers and admins.

3.2.3 Scope of the System

The Car Rental System is divided into several phases:

 Phase I: Customer account management, car listing, and booking.


 Phase II: Admin dashboard, payment processing, and reporting.
 Phase III: Mobile app integration, customer feedback system.

3.2.4 Summary of Requirements

Key requirements include:

1. Customer Registration: Customers can create accounts to save preferences and booking
history.
2. Car Booking: Customers can search for available cars, make bookings, and receive
confirmation.
3. Payment Processing: Integration with external payment systems to handle transactions
securely.

3.2.5 Identifying External Entities

The system interacts with the following external entities:

1. Customer: Registers, books cars, and makes payments.


2. Admin: Manages car inventory, customer data, and bookings.
3. Payment Gateway: Handles payment processing.

3.2.6 Capture "Shall" Statements

For example:

 "The customer shall register an account".


 "The system shall process payments".
These statements outline the functionality of the system.

3.2.7 Allocate Requirements

Each requirement is mapped to a use case:

1. "The customer shall register an account" → UC_Register_Customer


2. "The system shall process payments" → UC_Payment_Processing

3.2.8 Prioritize Requirements

Para # Rank Initial Requirements Use Case Name

1.0 Highest A customer shall register an account UC_Register_Customer

2.0 Medium The system shall process payments UC_Payment_Processing

3.2.9 Requirements Traceability Matrix

Sr# Para # System Specification Text Use Case Name Category

1 1.0 A customer shall register an account UC_Register_Customer Business

2 2.0 The system shall process payments UC_Payment_Processing Functional

3.2.10 High-Level Use Case Diagram

This high-level use case diagram illustrates the major system functionalities and the interactions
between external actors and the system.

 High-Level Use Case Diagram


3.2.11 Analysis-Level Use Case Diagram

This analysis-level use case diagram elaborates on the high-level diagram, detailing the
individual use cases and interactions within the system. It expands the general flow of the high-
level diagram into more specific activities.

Diagram to Include:

 Analysis-Level Use Case Diagram


3.2.12 Use Case Description

Each use case is documented with:

 Brief Description: Summarizes the purpose of the use case.


 Preconditions: Conditions that must be met before the use case begins.
 Basic Flow: Describes the standard interaction between the user and the system.
 Alternate Flows: Describes any deviations from the basic flow (e.g., error handling).
 Postconditions: Defines the system's state after the use case is completed.

Chapter 4: Third Deliverable For Object-Oriented Approach

4.1 Introduction

The third deliverable represents the software design phase, which follows the requirements
analysis phase. In the previous deliverable, we identified the functional and non-functional
requirements, and understood the current situation of the problem domain. Now, we transition
into design, where we aim to formulate the solution to the problem using object-oriented
principles.

This phase involves creating various artifacts that will guide the implementation process,
including:

1. Domain Model
2. System Sequence Diagram
3. Sequence Diagram
4. Collaboration Diagram
5. Operation Contracts
6. Design Class Diagram
7. State Transition Diagram
8. Data Model

Each of these artifacts is a tool for visualizing and structuring the system, ensuring that the
system’s architecture is sound and can be efficiently translated into code. Below, we will go into
more detail about each of these artifacts and their importance in the design phase.

4.2 Domain Model

4.2.1 Purpose of Domain Model

The Domain Model is a high-level conceptual representation of the business entities and their
relationships within the system. It is an essential artifact because it provides an abstract view of
the system’s functionality and helps to define how various components interact with each other
without focusing on implementation details. The domain model is crucial because it defines the
structure and behavior of the system, which serves as the foundation for the detailed design
phase.

4.2.2 Definition of Domain Modeling


Domain modeling is the process of identifying and representing the key business objects and
their relationships. It allows us to visualize how data will flow and how different entities will
interact in the real-world business context. In object-oriented design, domain modeling
translates into identifying conceptual classes, their attributes, and methods, and associations
between them. By doing so, it creates a clear blueprint for further system development.

In the case of the Car Rental System, this would include modeling entities like:

 Customer: Represents the user interacting with the system to rent a car.
 Car: Represents the vehicle being rented.
 Booking: Represents a rental transaction, capturing details like dates, the customer
renting the car, and the car’s availability.

4.2.3 Key Concepts in Domain Modeling

The domain model will focus on the conceptual classes, associations, and attributes. Each
class will have attributes that describe its state and methods that define its behavior. For
instance:

 Car will have attributes like CarID, Model, Price, and Availability.
 Customer will have attributes like CustomerID, Name, Email, and BookingHistory.

The associations describe how these entities relate to one another, such as:

 A Customer can make multiple Bookings.


 Each Booking is associated with a Car.

4.2.4 Steps in Domain Modeling

1. Identify Key Business Objects: Determine the core business entities such as Customer,
Car, Booking, and Payment.
2. Define Relationships: Understand how these entities relate, e.g., Customer makes
Bookings, Booking has a Car, etc.
3. Define Attributes and Methods: List the attributes and methods for each object,
ensuring they align with the business functionality.
4. Refinement: Iterate the model as the system’s design evolves, adjusting for any new
requirements or clarifications.

4.3 System Sequence Diagram (SSD)

4.3.1 Purpose of System Sequence Diagram (SSD)

The System Sequence Diagram (SSD) is a critical artifact in object-oriented design that
visually represents the sequence of events triggered by a user’s action. It provides a temporal
view of the system's interaction with external actors, such as customers, administrators, or other
external systems. The purpose of the SSD is to capture the high-level system events and
operations that occur in response to these events, ensuring that the system’s response is timely,
accurate, and correctly structured.

In other words, the SSD outlines the order of interactions between actors (external entities such
as users or systems) and the system (the core software), helping to understand the overall flow of
control within the system. It ensures that developers, architects, and stakeholders understand how
the system reacts to different stimuli, making it easier to implement and debug system behavior.

4.3.2 Detailed Description of SSD

The System Sequence Diagram represents the events in a time-ordered sequence, typically
progressing from top to bottom. The SSD’s focus is on the system's response to an event rather
than the internal details of how those responses are executed. Each interaction is represented as a
message sent from an actor to the system, causing a system operation to execute.

For example, consider the Car Rental System where a Customer initiates a Booking:

1. Customer searches for a car: The SSD shows the Customer sending a message to the
system, which processes the search request.
2. System searches the database: The system checks car availability based on the
customer’s search parameters (car type, date, etc.).
3. System returns the available cars: After searching, the system responds by sending
back a list of available cars.
4. Customer selects a car: The Customer selects a car from the list, and the SSD shows
another message to the system, which triggers the booking process.
5. Payment processing: The system then calls a Payment function to verify and process
the payment.
6. Booking confirmation: Once the payment is processed successfully, the system sends a
confirmation message to the Customer confirming the booking.

4.3.3 Events and Operations in the SSD

The events in the SSD represent the user actions or external triggers that initiate system
responses. These include user inputs like clicks, button presses, or requests for information.

Each event in the diagram corresponds to an operation within the system that is triggered by the
external event. An operation is a system function that is responsible for responding to the event,
performing tasks like validating inputs, querying databases, or sending outputs to external
systems or users. For example:

 Search for Cars: An operation in the Car Rental System might query the Car
Database for cars available during a particular date range.
 Process Payment: An operation might involve communicating with an external
Payment Gateway to process the Customer's payment securely.
Each event and its corresponding system operation is represented as a message in the SSD,
making it easy to see how interactions occur over time.

4.3.4 Actor Interaction

In an SSD, the actors represent external entities such as users or external systems that interact
with the system. An actor is shown as a rectangle on the left side of the diagram, with the
system being represented on the right side. The system is often depicted as a single entity or
process that performs the operations in response to actor messages.

There can be multiple actors in a system, depending on the complexity and functionality of the
application. For example:

 A Customer actor may trigger the Booking process, while an Admin actor could trigger
the Car Inventory Management process.
 In some systems, there might be automated external systems that interact with the system
(like Payment Processors), which are also depicted as actors in the SSD.

The actors send messages to the system, which, in turn, sends messages back to them, forming a
complete interaction loop. This interaction helps clarify the system’s behavior when multiple
external actors are involved.

4.3.5 Diagrams in SSD

The System Sequence Diagram is created by following these key steps:

1. Actors and System: The actors are listed on the left side of the diagram, and the system
or its components are depicted on the right.
2. Messages: Events are depicted as arrows from the actors to the system, and from the
system back to the actors. These arrows represent the messages exchanged between the
actors and the system, which can trigger system operations.
3. Operations: Each arrow from the system represents an operation or a method call in the
system’s functionality. The names of the operations are typically written next to the
arrows to clearly show which operation is being invoked.
4. Return Messages: After an operation completes, the system returns a response to the
actor, which is shown as a dashed arrow. This response could be a confirmation, error
message, or data.

4.3.6 Example: SSD for Car Rental Booking

Let’s break down the example of a Car Rental Booking process in the System Sequence
Diagram:

1. Customer searches for available cars:


o Actor: Customer
o System Operation: searchAvailableCars(searchCriteria)
o Message: Customer sends search criteria (car type, date) to the system.
2. System checks car availability:
o System Operation: checkAvailability(cars, searchCriteria)
o Message: System checks its inventory for cars matching the search criteria.
o Return Message: System sends a list of available cars to the customer.
3. Customer selects a car:
o Actor: Customer
o System Operation: selectCar(carID)
o Message: Customer selects a car, sending the carID to the system.
4. System processes the booking:
o System Operation: processBooking(customerID, carID)
o Message: System creates a booking record for the customer and car.
o Return Message: Booking confirmation is sent to the customer.
5. Payment:
o Actor: Customer
o System Operation: processPayment(paymentInfo)
o Message: Customer sends payment details to the system.
6. System processes payment:
o System Operation: processPayment(paymentInfo)
o Message: System sends payment details to external Payment Gateway.
o Return Message: Payment confirmation sent back to the system.
o Return Message: System sends final booking confirmation to the Customer.

4.3.7 Benefits of Using SSD

 Clarifies System Behavior: The SSD shows a clear and concise view of how the system
should respond to each event, ensuring that the requirements are properly captured.
 Improves Communication: It serves as a great tool for communication between
designers, developers, and stakeholders, helping everyone understand how events and
system responses are structured.
 Highlights Missing Steps: By visualizing the events and responses, the SSD helps
identify missing functionality or missing system responses.
 Simplifies Development: It provides a direct reference for developers to implement
sequential events based on user actions.

4.3.8 Diagram of System Sequence Diagram

Below is a simplified illustration of the System Sequence Diagram for a Car Rental Booking
process:
4.4 Sequence Diagram

4.4.1 Purpose of Sequence Diagram

A Sequence Diagram is a dynamic model in UML (Unified Modeling Language) that


represents the sequence of events in the system. It visually illustrates how objects interact in a
time-ordered sequence, focusing on the order of interactions between objects or classes to
accomplish a specific task or use case. The sequence diagram helps developers visualize how
operations are invoked, in which order, and what the resulting actions are. It also clearly
shows the roles of objects, how they interact, and their lifetimes during the interaction.

In essence, a Sequence Diagram is primarily used to model method calls, the flow of control,
and data exchanges between objects within the system during a specific scenario.

For example, in the Car Rental System, a Sequence Diagram could represent how a Customer
interacts with the system to book a car, how the system checks for availability, and how payment
is processed.

4.4.2 Description of Sequence Diagram

A Sequence Diagram is created for each use case or scenario to describe how the system behaves
in response to specific user interactions.

 Lifelines: Represent the existence of objects over time. The lifeline is a vertical dashed
line that indicates the time span of an object’s participation in the interaction.
 Messages: Show communication between objects. The arrows between the lifelines
represent messages that are sent between objects in response to an event. These messages
can represent method calls, data retrieval requests, or other interactions.
 Activation: The activation box represents the time when an object is active or
performing an operation. It is placed on the object’s lifeline to show when an operation
is invoked.
 Return Messages: These are dashed arrows that indicate a response or result after the
operation is completed. The return message can be data, a confirmation, or an
acknowledgment.
 Loops and Conditionals: You can also represent loops or conditional statements in a
Sequence Diagram. Loops are drawn as a rectangular frame with a loop condition, and
conditionals are depicted as alternative paths with guards.

4.4.3 Sequence Diagram Example

For a Car Rental System, let’s consider the Booking a Car scenario. Here is a detailed
breakdown of the interaction between the Customer and the system:
1. Customer Searches for Available Cars
o The Customer sends a request message to the Car Rental System with the
search criteria (e.g., car type, date, location).
o The system receives the request and queries the Car Database for available cars.
2. System Returns Available Cars
o The system sends the list of available cars back to the Customer, including
details like price, model, and availability.
3. Customer Selects a Car
o The Customer selects a car from the list and sends a message to the system to
proceed with the booking.
4. System Creates Booking Record
o The system creates a Booking record in the database, associating the Customer
with the selected Car.
5. System Initiates Payment Process
o The system sends a message to the Payment Gateway to initiate payment
processing.
6. Customer Makes Payment
o The Customer provides payment details, and the Payment Gateway processes
the payment.
7. System Confirms Booking
o Once payment is confirmed, the system sends a booking confirmation back to
the Customer.

4.4.4 Basic Symbols and Notations in Sequence Diagrams

Here’s a breakdown of the basic symbols used in Sequence Diagrams:

1. Lifeline:
o Represented by a vertical dashed line. It indicates an object’s existence during
the interaction.
2. Activation Box:
o A rectangular box on the lifeline that shows when an object is performing a
method or operation.
3. Messages:
o Solid arrows represent synchronous messages where one object invokes a
method on another.
o Dashed arrows represent the return of a message or data.
o Half-arrowed lines represent asynchronous messages where the sender does not
wait for a response.
4. Loops:
o Rectangular frames can be used to represent repeated actions (loops), showing
the conditions under which the loop runs.
5. Conditional:
o Alternative paths are shown as branching paths with conditions written inside
square brackets ([ ]).

4.4.5 Sequence Diagram of Car Rental Booking Process

Below is an illustration of a simplified Sequence Diagram for the Car Rental Booking process:

sql
CopyEdit
+----------------+ +--------------------+ +-------------------+
| Customer | | Car Rental System | | Payment Gateway |
+----------------+ +--------------------+ +-------------------+
| | |
| searchCars() | |
|----------------------->| |
| | |
| | availableCarsList() |
| |------------------------->|
| | |
| selectCar(carID) | |
|----------------------->| |
| | |
| | createBooking() |
| |------------------------->|
| | |
| | initiatePayment() |
| |------------------------->|
| | |
| |<-------------------------|
| | paymentConfirmation |
|<-----------------------| |
| | |
| bookingConfirmation | |
|----------------------->| |
+----------------+ +--------------------+ +-------------------+

In the diagram:

 The Customer interacts with the Car Rental System, starting the process with a search
for cars, followed by the selection of a car and a payment process.
 The Payment Gateway processes the payment and returns a confirmation, which is then
sent back to the Customer.

4.4.6 Benefits of Sequence Diagrams

1. Clarifies System Behavior: By showing the interactions between objects over time,
Sequence Diagrams make it clear how each object behaves in response to user actions.
2. Helps with Implementation: Sequence diagrams offer a direct reference for developers
when implementing specific features, such as booking or payment processing.
3. Visualizes Object Collaboration: It helps to understand the relationships between
different objects and their messages, providing insight into the structure and interactions
of the system.
4. Simplifies Debugging: By mapping out the interactions step-by-step, Sequence
Diagrams can also help identify potential issues in the sequence of operations or in the
way objects are interacting.

4.4.7 Diagram of Sequence Diagram


4.5 Collaboration Diagram

4.5.1 Purpose of Collaboration Diagram

A Collaboration Diagram, also known as a Communication Diagram in UML (Unified


Modeling Language), represents the interactions between objects or entities in a system through
the use of links and messages. Unlike Sequence Diagrams, which emphasize the sequence of
interactions over time, a Collaboration Diagram emphasizes the structure of the system and
the relationships between the objects involved in a particular interaction.

The purpose of the Collaboration Diagram is to show how objects interact and collaborate with
each other to complete a specific task or use case. It emphasizes the organizational
relationships among the objects and the flow of messages between them.

For example, in a Car Rental System, a Collaboration Diagram could illustrate how different
objects (e.g., Customer, Booking System, Car Inventory, and Payment Gateway) collaborate
to fulfill a car rental booking process. It shows the interactions and flow of messages but in terms
of how objects are connected to each other and how messages pass between them.

4.5.2 Detailed Description of Collaboration Diagram

A Collaboration Diagram focuses on representing the static structure of the system in terms of
objects and their relationships. It shows how objects in the system are connected (using links)
and how they exchange messages to accomplish a particular task. The following are key
components of a Collaboration Diagram:

 Objects: These represent instances of classes or actors. Each object is represented by a


rectangular box, with the name of the object and the class it belongs to written inside.
An example of an object would be the Customer or Car object in the Car Rental
System.
 Links: Links are the associations between objects. They are represented as solid lines
connecting the objects. Links show the relationships or associations between different
objects in the system, helping us understand how they are related.
 Messages: Messages are the arrows that indicate the communication between objects.
These arrows are labeled with the name of the operation being called and are typically
numbered to indicate the order in which the messages are sent. The numbers help
establish the sequence of interactions.
 Message Flow: The flow of messages is unidirectional or bidirectional and represents
how objects send and receive information. The direction of the arrow shows which object
is sending the message and which object is receiving it.
 Numbering: Unlike Sequence Diagrams, which show the order of messages from top to
bottom, Collaboration Diagrams use numbered messages to show the sequence of
interactions. The messages are numbered in the order in which they occur, making it clear
how the interactions unfold.
4.5.3 Example of a Collaboration Diagram

Let’s break down a Car Rental System use case of booking a car and processing payment. In
this use case, there are several objects involved:

1. Customer – The actor initiating the booking process.


2. Booking System – The system responsible for managing the booking process.
3. Car Inventory – The component responsible for keeping track of available cars.
4. Payment Gateway – The external service responsible for processing payments.

The Collaboration Diagram for this process could look like this:

1. Customer sends a booking request to the Booking System.


2. The Booking System asks the Car Inventory for available cars.
3. Once cars are available, the Booking System sends a confirmation to the Customer.
4. Customer provides payment information to the Booking System.
5. The Booking System sends the payment information to the Payment Gateway.
6. Payment Gateway processes the payment and returns a confirmation to the Booking
System.
7. Booking System sends the final booking confirmation to the Customer.

The Collaboration Diagram visually captures these steps, showing the connections between
objects (Customer, Booking System, Car Inventory, Payment Gateway) and how they exchange
messages.

4.5.4 Basic Symbols and Notations in Collaboration Diagrams

Here are the key elements used in a Collaboration Diagram:

1. Objects: Represented by rectangles with the object’s name and class inside the box.
o Example: Customer : User
2. Links: Solid lines connecting objects to show associations.
o Example: A line between Customer and Booking System indicates that the
Customer can interact with the Booking System.
3. Messages: Represented by arrows connecting objects, showing the direction of
communication. Each message is numbered to show the order of events.
o Example: 1: searchForCar() could represent the message sent by Customer to
Booking System to search for cars.
4. Sequence Numbering: Numbers assigned to each message to indicate the order in which
they are sent.
o Example: 1, 2, 3 for the order of events.
4.5.5 Constructing a Collaboration Diagram

To create a Collaboration Diagram, follow these steps:

1. Identify Objects: Start by identifying the objects involved in the use case or system
process. These could include both system objects (like databases, services, or
subsystems) and external actors (like users or external systems).
2. Determine Links: Identify how the objects are related to one another. This includes
associations between objects, which are represented as links in the diagram.
3. Define Messages: Define the messages exchanged between the objects. This includes
both the operations invoked by one object on another and any responses.
4. Number the Messages: Assign numbers to each message to show the order of
execution. The messages should be numbered sequentially to ensure that the flow of
interaction is clear.
5. Add Notes: You may also add notes to clarify complex interactions or provide additional
context. Notes are often used to explain assumptions or constraints on the interaction.

4.5.6 Benefits of Collaboration Diagrams

1. Clarifies Object Relationships: Collaboration Diagrams help to clearly visualize how


objects collaborate and interact to perform a task. This helps in understanding the
structure and connections between various objects in the system.
2. Good for Procedural Design: Collaboration diagrams are excellent for procedural
design, especially in smaller systems or scenarios with a manageable number of
interacting objects. They allow you to see the flow of control and data among objects.
3. Highlights Object Responsibility: By showing how messages pass between objects, the
Collaboration Diagram can highlight the responsibilities of each object in performing the
overall task.
4. Helps in Identifying Missing Links: Collaboration Diagrams make it easier to identify
missing interactions or objects that might need to be added or modified to complete a
system functionality.

4.5.7 Diagram of Collaboration Diagram

Below is a simplified Collaboration Diagram for the Car Rental Booking Process:
4.6 Operation Contracts
4.6.1 Purpose of Operation Contracts

An Operation Contract defines the expected behavior of an operation or method within the
system. It acts as a formal agreement between the system’s design and implementation,
specifying what each operation is supposed to do, when it is invoked, and under what conditions.
The purpose of operation contracts is to ensure clarity and consistency in the system’s
operations, promoting a clear understanding of how each operation should behave and interact
with other components of the system.

Operation contracts help to set clear expectations regarding the system's operations, which is
crucial for maintaining reliability and predictability in a system. By outlining the
preconditions, postconditions, and responsibilities, they act as a reference for both developers
and designers to ensure that operations are implemented and tested according to the specified
contract.

These contracts also facilitate communication between stakeholders, such as developers, testers,
and business analysts, by clearly stating the functional requirements and behaviors of operations
in a way that is unambiguous and easy to follow. In the context of a Car Rental System, for
example, the operation contract for a bookCar() operation will ensure that all parties involved in
the development and testing understand the exact behavior expected when booking a car.

4.6.2 Description of Operation Contracts

Each operation defined in the system, such as bookCar(), processPayment(), or


cancelBooking(), must be described in detail using an Operation Contract. The operation
contract should include the following key elements:

1. Preconditions:
o The precondition defines what must be true before the operation is executed. It
sets the initial state of the system that is required for the operation to proceed
successfully. Preconditions are conditions that must hold true before an operation
is called.
o For example, before the bookCar() operation is executed in a Car Rental
System, the system must first ensure that the car is available for the specified
dates and the Customer's payment method is valid. In the case of
processPayment(), the precondition might be that the payment information
entered by the customer is valid and has been authenticated.

Example (Precondition for bookCar() operation):

oThe car selected is available for the requested dates.


oThe customer has a valid payment method.
2. Postconditions:
o The postcondition defines what changes in the system after the operation has been
completed. It describes the state of the system after the operation has executed,
detailing the expected results and changes to the system state.
o For example, after the bookCar() operation is executed, the postcondition would
state that the car’s availability has been updated, and a booking record has been
created in the system.
o Postconditions ensure that the operation’s intended effect on the system is
achieved and can be checked during the testing phase to verify that the operation
functions as expected.

Example (Postcondition for bookCar() operation):

oThe car’s availability is updated in the database.


oA new booking record is created and confirmed.
3. Responsibilities:
o The responsibilities section of the operation contract specifies the tasks that the
operation is responsible for performing during its execution. This can include
data validation, business logic execution, and interactions with other system
components.
o For instance, the processPayment() operation is responsible for ensuring that the
customer’s payment details are validated, the correct payment method is selected,
and the payment is processed via an external payment gateway (like PayPal or
Stripe).
o By defining responsibilities clearly, operation contracts make sure that each
operation’s function is understood and can be implemented and tested
effectively.

Example (Responsibility for processPayment() operation):

o Validate the customer’s payment information.


o Communicate with the Payment Gateway to process the payment.
o Confirm the payment status and return it to the system.

4.6.3 Example of Operation Contracts in a Car Rental System

Let’s consider an example of operation contracts in the context of a Car Rental System.

1. Operation: bookCar()
o Preconditions:
 The customer is logged in.
 The car is available for the requested dates.
 The customer has a valid payment method.
o Postconditions:
 A new booking record is created in the system.
The car's availability is updated in the system.
The customer is sent a booking confirmation via email or SMS.
o Responsibilities:
 Check car availability for the requested dates.
 Validate customer payment method.
 Create a booking record with relevant details (car, customer, dates).
 Send booking confirmation to the customer.
2. Operation: processPayment()
o Preconditions:
 The customer has selected a car.
 The customer has provided payment details.
 The booking process has been completed.
o Postconditions:
 Payment is successfully processed.
 A payment confirmation is sent to the customer.
 The payment status is updated in the system.
o Responsibilities:
 Validate the payment details.
 Process payment through the Payment Gateway.
 Update the payment status in the system and link it to the booking.
3. Operation: cancelBooking()
o Preconditions:
 The booking exists in the system.
 The customer has the appropriate permissions to cancel the booking.
o Postconditions:
 The booking status is updated to "Cancelled".
 The car's availability is restored.
 A cancellation confirmation is sent to the customer.
o Responsibilities:
 Check the booking exists and is not already cancelled.
 Update the booking status to “Cancelled”.
 Restore the car’s availability for other customers to book.
 Send a cancellation confirmation to the customer.

4.6.4 Benefits of Operation Contracts

1. Clarity and Consistency: Operation contracts clearly define the system’s behavior,
reducing ambiguity. They specify exactly what the operation should do, what conditions
it requires to run, and what effects it has on the system, ensuring consistency across the
software.
2. Validation and Verification: Operation contracts help in validating and verifying the
system’s behavior. By having clear preconditions, postconditions, and responsibilities,
testers can easily check if an operation is functioning correctly according to the specified
rules.
3. Encapsulation of System Logic: By defining responsibilities, operation contracts
provide a clear separation between the logic of operations and the system’s behavior.
This separation makes the system easier to maintain and scale.
4. Clear Communication: Operation contracts serve as documentation for the system,
improving communication between developers, testers, and business analysts. They
ensure that all parties have a common understanding of how an operation should behave
and interact within the system.

4.6.5 Diagram of Operation Contract

To illustrate the Operation Contract concept for the bookCar() operation, consider the
following example:

+-------------------------------------------------+
| Operation Contract Operational Contract |
+-------------------------------------------------+
| Operation Name: bookCar() |
| Preconditions: |
| - Customer is logged in |
| - Car is available for the requested dates |
| - Customer has valid payment Operation Name: bookCar()|
method
| |
| Postconditions: | Preconditions: |
| - A new booking record is created |
| - Car availability is updated | - Customer is logged in |
| - Booking confirmation is sent to customer |
| | - Car is available for the requested dates
| |
| Responsibilities: |
| - Customer
| - Check car availability for has valid payment
requested datesmethod| |
| - Validate customer payment method |
| - Create a booking record |with car details ||
| - Send booking confirmation to the customer |
| Postconditions: |

| - A new booking record is created |

| - Car availability is updated |

| - Booking confirmation is sent to customer |

| |

| Responsibilities: |

| - Check car availability for requested dates |

| - Validate customer payment method |

| - Create a booking record with car details |

| - Send booking confirmation to the customer


4.7 Design Class Diagram

4.7.1 Purpose of Design Class Diagram

The Design Class Diagram is an essential part of object-oriented design that provides a
structural view of the system by detailing the classes, their attributes, and methods. It also
shows the relationships between the classes, illustrating how the different objects in the system
interact with each other.

The Design Class Diagram serves as the blueprint for the system's implementation. It provides
developers with the necessary information to construct the system based on object-oriented
principles, ensuring the correct organization of the system's components.

For a Car Rental System, the Design Class Diagram helps to define the core classes that the
system needs (such as Car, Customer, Booking, Payment, and Admin) and outlines their
responsibilities and relationships. This diagram ensures that the system’s object model is clear,
structured, and ready to be implemented in code.

Key points that the diagram addresses include:

 The attributes of each class, which define its state.


 The methods (or operations) that represent the behavior of the class.
 The relationships between the classes, such as inheritance, association, or aggregation.
 The visibility of each attribute and method, specifying what is accessible from outside
the class and what is hidden from others.

Overall, the Design Class Diagram is vital for ensuring that the system’s design is coherent,
modular, and ready for implementation.

4.7.2 Description of Design Class Diagram

The Design Class Diagram for the Car Rental System will include several core classes that
represent the business entities and their interactions. Each class in the diagram will have:

 Attributes: These represent the properties of the class and define its state.
 Methods: These are the operations that define the behavior of the class.
 Relationships: These show how classes are connected and how they interact with each
other.

For example, in the Car Rental System, the following classes will likely be included:

1. Car: Represents the car objects available for rental.


o Attributes: carID, model, color, pricePerDay, availabilityStatus.
o Methods: checkAvailability(), updateAvailability(), assignBooking().
2. Customer: Represents the customer who rents the car.
o Attributes: customerID, name, email, paymentDetails.
o Methods: register(), login(), updateProfile().
3. Booking: Represents the rental booking made by the customer.
o Attributes: bookingID, customerID, carID, bookingDate, returnDate,
status.
o Methods: createBooking(), cancelBooking(), confirmBooking().
4. Payment: Represents the payment process related to the booking.
o Attributes: paymentID, amount, paymentMethod, status.
o Methods: processPayment(), refundPayment().
5. Admin: Represents the administrator managing the system.
o Attributes: adminID, name, email, role.
o Methods: addCar(), removeCar(), manageBookings(), viewReports().

These classes and their attributes and methods will be interconnected in the diagram to show
how the system operates. For instance, the Booking class might have a relationship with the Car
class and the Customer class, while the Payment class will interact with both the Booking and
Customer classes.

4.7.3 Relationships and Class Interactions

The Design Class Diagram will define the relationships between different classes, showing how
they interact and depend on each other. Some of the common relationships in object-oriented
design include:

1. Association: This relationship shows how one object is linked to another. For example:
o A Customer can make many Bookings, so there is a one-to-many association
between the Customer and Booking classes.
o A Booking involves exactly one Car, so there is a many-to-one association
between Booking and Car.
2. Aggregation: This represents a "whole/part" relationship where one class is a collection
or container for other classes. For example:
o A Booking might aggregate multiple Payments (if installment payments are
allowed).
3. Composition: A stronger form of aggregation where the lifetime of the contained
object depends on the containing object. If the Booking is deleted, the Payment
associated with it might also be deleted. This represents a strong dependency between
the objects.
4. Inheritance: Inheritance represents the relationship between a base class and its derived
classes. In our Car Rental System, you might have a User class (base class) that is
inherited by both Customer and Admin classes (derived classes). This means Customer
and Admin share common attributes and methods inherited from User but also have their
own specific methods.
5. Dependency: Shows that one class depends on the functionality provided by another. For
example, a Booking might depend on the Payment class to process a payment before
confirming a booking.

In the Car Rental System, these relationships will be shown clearly in the Design Class
Diagram, allowing developers to understand how objects in the system interact with each other.

4.7.4 Design Class Diagram Example

Here is a basic Design Class Diagram for the Car Rental System:

+------------------+ +------------------+ +------------------+


| Customer | | Booking | | Car |
+------------------+ +------------------+ +------------------+
| - customerID | | - booking ID | | - car ID |
| - name | | - customer ID | | - model |
| - email | | - car ID | | - color |
| - payment Details| | - booking Date | | - price Per Day |
+------------------+ | - return Date | | - availability |
| + register () | | - status | +------------------+
| + login () | +------------------+ | + check
|
| + update Profile | | + create Booking | | + update
Availability ()|
+------------------+ | + cancel Booking | +------------------+
| + confirm Booking|
+------------------+
|
|
v
+------------------+
| Payment |
+------------------+
| - payment |
| - amount |
| - payment Method |
| - status |
+------------------+
| + process Payment|
| + refund Payment |
+------------------+

In this diagram:

 The Customer class has a one-to-many relationship with the Booking class, indicating
that one customer can make multiple bookings.
 The Booking class has a many-to-one relationship with the Car class, meaning each
booking is associated with exactly one car.
 The Payment class has a one-to-one relationship with the Booking class, implying that
each booking has one payment associated with it.

4.7.5 Benefits of Design Class Diagrams

1. Clarifies System Structure: The Design Class Diagram provides a clear overview of the
system's structure, making it easier to understand the relationships between classes, their
attributes, and methods.
2. Helps with Object-Oriented Implementation: It serves as a foundational reference for
developers to implement the system. By defining the classes, their attributes, and
methods, developers can use the diagram to create the system’s objects and interactions
in code.
3. Facilitates Code Maintenance: By visualizing how different classes interact, the Design
Class Diagram helps developers identify areas where changes might affect other
components, aiding in maintaining and updating the codebase.
4. Improves Communication: The Design Class Diagram helps in explaining the system's
design to stakeholders, such as business analysts, developers, and testers, ensuring that
everyone has a clear understanding of the system's architecture.

4.8 State Chart Diagram

4.8.1 Purpose of State Chart Diagram

A State Chart Diagram (also known as a State Machine Diagram) is used to model the
stateful behavior of an object in a system. It describes how the state of an object changes in
response to various events or conditions. The diagram visually represents the possible states of
an object and the transitions between those states, triggered by events or conditions.

In the context of a Car Rental System, a State Chart Diagram could be used to model the
states of various objects, such as a Car, Booking, or Payment. This allows developers and
stakeholders to visualize how the system behaves dynamically and understand the various
lifecycle stages that each object goes through.

The key purpose of a State Chart Diagram is to:

 Define the lifecycle of an object by specifying its states and the events that cause
transitions.
 Understand the dynamic behavior of the system and its objects.
 Provide a visual representation of the system's stateful behavior, which is crucial for
designing complex systems.
For example, in a car rental system, a Booking object might go through different states such as
"Pending", "Confirmed", "Completed", and "Cancelled" based on events like payment
confirmation, booking modification, or cancellation request.

4.8.2 Description of State Chart Diagram

The State Chart Diagram consists of the following key elements:

1. States:
o A state represents the condition or situation of an object at a specific time. The
state is represented by a rounded rectangle.
o In the Car Rental System, for example, a Car object might have states like
"Available", "Booked", "In Maintenance", "Rented", and "Returned".
2. Events:
o An event is a trigger that causes a change in the state of an object. Events are
represented as labels on the transitions between states.
o Events in a car rental system could include a Booking Request, Payment
Processed, Car Returned, or Booking Cancelled.
3. Transitions:
o A transition is a change from one state to another, triggered by an event. It is
represented by an arrow between two states.
o For instance, when a Booking Request event occurs, the Car may transition from
the "Available" state to the "Booked" state.
4. Initial and Final States:
o The initial state represents the state of the object when it is first created or
initialized. It is typically represented by a filled circle.
o The final state represents the end of the object's lifecycle and is depicted as a
circle with a filled dot inside.
o For a Booking, the initial state might be "Pending" when it is first created, and the
final state might be "Cancelled" or "Completed" when the booking is finalized or
canceled.
5. Guard Conditions:
o A guard condition is a Boolean expression that must be true for a transition to
occur. Guard conditions are often used to enforce certain rules or constraints in
the system.
o For example, before a Car can transition from "Available" to "Booked", a guard
condition might check if the car is still available and if the customer has provided
valid payment details.
6. Actions:
o Actions are operations that are executed when a transition between states occurs.
They can represent business logic or operations that must be performed during the
state transition.
o For example, when a Booking transitions from "Pending" to "Confirmed", the
action might be to send a confirmation email to the customer.
4.8.3 Example of a State Chart Diagram in a Car Rental System

Consider a Car in the Car Rental System. The Car object goes through various states based on
events that occur during the car rental process. The State Chart Diagram for this object could
look like this:

1. Initial State: The car starts in the Available state.


2. Event: A Booking Request is made by a customer.
o Transition: The car moves from Available to Booked.
o Guard Condition: Check if the car is still available for the specified dates.
o Action: Update the car's availability status in the system.
3. Event: The Payment is Processed.
o Transition: The car moves from Booked to Rented.
o Action: Assign the car to the customer and set the booking status to confirmed.
4. Event: The Car is Returned by the customer.
o Transition: The car moves from Rented to Available.
o Action: Update the car's availability status and check if it needs maintenance.
5. Event: The car requires Maintenance.
o Transition: The car moves from Available to In Maintenance.
o Action: Log maintenance tasks and update the system.
6. Final State: The car is either Available or In Maintenance after all operations are
completed.

This would be illustrated with rounded rectangles for each state, arrows representing transitions,
and events acting as triggers for those transitions.

4.8.4 Benefits of State Chart Diagrams

1. Clear Understanding of Object Lifecycle:


o State Chart Diagrams provide a visual representation of an object’s lifecycle,
showing how it changes states in response to events. This helps stakeholders
understand the system's dynamic behavior.
2. Improved System Design:
o By identifying and modeling the states and transitions, designers can ensure that
all possible scenarios are covered and that the system behaves correctly under all
conditions.
3. Easy Debugging and Maintenance:
o State Chart Diagrams make it easier to troubleshoot and maintain the system by
clearly showing how objects should behave over time. Developers can track
whether the object is in the correct state at any point in the lifecycle.
4. Helps in Managing Complex Systems:
oFor systems with complex behaviors or workflows (such as a car rental system
with many states and transitions), State Chart Diagrams help break down and
organize this complexity into manageable pieces.
5. Automated Testing:
o State Chart Diagrams are extremely helpful in designing automated tests for the
system. Testers can simulate the various state transitions to ensure that the system
responds correctly to different inputs and events.

4.8.5 Diagram Example


4.9 Data Model

4.9.1 Purpose of Data Model

The Data Model is a crucial component of the software design that defines how data is
represented, structured, and stored within the system. It serves as the blueprint for how the
system’s data will be organized and accessed. The purpose of the data model is to ensure that
data is stored in a consistent, efficient, and scalable manner, allowing the system to perform
optimally.

In the context of the Car Rental System, the Data Model will specify how key entities such as
Car, Customer, Booking, and Payment are represented in the system’s database. This includes
defining the structure of each entity, how relationships between entities are captured, and how
data can be accessed or modified through various system operations.

The Data Model is also essential for ensuring data integrity, consistency, and security. By
defining clear rules for how data is stored (such as constraints on primary and foreign keys), it
ensures that the database operates smoothly and accurately reflects the business rules of the
system.

Key purposes of the Data Model include:

 Data Organization: It specifies how data will be stored in tables, what relationships exist
between those tables, and how data flows through the system.
 Efficient Data Access: The model ensures that data can be retrieved and manipulated
efficiently, minimizing unnecessary overhead and speeding up query execution.
 Data Integrity: It defines primary and foreign keys, constraints, and other rules to ensure
data is consistent, valid, and protected against corruption.

4.9.2 Description of Data Model

The Data Model in the Car Rental System involves several key components, such as tables,
columns, primary keys, foreign keys, and relationships. This section describes how each of these
elements will be used to organize the data for the system.

1. Entities and Tables:


o Car Table: This table represents the car objects available for rental. Each car has
attributes such as carID, model, color, pricePerDay, and
availabilityStatus.
 Example Columns: carID (PK), model, color, pricePerDay,
availabilityStatus.
o Customer Table: This table represents the customers who make bookings in the
system. It stores personal details and contact information.
 Example Columns: customerID (PK), name, email, phoneNumber,
paymentDetails.
o Booking Table: This table stores information about the car rental bookings made
by customers. Each booking has a unique ID, links to the customer, and is
associated with a car.
 Example Columns: bookingID (PK), customerID (FK), carID (FK),
bookingDate, returnDate, status.
o Payment Table: This table stores payment information related to bookings. Each
payment corresponds to a booking and includes details about the amount,
payment method, and status.
 Example Columns: paymentID (PK), bookingID (FK), amount,
paymentMethod, paymentStatus.
2. Primary Keys (PK):
o Each table will have a primary key (PK) that uniquely identifies each record. For
example, carID is the primary key for the Car Table, and customerID is the
primary key for the Customer Table.
o The primary key ensures that each record in the table is unique, which is crucial
for preventing duplicate entries and maintaining data integrity.
3. Foreign Keys (FK):
o Foreign keys are used to represent relationships between tables. For example, the
Booking Table will include a customerID foreign key that links to the Customer
Table, indicating which customer made the booking. Similarly, the carID foreign
key in the Booking Table links to the Car Table to indicate which car was
booked.
o Foreign keys are essential for maintaining referential integrity, ensuring that
records in one table correspond correctly to records in another table.
4. Relationships:
o The Data Model defines the relationships between tables, such as:
 One-to-Many Relationship: A Customer can have many Bookings, but
a Booking can only belong to one Customer. This is represented by a
foreign key from the Booking Table to the Customer Table.
 Many-to-One Relationship: Many Bookings can be associated with one
Car, meaning that a Booking corresponds to a specific Car. This is
represented by a foreign key from the Booking Table to the Car Table.
 One-to-One Relationship: Each Booking will have one corresponding
Payment, meaning that each payment is linked to a specific booking. This
is represented by a foreign key from the Payment Table to the Booking
Table.
5. Constraints:
o Unique Constraints: Some attributes may need to be unique, such as the email
in the Customer Table or the licensePlate in the Car Table. This ensures that
no two customers or cars have the same value for these fields.
o Check Constraints: These are used to enforce specific business rules. For
example, a pricePerDay in the Car Table cannot be less than zero, and the
bookingDate in the Booking Table must always be before the returnDate.
6. Normalization:
o The data model should be normalized to avoid data redundancy and ensure data
integrity. This typically involves splitting data into multiple related tables to
reduce duplication.
o For example, instead of storing customer details (like name, email, phone) in the
Booking Table, the details are stored in the Customer Table, and the Booking
Table only stores the customerID as a foreign key. This normalization reduces
redundancy and ensures that changes to customer details only need to be made in
one place.

4.9.3 Example Data Model for the Car Rental System

The following tables are part of the Data Model for the Car Rental System:

 Car Table:

Column Name Data Type Description


carID (PK) INT Unique identifier for each car
model VARCHAR(255) Car model name
color VARCHAR(255) Color of the car
pricePerDay DECIMAL(10,2) Rental price per day
availabilityStatus VARCHAR(50)
Availability status (e.g., "Available",
"Booked")

 Customer Table:

Column Name Data Type Description


customerID (PK) INT Unique identifier for each customer
name VARCHAR(255) Customer's full name
email VARCHAR(255) Customer's email address
phoneNumber VARCHAR(15) Customer's phone number
paymentDetails VARCHAR(255) Stored payment details (e.g., card info)

 Booking Table:

Column Name Data Type Description


bookingID (PK) INT Unique identifier for each booking
customerID (FK) INT Links to customerID in Customer Table
carID (FK) INT Links to carID in Car Table
bookingDate DATE Date when the booking was made
returnDate DATE Date when the car should be returned

 Payment Table:
Column Name Data Type Description
paymentID (PK) INT Unique identifier for each payment
bookingID (FK) INT Links to bookingID in Booking Table
amount DECIMAL(10,2) Total amount paid for the booking
paymentMethod VARCHAR(50) Method of payment (e.g., "Credit Card", "PayPal")
paymentStatus VARCHAR(50) Payment status (e.g., "Completed", "Failed")

4.9.4 Benefits of Data Models

1. Efficient Data Storage: A well-designed Data Model ensures that data is stored in an
efficient manner, reducing redundancy and minimizing the need for duplicate records,
making the system more scalable and maintainable.
2. Improved Data Integrity: By defining primary keys, foreign keys, and constraints, the
Data Model ensures that data is consistent, valid, and adheres to business rules. This
helps in maintaining referential integrity and ensures the accuracy of the data across the
system.
3. Faster Data Access: With a well-structured Data Model, data retrieval operations are
faster and more efficient. The database is optimized for querying, reducing the time
required to fetch the information needed by the system.
4. Simplified Maintenance: When data is organized logically and systematically, it's easier
to maintain. Any changes to the system’s data requirements can be reflected in the Data
Model with minimal impact on the rest of the system.
5. Data Security: Properly defining data types, constraints, and access rights in the Data
Model can enhance the security of the system, ensuring that sensitive data is protected
and that users can only access data that they are authorized to see.

CHAPTER 5: 2ND & 3RD DELIVERABLE FOR STRUCTURED APPROACH

5.1 Introduction

In this chapter, we present the second and third deliverables of the structured approach for the
Car Rental System project. This approach focuses on creating a more detailed design of the
system’s components and the way they will interact with each other, ensuring that the system is
well-structured, efficient, and scalable.

The second deliverable provides a detailed Entity Relationship Diagram (ERD) and Data
Flow Diagram (DFD), both essential for understanding the system’s data and how it flows
through the processes. The third deliverable dives into a deeper analysis of the system’s
architecture and the component-level design, ensuring that each component is modular,
maintainable, and flexible.

This chapter is divided into the following sections:

1. Entity Relationship Diagram (ERD)


2. Data Flow Diagram (Functional Model)
3. State Transition Diagram
4. Architectural Design
5. Component Level Design

5.2 Entity Relationship Diagram (ERD)

5.2.1 Purpose of ERD

The Entity Relationship Diagram (ERD) visually represents the system’s data and the
relationships between the entities within the system. It defines how data entities interact with
each other and the attributes that describe them. The primary goal of the ERD is to provide a
clear and structured layout of the system’s data architecture, highlighting entities such as Car,
Customer, Booking, and Payment, and the relationships between them.

5.2.2 Description of ERD

The Entity Relationship Diagram is the cornerstone of the system's data design. It enables
developers and stakeholders to understand how entities relate to each other, providing insights
into how the system will handle and store information.

Key elements of the ERD include:

 Entities: Represent the objects or concepts in the system (e.g., Car, Customer, Booking,
Payment).
 Relationships: Indicate how the entities are linked (e.g., Customer makes a Booking, a
Booking is associated with a Car).
 Attributes: Define the properties of each entity (e.g., Car might have attributes like
carID, model, pricePerDay).

5.2.3 Relationships in ERD

 One-to-Many: A Customer can have many Bookings, but each Booking can only
belong to one Customer. This relationship is represented by a foreign key ( customerID)
in the Booking Table that links to the Customer Table.
 Many-to-One: Many Bookings can reference one Car. The Booking Table contains a
carID foreign key, linking to the Car Table.
 One-to-One: Each Booking corresponds to one Payment, which is represented by a
foreign key in the Payment Table linking to the Booking Table.
5.2.4 Diagram

5.3 Data Flow Diagram (Functional Model)

5.3.1 Purpose of DFD

The Data Flow Diagram (DFD) is used to depict how data moves through the system and how
it is transformed by various processes. In this context, the DFD describes the flow of data
between the different components of the Car Rental System, such as Customer, Booking
System, and Payment Processor.

5.3.2 Description of DFD

The DFD breaks down the system’s functional processes into manageable units, each of which
receives input data, processes it, and generates output data. These processes are connected by
data flows that indicate how data moves between them.

 External Entities: Represent the actors or systems that interact with the Car Rental
System (e.g., Customer, Payment Gateway).
 Processes: Represent the actions or transformations applied to the data (e.g., Create
Booking, Process Payment).
 Data Stores: Represent the storage of data in the system (e.g., Customer Database,
Booking History).

5.3.3 Functional Model

The DFD for the Car Rental System illustrates:

1. Customer Registration: Data flows from the customer to the system where registration
details are processed and stored.
2. Booking Process: The system receives customer and car data to create a booking, and the
data flows to the Booking Database.
3. Payment Process: After a booking is created, payment details flow to the Payment
Gateway for processing.
4. Booking Confirmation: Once the payment is processed, the system generates a
confirmation for the customer.

5.3.4 Diagram

5.4 State Transition Diagram

5.4.1 Purpose of State Transition Diagram

A State Transition Diagram is used to model the states that an entity (like a Booking) can be in
and the events that cause transitions between these states. It is particularly useful for entities that
have different behaviors depending on their current state.
5.4.2 Description of State Transition Diagram

For the Car Rental System, the State Transition Diagram will focus on the Booking entity,
which can transition through several states like Pending, Confirmed, and Completed.

Each state in the diagram represents a status in the booking lifecycle, and the transitions between
these states are triggered by events like Customer Makes Payment or Admin Confirms
Booking.

5.4.3 Example States

1. Pending: A booking is created but payment has not been processed.


2. Confirmed: The payment is successful, and the booking is confirmed.
3. Completed: The car is returned, and the booking is completed.
5.4.4 Diagram

.
5.5 Architectural Design

5.5.1 Purpose of Architectural Design

The Architectural Design describes the overall structure of the system and the major
components, including their interactions and how they contribute to the system’s functionality. It
defines how the software is structured and provides an overview of the system’s high-level
architecture.

5.5.2 Description of Architectural Design

The Architectural Design for the Car Rental System will include:

 Layered Architecture: Separating concerns such as presentation, business logic, and


data management.
 Modules: Defining the different functional areas of the system like Booking
Management, Payment Processing, and User Management.
 Components: Describing individual components like the Car Inventory System,
Payment Gateway Integration, and Customer Profile Management.

5.5.3 System Interaction

The system will interact with external services like Payment Gateways and Email
Notifications.
5.5.4 Diagram

5.6 Component Level Design

5.6.1 Purpose of Component Level Design

The Component Level Design focuses on detailing the individual components of the system and
their interactions. This is the next step in moving from the high-level architecture to a more
detailed design.

5.6.2 Description of Component Level Design

The Component Level Design for the Car Rental System will include:

 Booking Component: Handles the booking logic, including searching for cars, creating
bookings, and managing booking statuses.
 Payment Component: Interfaces with the payment gateway to process payments and
handle transaction success/failure.
 User Component: Manages customer profiles, login, and authentication.

5.6.3 Interactions between Components

Each component will interact with others through defined APIs or internal interfaces, ensuring
seamless data flow and process execution.
5.6.4 Diagram

CHAPTER 6: 4TH DELIVERABLE (USER INTERFACE DESIGN)

This chapter focuses on the User Interface (UI) Design of the Car Rental System. The design
of the user interface is an essential part of the system as it directly influences the user's
interaction with the system. A well-designed UI enhances user experience (UX), improves the
accessibility of features, and ensures that tasks such as booking a car, making a payment, and
managing customer profiles are intuitive and efficient.

The chapter is divided into four key sections: Introduction, Site Maps, Storyboards, and
Navigational Maps. Each section provides a detailed explanation of how the UI will be
structured and how users will interact with the system.

6.1 INTRODUCTION
The User Interface Design of the Car Rental System aims to provide users with an intuitive and
seamless experience. A well-structured UI will ensure users can easily navigate through the
website and complete their tasks without confusion.

The Car Rental System's design is user-centric, focusing on simplicity, ease of use, and
efficiency. It follows modern design principles, ensuring that the interface is visually appealing,
responsive, and functional on various devices (desktop, tablet, and mobile).

Goals of the UI Design:

 User-Centered Design: Focuses on the needs of customers, ensuring that the design
reflects their expectations and goals.
 Consistency: Consistent UI elements across the system, such as buttons, icons, and
navigation, to provide a predictable and familiar user experience.
 Responsive Design: The interface adjusts and works well on different screen sizes,
ensuring that users have a positive experience whether they are on a desktop, tablet, or
mobile.
 Accessibility: The system will adhere to accessibility guidelines (e.g., WCAG) to ensure
users with disabilities can navigate the website easily.

6.2 SITE MAPS

A site map visually represents the overall structure of the Car Rental System and outlines the
main sections and pages, along with how they are linked together. It provides a clear
understanding of the system's structure and the flow of the user's journey through the application.

Components of the Site Map:

1. Home Page:
o Contains the search functionality, allowing users to search for available cars by
date, type, and location.
o Navigation to other sections, such as booking, payment, and user profiles.
2. Car Listings Page:
o Displays available cars based on the user's search.
o Includes filtering options such as car type, price range, availability, and location.
o Users can select a car to view more details or proceed to the booking page.
3. Booking Page:
o Allows the user to select booking dates, car type, and confirm their selection.
o Displays pricing information, available discounts, and total rental cost.
o Includes a summary of the booking before proceeding to payment.
4. Payment Page:
o Users enter payment details and proceed with the payment process.
o Supports various payment methods (credit card, PayPal, etc.).
5. Customer Profile Page:
Allows customers to view and update their personal information, including email,
o
phone number, and address.
o Displays a history of past bookings and allows users to manage upcoming rentals.
6. Admin Dashboard:
o For system administrators to manage car listings, view bookings, and handle
customer support.

Example Site Map:

css
CopyEdit
[Home Page] → [Car Listings Page] → [Booking Page] → [Payment Page] →
[Confirmation Page]

[Customer Profile Page]

6.3 STORYBOARDS

Storyboards are visual representations of user interactions with the system, showing the
sequence of actions a user will take to complete specific tasks. Storyboards help designers and
developers visualize the flow of the user experience, ensuring that it is simple and efficient.

Each storyboard represents a specific use case or user journey, from the first interaction to the
final action.

Example Storyboard Scenarios:

1. Booking a Car:
o Scene 1: The user arrives on the Home Page and enters the desired rental dates
and location.
o Scene 2: The Car Listings Page displays available cars. The user selects a car to
view more details.
o Scene 3: The user proceeds to the Booking Page, where they confirm the car and
rental details.
o Scene 4: The user moves to the Payment Page, enters payment information, and
confirms the payment.
o Scene 5: A confirmation email is sent, and the user receives a confirmation on the
Confirmation Page.
2. Updating Customer Profile:
o Scene 1: The user logs into their profile from the Home Page.
o Scene 2: On the Customer Profile Page, the user updates their phone number
and address.
o Scene 3: The user saves the changes, and a success message confirms the update.

Storyboard Benefits:
 Visual Clarity: It allows stakeholders to quickly understand how the system works.
 Better Communication: It helps designers and developers align on the user flow.
 Testing: Identifies potential UX issues before development begins.

6.4 NAVIGATIONAL MAPS

Navigational maps provide a more detailed and structured view of how the user will navigate
between the different pages of the system. It represents the paths users will take based on their
actions, showing how they move from one section to another within the system.

Key Elements of the Navigational Map:

1. Home Page:
o The entry point, with options to search for cars, view booking history, and
manage the profile.
o Links to Car Listings Page, Customer Profile Page, and Booking Page.
2. Search and Results Flow:
o Users search for cars based on their preferences and are directed to the Car
Listings Page.
o From there, they can select a car and proceed to the Booking Page.
3. Booking Process:
o After selecting a car, users can confirm booking details and proceed to the
Payment Page.
o Once the payment is successful, they are shown a Confirmation Page.
4. Admin Navigation:
o Admin users can navigate to the Admin Dashboard, manage car listings, and
view bookings.

Example Navigational Map:

css
CopyEdit
[Home Page] → [Search Results] → [Car Listings] → [Booking Details] → [Payment
Page] → [Confirmation Page]

[Customer Profile Page]

CHAPTER 7: 5TH DELIVERABLE (SOFTWARE TESTING)


This chapter outlines the Software Testing process for the Car Rental System, detailing each
testing phase and its documentation. It serves as a comprehensive guide for understanding how
testing is planned, executed, and reported to ensure the system meets quality standards. Software
testing is vital for ensuring that the system works correctly under all conditions, is free from
defects, and delivers a smooth user experience.

The chapter is structured into multiple sections, each focusing on a key deliverable related to
testing, including the test plan, design specifications, test cases, and test logs. Each section
provides in-depth information on how testing will be carried out for the Car Rental System.

7.1 INTRODUCTION

The Software Testing phase is crucial for validating the Car Rental System and ensuring that
the system functions as intended. This section discusses the importance of testing, the goals of
testing, and the overall approach taken to test the system.

Goals of Software Testing:

1. Validate Functionality: Ensures that each feature (e.g., car booking, payment
processing) works as expected.
2. Verify User Requirements: Confirms that the system meets the needs and expectations
of the end-users.
3. Ensure System Stability: Verifies that the system operates smoothly under different
conditions (e.g., multiple users, high load).
4. Identify and Resolve Bugs: Detects and resolves defects that could affect the system's
performance or user experience.

This chapter also outlines the test plan, detailing the types of tests to be performed, the roles and
responsibilities of the testing team, and the resources required for the testing process.

7.2 TEST PLAN

7.2.1 Purpose

The Test Plan is the roadmap for the entire testing process. It defines the testing strategy, scope,
objectives, and schedule. The purpose of the test plan is to ensure that all aspects of the system
are tested effectively and efficiently.

The Test Plan ensures that there is clear communication among the testing team, developers, and
stakeholders, providing transparency into the testing process and its goals.

7.2.2 Outline
A comprehensive Test Plan includes the following components:

1. Test Objectives:
o Define the goals of the testing phase.
o Objectives could include verifying the system's functionality, performance,
security, and usability.
2. Test Scope:
o Specifies which system components will be tested and which will not.
o Includes car rental features (e.g., booking system, payment gateway), and
excludes non-core components (e.g., external integrations).
3. Test Resources:
o Lists the tools, team members, and hardware required for testing.
o This might include testing frameworks, testing environments, and test data.
4. Test Schedule:
o Outlines the timeline for each testing phase, from the initial test planning to the
final report submission.
o Defines milestones such as the completion of functional testing, performance
testing, and user acceptance testing.
5. Test Deliverables:
o The documents and reports that will be produced throughout the testing phase,
such as test cases, test logs, and incident reports.
o These deliverables are critical for tracking the progress of testing and ensuring
that defects are captured and addressed.

7.3 TEST DESIGN SPECIFICATION

7.3.1 Purpose

The Test Design Specification outlines how the tests will be designed and specifies the
conditions under which the system will be tested. The purpose is to ensure that the tests cover all
necessary scenarios and that the results can be compared against expected outcomes.

7.3.2 Outline

The Test Design Specification document will include:

1. Test Conditions:
o Defines the conditions that the system must meet to pass the test.
o Conditions could include correct behavior under different user inputs, valid
payment transactions, and car availability during booking.
2. Test Inputs:
o The data needed to execute the test cases, such as booking dates, car models,
payment details, etc.
o Test inputs should represent normal use cases as well as edge cases.
3. Expected Results:
o The anticipated outcomes for each test case. For example, after confirming a
booking, the system should display a confirmation message and send an email to
the customer.
4. Testing Approach:
o Defines the methods used to execute the tests, such as manual testing or
automated testing.
o Specifies any tools, frameworks, or environments used for the testing process.

7.4 TEST CASE SPECIFICATION

7.4.1 Purpose

The Test Case Specification defines each individual test case and provides step-by-step
instructions on how the test should be executed. The purpose is to ensure that the system's
functionality is thoroughly validated and that all potential issues are identified.

7.4.2 Outline

Each Test Case Specification includes the following components:

1. Test Case ID:


o A unique identifier for the test case.
2. Description:
o A brief description of what the test case is designed to validate (e.g., booking a
car, processing payment).
3. Preconditions:
o Any necessary setup or conditions required before the test can be run (e.g., user
must be logged in, cars must be available in the system).
4. Test Steps:
o The detailed actions that need to be performed during the test (e.g., enter booking
details, confirm car selection).
5. Expected Results:
o The anticipated outcome of the test (e.g., booking confirmation page appears,
payment is processed successfully).
6. Postconditions:
o Any actions that must be taken after the test is executed, such as cleaning up test
data.

7.5 TEST PROCEDURE SPECIFICATION

7.5.1 Purpose
The Test Procedure Specification details the steps involved in executing the tests, ensuring
consistency and accuracy in how each test is conducted.

7.5.2 Outline

The Test Procedure Specification includes:

1. Test Setup:
o Describes the environment and tools required to execute the tests (e.g., staging
server, testing tools, test data).
2. Test Execution:
o Describes how each test case will be run and the specific steps involved in
performing the test.
3. Test Data:
o Defines the exact data that will be used for testing, including input data and
expected outputs.
4. Test Logging:
o Describes how the results will be logged and tracked during testing (e.g., logging
test case results, reporting failures).
5. Test Results:
o Defines how results will be evaluated and whether they pass or fail.

7.6 TEST ITEM TRANSMITTAL REPORT

7.6.1 Purpose

The Test Item Transmittal Report documents the items being tested, including components,
modules, or features of the system. It ensures that each element of the system is adequately
tested.

7.6.2 Outline

The report includes:

1. Test Items:
o Lists the items that are part of the test, such as car booking module, payment
gateway, user authentication.
2. Test Execution Dates:
o The dates when the tests were performed.
3. Test Results:
o The outcomes of each test item (pass/fail).
7.7 TEST LOG

7.7.1 Purpose

The Test Log records the execution of tests, tracking which test cases have been run, their
results, and any issues encountered. It serves as a reference for both the testing team and
developers.

7.7.2 Outline

The Test Log includes:

1. Test Case ID:


o A reference to the specific test case executed.
2. Execution Time:
o The time at which the test was executed.
3. Test Status:
o The result of the test (e.g., passed, failed).
4. Issues Encountered:
o Any problems or defects identified during testing.

7.8 TEST INCIDENT REPORT

7.8.1 Purpose

The Test Incident Report is used to document unexpected issues or defects found during
testing. These incidents may be bugs, errors, or failures that require attention before the system
can be released.

7.8.2 Outline

The Test Incident Report includes:

1. Incident ID:
o A unique identifier for the incident.
2. Description:
o A detailed explanation of the incident or defect.
3. Severity:
o The severity level of the defect (e.g., critical, minor).
4. Steps to Reproduce:
o Instructions on how to reproduce the issue.
5. Resolution:
o How the defect was resolved.
7.9 TEST SUMMARY REPORT

7.9.1 Purpose

The Test Summary Report provides an overview of the entire testing process, summarizing the
test cases, results, and defects encountered. It serves as a final assessment of the system's
readiness.

7.9.2 Outline

The Test Summary Report includes:

1. Test Objectives:
o The overall goals of the testing.
2. Test Coverage:
o What parts of the system were tested.
3. Test Results:
o A summary of whether the tests passed or failed.
4. Defects:
o Any remaining defects or issues.
5. Conclusion:
o An assessment of the system’s readiness for release.

References

Books:

 Sommerville, I., 2011. Software Engineering. 9th ed. Boston: Addison-Wesley.


 Pressman, R.S., 2014. Software Engineering: A Practitioner's Approach. 8th ed. New
York: McGraw-Hill.

Articles:

 Myers, G., 1979. The Art of Software Testing. 1st ed. New York: John Wiley & Sons.

Websites:

 ISTQB, 2021. ISTQB Certified Tester Foundation Level Syllabus. [online] Available at:
https://www.istqb.org [Accessed 1 June 2025].
 Stack Overflow, 2021. Software Testing Questions. [online] Available at:
https://stackoverflow.com/questions/tagged/software-testing [Accessed 1 June 2025].

Journals:
 Kaner, C., Bach, J., and Pettichord, B., 2001. Lessons Learned in Software Testing.
Software Quality Professional, 3(2), pp. 13-16.

Standards:

 ISO/IEC 29119-1:2013, Software and Systems Engineering — Software Testing. [online]


Available at: https://www.iso.org [Accessed 1 June 2025].

APPENDICES

The appendices section in a report or documentation provides supplementary information that


supports the content of the main document but is too detailed to include within the main sections.
In this case, the Appendices for the Car Rental System testing chapter can contain various
supporting materials like detailed test cases, additional diagrams, sample reports, or references to
external resources.

A.1 APPENDIX A: TEST CASES

This appendix contains a list of detailed test cases that were executed during the software
testing phase. Each test case includes the test ID, description, preconditions, test steps, expected
results, and actual results.

Test Case 1: Booking a Car

Test Case ID TC-01


Description Verify that a user can successfully book a car from the available options.
Preconditions User is logged in.
1. Navigate to the car listings page.
2. Select a car and click "Book Now."
Test Steps
3. Enter booking dates and personal details.
4. Click "Confirm Booking."
Expected The booking confirmation page is displayed, and the user receives an email
Results confirmation.
Actual Results Passed

A.2 APPENDIX B: TEST PROCEDURES

This appendix provides the Test Procedures used to conduct the testing for the Car Rental
System.

Test Procedure for Booking a Car


1. Test Setup: Ensure that the test environment is initialized, and a test user account is
created.
2. Execution: Perform the actions as outlined in the test case specification (Appendix A).
3. Logging: Record the time and status of the test in the Test Log (Appendix E).
4. Evaluation: Compare the actual results with the expected results. If the results do not
match, document the issue in the Test Incident Report (Appendix G).

A.3 APPENDIX C: TEST LOGS

This appendix includes Test Logs, which document all actions taken during the testing process.
The logs track which test cases were executed, their results, and any issues encountered.

Test Log Sample:

Test Case ID TC-01


Execution Date 2025-06-01
Executed By John Doe
Test Status Passed
Issues Encountered None

A.4 APPENDIX D: TEST INCIDENT REPORT

This appendix includes Test Incident Reports, which document any defects, issues, or failures
that occurred during the testing process. Each report provides detailed information about the
incident, including its severity, steps to reproduce, and the resolution process.

Test Incident Report Sample:

Incident ID INC-001
Description Payment gateway failed to process the payment for the booking.
Severity Critical
1. Navigate to the payment page.
Steps to
2. Enter valid payment details.
Reproduce
3. Click "Pay Now."
Issue was identified as an API failure. Developer fixed the issue, and the
Resolution
payment gateway was tested again.

A.5 APPENDIX E: TEST SUMMARY REPORT


This appendix provides a Test Summary Report summarizing the overall testing activities,
including the number of test cases executed, their pass/fail rates, and any remaining defects or
issues.

Test Summary Report Sample:

Test Category Total Test Cases Passed Failed Pending


Functional Testing 15 14 1 0
Performance Testing 5 5 0 0
Security Testing 3 3 0 0

A.6 APPENDIX F: SCREENSHOTS AND DIAGRAMS

This appendix includes screenshots or diagrams of the system interface, particularly during
testing, to illustrate specific test cases, issues encountered, or design elements.

Example Diagram:

 Booking Page UI: Screenshot of the booking page showing available cars, booking
dates, and the "Confirm Booking" button.
 Error Screenshot: Screenshot showing an error message when the payment process
fails.

A.7 APPENDIX G: TEST ITEM TRANSMITTAL REPORT

This appendix contains the Test Item Transmittal Report, documenting which items or
components of the Car Rental System were tested and the results of those tests.

Test Item Car Booking Module


Test Execution Dates 2025-06-01 to 2025-06-05
Test Results Passed
Defects None

A.8 APPENDIX H: TEST PLAN AND STRATEGY DOCUMENTS

This appendix provides a reference to the Test Plan and strategy document that outlines the
overall approach to testing, including the testing goals, resource allocation, and schedule.

Test Plan Outline:

 Test Goals: Ensure system functionality, performance, and security.


 Test Tools: Use Selenium for automation, JMeter for load testing, and manual testing for
UI.
 Test Schedule: Functional testing to be completed by June 5, 2025.

A.9 APPENDIX I: GLOSSARY OF TERMS

This appendix defines key terms used in the software testing process.

Glossary:

 Test Case: A set of conditions and variables under which a tester will determine whether
a system or component is working correctly.
 Incident Report: A document that records unexpected results or issues encountered
during testing.
 Regression Testing: Testing conducted after changes to the software to ensure that
existing functionality still works as intended.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy