Various architectural and logical choices have been justified as following:

\begin{itemize}

	\item A \textbf{4-tier architecture} has been used: client, server application, car system and server database.\\
	This is due to the fact that we're developing an overall light application that doesn't need a lot of computing power, especially on the client side. Therefore, it is possible to structure the system in a logically simple and easily understandable way, without having to lose much in terms of optimization. Besides, this allows to obtain a good compromise between thin client and database tiers, and a clear correspondence between tiers and system' component.

	\item For similar reasons, a \textbf{SOA (Service Oriented Architecture)} has been chosen for the communication of the application server with the front ends. This improves flexibility, through modularity and a clear documentation, and simplicity, through an higher abstraction of the components.

	\item The entire system is designed within the principles of \textbf{Modular programming}, focusing on assigning each functionality to a different module. This greatly improves extensibility and flexibility, and allows for an easy implementation of the APIs.

	\item The \textbf{Client\&Server} logic is the most common, simple way to manage the communication both between client and application server, and between application server and database.

	\item The \textbf{MVC (Model-View-Controller)} pattern, besides being a common choice in object-oriented languages, allows for a clear logical division of the various elements of the program.

	\item The \textbf{Adapter} pattern is largely used for portability and flexibility of the various modules.

\end{itemize}

\section{Other Design Decision}
The system uses \textbf{Google Maps} to perform all the operations related to maps, i.e. map and position visualization, geolocalization (either through GPS or user input) as well as distance, route and ETA calculations. This is an easy, fast to develop solution that relies on a worldwide, well-known and well-established software. Another third-part used by the system is the payment method furnished by \textbf{Paypal}, that allows the user and the system to manage a money transaction. This permit a fast development and a assurance about the correct end of a transaction as the third-part system is well-know and well-established as the first software.
