5628 lines
99 KiB
Plaintext
5628 lines
99 KiB
Plaintext
#LyX 2.2 created this file. For more info see http://www.lyx.org/
|
||
\lyxformat 508
|
||
\begin_document
|
||
\begin_header
|
||
\save_transient_properties true
|
||
\origin unavailable
|
||
\textclass article
|
||
\begin_preamble
|
||
\usepackage{listings}
|
||
\usepackage{xcolor}
|
||
\usepackage{pdflscape}
|
||
\usepackage{courier}
|
||
%\usepackage{mathtools}
|
||
\usepackage{graphicx}
|
||
\usepackage{booktabs}
|
||
\usepackage[T1]{fontenc}
|
||
\usepackage{lmodern}
|
||
|
||
\usepackage{listings}
|
||
\lstset{columns=fullflexible}
|
||
|
||
\usepackage{charter}
|
||
|
||
\usepackage{xspace}
|
||
\usepackage{algorithmicx}
|
||
\usepackage{algpseudocode}
|
||
|
||
|
||
% Definizione intestazioni e pie' di pagina
|
||
\usepackage{fancyhdr}
|
||
|
||
% _____________________________
|
||
\lstdefinelanguage{JS}{
|
||
keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
|
||
keywordstyle=\color{blue}\bfseries,
|
||
ndkeywords={class, export, boolean, throw, implements, import, this}, ndkeywordstyle=\color{darkgray}\bfseries,
|
||
identifierstyle=\color{black},
|
||
sensitive=false,
|
||
comment=[l]{//},
|
||
morecomment=[s]{/*}{*/},
|
||
commentstyle=\color{purple}\ttfamily,
|
||
stringstyle=\color{red}\ttfamily,
|
||
morestring=[b]',
|
||
morestring=[b]"
|
||
}
|
||
|
||
|
||
\definecolor{dkgreen}{rgb}{0,0.6,0}
|
||
\definecolor{gray}{rgb}{0.5,0.5,0.5}
|
||
\definecolor{mauve}{rgb}{0.58,0,0.82}
|
||
\lstset{frame=tb,
|
||
language=JS,
|
||
aboveskip=3mm,
|
||
belowskip=3mm,
|
||
showstringspaces=false,
|
||
columns=flexible,
|
||
basicstyle={\small\ttfamily},
|
||
numbers=none,
|
||
numberstyle=\tiny\color{gray},
|
||
keywordstyle=\color{blue},
|
||
commentstyle=\color{dkgreen},
|
||
stringstyle=\color{mauve},
|
||
breaklines=true,
|
||
breakatwhitespace=true,
|
||
tabsize=3 }
|
||
|
||
% _____________________________
|
||
\end_preamble
|
||
\use_default_options true
|
||
\begin_modules
|
||
InStar
|
||
graphicboxes
|
||
fix-cm
|
||
fixltx2e
|
||
fixme
|
||
customHeadersFooters
|
||
pdfform
|
||
\end_modules
|
||
\maintain_unincluded_children false
|
||
\begin_forced_local_layout
|
||
Format 60
|
||
Style "In Preamble"
|
||
Category "FrontMatter"
|
||
Margin Static
|
||
LatexType Paragraph
|
||
InTitle 0
|
||
InPreamble 1
|
||
TocLevel -1000
|
||
NeedProtect 0
|
||
KeepEmpty 0
|
||
NextNoIndent 0
|
||
CommandDepth 0
|
||
LatexName "dummy"
|
||
ItemCommand item
|
||
LabelType No_Label
|
||
EndLabelType No_Label
|
||
ParagraphGroup "0"
|
||
ParIndent MM
|
||
ParSkip 0.4
|
||
ItemSep 0
|
||
TopSep 0
|
||
BottomSep 0
|
||
LabelBottomSep 0
|
||
ParSep 0
|
||
NewLine 1
|
||
Align Block
|
||
AlignPossible Block, Center, Layout, Left, Right
|
||
FreeSpacing 0
|
||
PassThru 0
|
||
ParbreakIsNewline 0
|
||
RefPrefix OFF
|
||
HTMLLabelFirst 0
|
||
HTMLStyle
|
||
div.standard {
|
||
margin-bottom: 2ex;
|
||
}
|
||
EndHTMLStyle
|
||
HTMLForceCSS 0
|
||
HTMLTitle 0
|
||
Spellcheck 1
|
||
ForceLocal 1
|
||
End
|
||
Style "In Title"
|
||
Category "FrontMatter"
|
||
Margin Static
|
||
LatexType Paragraph
|
||
InTitle 1
|
||
InPreamble 0
|
||
TocLevel -1000
|
||
NeedProtect 0
|
||
KeepEmpty 0
|
||
NextNoIndent 0
|
||
CommandDepth 0
|
||
LatexName "dummy"
|
||
ItemCommand item
|
||
LabelType No_Label
|
||
EndLabelType No_Label
|
||
ParagraphGroup "0"
|
||
ParIndent MM
|
||
ParSkip 0.4
|
||
ItemSep 0
|
||
TopSep 0
|
||
BottomSep 0
|
||
LabelBottomSep 0
|
||
ParSep 0
|
||
NewLine 1
|
||
Align Block
|
||
AlignPossible Block, Center, Layout, Left, Right
|
||
FreeSpacing 0
|
||
PassThru 0
|
||
ParbreakIsNewline 0
|
||
RefPrefix OFF
|
||
HTMLLabelFirst 0
|
||
HTMLStyle
|
||
div.standard {
|
||
margin-bottom: 2ex;
|
||
}
|
||
EndHTMLStyle
|
||
HTMLForceCSS 0
|
||
HTMLTitle 0
|
||
Spellcheck 1
|
||
ForceLocal 1
|
||
End
|
||
\end_forced_local_layout
|
||
\language english
|
||
\language_package default
|
||
\inputencoding auto
|
||
\fontencoding global
|
||
\font_roman "default" "default"
|
||
\font_sans "default" "default"
|
||
\font_typewriter "default" "default"
|
||
\font_math "auto" "auto"
|
||
\font_default_family default
|
||
\use_non_tex_fonts false
|
||
\font_sc false
|
||
\font_osf false
|
||
\font_sf_scale 100 100
|
||
\font_tt_scale 100 100
|
||
\graphics default
|
||
\default_output_format default
|
||
\output_sync 1
|
||
\bibtex_command default
|
||
\index_command default
|
||
\float_placement H
|
||
\paperfontsize default
|
||
\spacing single
|
||
\use_hyperref true
|
||
\pdf_bookmarks true
|
||
\pdf_bookmarksnumbered false
|
||
\pdf_bookmarksopen false
|
||
\pdf_bookmarksopenlevel 1
|
||
\pdf_breaklinks false
|
||
\pdf_pdfborder false
|
||
\pdf_colorlinks false
|
||
\pdf_backref false
|
||
\pdf_pdfusetitle true
|
||
\papersize default
|
||
\use_geometry true
|
||
\use_package amsmath 1
|
||
\use_package amssymb 1
|
||
\use_package cancel 1
|
||
\use_package esint 1
|
||
\use_package mathdots 1
|
||
\use_package mathtools 1
|
||
\use_package mhchem 1
|
||
\use_package stackrel 1
|
||
\use_package stmaryrd 1
|
||
\use_package undertilde 1
|
||
\cite_engine basic
|
||
\cite_engine_type default
|
||
\biblio_style plain
|
||
\use_bibtopic false
|
||
\use_indices false
|
||
\paperorientation portrait
|
||
\suppress_date false
|
||
\justification true
|
||
\use_refstyle 1
|
||
\index Index
|
||
\shortcut idx
|
||
\color #008000
|
||
\end_index
|
||
\leftmargin 2.5cm
|
||
\rightmargin 2.5cm
|
||
\secnumdepth 3
|
||
\tocdepth 3
|
||
\paragraph_separation indent
|
||
\paragraph_indentation default
|
||
\quotes_language english
|
||
\papercolumns 1
|
||
\papersides 1
|
||
\paperpagestyle default
|
||
\tracking_changes false
|
||
\output_changes false
|
||
\html_math_output 0
|
||
\html_css_as_file 0
|
||
\html_be_strict false
|
||
\end_header
|
||
|
||
\begin_body
|
||
|
||
\begin_layout Standard
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
begin{titlepage}
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
newcommand{
|
||
\backslash
|
||
HRule}{
|
||
\backslash
|
||
rule{
|
||
\backslash
|
||
linewidth}{0.5mm}}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
center
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
textsc{
|
||
\backslash
|
||
LARGE Politecnico di Milano}
|
||
\backslash
|
||
|
||
\backslash
|
||
[1.5cm]
|
||
\backslash
|
||
textsc{
|
||
\backslash
|
||
Large PowerEnjoy}
|
||
\backslash
|
||
|
||
\backslash
|
||
[0.5cm]
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
textsc{
|
||
\backslash
|
||
Large Software Engineering 2}
|
||
\backslash
|
||
|
||
\backslash
|
||
[0.5cm]
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
HRule
|
||
\backslash
|
||
|
||
\backslash
|
||
[0.4cm] {
|
||
\backslash
|
||
huge
|
||
\backslash
|
||
bfseries Design Document}
|
||
\backslash
|
||
|
||
\backslash
|
||
[0.4cm]
|
||
\backslash
|
||
HRule
|
||
\backslash
|
||
|
||
\backslash
|
||
[1.5cm]
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
begin{minipage}{0.4
|
||
\backslash
|
||
textwidth}
|
||
\backslash
|
||
begin{flushleft}
|
||
\backslash
|
||
large
|
||
\backslash
|
||
emph{Authors:}
|
||
\backslash
|
||
|
||
\backslash
|
||
Giancarlo
|
||
\backslash
|
||
textsc{Colaci}
|
||
\backslash
|
||
newline Giulio
|
||
\backslash
|
||
textsc{De Pasquale}
|
||
\backslash
|
||
newline Francesco
|
||
\backslash
|
||
textsc{Rinaldi}
|
||
\backslash
|
||
end{flushleft}
|
||
\backslash
|
||
end{minipage} ~
|
||
\backslash
|
||
begin{minipage}{0.4
|
||
\backslash
|
||
textwidth}
|
||
\backslash
|
||
begin{flushright}
|
||
\backslash
|
||
large
|
||
\backslash
|
||
emph{Supervisor:}
|
||
\backslash
|
||
|
||
\backslash
|
||
Elisabetta
|
||
\backslash
|
||
textsc{De Nitto}
|
||
\backslash
|
||
end{flushright}
|
||
\backslash
|
||
end{minipage}
|
||
\backslash
|
||
|
||
\backslash
|
||
[3cm]
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Graphics
|
||
filename res/img/logopm.pdf
|
||
width 30text%
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
vfill
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
{
|
||
\backslash
|
||
large
|
||
\backslash
|
||
today}
|
||
\backslash
|
||
|
||
\backslash
|
||
[3cm]
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
end{titlepage}
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
mbox{}
|
||
\backslash
|
||
thispagestyle{empty}
|
||
\backslash
|
||
newpage
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset CommandInset toc
|
||
LatexCommand tableofcontents
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
thispagestyle{empty}
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
setcounter{page}{1}
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Section
|
||
Introduction
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Revision History
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\align center
|
||
\begin_inset Tabular
|
||
<lyxtabular version="3" rows="3" columns="4">
|
||
<features tabularvalignment="middle">
|
||
<column alignment="center" valignment="top">
|
||
<column alignment="center" valignment="top">
|
||
<column alignment="center" valignment="top">
|
||
<column alignment="center" valignment="top">
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Version
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Date
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Author(s)
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Summary
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
1.1
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
14/01/2017
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Giancarlo Colaci, Giulio De Pasquale, Francesco Rinaldi
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Name refactoring
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
1.0
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
12/12/2016
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Giancarlo Colaci, Giulio De Pasquale, Francesco Rinaldi
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Initial Release
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
</lyxtabular>
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Brief description
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
This document describes design process for PowerEnjoy project based on the
|
||
requirements described in the RASD.
|
||
It is divided into four sections, following
|
||
\shape italic
|
||
IEEE
|
||
\shape default
|
||
standard:
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Architecture Design
|
||
\series default
|
||
, which describes the structure of the system, highlighting software elements
|
||
and relations among them and their properties;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Data Design
|
||
\series default
|
||
, which describes the chosen data structures, dictated by attributes and
|
||
relationships among data objects;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Interface Design
|
||
\series default
|
||
, which describes either internal or external program interfaces;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Procedural Design
|
||
\series default
|
||
, which describes procedural details using graphical notations that facilitates
|
||
translation to code.
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Purpose
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The purpose of this document, the Design Document, is to give more technical
|
||
details than the RASD about PowerEnjoy system.
|
||
In more detail, this document is addressed to software developers to let
|
||
them better understand what is to be built and how it is expected to be
|
||
done.
|
||
The main goal of this document is to completely describe the system-to-be
|
||
by detecting and describing the adopted architectural style, the high-level
|
||
components of the software-to-be and how these components are distributed
|
||
on the architecture's tiers and how they communicate and interact with
|
||
each other, according to the dictates and the guide-lines provided by the
|
||
RASD.
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Scope
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The aim of this project is to develop a web/mobile application for PowerEnjoy,
|
||
in order to let any registered and active user to reserve a car nearby
|
||
and drive it in a simple and effective way.
|
||
Thanks to a smarter uniform distribution of cars in the city that maximizes
|
||
the probability to find a car nearby and to our competitive prices and
|
||
some special discount, every user will experience a totally new feeling
|
||
of freedom and will enjoy saving while driving.
|
||
No car parking ticket.
|
||
No refuelling.
|
||
No road tax.
|
||
No hidden costs.
|
||
PowerEnjoy will make it possible.
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Definitions, Acronyms, Abbreviations
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Below there are definitions of some terms that will be used in the document,
|
||
in order to avoid any ambiguity in their use and their understanding.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
API: Application Programming Interface; it is a common way to communicate
|
||
with another system.
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
DBMS: DataBase Management System, a software that control the creation,
|
||
maintenance and use of a database.
|
||
(e.g.
|
||
MySQL)
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
DD: Design Document.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
EJB: Enterprise JavaBeans, a managed server-side component architecture
|
||
for modular construction of enterprise applications.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
|
||
\shape italic
|
||
EJB
|
||
\begin_inset space ~
|
||
\end_inset
|
||
|
||
Container
|
||
\shape default
|
||
: a software that implements Sun EJB specifications in order to correctly
|
||
manage session and entity beans.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
|
||
\shape italic
|
||
Entity
|
||
\begin_inset space ~
|
||
\end_inset
|
||
|
||
bean
|
||
\shape default
|
||
: a distributed object that have persistent state.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
JavaBeans
|
||
\begin_inset space ~
|
||
\end_inset
|
||
|
||
Components: Objects that act as temporary data stores for the pages of an
|
||
application.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
JAX-RS: Java API for RESTful Web Services, a Java programming language API
|
||
specification that provides support in creating web services according
|
||
to the Representational State Transfer (REST) architectural pattern.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
JDBC: Java Database Connectivity, a Java API that allows the application
|
||
to communicate with a database.open source database manager system, a software
|
||
capable of managing data.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
JSF: JavaServer Faces, a Java specification foRevision History
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
r building component-based user interfaces for web applications.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
JSP
|
||
\begin_inset space \space{}
|
||
\end_inset
|
||
|
||
Pages: text documents that contain two types of text: static data, which
|
||
can be expressed in any text-based format (such as HTML, SVG, WML, and
|
||
XML), and JSP elements, which construct dynamic content.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
HTML: HyperText Markup Language, a markup language for building web pages.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
HTTP: Hypertext Transfer Protocol, an application protocol used by web browsers.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
MVC: Model View Controller.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
MySQL: open source database manager system, a software capable of managing
|
||
data.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
RASD: Requirements Analysis and Specifications Document.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
|
||
\shape italic
|
||
URL
|
||
\shape default
|
||
: Uniform Resource Locator.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
|
||
\shape italic
|
||
Push
|
||
\begin_inset space \space{}
|
||
\end_inset
|
||
|
||
notification
|
||
\shape default
|
||
: it is a notification sent to a smartphone using the mobile application,
|
||
so it must be installed.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
Push
|
||
\begin_inset space \space{}
|
||
\end_inset
|
||
|
||
service: it is a service that allows to send push notifications with own
|
||
API.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
REST: REpresantional State Transfer.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
RESTful: REST with no session.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
UX: User eXperience.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
UI: User Interface.
|
||
\end_layout
|
||
|
||
\begin_layout Description
|
||
BCE: Business Controller Entity.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Reference documents
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
Requirements Analysis and Specification Document produced before: [RASD.pdf]
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
Specification Document: [ASSIGNMENTS AA 2016-2017.pdf]
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Document Structure
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
|
||
\series bold
|
||
Introduction
|
||
\series default
|
||
: this section introduces the design document.
|
||
It contains a justification of his utility and indications on which parts
|
||
are covered in this document that are not covered by RASD.
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
|
||
\series bold
|
||
Architecture Design
|
||
\series default
|
||
: this section is divided into different parts.
|
||
\end_layout
|
||
|
||
\begin_deeper
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
Overview
|
||
\shape default
|
||
: this sections explains the division in tiers of our application.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
High level components and their interaction
|
||
\shape default
|
||
: this sections gives a global view of the components of the application
|
||
and how they communicate.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
Component view
|
||
\shape default
|
||
: this sections gives a more detailed view of the components of the applications.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
Deploying view
|
||
\shape default
|
||
: this section shows the components that must be deployed to have the applicatio
|
||
n running correctly.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
Runtime view
|
||
\shape default
|
||
: this section shows the course of the different tasks of our application
|
||
through several sequence diagrams .
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
Component interfaces
|
||
\shape default
|
||
: this section shows the interfaces between the components.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
Selected architectural styles and patterns
|
||
\shape default
|
||
: this section explain the architectural choices taken during the creation
|
||
of the application.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
Other design decisions
|
||
\end_layout
|
||
|
||
\end_deeper
|
||
\begin_layout Enumerate
|
||
|
||
\series bold
|
||
Algorithms Design
|
||
\series default
|
||
: this section describes the most critical parts via some algorithms.
|
||
Pseudo code is used in order to hide unnecessary implementation details
|
||
in order to focus on the most important parts.
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
|
||
\series bold
|
||
User Interface Design
|
||
\series default
|
||
: this section presents mockups and user experience explained via UX and
|
||
BCE diagrams.
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
|
||
\series bold
|
||
Requirements Traceability
|
||
\series default
|
||
: this section aims to explain how the decisions taken in the RASD are linked
|
||
to design elements.
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
|
||
\series bold
|
||
Appendix
|
||
\series default
|
||
: in this section will be listed the different tools we used and the hours
|
||
of work spent by each member of the team.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Section
|
||
Architectural Design
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Overview
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The PowerEnjoy system will be developed on the Java 2 Enterprise Edition
|
||
platform, one of the most important technology used to build large scale,
|
||
distributed, component-based, web-enabled and multi-tier applications.
|
||
J2EE provides also robustness, efficiency and
|
||
\shape italic
|
||
portability
|
||
\shape default
|
||
of code because it is based on Java technology and standard-based Java
|
||
programming APIs: in this way, we will be able to “write once” our application
|
||
and “run it anywhere”.
|
||
The system will be designed according to the traditional multi-tier architectur
|
||
e, in order to guarantee:
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
flexibility
|
||
\shape default
|
||
: by separating the business logic of an application from its presentation
|
||
logic, a multi-tier architecture makes the application much more flexible
|
||
to changes;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
maintainability
|
||
\shape default
|
||
: because of their independence and the different technology used in each
|
||
layer, changes should have no effect on any other layer and can be managed
|
||
by independent teams with different skills.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
reusability
|
||
\shape default
|
||
: separating the application into multiple layers makes it easier to implement
|
||
re-usable components.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\shape italic
|
||
scalability
|
||
\shape default
|
||
: a multi-tier architecture allows distribution of application components
|
||
across multiple servers thus making the system much more scalable
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
In detail, PowerEnjoy architecture will be made up of four logical levels:
|
||
the
|
||
\series bold
|
||
Client
|
||
\series default
|
||
tier, the
|
||
\series bold
|
||
Web
|
||
\series default
|
||
tier, the
|
||
\series bold
|
||
Business
|
||
\series default
|
||
tier and the
|
||
\series bold
|
||
EIS
|
||
\series default
|
||
tier.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The
|
||
\series bold
|
||
Client
|
||
\series default
|
||
tier consists of application clients that make
|
||
\shape italic
|
||
requests
|
||
\shape default
|
||
to the server, which processes the requests and returns a
|
||
\shape italic
|
||
response
|
||
\shape default
|
||
back to the client.
|
||
The Client tier is accessible via
|
||
\shape italic
|
||
mobile application
|
||
\shape default
|
||
(that interacts directly with the application server via RESTful API) or
|
||
by a
|
||
\shape italic
|
||
web browser
|
||
\shape default
|
||
(that run JavaScript and apply Cascading Style Sheets (CSS) before interpreting
|
||
pages marked up with HTML), and it interacts with the Web tier through
|
||
an HTTP connection, eventually sending data provided by the user.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The
|
||
\series bold
|
||
Web
|
||
\series default
|
||
tier consists of components implemented with JEE technology that handle
|
||
the interaction between clients and the business tier.
|
||
Its main tasks are collect HTTP requests from users of the client interface
|
||
and return appropriate anwers with HTML pages, generated with the data
|
||
received from the components in the business tier.
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The
|
||
\series bold
|
||
Business
|
||
\series default
|
||
tier consists of Enterprise JavaBean (EJB), software components that encapsulat
|
||
e all the logic of an application.
|
||
This tier uses the Java Persistence API (JPA) to access the database, abstracti
|
||
ng the relational model implemented by the database in a model of data objects,
|
||
in order to allow the interaction with the application.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The
|
||
\series bold
|
||
EIS
|
||
\series default
|
||
tier consists of a Database Management System (DBMS) in charge of create,
|
||
manipulate, query and extract data over a database.
|
||
The business tier uses the Java Database Connectivity (JDBC) to have access
|
||
to the resources located on the database.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/MultiTier Architecture.png
|
||
width 85text%
|
||
height 85theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
MultiTier Architecture
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/HardwareRepresentation.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
scaleBeforeRotation
|
||
rotateAngle 90
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Hardware Representation
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
High level components and their interaction
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The high level components architecture is composed of different elements.
|
||
The client can initiate the communication with the server from his mobile
|
||
application or from the webpage of the application.
|
||
This communication is made in a synchronous way since the client, who initiates
|
||
the communication, has to wait the answer of the application that acknowledge
|
||
him that his request has been taken into account.
|
||
The application will receive two kinds of requests from the client: direct
|
||
ones, if he's using the mobile application, or redirected ones by the webserver
|
||
, if he's using the web browser.
|
||
The application will later send an asynchronous message to the client to
|
||
specifiy the status of his reservation.
|
||
The application communicates also with another type of component, the cars.
|
||
The application can send synchronous messages to the cars to check their
|
||
status and eventually reserve one of them for each user or manage any kind
|
||
of maintenance.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
The interactions between the main components are shown in figure:
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\align center
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/HighLevel Components.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
High Level Components
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Component view
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
We adopted a
|
||
\shape italic
|
||
top-down
|
||
\shape default
|
||
approach to separate, at least from a logical point of view, different
|
||
set of functionalities.
|
||
Once the system was decomposed into several sub-systems, we adopted a
|
||
\shape italic
|
||
bottom-up
|
||
\shape default
|
||
approach in order to create more modular and reusable components.
|
||
Here are listed the most relevant components the system has been split
|
||
into.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
PowerEnjoyApp GUI
|
||
\series default
|
||
: this is the graphic interface which let the user send request to the server
|
||
and receive response via mobile application;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
PowerEnjoyWeb GUI
|
||
\series default
|
||
: this is the graphic interface which let the user send request to the server
|
||
and receive response via web browser;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Authentication Manager
|
||
\series default
|
||
: this is the component responsible for the customer registration and login
|
||
system.
|
||
It handles activities such as creating a new customer account, log into
|
||
the system or deleting an existing account;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
AccountInformation Manager
|
||
\series default
|
||
: this is the component responsible for the customer profile management.
|
||
It handles activities such as editing personal and billing data, enabling/disab
|
||
ling money saving option and consulting reservation history;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
CheckAvailability Manager
|
||
\series default
|
||
, this is the component responsible for searching available cars in a specific
|
||
location;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Reservation Manager
|
||
\series default
|
||
: this is the component that manages each reservation.
|
||
It handles activities such as creating a new reservation, checking the
|
||
active reservation information (such as the remaining time until it expires,
|
||
the reserved car's position and status or the elapsed rental time) and
|
||
terminating the active ones;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Car Manager
|
||
\series default
|
||
: this is the component that check and manage the status of each car by
|
||
communicating with them through the ADS of each present on each car.
|
||
If a car needs any kind of maintenance, it will send a request to an external
|
||
maintenance service;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
ADS_Application Manager
|
||
\series default
|
||
: this is the component which guarantee the correct communication between
|
||
the Server and the ADS Application installed on each ADS on each electric
|
||
car;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Payment Manager
|
||
\series default
|
||
: this is the component that calculates the fees for the rides at the end
|
||
of each reservation and send a payment request to an external service;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Data Manager
|
||
\series default
|
||
: this is the component where the data is managed and viewed;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Notification Manager
|
||
\series default
|
||
: this is the component that manages all the notifications.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Our application will use Google Maps API to manage information about the
|
||
actors' position.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
The interactions between the main components are shown in figure:
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/ComponentView.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Component View
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
In this representation, in order to avoid redundancy due a duplication of
|
||
the same elements, we decide to use a different color for the actors to
|
||
enlight the fact that only an active user can have the possibility to reserve
|
||
a car.
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Deployment view
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
In this section in shown how the software components are distributed with
|
||
respect to the hardware resources available in the system.
|
||
The mobile applications communicate directly with application server via
|
||
RESTful API while the browser applications communicate with the Web server
|
||
that receives users' requests, interacts with the Business server and provides
|
||
HTML pages in order to start the user experience.
|
||
The system can retrieve information from each car communicating with their
|
||
ADS via RESTful API.
|
||
The Business server contains the application logic and the modules that
|
||
handle the main functionalities of the system.
|
||
Every module is accessible only by the allowed users.
|
||
All the data needed for the operations handled by the modules are retrieved
|
||
from the database in the Data server.
|
||
The various interactions with the database are monitored by the DBMS in
|
||
order to guarantee the ACID properties of the database.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/DeploymentView.png
|
||
width 76text%
|
||
height 80theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Deployment View
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Runtime view
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
In this section are explained through Sequence diagrams some of the most
|
||
relevant interactions between components and actors of the system.
|
||
Like in the RASD document, some assumptions are made in order to simplify
|
||
the representation and clarify some aspects; by the way, some of the most
|
||
important features, if considered implicit in a Sequence diagram, are explicitl
|
||
y represented in another one.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
Login Sequence Diagram
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/Sequence Diagrams/login.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Login Sequence Diagram
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
Registration Sequence Diagram
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/Sequence Diagrams/registration.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Registration Sequence Diagram
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
Check Cars' Availability Sequence Diagram
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/Sequence Diagrams/availability.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Check Cars’ Availability Sequence Diagram
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
Modify Personal Information Sequence Diagram
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/Sequence Diagrams/editpersonalinfo.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Modify Personal Information Sequence Diagram
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
Car Reservation Sequence Diagram
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/Sequence Diagrams/reservecar.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Car Reservation Sequence Diagram
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
Car Unlock Sequence Diagram
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/Sequence Diagrams/opencar.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Car Unlock Sequence Diagram
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
Car Rental Sequence Diagram
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/Sequence Diagrams/rental.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Car Rental Sequence Diagram
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Component interfaces
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
In this section we're going to describe the interfaces through which the
|
||
various components of the system communicate.
|
||
For each interface we'll provide a short but exhaustive description of
|
||
the main exposed methods.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
|
||
\series bold
|
||
Authentication Manager
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Functions implemented by
|
||
\series bold
|
||
Authentication Manager
|
||
\series default
|
||
:
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
register(UserData)
|
||
\family default
|
||
: This function creates a new
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
instance in the system with all the information provided by the user during
|
||
the registration phase.
|
||
If the entered data are correct, an email is sent to the user address to
|
||
confirm the correct registration to the service.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
login(Credentials)
|
||
\family default
|
||
: This function allows any registered user to log into the system using
|
||
his
|
||
\shape italic
|
||
username
|
||
\shape default
|
||
and
|
||
\shape italic
|
||
password
|
||
\shape default
|
||
.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
checkCredentials(Credentials)
|
||
\family default
|
||
: This function verifies the
|
||
\shape italic
|
||
username
|
||
\shape default
|
||
-
|
||
\shape italic
|
||
password
|
||
\shape default
|
||
combination is correct.
|
||
If the credentials are correct, the function returns a token to be used
|
||
in the future requests to identify the user.
|
||
Otherwise, an error is returned.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
|
||
\series bold
|
||
AccountInformation Manager
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Functions implemented by
|
||
\series bold
|
||
AccountInformation Manager
|
||
\series default
|
||
:
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
remove(User)
|
||
\family default
|
||
: This function deletes the
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
from the system.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
activate(User)
|
||
\family default
|
||
: This function restores the privileges of the
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
deactivate(User)
|
||
\family default
|
||
: This function removes some of the privileges from the
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
editProfile(User, UserData)
|
||
\family default
|
||
: This function updates the existent
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
instance in the system with all the new information provided by the
|
||
\family typewriter
|
||
UserData
|
||
\family default
|
||
object.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
getHistory(User)
|
||
\family default
|
||
: This function allows a registered
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
to consult his complete requests history.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
enableMSO(User):
|
||
\family default
|
||
This function enables the Money Saving Option for the
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
disableMSO(User):
|
||
\family default
|
||
This function disables the Money Saving Option for the
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
|
||
\series bold
|
||
CheckAvailability Manager
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Functions implemented by
|
||
\series bold
|
||
CheckAvailability Manager
|
||
\series default
|
||
:
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
getUserPosition(User)
|
||
\family default
|
||
: This function will retrieve the information about the user’s position
|
||
through the Google Maps API.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
getAvailableCars(Location)
|
||
\family default
|
||
: This function will retrieve the needed information through the Car Manager
|
||
and it will return a list of
|
||
\shape italic
|
||
available
|
||
\shape default
|
||
cars near the user's
|
||
\family typewriter
|
||
Location
|
||
\family default
|
||
.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
|
||
\series bold
|
||
Reservation Manager
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Functions implemented by
|
||
\series bold
|
||
Reservation Manager
|
||
\series default
|
||
:
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
checkVerificationCode(User, int)
|
||
\family default
|
||
: This function verifies the
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
-
|
||
\shape italic
|
||
verification
|
||
\shape default
|
||
|
||
\shape italic
|
||
code
|
||
\shape default
|
||
combination is correct.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
getUserPosition(User)
|
||
\family default
|
||
: This function will retrieve the information about the user’s position
|
||
through the Google Maps API.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
getReservableCars(Location)
|
||
\family default
|
||
: This function will retrieve the needed information through the Car Manager
|
||
and it will return a list of
|
||
\shape italic
|
||
reservable
|
||
\shape default
|
||
cars near the user's
|
||
\family typewriter
|
||
Location
|
||
\family default
|
||
.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
startReservation(Car, User)
|
||
\family default
|
||
: This function creates a new instance of
|
||
\family typewriter
|
||
Reservation
|
||
\family default
|
||
, tying together the
|
||
\family typewriter
|
||
Car
|
||
\family default
|
||
and
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
instances passed as argument, and notifies it to the
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
through the Notification Manager.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
checkReservationStatus(Reservation)
|
||
\family default
|
||
: This function retrieves all the information about the
|
||
\family typewriter
|
||
Reservation
|
||
\family default
|
||
instance passed as argument, and shows them to the
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
through the Notification Manager.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
endReservation(Reservation)
|
||
\family default
|
||
: This function terminates the current
|
||
\family typewriter
|
||
Reservation
|
||
\family default
|
||
and send a payment request to the Payment Manager.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
startRent(Reservation)
|
||
\family default
|
||
: This function creates a new instance of
|
||
\family typewriter
|
||
Rent
|
||
\family default
|
||
, updating the
|
||
\family typewriter
|
||
Reservation
|
||
\family default
|
||
instance passed as argument, and notifies it to the
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
through the Notification Manager.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
checkRentStatus(Rent)
|
||
\family default
|
||
: This function retrieves all the information about the
|
||
\family typewriter
|
||
Rent
|
||
\family default
|
||
instance passed as argument, and shows them to the
|
||
\family typewriter
|
||
User
|
||
\family default
|
||
through the Notification Manager.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
isTerminable(Rent)
|
||
\family default
|
||
: This function will check through the Car Manager if all the conditions
|
||
to end the
|
||
\family typewriter
|
||
Rent
|
||
\family default
|
||
are respected (for example if nobody is still in the car, and so on..) and
|
||
it will return
|
||
\family typewriter
|
||
true
|
||
\family default
|
||
if the rent is terminable,
|
||
\family typewriter
|
||
false
|
||
\family default
|
||
otherwise.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
endRent(Rent)
|
||
\family default
|
||
: This function terminates the current
|
||
\family typewriter
|
||
Rent
|
||
\family default
|
||
, notifies it to the user through the Notification Manager and sends a payment
|
||
request to the Payment Manager.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
|
||
\series bold
|
||
ADS_Application Manager
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Functions implemented by
|
||
\series bold
|
||
ADS_Application Manager
|
||
\series default
|
||
:
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
getStatus()
|
||
\family default
|
||
: This function asks the ADS to check the current
|
||
\family typewriter
|
||
Status
|
||
\family default
|
||
(
|
||
\shape slanted
|
||
available
|
||
\shape default
|
||
,
|
||
\shape slanted
|
||
reserved
|
||
\shape default
|
||
,
|
||
\shape slanted
|
||
in_use
|
||
\shape default
|
||
,
|
||
\shape slanted
|
||
unavailable
|
||
\shape default
|
||
) of the car.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
getDamages()
|
||
\family default
|
||
: This function queries the ADS to check the eventual car’s damages through
|
||
the sensors installed in there.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
getPosition)
|
||
\family default
|
||
: This function queries the ADS to check the current position of the car.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
getPassengers()
|
||
\family default
|
||
: This function queries the ADS the number of passengers actually inside
|
||
the car.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
getPowerGrid()
|
||
\family default
|
||
: This function queries the ADS to check if the car is plugged into the
|
||
power grid.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
lockDoors()
|
||
\family default
|
||
: This function queries the ADS the lock the car’s doors and to change the
|
||
|
||
\family typewriter
|
||
Status
|
||
\family default
|
||
of the car into
|
||
\shape slanted
|
||
available
|
||
\shape default
|
||
.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
unlockDoors()
|
||
\family default
|
||
: This function queries the ADS the unlock the car’s doors and to change
|
||
the
|
||
\family typewriter
|
||
Status
|
||
\family default
|
||
of the car into
|
||
\shape slanted
|
||
in_use
|
||
\shape default
|
||
.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
updateCarStatus(Status)
|
||
\family default
|
||
: This function queries the ADS to change the car’s
|
||
\family typewriter
|
||
Status
|
||
\family default
|
||
into the one passed as argument.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
|
||
\series bold
|
||
Car Manager
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Functions implemented by
|
||
\series bold
|
||
Car Manager
|
||
\series default
|
||
:
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
contactMaintainanceService(Car)
|
||
\family default
|
||
: Every time the Car Manager retrieve information about a car’s status,
|
||
if necessary, it will send a maintainance request to an external service
|
||
through this function.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
ping(Car)
|
||
\family default
|
||
: This function queries a
|
||
\family typewriter
|
||
Car
|
||
\family default
|
||
to check whether it is online.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
carsInRadius(Location)
|
||
\family default
|
||
: This function retrieves all the cars near the
|
||
\family typewriter
|
||
Location
|
||
\family default
|
||
passed as argument.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
|
||
\series bold
|
||
Payment Manager
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Functions implemented by
|
||
\series bold
|
||
Payment Manager
|
||
\series default
|
||
:
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
applyReservationFees(Reservation)
|
||
\family default
|
||
: This function will apply the fees for each
|
||
\family typewriter
|
||
Reservation
|
||
\family default
|
||
instance.
|
||
Actually, the user can terminate a reservation for free, but in the future
|
||
if PowerEnjoy would decide to apply a fee for the termination of a reservation,
|
||
it would be very easy to modify this value.
|
||
If the user picks up the car, his reservation terminates and the system
|
||
will create another instance
|
||
\family typewriter
|
||
Rent
|
||
\family default
|
||
: no fees will be applied to transform a
|
||
\family typewriter
|
||
Reservation
|
||
\family default
|
||
into a
|
||
\family typewriter
|
||
Rent
|
||
\family default
|
||
.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
calculateRentFees(Rent)
|
||
\family default
|
||
: This function will calculate the fees for each
|
||
\family typewriter
|
||
Rent
|
||
\family default
|
||
instance.
|
||
In this case we have to consider eventual discounts and other additional
|
||
fees before sending the payment request to the external payment service.
|
||
It would not be difficult in the future to change some parameters according
|
||
to the PowerEnjoy policy.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
calculateRentDiscount(Rent)
|
||
\family default
|
||
: This function will calculate the eventual discount for each
|
||
\family typewriter
|
||
Rent
|
||
\family default
|
||
instance.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\family typewriter
|
||
calculateAdditionalFees(Rent)
|
||
\family default
|
||
: This function will calculate the eventual additional fees for each
|
||
\family typewriter
|
||
Rent
|
||
\family default
|
||
instance.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
|
||
\series bold
|
||
Data Manager
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Functions implemented by
|
||
\series bold
|
||
Data Manager
|
||
\series default
|
||
:
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
store(Data)
|
||
\family default
|
||
: This function allows any authorized entity to store data into the DataBase.
|
||
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
retrieve(Data)
|
||
\family default
|
||
:: This function allows any authorized entity to read data from the DataBase.
|
||
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
delete(Data)
|
||
\family default
|
||
:: This function allows any authorized entity to delete data from the DataBase.
|
||
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
edit(Data)
|
||
\family default
|
||
:: This function allows any authorized entity to modify data into the DataBase.
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
|
||
\series bold
|
||
Notification Manager
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Functions implemented by
|
||
\series bold
|
||
Notification Manager
|
||
\series default
|
||
:
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
|
||
\family typewriter
|
||
notify(User, Notification)
|
||
\family default
|
||
: This function is used to notify a message to the user.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection*
|
||
|
||
\series bold
|
||
Other Specifications
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The front-ends of the system (the mobile app and the web application) communicat
|
||
e with the Application Server using the back-end interface implemented as
|
||
a RESTful interface over the HTTPS protocol.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The users’ browsers will communicate with the web server via HTTPS requests.
|
||
Any unencrypted request will be denied.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The RESTful interface is implemented in the Application server using JAX-RS
|
||
and uses XML as the data representation language.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The Application Server communicates with the DBMS via the Java Persistence
|
||
API over standard network protocols.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The Application Server is configurable by means of a XML configuration file,
|
||
that will contain any other setting useful in the implementation phase.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Selected architectural styles and patterns
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
The Architecture
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The architecture of the system has been previously described at higher level.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
As we said, we adopted a
|
||
\series bold
|
||
multi-tier architecture
|
||
\series default
|
||
in which every tier is hosted on a different machine: the
|
||
\shape italic
|
||
Client
|
||
\shape default
|
||
tier is on the pc or smartphone the user access the system from, the
|
||
\shape italic
|
||
Web
|
||
\shape default
|
||
tier is hosted on a separate server used only for this purpose, while another
|
||
server hosts the
|
||
\shape italic
|
||
Business
|
||
\shape default
|
||
tier.
|
||
Finally a last server contains the
|
||
\shape italic
|
||
Data
|
||
\shape default
|
||
tier.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
This division between all levels has been made in order to allow update
|
||
and maintenance on a particular tier without affecting the others, and
|
||
to prevent the whole system to interrupt in case of fault of a component.
|
||
We also adopted the
|
||
\shape italic
|
||
thin client
|
||
\shape default
|
||
paradigm to the interaction between user’s machine and the system: in this
|
||
way all the application logic is on the application server, which has sufficien
|
||
t computing power and is able to manage concurrency issue efficiently.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
The Desing Pattern
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The Design pattern used for this system is the
|
||
\series bold
|
||
Model-View-Controller
|
||
\series default
|
||
(MVC).
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
This choice has been made mainly for the flexibility that this pattern provides:
|
||
the
|
||
\shape italic
|
||
model
|
||
\shape default
|
||
, the
|
||
\shape italic
|
||
view
|
||
\shape default
|
||
and the
|
||
\shape italic
|
||
controller
|
||
\shape default
|
||
are separated into different components that can be modified with a minimum
|
||
impact with respect to the others, helping to achieve a better scalability
|
||
and offering the possibility to add new functionalities to the system or
|
||
to apply changes to the code.
|
||
In more detail:
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The
|
||
\series bold
|
||
Model
|
||
\series default
|
||
contains the representation of data and the application logic, so all the
|
||
functions that manipulates data.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The
|
||
\series bold
|
||
View
|
||
\series default
|
||
makes the model suitable for the user interaction, providing a GUI: every
|
||
user will access the system and all its functionalities through this component.
|
||
Furthermore, it provides the possibility to have different representations
|
||
(or views) for the same data, depending on the user’s preference or on
|
||
the user’s permissions.
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
The
|
||
\series bold
|
||
Controller
|
||
\series default
|
||
, finally, is responsible for the communication between the View and the
|
||
Model: in particular it responds to user’s actions and invokes changes
|
||
on the model.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Other design decisions
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Storage of passwords
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Users’ password will not be stored in plain-text, but they will be hashed
|
||
and salted with cryptographic hash functions.
|
||
This provides a last line of defense in case of data theft.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Google Maps
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The system uses an external service, Google Maps, to offload all the geolocaliza
|
||
tion, distance calculation and map visualization processes.
|
||
The reasons of this choice are the following:
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
manually developing maps for each city is not a viable solution due to the
|
||
tremendous effort of coding and data collection required;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
Google Maps is a well-established, tested and reliable software component
|
||
already used by millions of people around the world;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
Google Maps offers APIs, enabling programmatic access to its features;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
Google Maps can be used both on the server side (calculation, shortest paths,
|
||
traffic, incident reporting) and on the client side (map visualization);
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
the users feel comfortable with a software component they know and use everyday.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Section
|
||
Algorithm Design
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
In this section we will focus mostly on two important themes: the calculus
|
||
of the reservations’ and rents’ fees and the uniform redistribution of
|
||
the cars.
|
||
It is very important to implement the former in a dynamic and easy-to-change
|
||
way because of the continuously changing business strategies and it is
|
||
fundamental to give a lot of attention to the latter because it would considera
|
||
bly increase the quality of the service and incentivize the virtuous behaviours
|
||
of the user, according to the core values of PowerEnjoy.
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
The uniform distribution of cars
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Let’s start from the attempt to redistribute in a uniform way the cars into
|
||
each city.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The first kind of solution we will propose is valid from a theoretical point
|
||
of view, but it is not so suitable to our service.
|
||
We will explain it anyway to give a deep and better understanding of the
|
||
problem and of our reasoning.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
To guarantee an effectively uniform distribution of the cars, we would act
|
||
in this way:
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
For each point (intended as a couple of two values:
|
||
\series bold
|
||
latitude
|
||
\series default
|
||
and
|
||
\series bold
|
||
longitude
|
||
\series default
|
||
) inside the city (intended as a
|
||
\shape italic
|
||
closed ensemble of points
|
||
\shape default
|
||
), we would calculate the minimum distance with the first available car
|
||
found.
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
Among these minimum distances, we would take in account the greatest one
|
||
and we would put a new available car in that exact point.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
By iterating these two steps, we would guarantee an uniform distribution
|
||
of cars, starting from a 2-dimensional space (the city) already filled
|
||
in part with other cars, unmovable.
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
However this solution is not a feasible one because it would be necessary
|
||
to use an ingent calculus power to effectively substain a similar amount
|
||
of operations.
|
||
Perhaps it would be possible to achieve the same result with a smaller
|
||
quantity of points (taken randomly or in a less accurate way) or in the
|
||
opposite way: we could calculate the maximum distant point from each available
|
||
car inside the city, and decide to address the user there.
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
However this theoretical solution won’t take in account two important facts:
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
the first one is that we cannot address the user into a specific point (intended
|
||
as above, a couple of
|
||
\shape italic
|
||
latitude
|
||
\shape default
|
||
and
|
||
\shape italic
|
||
longitude
|
||
\shape default
|
||
) but we have to address him/her into a recharging station
|
||
\shape italic
|
||
near
|
||
\shape default
|
||
the point, so we will be able anyway only to achieve an
|
||
\shape italic
|
||
approximately
|
||
\shape default
|
||
uniform distribution of cars.
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
the second one is that the user will never revolutionize his destination,
|
||
so we have to address him into a point not so
|
||
\shape italic
|
||
far
|
||
\shape default
|
||
from his final destination.
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
So we abandoned the utopia of a
|
||
\shape italic
|
||
perfect
|
||
\shape default
|
||
uniform distribution of cars, and we focused mainly on the distribution
|
||
of the car taking in account the PowerEnjoy power grid stations.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
We first ranked them according to the
|
||
\shape italic
|
||
utility function
|
||
\shape default
|
||
of the user, in agreement with the point of view of some experts: let’s
|
||
take in account Milan, the first city in which we offered our service.
|
||
As showed in figure, we ranked the main zones of Milan giving them a number
|
||
from 1 to 6, according to the attractivness of that place for our clients.
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/milan.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Ranking of the Power Grid Stations in Milan
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
Then we defined a customized radius of 500 - 1000 meters for each power
|
||
grid station and we covered the whole map of Milan by drawing one circumference
|
||
for each one of them, according to their given radius, as showed in figure.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/milan2.png
|
||
width 100text%
|
||
height 100theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Radius of the Power Grid Stations in Milan
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
In this way, when a user with the enabled
|
||
\series bold
|
||
Money Saving Option
|
||
\series default
|
||
would input his/her final destination at the beginning of a rent, the system
|
||
would select a special parking area among all the ones present in the city
|
||
by following these steps:
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
The system will retrieve the latitude and longitude of the final destination
|
||
of the user;
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
The system will list all the circumferences (with the relative power grid
|
||
station) that contains that specific point;
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
If there is only one station (distant in the worst case more or less 500-1000
|
||
meters from the final destination of the user), the system will select
|
||
it and will provide information about it to the user;
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
If there isn’t any station with free power plugs, a message of error will
|
||
be showed to the user;
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
If there is more than one station that contains that specific point, the
|
||
system will select the one with the maximum score according to this formula:
|
||
\begin_inset Formula
|
||
\[
|
||
score=freeSlot*[(ranking-2)+(10-distance/100)*2]
|
||
\]
|
||
|
||
\end_inset
|
||
|
||
where:
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
freeSlot
|
||
\series default
|
||
is the number of available power plugs;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
ranking
|
||
\series default
|
||
is the number from 1 to 6 assigned to the zone in which is contained the
|
||
selected power grid station;
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
distance
|
||
\series default
|
||
is the quantity of meters that separates the final destination of the user
|
||
from the selected power grid station.
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
Example n°1:
|
||
\end_layout
|
||
|
||
\begin_deeper
|
||
\begin_layout Standard
|
||
The final destination of the user is in piazza delle Meraviglie, 34.
|
||
At this address correspond the point with latitude x and longitude y, and
|
||
there are 4 power grid stations that contain it.
|
||
The power grid stations are characterized by the following information:
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
4 freeSlot, ranking 3, distance from the final destination of the user 500m;
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
3 freeSlot, ranking 4, distance from the final destination of the user 350m;
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
1 freeSlot, ranking 5, distance from the final destination of the user 650m;
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
2 freeSlot, ranking 3, distance from the final destination of the user 250m;
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
By applying the formula written above, we would obtain the following score:
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
44
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
45
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
10
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
32
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The system will select the power grid station n°2 and it will provide informatio
|
||
n to the user about to get there.
|
||
\end_layout
|
||
|
||
\end_deeper
|
||
\begin_layout Enumerate
|
||
Example n°2:
|
||
\end_layout
|
||
|
||
\begin_deeper
|
||
\begin_layout Standard
|
||
The final destination of the user is in piazza Trifoglio, 12.
|
||
At this address correspond the point with latitude z and longitude w, and
|
||
there are 2 power grid stations that contain it.
|
||
The power grid stations are characterized by the following information:
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
0 freeSlot, ranking 5, distance from the final destination of the user 100m;
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
2 freeSlot, ranking 4, distance from the final destination of the user 450m;
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
By applying the formula written above, we would obtain the following score:
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
0
|
||
\end_layout
|
||
|
||
\begin_layout Enumerate
|
||
26
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The system will select the power grid station n°2 and it will provide informatio
|
||
n to the user about to get there.
|
||
\end_layout
|
||
|
||
\end_deeper
|
||
\begin_layout Standard
|
||
\begin_inset VSpace medskip
|
||
\end_inset
|
||
|
||
In this way we would achieve our goal to distribute cars in the smartest
|
||
way we were able to think about.
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
How to apply the Reservation fees
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
In this section we will analyze the structure of the code that will handle
|
||
the payment for the reservation fees.
|
||
\end_layout
|
||
|
||
\begin_layout Subparagraph*
|
||
applyReservationFees(Reservation)
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\SpecialChar ligaturebreak
|
||
|
||
\begin_inset space ~
|
||
\end_inset
|
||
|
||
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
begin{lstlisting}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
/* This function will apply the fees for each Reservation instance.
|
||
Actually, the user can terminate a reservation for free, but in the future
|
||
if PowerEnjoy would decide to apply a fee for the termination of a reservation,
|
||
it would be very easy to modify this value.
|
||
If the user picks up the car, his reservation terminates and the system
|
||
will create another object Rent: no fees will be applied to transform a
|
||
reservation into a rent.
|
||
On the other hand, if the reservation expires before the user picks up
|
||
the car, the system will apply to him a fee of one euro.
|
||
As said before, it would not be difficult in the future also to change
|
||
this amount of money.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
*/
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
function applyReservationFees (Reservation res){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
if (res.isExpired()){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// This function will return a 'true' value if the reservation is expired
|
||
because of the time.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
paymentHandler(res.User, res.expirationFee);
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// This function will send a request of payment to the external payment
|
||
service with as input the ID of the user and the amount of money.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
else {
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
paymentHandler(res.User, 0);
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// This case covers both the cases in which the user decides to terminate
|
||
the reservation and in which he unlocks the car's doors.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
end{lstlisting}
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
How to calculate the Rent fees
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
In this section we will analyze the structure of the code that will handle
|
||
the payment for the reservation fees.
|
||
\end_layout
|
||
|
||
\begin_layout Subparagraph*
|
||
calculateRentDiscount(Rent)
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\SpecialChar ligaturebreak
|
||
|
||
\begin_inset space ~
|
||
\end_inset
|
||
|
||
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
begin{lstlisting}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
/* This function will calculate the eventual discount for each rent instance.
|
||
*/
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
void function calculateRentDiscount(Rent ren){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
if (ren.atLeastTwoPassengers()){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// This function will return a 'true' value if almost two passengers
|
||
were in the car.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
ren.totalCost *= 0.9;
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// In this way we will apply a 10% of discount to the client.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
if (ren.report.batteryLevelAtTheEndOfRent >= 0.5){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// This function will return the percentage of battery at the end of
|
||
the rental.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
ren.totalCost *= 0.8;
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// In this way we will apply a 20% of discount to the client.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
if (ren.report.MSOactived() && ren.report.finalDestinationNotEmpty()){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// The first function will return a 'true' value if the user enabled
|
||
the Money Saving Option at the beginning of his/her rent.
|
||
The second funtion will return a 'true' value if the user input his/her
|
||
final destination.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
if (ren.carParkedAt(ren.report.specialArea) && ren.carLeftUnderCharge()){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// The first function will return a 'true' value if the user parked
|
||
the car in the special area the system provided at the beginning of the
|
||
rent.
|
||
The second function will return a 'true' value if the car is left under
|
||
charge.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
ren.totalCost *= 0.6;
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// In this way we will apply a 40% of discount to the client.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
else if (ren.carLeftUnderCharge()){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// This function will return a 'true' value if the car is left under
|
||
charge in another recharging area (not the special one provided by the
|
||
system at the beginning of the rent).
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
ren.totalCost *= 0.7;
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// In this way we will apply a 30% of discount to the client.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
else{
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
if (ren.carLeftUnderCharge()){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// This function will return 'true' if the car is left under charge
|
||
in a recharging area.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
ren.totalCost *= 0.7;
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// In this way we will apply a 30% of discount to the client.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
end{lstlisting}
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subparagraph*
|
||
calculateAdditionalFees(Rent)
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\SpecialChar ligaturebreak
|
||
|
||
\begin_inset space ~
|
||
\end_inset
|
||
|
||
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
begin{lstlisting}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
/* This function will calculate the additional fees for each rent instance.
|
||
*/
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
void function calculateAdditionalFees(Rent ren){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
if (ren.report.batteryLevelAtTheEndOfRent <= 0.2 ||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
ren.report.distanceFromTheNearestPowerGridStationInKm >= 3){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// The first value is the same explained above
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// The second one is the distance from the nearest power grid station
|
||
expressed in km
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
ren.totalCost *= 1.3;
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// In this way we will apply a 30% of additional fee to the client.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
end{lstlisting}
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subparagraph*
|
||
calculateRentFees(Rent)
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\SpecialChar ligaturebreak
|
||
|
||
\begin_inset space ~
|
||
\end_inset
|
||
|
||
|
||
\begin_inset ERT
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
begin{lstlisting}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
/* This function will calculate the fees for each Rent instance.
|
||
In this case we have to consider eventual discounts and other additional
|
||
fees before sending the payment request to the external payment service.
|
||
It would not be difficult in the future to change some parameters according
|
||
to the PowerEnjoy policy.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
*/
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
function calculateRentFees (Rent ren){
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
ren.totalCost = ren.report.totalTime * ren.report.pricePerMinute;
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// We will first calculate the Total Cost as the multiplication of the
|
||
Total Time of the Rental and the Actual Price Per Minute.
|
||
In the future it would be easy to modify them, according to the PowerEnjoy
|
||
policy.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
calculateRentDiscount(ren);
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// In this way we will apply all the discount.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
calculateAdditionalFees(ren);
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// In this way we will apply all the additional fees.
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
paymentHandler(ren.User, ren.totalCost);
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
// This function will send a request of payment to the external payment
|
||
service with as input the ID of the user and the amount of money .
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
}
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
|
||
\backslash
|
||
end{lstlisting}
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Section
|
||
User Interface Design
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
In this section we will provide an overview on how the user interfaces of
|
||
our system will look like.
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
UX Diagram
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The UX Diagram shows the interactions between the different screens of the
|
||
User Interface of the clients.
|
||
\begin_inset Newline linebreak
|
||
\end_inset
|
||
|
||
The services are both accessible via web and mobile application.
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/UX Diagram.png
|
||
width 100text%
|
||
height 76theight%
|
||
keepAspectRatio
|
||
rotateAngle 90
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
UX Diagram
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
User UI
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
The following mockups represent the user UI, regarding both the Web Browser
|
||
and the Mobile Application interfaces.
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Home Page
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/pc/HomePage.png
|
||
width 60text%
|
||
height 60theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Home Page - Web Browser
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Login
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/mobile/HomePageMobile.png
|
||
width 60text%
|
||
height 60theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Login - Mobile Application
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Registration
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/pc/Registration Page.png
|
||
width 70text%
|
||
height 70theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Registration Page - Web Browser
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/mobile/RegistrationPageMobile.png
|
||
width 70text%
|
||
height 70theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Registration Page - Mobile Application
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Edit Personal Information
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/pc/EditPersonalInfo.png
|
||
width 63text%
|
||
height 63theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Edit Personal Information - Web Browser
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Edit Billing Information
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/pc/Edit Billing Information.png
|
||
width 63text%
|
||
height 63theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Edit Billing Information - Web Browser
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Enable / Disable the Money Saving Option
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/mobile/Enable MSO.png
|
||
width 70text%
|
||
height 70theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Enable Money Saving Option - Mobile Application
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/mobile/Disable MSO.png
|
||
width 70text%
|
||
height 70theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Disable Money Saving Option - Mobile Application
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Start Reservation
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/mobile/Start Reservation.png
|
||
width 70text%
|
||
height 70theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Start Reservation - Mobile Application
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Terminate Reservation
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/mobile/End Reservation.png
|
||
width 70text%
|
||
height 70theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Terminate Reservation - Mobile Application
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Unlock the car
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/mobile/Unlock Doors.png
|
||
width 70text%
|
||
height 70theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Unlock Car's Doors - Mobile Application
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Subsubsection
|
||
Lock the car
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status collapsed
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/mockup/mobile/Lock Doors.png
|
||
width 70text%
|
||
height 70theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Caption Standard
|
||
|
||
\begin_layout Plain Layout
|
||
Lock Car's Doors - Mobile Application
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Section
|
||
Requirements Traceability
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
In the RASD document we have defined all the system's requirements: in this
|
||
section we explaine how they map into the design elements defined in this
|
||
document.
|
||
|
||
\begin_inset VSpace smallskip
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Tabular
|
||
<lyxtabular version="3" rows="42" columns="2">
|
||
<features tabularvalignment="middle">
|
||
<column alignment="center" valignment="top">
|
||
<column alignment="center" valignment="top">
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\series bold
|
||
Component (DD)
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\series bold
|
||
Requirements (RASD)
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.1 Registration of a guest to the system
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Authentication Manager
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.2 Login of a user into the system
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
AccountInformation Manager
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.9 Modify the profile information
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
CheckAvailability Manager
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.3 Find the location of available cars in a specified area
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.4 Book a car with the possibility to cancel the reservation
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Reservation Manager
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.6 Be notified of active reservation status
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.7 End the rental
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Car Manager
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.3 Available cars in a specified area
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.4 Book a car with the possibility to cancel the reservation
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
ADS_Application Manager
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.5 Open his/her reserved car
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.6 Active reservation status
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Payment Manager
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.8 Know the total cost at the end of the rental
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.1 Registration of a guest to the system
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Data Manager
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.2 Login of a user into the system
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
Notification Manager
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
4.1.6 Be notified of active reservation status
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
<row>
|
||
<cell alignment="center" valignment="top" bottomline="true" leftline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
<cell alignment="center" valignment="top" bottomline="true" leftline="true" rightline="true" usebox="none">
|
||
\begin_inset Text
|
||
|
||
\begin_layout Plain Layout
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
</cell>
|
||
</row>
|
||
</lyxtabular>
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Newpage newpage
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Section
|
||
Appendix
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Tools used
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
We used the following tools to produce this document:
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
LaTex
|
||
\series default
|
||
as typesetting system to write this document
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
LyX
|
||
\series default
|
||
as editor
|
||
\end_layout
|
||
|
||
\begin_layout Itemize
|
||
|
||
\series bold
|
||
Visio Professional
|
||
\series default
|
||
and
|
||
\series bold
|
||
draw.io
|
||
\series default
|
||
to draw all the diagrams
|
||
\end_layout
|
||
|
||
\begin_layout Subsection
|
||
Hours of work
|
||
\end_layout
|
||
|
||
\begin_layout Standard
|
||
\begin_inset Float figure
|
||
wide false
|
||
sideways false
|
||
status open
|
||
|
||
\begin_layout Plain Layout
|
||
\align center
|
||
\begin_inset Graphics
|
||
filename res/img/hours.png
|
||
width 50text%
|
||
height 50theight%
|
||
keepAspectRatio
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\begin_layout Plain Layout
|
||
\begin_inset Newpage pagebreak
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_inset
|
||
|
||
|
||
\end_layout
|
||
|
||
\end_body
|
||
\end_document
|