0% found this document useful (0 votes)
102 views

Technical Design Document: Design of Commute Carpooling Based On Fixed Time and Routes

The document provides a technical design for a carpooling application. It includes sections on feasibility studies conducted on existing applications, user and system requirements, and functional requirements for drivers and passengers. The design aims to create a location-independent application that allows users to authenticate with LDAP credentials and share rides and content on social media. It also plans to integrate payment processing and map selection features.

Uploaded by

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

Technical Design Document: Design of Commute Carpooling Based On Fixed Time and Routes

The document provides a technical design for a carpooling application. It includes sections on feasibility studies conducted on existing applications, user and system requirements, and functional requirements for drivers and passengers. The design aims to create a location-independent application that allows users to authenticate with LDAP credentials and share rides and content on social media. It also plans to integrate payment processing and map selection features.

Uploaded by

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

TECHNICAL DESIGN DOCUMENT

FOR CAR POOLING APPLICATION

THALES DES- DIGITAL ENGINEERING SERVICES NOIDA

TECHNICAL DESIGN DOCUMENT

DESIGN OF COMMUTE CARPOOLING BASED


ON FIXED TIME AND ROUTES

To be used internally – For Training Purpose


TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

Follow-up of the evolutions

LOG OF CHANGES
Revision Date Author Modification

001

002

003

APPROVAL
Name Role Date Signature

Written by 23 Feb
2021
Verified by

Approved by

Approved by the
customer if
necessary
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

CONTENTS

1.1 ABSTRACT............................................................................................................................. 5

1.2 FEASIBILITY STUDY............................................................................................................. 5

Appendix A: Title................................................................................................................................... 17

Appendix B: Title................................................................................................................................... 18
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

LIST OF TABLES

Table 1-1: Reference Documents........................................................................................................... 6

1.1 ABSTRACT

Carpooling has become a practical, cheap and stress-free way to move around. This project
presents the requirement, design and implementation of an enterprise-class application for
carpooling following a MicroServices Architecture model. The added features, compared to
available applications, are different kinds of trips, a check-in system and social media
integration. The two kinds of trips are single trips, which are trip between two cities, and
frequent trips which are the ones that commuters do every day. The check-in system enables
users to check in meetings points and notify all users about that. Users can also share their
activities on the application thanks to social media integration. The application is designed
to be scalable, extensible, highly available and with a good performance. The server is
implemented using the powerful framework like spring boot etc. The server exposes a REST
API, for the clients to consume, and makes the application compatible with multiple
platforms. For the scope of this project, one client application is developed using Android.
An iOS and Web client may be an improvement to this project given that the server is
compatible with these technologies as previously stated

1.2 FEASIBILITY STUDY


With the increase of environmental concerns and the congestion of roads, carpooling has gained
a lot of popularity when it comes to environment-friendly and cheap ways of travelling. Carpooling is
when two or more persons share a ride in one of their personal cars. Carpooling reduces pollution
since we have less cars on the road. It’s also economic since the travel expenses are shared among the
riders. Travelling alone may be stressful, so having other persons with you on a trip reduces the stress
and is also the occasion to socialize and make the trip funnier. Finding people to share a ride with is
the challenge of carpooling as it is difficult to find a person going to the same place as you at a given
time. Many websites and applications has been developed to help people meet to share rides. Those
applications enable users to create and share their trip and find passengers. The downside of those
applications is that they are usually location limited: they are available on few languages and for a
limited number of countries only. Also, most of them are not socially enabled: they do not let users to
share their trips on social media like Facebook. The purpose of this project is to develop an application
that tries to overcome the disadvantages of the other available applications. The application is to be
generic, which means that it may work for any carpooler in any country in the world. Also, it is
socially enabled by its integration to Facebook and possibly to other social media. KwiGo, which is
the name chosen for this application, is also a real-time application: any person taking part of a trip
can check-in the meeting point to let the other persons now he/she has arrived to the meeting point.
The main objective of the work presented throughout this report is to develop an enterprise-class
server that represents the backbone of the application and ensure its compatibility with multiple
platforms including web, Android and iOS. Moreover, an example of a client Android application is
developed for the users to access the services of the application from handheld devices and serve as a
companion during travelling.
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

II- Feasibility study


The first step of my project consisted of assessing the different available carpooling applications
in order to come up with requirements along with improvements. Given that Play Store is the official
source of applications of Android, I used their search engine to find carpooling application by typing
the keyword “carpooling”. A set of similar applications that hold the same icon showed up in the
results. All those applications are from the same publisher but the difference between them is that each
one is for a different country (carpooling.fr, carpooling.co.uk, …). After installing one of this set of
applications and exploring the different features, I found out that it was offering trips between two
cities along with frequent trips. The only disadvantage is that the application works only in France and
in order to have access to other countries you have to download a separate application. The other apps
were similar to the one previously stated. Another app called Carma offered to make the payments
between the passengers and drier goes through the application. Another set of applications offer
different kind of trip: the one that make parents or tutors that do a trip frequently to take kids to
school, clubs or sports meet so that they take turn. These applications are only available through web
and not as a mobile application. An example of this kind of applications is HopWays. After exploring
the different applications, I came up with essential features that are feasible and also some
improvements that should be considered. Single trips and frequent should be implemented in order to
have an application that answers the need of the market. For the scope of this project, the plausible
features to implement in order to improve what is available on the market are:
Location independent application: the same application (no need to download a country specific
app) should work everywhere in the world.
Authenticate enabled Login using Thales Ldap and share ride content to social media.
Pay through the app: The payments for trips goes through the application.
Map picker: for picking the meeting points.

III- User
and system requirement document
1) Project description
The following section contains the user and system requirements for the carpooling application.
The application is a meeting point for carpoolers, both drivers and passengers. Users can share and
find rides. The focus of this application is to provide a ride from office to provided location. User
require Ldap credentials to access the application services. The access of the application is only
granted to authorized users.
a) Users
The users of the application are travelers and commuters who want to go from one place to another or
users that are driving a trip and want to find passengers. Users can act as both passengers and drivers
while using an application. The users use their social media accounts in order to log in the application.
Any user of the application can act as:
A driver is any person that owns a car and wants to go from one place to another and publishes
his trip on the application in order to find passengers to share the ride with.
A passenger is any person that doesn’t own a car and wants to join a driver in a trip he posted
and agrees to all the conditions specified (price and general behavior).

b) Dictionary
In order to avoid ambiguities and to facilitate a good comprehension of this report, following is
the frequent used terms.
c) Dependencies
The application will highly depend on the geo-localization and mapping system of Google. This
will be used for showing itineraries and maps. Also, GPS data will be processed using Google Maps.
Ldap authentication systems are also being used for logging users.

1) Functional requirements
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

a) General application requirements


a.1) Login/Register User
Since all the operations that can be done using the application requires both the driver and passenger
to be logged in, they can use the Ldap credentials to log it into the application. For this matter, the user
is prompted to connect the app to his account and then proceed for sign in/up.

a.2) Rate driver/passenger


Both the driver and passenger can rate each other in other to gain reputation. The importance of the
rating is to encourage users to be helpful and nice during the trip so that they gain popularity in the
application. It is also a way to ensure users of who can be trusted or not. The ratings represent a
relative guarantee for the users to trust each other.

b) Ride Provider (Driver) Business Flow


b.1) Login
Driver needs to first login to the application using there Ldap credentials. If authentication is
successful then proceed further other wise prompt the error message and ask again for login.
b.2) Enter Details
Driver needs to provide the details like source address, destination address, car details, etc.
b.3) Check pending ride request
Check whether there is any pending request or not. If available then view request otherwise prompt No
pending request.
b.4) Request Confirmation
Check request if driver accept the request then confirm the ride otherwise view other pending request.
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

c) Ride Taker Business Flow


c.1) Login
Passenger needs to first login to the application using there Ldap credentials. If authentication is
successful, then proceed further otherwise prompt the error message and ask again for login.
c.2) Enter Source and Destination Details
Passengers needs to provide there source and destination details.
c.3) Check Available Rides
Passengers check available rides, if available then request for ride otherwise prompt “No Ride
Available”.
c.4) Request Confirmation
If request accepted by driver then send confirmation otherwise show other available rides.
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

2) Non-functional requirements
a) Performance
The application has to offer a very quick response time as the meeting between the driver and
passengers is done through notifications. In other words, the server should be able to treat notifications
and propagate them instantly. The application should able to handle many request at the same time.
b) Scalability
The application should respond properly to a high increase of users. The application should not crash
for increased no of users.
c) Availability
Since a lot of information about the trips and check in are available in the application, it has to be
highly available and guarantees a good server up time. The server should allow only 1 hour down time
per year, which is 99.99% up time.
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

d) Privacy and Security


The application should ensure the privacy of the users including the trips in which they take part. The
login system should also be robust where only authorized users can post and edit their own
information.
e) Maintainability
Since the application may be developed in the future by adding other features, it should be easily
maintainable.

IV- Technology enablers


The choice of technology enablers that will be used for the development of the application is essential
for its success. The technology enablers should provide a suitable way to fulfill the requirements stated
before. Principles of enterprise class applications should be kept in mind during the choice of these
technologies. The two main ones are that there is no best technology but instead suitable ones and that
we should not reinvent the wheel, which means that we should take advantage on what was already
implemented and offered to the community. Throughout this document, I will present a comparison
between different technologies and the chosen one along with the different reason of the choice for the
application server, the client-side and other components.

1) Server technologies
a) Application server
Spring Boot makes it easy to create stand-alone, production grade Spring based application. It comes
with embedded Tomcat, Jetty or Undercover directly so there is no need to deploy the WAR files.
Provide opinionated starter dependencies to simplify your build configuration. Absolutely no code
generation and no requirement for XML configuration.
REST, or Representational State Transfer, is an architectural style for providing standards between
computer systems on the web, making it easier for systems to communicate with each other.
There are four basic HTTP verbs we use in requests to interact with resources in a REST system:

 GET — retrieve a specific resource (by id) or a collection of resources


 POST — create a new resource
 PUT — update a specific resource (by id)
 DELETE — remove a specific resource by id

NOTE: Keep in mind for this project REST API should be protected with basic/oauth
authentication.

Sample Swagger for this project:


TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

b) Data storage and persistency


JPA is a specification of Java which is used to access, manage, and persist data between Java object
and relational database. It is considered as a standard approach for Object Relational Mapping.
Hibernates is a Java framework which is used to store the Java objects in the relational database
system. It is an open-source, lightweight, ORM (Object Relational Mapping) tool. Hibernate is an
implementation of JPA. So, it follows the common standards provided by the JPA.
DataBase Schema: Below diagram is representing relationship between tables
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

2) Client side technologies


Create React/ Angular application or Android application.

3) Other technologies
a) Google Maps
Google Maps is mapping application developed by Google. For this application, you’ll be
using its services for:
Maps: Google Maps API for Android enables to show a map given GPS coordinates or
choose a point on a map and get the GPS coordinates back. This will be useful for
determining the meeting point for the trips and store them in the database. Also, Google uses
a textual identifier that uniquely identifies a place. The latter is useful to unify the name of
places and avoid users’ confusion.
Directions: Google Maps API provides a web service to determine the distance between
two GPS coordinates, that will be used at the time of the check-in to determine if the user is
close to the meeting point or not.
b) Ldap authentication
For this project, you need to figure out the way to access the Thales Ldap service to
authenticate the user.
c) Session Maintenance on Client Side

V- System design and architecture


1) System architecture
2) Entity relationship diagram
3) Business model
4) Android or React/ Angular application design

VI- Implementation and Testing


1) Implementation
The implementation process followed an iterative process in both the server and client
side. Each function(requirement) is implemented and then tested.
a) Server side
The process of implementation started by the developing the server first because it is the
backbone of the application and it is required for the application to be tested.
b) Client side
The Android, React/angular application need to be developed by following the business flow
provided above.

2) Testing
a) Server side
Following each iteration, need to test all the implemented function of that iteration. Since the
server is exposed using REST, use Postman as REST client. The tool helps building an HTTP
request, send it to the server and read the response.
b) Client side
Android Studio enable developers to run their application directly in an Android phone
a displays the log of the application. Use this feature to run the application and watch the
different log entries. In order to see what HTTP requests the server and the application are
exchanging, use a packet sniffer to explore the requests and diagnose the source of a bug.
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

VII- STEEPLE analysis


Social
Increase social interaction and solidarity.
Meet new people during rides and make new friends.
Driving with people is better than driving alone since it involves less stress.
Technology
Smartphone penetration is increasing day after day.
Use of technology to create matches between drivers and passengers.
The application is accessible from anywhere using a smartphone.
Real time communication between actors.
Environmental
Increase of high occupancy vehicles, which will lead to a decrease of CO2 emissions. Less cars on the
roads that leads to safer roads and fluent traffic.
Economical
Savings as the price of gas and highways is shared among the travelers in a context of an increasing
gas price.
Political
Increase of support for initiatives that decreases greenhouse gas emission
Support from government thank to the benefits of carpooling.
Legal
Insurances of drivers and passengers: In case of accidents, the owner of the car should have an
insurance to cover any medical expenses.
Ethical
Client confidentiality should be kept: all information related to trips’ history should only be
communicated to their respective user

VIII- Conclusion
This carpooling application is an application that complies to the enterprise class application
principles. It is designed to be performing, scalable, extensible, and highly available. It also ensures
the privacy of the users’ data and secures its access. Given that it may be improved in many ways, the
application is also easily maintainable. The result achieved in this project is a working Android
application and server that perform the requirements stated in this document. It is still not ready to be
deployed on the Play Store for the public. The main reason is that the server should be deployed on
stronger hardware with a good Internet connection. The constraint that should have been considered is
that developing a server and an Android application demand a lot of work. This should be considered
in the time allowed for each one of these activities. Due to this lack of time, many things can be
improved in the present application. This includes a better user interface with more attractive styles.
Also, adding more support for authentication systems can be an improvement.

Table 1-1: Reference Documents


TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

APPENDIX A: TITLE
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION

APPENDIX B: TITLE

You might also like