Technical Design Document: Design of Commute Carpooling Based On Fixed Time and Routes
Technical Design Document: Design of Commute Carpooling Based On Fixed Time and Routes
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
Appendix A: Title................................................................................................................................... 17
Appendix B: Title................................................................................................................................... 18
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION
LIST OF TABLES
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
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
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
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:
NOTE: Keep in mind for this project REST API should be protected with basic/oauth
authentication.
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
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
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.
APPENDIX A: TITLE
TECHNICAL DESIGN DOCUMENT
FOR CAR POOLING APPLICATION
APPENDIX B: TITLE