Project File Srs

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 38

ALIGARH COLLEGE OF ENGINEERING AND TECHNOLOGY, ALIGARH

(Approved By AICTE New Delhi, Affiliated to AKTU , Lucknow)

Project Report on

“Chat Web Application”

Submitted in the partial fulfillment for the award of the degree of


BACHELOR OF TECHNOLOGY
IN
COMPUTER SCIENCE AND ENGINEERING

SUBMITTED BY :

RISHABH JAIN – 201090100041

TUSHAR SHARMA – 2001090100054

ABHISHEK SHARMA -

2101090109001

Head Of Department(CSE/IT) Project Incharge (CSE/IT)


Dr. Anand Sharma Mr. Rohit Yadav
Table Of Contents

DECLARATION ..............................................................................................................

CERTIFICATE ..................................................................................................................

ACKNOWLEDGEMENT.................................................................................................

ABSTRACT ......................................................................................................................

LIST OF FIGURES ..........................................................................................................

1. INTRODUCTION
PROJECT

About the Project

Purpose and Scope

Front End

Introduction Of Html

Introduction Of CSS

Introduction Of Java Script

Introduction Of React JS

Back End

Introduction Of PHP

Introduction Of MySQL
2. SOFTWARE DEVELOPMENT
2.1 Requirement Analysis Phase
2.1.1 System Requirement Specification

2.1.2 Hardware and Software Requirement

2.1.3 Functional Requirement

2.1.4 Non-Functional Requirement

2.1.5 Feasibility Study

2.1.6 Technical Feasibility

2.1.7 Behavioural Feasibility

2.1.8 Economic Feasibility

2.2 Design Phase


2.2.1 Data Flow Diagram

2.2.2 E-R Diagram

2.2.3 Use Case Diagram

2.2.4 Sequence Diagram

2.2.5 Activity Diagram

2.3 Testing Phase


2.3.1 Unit Testing

2.3.2 Integration Testing

2.3.3 System Testing

2.3.4 Acceptance Testing

3. CONCLUSION
REFERENCES……..
DECLARATION

I declare that the work presented in this project entitled “ Chat Web
Application” submitted to the CSE Department, Aligarh College of
Engineering & Technology, Aligarh for the award of Bachelor of
Technology in Computer Science is my original work. I have not
submitted the same work for the award of any other degree.

In case this undertaking is found incorrect, I accept that my degree


can be unconditionally withdrawn.

RISHABH JAIN – 201090100041


TUSHAR SHARMA – 2001090100054
ABHISHEK SHARMA – 2101090109001

DATE :-
PLACE :- ALIGARH
CERTIFICATE

Certified that the work contained in the project entitled “time table generator”,
by, (Rishabh Jain – 201090100041, Tushar Sharma – 2001090100054,
Abhishek Sharma –2101090109001) has been carried out under my
supervision and that this work has not been submitted elsewhere for a degree.

Dr. Anand Sharma Mr. RohitYadav

Head of Department, Project Incharge,

CSE/IT CSE/IT

ACET, Aligarh ACET,Aligarh


ACKNOWLEDGEMENT

We have taken efforts in this project. However, it would not have


been possible without the kind support and help of many
individuals. On the completion of our project we would like to
extend our sincere thanks to all of them. I am highly indebted to
our project guide Mr. Rohit Yadav and Dr. Anand Sharma, Head of
Department (HOD) of Computer Science Department for their
guidance and constant supervision as well as for providing
necessary information regarding the project and also for their
support in completing the project. We would also like to thank all
those who directly or indirectly supported or helped us in
completing our project in time.
We would like to express our gratitude towards our parents and
member of our college for their kind cooperation and
encouragement which helped us in completion of this project. All
of them have willingly helped us out with their abilities.
ABSTRACT

In the digital age, effective and instant communication has become an essential part of our daily lives.
Real-time chat applications have emerged as a cornerstone for connecting people across the globe in an
instantaneous and efficient manner. This project aims to design, develop, and implement a robust real-
time chat application that facilitates seamless communication among users in various contexts.
The proposed chat application will be built using cutting-edge technologies, leveraging the power of
real-time data synchronization and user-friendly interfaces. The project will focus on providing a user-
centric experience, incorporating features such as real-time message delivery, user authentication,
multimedia sharing, and interactive emoticons. Additionally, the application will offer group chat
capabilities, enabling users to engage in conversations with multiple participants concurrently.
The backend of the application will be designed with scalability and reliability in mind, utilizing cloud-
based services for data storage and retrieval. The frontend will be developed for both web and mobile
platforms, ensuring accessibility across a wide range of devices. Security will be a paramount
consideration, with end-to-end encryption and secure authentication mechanisms to protect user data and
maintain confidentiality.
The project will also delve into user experience (UX) design principles, focusing on intuitive navigation,
responsive interfaces, and customizable preferences to cater to a diverse user base. The development
process will follow an agile methodology, allowing for iterative improvements based on user feedback
and emerging technological advancements.
The successful completion of this project will result in a functional real-time chat application that offers
users a seamless and secure medium for communication. Whether for personal use, business
collaborations, or social interactions, the application will contribute to enhancing connectivity in today's
fast-paced world.

Keywords: real-time chat application, communication, user experience, backend development,


frontend development, security, scalability, agile methodology.
INTRODUCTION

PROJECT PLAN

ABOUT THE PROJECT

The ride-sharing application is designed to connect riders with drivers for


convenient and cost-effective transportation services. It allows users to request
rides, view available drivers, track their rides in real-time, and make cashless
payments. The application includes features like ride booking, driver
assignment, fare calculation, payment processing, and ride reviews.

Key Features:

User Registration and Authentication: Users can create accounts, log in


securely, and manage their profiles.
Ride Booking: Riders can request rides by specifying their pickup and
drop-off locations.
Driver Matching: The system matches riders with available drivers based on
proximity and ride requests.
Real-Time Tracking: Riders can track the location of their assigned driver and
estimate the arrival time.
Fare Calculation: The application calculates ride fares based on distance, time, and
any applicable surge pricing.
Payment Processing: Riders can pay for rides electronically, and drivers can
receive payments directly.
Review and Rating: Users can provide feedback and ratings after completing a
ride, enhancing the overall service quality.
Notifications: The application sends notifications for
ride updates, payment confirmations, and other important
information.
Admin Dashboard: Administrators can monitor and manage the system, view ride
data, and process payouts to drivers.

PURPOSE AND

SCOPE Purpose:
The purpose of the ride-sharing application is to provide a convenient, efficient, and cost-
effective transportation solution for users. The application aims to bridge the gap between
riders in need of transportation and drivers willing to offer rides.
The key objectives of the project are as follows:
Accessibility: To make transportation services accessible to a broad user base,
including those without personal vehicles or who prefer not to use them.
Convenience: To offer a seamless and user-friendly platform that allows users to request rides with
ease and receive transportation services at their convenience.
Efficiency: To optimize the allocation of drivers to riders, reducing wait times and providing
efficient routes for drivers.
Transparency: To enhance transparency in ride bookings, fare calculations, and ride tracking, ensuring
trust and confidence among users.
Payment Convenience: To enable secure and cashless payment transactions, simplifying the payment
process for both riders and drivers.
Feedback Mechanism: To allow users to provide feedback and ratings, thereby improving the
quality of services and fostering accountability.
Administrative Control: To provide administrators with the tools to manage and oversee the
system, process payouts, and maintain overall system integrity.

Scope:

The scope of the ride-sharing application project encompasses various aspects related to its
development, operation, and features.
The primary scope elements include:
User Management: Registration, authentication, and profile management for riders, drivers, and
administrators.
Ride Booking and Matching: Features for riders to request rides and for the system to match
riders with available drivers based on proximity and user preferences.
Real-Time Tracking: Implementing real-time location tracking for ride monitoring, route
optimization, and estimated time of arrival.
Fare Calculation: Calculating ride fares based on factors such as distance traveled, time
taken, and any applicable surge pricing.
Payment Processing: Integrating with payment gateways (e.g., Razorpay or Stripe) for
secure, cashless payment processing.
Review and Rating System: Allowing users to provide feedback and ratings after completing
rides.
Notification System: Sending notifications to users regarding ride updates, payment confirmations,
and other important information.
Admin Dashboard: An administrative interface for managing system operations, monitoring user
activities, and processing commissions.
Security and Data Privacy: Implementing security measures to protect user data and
financial transactions.
Cross-Platform Compatibility: Ensuring that the application functions on web browsers and,
potentially, mobile platforms (iOS and Android).
.
FRONT END

Introduction of HTML

l HTML

HTML (Hyper Text Mark-Up Language) is what is known as a "mark-up language" whose role is to

prepare written documents using formatting tags. The tags indicate how the document is presented and

how it links to other documents.

HTML is also used for reading documents on the Internet from different computers, thanks to

the HTTP protocol, which allows users to remotely access documents stored at a specific address on

the network, called a URL.

The World Wide Web (WWW for short), or simply the Web, is the worldwide network formed by all

the documents (called "web pages") which are connected to one another by hyperlinks.

Web pages are usually organized around a main page, which acts as a hub for browsing other pages

with hyperlinks. This group of web pages joined by hyperlinks and centred around a main page is

called a website.

The Web is a vast living archive composed of a myriad of web sites, giving people access to web

pages that may contain formatted text, images, sounds, video, etc.

What is the Web?


The Web is composed of web pages stored on web servers, which are machines that are constantly

connected to the Internet and which provide the pages that users request. Every web page, and more

generally any online resource, such as images, video, music, and animation, is associated with a

unique address called a URL.


The key element for viewing web pages is the browser, a software program which sends requests to

web servers, then processes the resulting data and displays the information as intended, based on

instructions in the HTML page.

The most commonly used broswers on the Internet include:

Mozilla Firefox,

Microsoft Internet

Explorer, Netscape

Navigator,

Safari.

Versions of HTML
HTML was designed by Tim Berners-Lee, at the time a researcher at CERN, beginning in 1989. He

officially announced the creation of the Web on Usenet in August 1991. However, it wasn't until 1993

that HTML was considered advanced enough to call it a language (HTML was then symbolically

christened HTML 1.0). The web browser used back then was named NCSA Mosaic.

RFC 1866, dated November 1995, represented the first official version of HTML, called HTML 2.0.

After the brief appearance of HTML 3.0, which was never officially released, HTML 3.2 became the

official standard on January 14, 1997. The most significant changes to HTML 3.2 were the

standardisation of tables, as well as many features relating to the presentation of web pages.

On December 18, 1997, HTML 4.0 was released. Version 4.0 of HTML was notable for standardizing

style sheets and frames. HTML version 4.01, which came out on December 24, 1999, made several

minor modifications to HTML 4.0.


Introduction of CSS

A CSS (cascading style sheet) file allows you to separate your web sites (X) HTML content from it’s

style. As always you use your (X) HTML file to arrange the content, but all of the presentation (fonts,
colors, background, borders, text formatting, link effects & so on…) are accomplished within a CSS.

At this point you have some choices of how to use the CSS, either internally or externally.

Internal Stylesheet

First we will explore the internal method. This way you are simply placing the CSS code within the

<head></head> tags of each (X) HTML file you want to style with the CSS. The format for this is

shown in the example below.

<head>

<title><title>

<style type=”text/css”>

CSS Content Goes Here

</style>

</head>

<body>

With this method each (X) HTML file contains the CSS code needed to style the page. Meaning that any

changes you want to make to one page, will have to be made to all. This method can be good if you need

to style only one page, or if you want different pages to have varying styles.
External Stylesheet

Next we will explore the external method. An external CSS file can be created with any text or HTML

editor such as “Notepad” or “Dreamweaver”. A CSS file contains no (X) HTML, only CSS. You

simply save it with the .css file extension. You can link to the file externally by placing one of the

following links in the head section of every (X) HTML file you want to style with the CSS file.

<link rel=”stylesheet” type=”text/css” href=“Path To stylesheet.css” />

Or you can also use the @import method as shown below


<style type=”text/css”>@import url(Path To stylesheet.css)</style>

Either of these methods are achieved by placing one or the other in the head section as shown in
example below

<head>

<title><title>

<link rel=”stylesheet” type=”text/css” href=”style.css” />

</head>

<body> or

<head>

<title><title>

<style type=”text/css”>@import url(Path To stylesheet.css)</style>

</head>

<body>

By using an external style sheet, all of your (X) HTML files link to one CSS file in order to style the

pages. This means, that if you need to alter the design of all your pages, you only need to edit one

.css file to make global changes to your entire website.

Here are a few reasons this is better.

Easier

Maintenance

Reduced File Size

Reduced
Are you getting the idea? It’s really cool.
Cascading Order

In the previous paragraphs, I have explained how to link to a css file either internally or externally. If

you understood, than I am doing a good job. If not don’t fret, there is a long way to go before we are

finished. Assuming you have caught on already, you are probably asking, well can I do both? The
answer is yes. You can have both internal, external, and now wait a minute a third way? Yes inline

styles also.

Inline Styles

I have not mentioned them until now because in a way they defeat the purpose of using CSS in the

first place. Inline styles are defined right in the (X) HTML file along side the element you want to

style. See example below.

<p style=”color: #ff0000;”>Some red text</p>

Some red text

Inline styles will NOT allow the user to change styles of elements or text formatted this way So,

which is better?

So with all these various ways of inserting CSS into your (X) HTML files, you may now be asking

well which is better, and if I use more than one method, in what order do these different ways load

into my browser?

All the various methods will cascade into a new “pseudo” stylesheet in the following order:

Inline Style (inside (X) HTML element)

Internal Style Sheet (inside the <head> tag)

External Style Sheet

As far as which way is better, it depends on what you want to do. If you have only one file to style

then placing it within the <head></head> tags (internal) will work fine. Though if you are planning on

styling multiple files then the external file method is the way to go.

Choosing between the <link related=>& the @import methods are completely up to you. I will

mention that the @import method may take a second longer to read the CSS file in Internet Explorer

than the <link related=> option. To combat this see Flash of unstyled content
Users with Disabilities :-

The use of external style sheets also can benefit users that suffer from disabilities. For instance, a user

can turn off your stylesheet or substitute one of there own to increase text size, change colors and so on.

For more information on making your website accessible to all users please read Dive into

accessibility.
Introduction Of JavaScript

JavaScript, often abbreviated as JS, is a versatile and widely used programming language primarily known for its
role in web development. It is a client-side scripting language that allows you to create dynamic and interactive
web applications. JavaScript can be used to add behavior, manipulate the Document Object Model (DOM), and
interact with web servers, making it an essential technology for modern web development.

Here's an introduction to some key concepts and features of JavaScript:

Client-Side Scripting: JavaScript is executed on the client side, meaning it runs within the user's web browser. It
enables you to create dynamic web pages and enhance the user experience without the need for frequent server
requests.

Interactivity: JavaScript is used to make web pages interactive. It can respond to user actions like clicks, form
submissions, and keyboard input, allowing you to build features like form validation, image sliders, interactive maps,
and more.

DOM Manipulation: JavaScript can be used to manipulate the Document Object Model (DOM), which represents the
structure and content of a web page. With JavaScript, you can change the content, structure, and styles of web pages in
real-time, enabling dynamic updates without requiring a full page reload.

Event Handling: JavaScript provides a mechanism for handling events such as clicks, keypresses, and mouse
movements. You can attach event listeners to HTML elements and specify the behavior that should occur when an
event is triggered.

Asynchronous Programming: JavaScript is well-suited for asynchronous programming. It can make asynchronous
requests to web servers (e.g., Ajax) to fetch data or interact with APIs without blocking the main thread, which helps
improve the responsiveness of web applications.

Data Types: JavaScript supports various data types, including numbers, strings, objects, arrays, and functions. It also
has powerful data manipulation features like object-oriented programming (OOP), closures, and prototypes.

Cross-Browser Compatibility: JavaScript is supported by all major web browsers, making it a cross-platform
language. However, developers need to be mindful of browser differences and use techniques like feature detection
and polyfills to ensure compatibility.

Server-Side Development: While JavaScript is primarily a client-side language, it can also be used for server-side
development using platforms like Node.js. Node.js allows developers to use JavaScript for building server
applications, APIs, and real-time applications.

Community and Libraries: JavaScript has a vast ecosystem of libraries and frameworks. Some popular libraries and
frameworks include jQuery, React, Angular, and Vue.js for front-end development, and Express.js for back-end
development.

JavaScript plays a central role in modern web development, enabling developers to create rich and interactive user
interfaces. To work with JavaScript, you typically write JavaScript code directly within HTML files or link to
external JavaScript files. Integrated development environments (IDEs) and code editors like Visual Studio Code
provide features to enhance JavaScript development. Additionally, it's important to learn about the Document
Object Model (DOM) and understand how JavaScript interacts with it to manipulate web pages effectively.
Introduction Of React JS

React is an open-source JavaScript library for building user interfaces. It was developed by Facebook and is
widely used for creating dynamic and interactive web applications. React is known for its efficiency, flexibility,
and component-based architecture, which makes it a popular choice for building modern web applications.

Here's a brief introduction to some key concepts and features of React:

Component-Based: React is centered around the concept of reusable components. Components are self-contained,
independent units that encapsulate a part of the user interface. This approach makes it easier to manage and maintain
complex user interfaces by breaking them down into smaller, manageable pieces.

Declarative: React uses a declarative approach to building UIs, meaning you describe what the user interface should
look like in a given state, and React takes care of updating the DOM to match that state. This simplifies the process of
UI development and helps eliminate common programming errors.

Virtual DOM: React introduces the concept of a virtual DOM, which is a lightweight representation of the actual
DOM. When changes occur in the application, React updates the virtual DOM first, and then efficiently calculates the
minimal set of changes needed to update the real DOM. This optimization leads to better performance.

JSX (JavaScript XML): React allows you to write UI components using JSX, which is a syntax extension for
JavaScript. JSX makes it easy to define the structure and appearance of your components in a way that resembles
HTML, making the code more readable.

Unidirectional Data Flow: React enforces a unidirectional data flow, meaning data flows in one direction, from parent
components to child components. This ensures predictable and easy-to-debug behavior in your applications.

React Ecosystem: React has a vast ecosystem of libraries and tools that complement its functionality. Some popular
additions include React Router for routing, Redux for state management, and Axios for making HTTP requests.

Community and Developer Support: React has a large and active community, which means you can find numerous
resources, tutorials, and third-party packages to help you with your projects. It's also backed by Facebook and used by
many major companies, which adds to its credibility.

React can be used to build both single-page applications (SPAs) and traditional multi-page applications, and it is
commonly used alongside other technologies, such as JavaScript build tools (e.g., Webpack, Babel) and backend
technologies (e.g., Node.js).

To get started with React, you'll need to have a good understanding of JavaScript and JSX. You can create React
applications using tools like Create React App, which sets up a development environment for you. From there, you
can begin building your UI components and designing your application's architecture.
BACK END
Introduction Of PHP
PHP, which stands for "Hypertext Preprocessor" (originally "Personal Home Page"), is a widely used
server-side scripting language designed for web development. It is known for its versatility and is
primarily used to build dynamic websites and web applications. PHP is an open-source language, and it's
embedded within HTML to create web pages with dynamic content.

Here's an introduction to some key concepts and features of PHP:

Server-Side Scripting: PHP is a server-side scripting language, which means that it runs on the web
server and generates dynamic content before sending it to the client's web browser. This
allows PHP to interact with databases, process forms, and perform various server-related tasks.

Open Source: PHP is open-source and freely available, making it accessible to a wide range of
developers and organizations. This has contributed to its popularity and extensive community
support.

Embeddable in HTML: PHP code is embedded directly into HTML documents. You can mix PHP
and HTML to create dynamic web pages. PHP code is enclosed within `<?php ... ?>` tags, and
it is executed when the web page is requested from the server.

Database Integration: PHP is commonly used to interact with databases. It supports a wide range of
database systems, with MySQL being one of the most popular choices. PHP can be used to
connect to databases, retrieve and manipulate data, and generate dynamic content based on the
data.

Extensive Libraries: PHP offers a rich set of built-in functions and libraries for various tasks, such as
working with files, handling forms, and performing string manipulation. There are also
numerous third-party libraries and frameworks available to extend PHP's capabilities.

Cross-Platform: PHP is platform-independent, meaning it can run on various operating systems,


including Windows, Linux, and macOS. This makes it a versatile choice for web development.

Community and Ecosystem: PHP has a large and active community of developers who contribute to
its ongoing development and provide support through forums, tutorials, and documentation.
Additionally, there are many popular content management systems (CMS) and web
frameworks built using PHP, including WordPress, Drupal, and Laravel.

Security: PHP offers features for secure programming, but developers must be aware of potential
security vulnerabilities and best practices to prevent common web application security issues.

PHP is often used in conjunction with web servers like Apache, Nginx, or Microsoft Internet Information
Services (IIS). When a user requests a PHP-based web page, the server processes the PHP code,
generates the HTML output, and sends it to the user's browser.
Introduction Of MySQL

MySQL ( My S-Q-L, or "My sequel" ) is a relational database management system (RDBMS) which has

more than 6 million installations. MySQL stands for "My Structured Query Language". The program

runs as a server providing multi-user access to a number of databases.

The project's source code is available under terms of the GNU General Public License, as well as

under a variety of proprietary agreements. MySQL is owned and sponsored by a single for-profit

firm, the Swedish company MySQL AB, now a subsidiary of Sun Microsystems, which holds the

copyright to most of the codebase.

MySQL is one of the most popular open-source relational database management systems (RDBMS) in
the world. It is known for its robustness, reliability, performance, and ease of use. MySQL is commonly
used for a wide range of applications, from small personal projects to large-scale enterprise systems.

Key Features and Concepts of MySQL:

Relational Database: MySQL is a relational database, which means it stores data in structured tables
with predefined relationships between them.
SQL (Structured Query Language): MySQL uses SQL to manage and manipulate data. SQL is a
powerful language for querying and updating databases.
ACID Properties: MySQL follows the ACID (Atomicity, Consistency, Isolation, Durability)
properties to ensure data integrity and transaction reliability.
Data Types: MySQL supports various data types, including integers, strings, date and time, floating-
point numbers, and more.
Indexes: Indexes are used to speed up data retrieval by providing a quick way to look up records.
MySQL supports various types of indexes, including primary keys, unique keys, and full-text indexes.
InnoDB Storage Engine: MySQL includes the InnoDB storage engine, which offers features like
support for foreign keys and transactions.
User Management: MySQL allows you to create and manage users with different privileges, ensuring
controlled access to databases.
Performance Optimization: MySQL provides tools and techniques to optimize the performance of
database queries and operations.
Replication: MySQL supports replication, which allows data to be mirrored across multiple servers for
scalability and redundancy.
Partitioning: MySQL offers partitioning to divide large tables into smaller, more manageable pieces
for improved performance.
Triggers and Stored Procedures: You can create triggers and stored procedures in MySQL to
automate database actions and simplify complex operations.
Views: Views allow you to create virtual tables that are based on the results of SELECT queries,
providing a simplified way to retrieve and display data.

Applications of MySQL:

MySQL is used in a wide range of applications and scenarios, including:


Web Applications: MySQL is commonly used as the database backend for web applications and
websites. It integrates well with web development technologies such as PHP, Python, Ruby on Rails,
and Java.
Content Management Systems (CMS): Many popular CMSs like WordPress, Joomla, and Drupal use
MySQL for data storage.
E-Commerce Platforms: MySQL supports e-commerce platforms for online shopping and payment
processing.
Business Intelligence: MySQL can store and manage data for business intelligence and reporting
solutions.
Data Warehousing: It can be used in data warehousing and large-scale data analysis.
Mobile Applications: MySQL is integrated with mobile app development platforms to manage
application data.
Telecommunications: MySQL is used in the telecommunications industry for managing call records
and subscriber information.
Gaming: Online and mobile games often use MySQL for player profiles, scores, and game data.
IoT and Edge Computing: MySQL can be used in Internet of Things (IoT) and edge computing
applications for data storage and retrieval.
Data-Driven Applications: Any application that requires structured data storage can benefit from
MySQL's reliability and performance.
SOFTWARE DEVELOPMENT

REQUIREMENT ANALYSIS PHASE


The Requirements Analysis Phase begins when the previous phase objectives have been
achieved. Documentation related to user requirements from the Concept Development
Phase and the Planning Phase shall be used as the basis for further user needs analysis and
the development of detailed requirements. Multiple-release projects require only one
iteration of the Requirements Analysis Phase, which should involve requirements
definition for all planned releases.

The objective of this phase is to define in more detail the system inputs, processes,
outputs and interfaces. At the end of this phase the system’s processes will be defined at
the functional level, meaning the functions to be performed will be known, but not
necessarily how they will be performed. Unless specifically constrained by
the Project Charter, Requirements Analysis should not consider the computer programs,
files and data streams.
Requirements Analysis will identify and consider the risks related to how the technology
will be integrated into the standard operating procedures. Requirements Analysis will
collect the functional and system requirements of the business process, the user
requirements and the operational requirements (e.g., when operational what is necessary
to keep the system up and running).

System Requirement Specification


Software requirements specification establishes the basis for an agreement between
customers and contractors or suppliers on how the software product should function (in a
market-driven project, these roles may be played by the marketing and development
divisions). Software requirements specification is a rigorous assessment of requirements
before the more specific system design stages, and its goal is to reduce later redesign. It
should also provide a realistic basis for estimating product costs, risks, and schedules.
Used appropriately, software requirements specifications can help prevent software
project failure.
The software requirements specification document lists sufficient and necessary
requirements for the project development. To derive the requirements, the developer
needs to have clear and thorough understanding of the products under development. This
is achieved through detailed and continuous communications with the project team and
customer throughout the software development process.

Purpose
The purpose of this document is to give a detailed description of the requirements for the
“Ride Sharing Application” software. It will illustrate the purpose and complete
declaration for the development of system. It will also explain system constraints,
interface and interactions with other external applications.
Hardware and Software Requirement

Hardware Specification
A computer with 4GB of RAM(Random Access Memory)
1 TB of Hard Disk

Software Requirements:
SQL Workbench

Front End: HTML, CSS, JavaScript, React JS


Back End: PHP, MySQL

Functional Requirement
In Software engineering and systems engineering, a functional requirement defines a
function of a system or its component. A function is described as a set of inputs, the
behaviour, and outputs. Functional requirements may be calculations, technical details,
data manipulation and processing and other specific functionality that define what a
system is supposed to accomplish. Behavioural requirements describing all the cases
where the system uses the functional requirements are captured in use cases. Functional
requirements are supported by non-functional requirements which impose constraints on
the design or implementation.

As defined in requirements engineering, functional requirements specify particular


results of a system. This should be contrasted with non-functional requirements which
specify overall characteristics such as cost and reliability. Functional requirements drive
the application architecture of a system, while non-functional requirements drive the
technical architecture of a system.

Non-Functional Requirement
In systems engineering and requirements engineering, a non-functional requirement is
a requirement that specifies criteria that can be used to judge the operation of a system,
rather than specific behaviours. They are contrasted with functional requirements that
define specific behaviour or functions. The plan for implementing functional
requirements is detailed in the system design. The plan for implementing non-functional
requirements is detailed in the system architecture, because they are usually
Architecturally Significant Requirements.
Broadly, functional requirements define what a system is supposed to do and non-
functional requirements define how a system is supposed to be. Functional requirements
are usually in the form of, an individual action or part of the system, perhaps
explicitly in the sense of a mathematical function, a black box description input, output,
process and control functional model or IPO Model. In contrast, non-functional
requirements are in the form of, an overall property of the system as a whole or of a
particular aspect and not a specific function. The system's overall properties commonly
mark the difference between whether the development project has succeeded or failed.

Non-functional requirements are often called "quality attributes" of a system. Other terms
for non-functional requirements are "qualities", "quality goals", "quality of service
requirements", "constraints" and "non-behavioural requirements". Informally these are
sometimes called the "ileitis", from attributes like stability and portability. Qualities—that
is non-functional requirements—can be divided into two main categories:

Execution qualities, such as safety, security and usability, which are


observable during operation.
Evolution qualities, such as testability, maintainability, extensibility and
scalability, which are embodied in the static structure of the system.

Feasibility Study
Feasibility study is made to see if the project on completion will serve the purpose of the
organization for the amount of work, effort and the time that spend on it. Feasibility study
lets the developer foresee the future of the project and the usefulness. A feasibility study
of a system proposal is according to its workability, which is the impact on the
organization, ability to meet their user needs and effective use of resources. Thus when a
new application is proposed it normally goes through a feasibility study before it is
approved for development.

The document provide the feasibility of the project that is being designed and lists various
areas that were considered very carefully during the feasibility study of this project such
as Technical, Economic and Operational feasibilities. The following are its features:
TECHNICAL FEASIBILITY

The system must be evaluated from the technical point of view first. The assessment of
this feasibility must be based on an outline design of the system requirement in the terms
of input, output, programs and procedures. Having identified an outline system, the
investigation must go on to suggest the type of equipment, required method developing
the system, of running the system once it has been designed.

Technical issues raised during the investigation are:

Does the existing technology sufficient for the suggested one?


Can the system expand if developed?

ECONOMIC FEASIBILITY

The developing system must be justified by cost and benefit. Criteria to ensure that effort
is concentrated on project, which will give best, return at the earliest. One of the factors,
which affect the development of a new system, is the cost it would require.

The following are some of the important financial questions asked during preliminary
investigation:

The costs conduct a full system investigation.


The cost of the hardware and software.
The benefits in the form of reduced costs or fewer costly errors.
Since the system is developed as part of project work, there is no manual cost to spend for
the proposed system. Also all the resources are already available, it give an indication of
the system is economically possible for development.

BEHAVIORAL FEASIBILITY

This includes the following questions:

Is there sufficient support for the users?


Will the proposed system cause harm?
The project would be beneficial because it satisfies the objectives when developed and
installed. All behavioural aspects are considered carefully and conclude that the project is
behaviourally feasible.
Design Phase

Design is the first step into the development phase for any engineered product or system.
Design is a creative process. A good design is the key to effective system. The term
“design” is defined as “the process of applying various techniques and principles for the
purpose of defining a process or a system in sufficient detail to permit its physical
realization”. It may be defined as a process of applying various techniques and principles
for the purpose of defining a device, a process or a system in sufficient detail to permit its
physical realization. Software design sits at the technical kernel of the software
engineering process and is applied regardless of the development paradigm that is used.
The system design develops the architectural detail required to build a system or product.
As in the case of any systematic approach, this software too has undergone the best
possible design phase fine tuning all efficiency, performance and accuracy levels. The
design phase is a transition from a user oriented document to a document to the
programmers or database personnel. System design goes through two phases of
development: Logical and Physical Design.

LOGICAL DESIGN:

The logical flow of a system and define the boundaries of a system. It includes the following
steps:

Reviews the current physical system – its data flows, file content, volumes,
Frequencies etc.
Prepares output specifications – that is, determines the format, content and Frequency of reports.
Prepares input specifications – format, content and most of the input
functions. Prepares edit, security and control specifications.
Specifies the implementation plan.
Prepares a logical design walk through of the information flow, output, input,
Controls and implementation plan.
Reviews benefits, costs, target dates and system constraints.

PHYSICAL DESIGN:

Physical system produces the working systems by define the design specifications that tell the
programmers exactly what the candidate system must do. It includes the following steps.

Design the physical


system. Specify input and
output media.
Design the database and specify backup procedures.
Design physical information flow through the system and a physical
design. Plan system implementation.
Prepare a conversion schedule and target date.
Determine training procedures, courses and
timetable.
Devise a test and implementation plan and specify any new hardware/software.
Update benefits , costs , conversion date and system constraints

Data Flow Diagram


A data flow diagram (DFD) is a graphical representation of the "flow" of data through

an information system, modelling its process aspects. A DFD is often used as a


preliminary step to create an overview of the system without going into great detail,
which can later be elaborated. DFDs can also be used for the visualization of data
processing (structured design).
A DFD shows what kind of information will be input to and output from the system, how
the data will advance through the system, and where the data will be stored. It does not show
information about process timing or whether processes will operate in sequence or in
parallel, unlike a traditional structured flowchart which focuses on control flow, or a UML
activity workflow diagram, which presents both control and data flows as a unified model.
DFD Level
E-R Diagram

An entity–relationship model (ER model) describes interrelated things of interest in a


specific domain of knowledge. A basic ER model is composed of entity types (which
classify the things of interest) and specifies relationships that can exist between instances
of those entity types.

In software engineering, an ER model is commonly formed to represent things that a


business needs to remember in order to perform business processes. Consequently, the ER
model becomes an abstract data model, that defines a data or information structure which
can be implemented in a database, typically a relational database.
Entity–relationship modeling was developed for database design by Peter Chen and
published in a 1976 paper. However, variants of the idea existed previously. Some ER
models show super and subtype entities connected by generalization-specialization
relationships, and an ER model can be used also in the specification of domain-specific
ontologies.
Use Case Diagram
A use case diagram at its simplest is a representation of a user's interaction with the
system that shows the relationship between the user and the different use cases in which
the user is involved. A use case diagram can identify the different types of users of a
system and the different use cases and will often be accompanied by other types of
diagrams as well.
Sequence Diagram
A sequence diagram simply depicts interaction between objects in a sequential order i.e. the order in
which these interactions take place. We can also use the terms event diagrams or event scenarios to
refer to a sequence diagram. Sequence diagrams describe how and in what order the objects in a
system function.
3-Tier Architecture

The 3-tier architecture is a software design pattern that divides an application into three interconnected
layers: presentation (user interface), logic (business rules and processing), and data (storage and
retrieval). This separation enhances modularity, scalability, and maintainability by isolating user
interactions, application logic, and data management into distinct layers.
Activity Diagram
Activity diagram is defined as a UML diagram that focuses on the execution and flow of the
behavior of a system instead of implementation. It is also called object-oriented flowchart. Activity
diagrams consist of activities that are made up of actions which apply to behavioral modeling
technology.
ACTIVITY DIAGRAM FOR CHATTING:-
Testing Phase
Testin refers to test the software so it is also called software testing. Software testing is
an investigation conducted to provide stakeholders with information about the
quality of the software product or service under test. Software testing can also provide an
objective, independent view of the software to allow the business to appreciate and
understand the risks of software implementation. Test techniques include the process of
executing a program or application with the intent of finding software bugs (errors or
other defects), and verifying that the software product is fit for use.

Software testing involves the execution of a software component or system component to


evaluate one or more properties of interest. In general, these properties indicate the extent
to which the component or system under test-

meets the requirements that guided its design and development,


responds correctly to all kinds of inputs,
performs its functions within an acceptable time,
is sufficiently usable,
can be installed and run in its intended environments, and
achieves the general result its stakeholders desire.

Unit Testing
In computer programming, unit testing is a software testing method by which individual
units of source code, sets of one or more computer program modules together with
associated control data, usage procedures, and operating procedures, are tested to
determine whether they are fit for use.

Parameterized unit tests (PUTs) are tests that take parameters. Unlike traditional unit
tests, which are usually closed methods, PUTs take any set of parameters. PUTs have
been supported by Testing, JUnit and various .NET test frameworks. Suitable parameters
for the unit tests may be supplied manually or in some cases are automatically generated
by the test framework. Testing tools like Quick Check exist to generate test inputs for
PUTs.

The goal of unit testing is to isolate each part of the program and show that the individual
parts are correct. A unit test provides a strict, written contract that the piece of code must
satisfy. As a result, it affords several benefits.
Integration Testing
Integration testing (sometimes called integration and testing, abbreviated I&T) is the
phase in software testing in which individual software modules are combined and tested
as a group. It occurs after unit testing and before validation testing. Integration testing
takes as its input modules that have been unit tested, groups them in larger aggregates,
applies tests defined in an integration test plan to those aggregates, and delivers as its
output the integrated system ready for system testing.

Some different types of integration testing are big-bang, mixed (sandwich), risky-
hardest, top-down, and bottom-up. Other Integration Patterns are: collaboration
integration, backbone integration, layer integration, client-server integration, distributed
services integration and high-frequency integration.

In the big-bang approach, most of the developed modules are coupled together to form a
complete software system or major part of the system and then used for integration
testing. This method is very effective for saving time in the integration testing process.

However, if the test cases and their results are not recorded properly, the entire integration
process will be more complicated and may prevent the testing team from achieving the
goal of integration testing.

System Testing

System testing of software or hardware is testing conducted on a complete, integrated


system to evaluate the system's compliance with its specified requirements. System
testing falls within the scope of black-box testing, and as such, should require no
knowledge of the inner design of the code or logic.

As a rule, system testing takes, as its input, all of the "integrated" software components
that have passed integration testing and also the software system itself integrated with any
applicable hardware system. The purpose of integration testing is to detect any
inconsistencies between the software units that are integrated together or between any
of the assemblages and the hardware. System testing is a more limited type of testing; it
seeks to detect defects both within the "inter-assemblages" and also within the system as
a whole.
System testing is performed on the entire system in the context of a Functional
Requirement Specification and/or a System Requirement Specification (SRS). System
testing tests not only the design, but also the behaviour and even the believed expectations
of the customer. It is also intended to test up to and beyond the bounds defined in the
software/hardware requirements specification.
Acceptance Testing

In engineering and its various sub disciplines, acceptance testing is a test conducted to
determine if the requirements of a specification or contract are met. It may involve
chemical tests, physical tests, or performance tests.

In systems engineering it may involve black-box testing performed on a system (for


example: a piece of software, lots of manufactured mechanical parts, or batches of
chemical products) prior to its delivery.

In software testing the ISTQB defines acceptance as: formal testing with respect to user
needs, requirements, and business processes conducted to determine whether a system
satisfies the acceptance criteria and to enable the user, customers or other authorized
entity to determine whether or not to accept the system. Acceptance testing is also known
as user acceptance testing (UAT), end-user testing, operational acceptance testing (OAT)
or field (acceptance) testing.

A smoke test may be used as an acceptance test prior to introducing a build of software to
the main testing process
3. CONCLUSION
CONCLUSION
In conclusion, the ride-sharing application project embodies a comprehensive and efficient solution
for modern transportation needs. It integrates users, both riders and drivers, with a sophisticated and
secure platform.

Users can conveniently request rides, make payments, and provide feedback.

Drivers can seamlessly accept ride requests, track their performance, and receive payments.

The system efficiently handles complex tasks like ride matching, fare calculation, and rating
management.

Through a well-designed three-tier architecture, this project ensures scalability, modularity, and
maintainability.

It not only streamlines transportation but also enhances user experiences, making it a valuable
addition to the ride-sharing industry.

REFERENCES

ONLINE REFERENCE:

www.google.co.in

www.javatpoint.com
W3 school.com

[1]Note: draw.io are online tool for creating diagram.

You might also like