swing2/1.RASD/RASD.lyx

5383 lines
95 KiB
Plaintext
Raw Normal View History

2017-01-11 11:27:49 +00:00
#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}
% Definizione intestazioni e pie' di pagina
\usepackage{fancyhdr}
\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 0
\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 Requirements Analysis and
\backslash
\backslash
Specification 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
Correction to the RASD
\end_layout
\begin_layout Subsection
Rasd Version 1.1
\end_layout
\begin_layout Standard
While writing the Design Document, we found necessary to make some modifications
to the RASD.
This is why we wrote the second version of the document.
Here there are the updates we did:
\end_layout
\begin_layout Itemize
In the previous RASD we didn't specify that the Customer Service is an outsource
d service, and so in this document and in the following documents we won't
implement it;
\end_layout
\begin_layout Itemize
We introduced a new functional requirement: modify the profile information.
\end_layout
\begin_layout Section
Introduction
\end_layout
\begin_layout Subsection
Description of the given problem
\end_layout
\begin_layout Standard
We will project and implement PowerEnjoy, which is a new car-sharing service
that exclusively employs electric cars.
The system that will be developed has to allow the registration of a new
user with all his personal information (like name, age, driving license
and credit card information), log in credentials and the possibility to
find the locations of available cars within a certain distance from his
current location or from a specified address.
Moreover, according to some policies (specified later) the user can obtain
exclusive discounts and offers.
\end_layout
\begin_layout Subsection
Purpose
\end_layout
\begin_layout Standard
The principal purpose of this document, the Requirement Analysis and Specificatio
n Document, is to show the functional and non-functional requirements of
the system-to-be.
They will be based on different aspects: the needs expressed by the stakeholder
s, the constraints which it is subject to, the typical scenarios that will
happen after its deployment.
The targeted audience in this case will be mainly made of software engineers
and developers who have to actually develop the service here described.
\end_layout
\begin_layout Subsection
Scope
\end_layout
\begin_layout Standard
The system will be an optimization of a pre-existing system for renting
electric cars already in use in some cities.
The new system will let users to check reservability and status of available
cars, rent or reserve them through a mobile or a web application in a more
simple and effective way.
In addition to a better user interface, the new system will guarantee a
smarter uniform distribution of cars in the city, in order to offer a better
service for the citizens, and will also offer some special discount, in
order to incentivize the virtuous behaviors of the users.
\end_layout
\begin_layout Subsection
Goals
\end_layout
\begin_layout Standard
PowerEnJoy's users will be able to:
\end_layout
\begin_layout Itemize
register themselves to the system;
\end_layout
\begin_layout Itemize
log into the system;
\end_layout
\begin_layout Itemize
find the location of available cars in a specified area;
\end_layout
\begin_layout Itemize
book a car with the possibility to cancel the reservation;
\end_layout
\begin_layout Itemize
open his / her reserved car;
\end_layout
\begin_layout Itemize
be notified of active reservation status;
\end_layout
\begin_layout Itemize
end the rental;
\end_layout
\begin_layout Itemize
know the total cost at the end of the lease;
\end_layout
\begin_layout Subsection
Stakeholders
\end_layout
\begin_layout Standard
Our primary stakeholder is the professor who gave us this didactical project.
Our stakeholder's main need is to review the complete project at the end
of the semester.
Our objective is to show him/her we have followed the development process
in all its parts and that we are able to carry out a challenging task from
the beginning to the end fully comprehending all its internal phases.
We want to show that we can identify key requirements and specifications,
design and test our web/mobile application while providing all documentation
backing up the source code.
Finally, our typical users will be people that dont have a car or that
prefer to rent a car instead of a public service transportation to go around
the city.
\end_layout
\begin_layout Subsection
Glossary
\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
Guest: a person that has never signed up to the system.
He can only sign up and view available cars
\end_layout
\begin_layout Description
User: a person already registered in the system who can log in and has a
personal profile and can use all the functionalities described.
Unless specified, each user is active: therefore can use the service with
no restrictions
\end_layout
\begin_layout Description
Deactivated
\begin_inset space ~
\end_inset
user: a user with revoked privileges.
He/she cannot use the service until the issues with his/her account are
solved (e.g., expired license)
\end_layout
\begin_layout Description
Login: the action of accessing the system via a username and related password
\end_layout
\begin_layout Description
Notification: a real-time alert that warns a user when there are updates
about what he is dealing with
\end_layout
\begin_layout Description
Reservation: the action performed by the registered user when he chooses
to drive an available car.
It expires as soon as one of these conditions is met: one hour is elapsed
from the user's reservation request or the car is unlocked
\end_layout
\begin_layout Description
Rent: the temporary possession and use of one of the PowerEnjoy's cars in
return for payment by a user.
It starts once a minute is elapsed from the car doors unlock or the engine
is ignited and lasts until the doors are re-locked by the system
\end_layout
\begin_layout Description
Available: a fully functional car ready to be used by a registered user
\end_layout
\begin_layout Description
Unavailable: a car which is currently reserved or used by a registered user
or is not entirely working (e.g.
exhausted battery, mechanical damage)
\end_layout
\begin_layout Description
Reservable: an available car located in a geographical region where a registered
user is enabled to reserve it
\end_layout
\begin_layout Description
Parking
\begin_inset space ~
\end_inset
area: circumscribed public area where cars can be parked (e.g.
no parking lots).
The set of safe areas for parking cars is pre-defined by the management
system.
\end_layout
\begin_layout Description
Recharging
\begin_inset space ~
\end_inset
area: it is included in the parking area; cars parked here can also be recharged
thanks to several charging stations
\end_layout
\begin_layout Description
Special
\begin_inset space ~
\end_inset
area: specific recharging areas decided by the system to ensure a uniform
distribution of cars in the city
\end_layout
\begin_layout Description
RMSS: Request Management Sub-System, it is an already developed part of
our system which stores and manages all the information about the PowerEnjoy's
cars, users and about their request (reservation or rent).
\end_layout
\begin_layout Description
MES: Maintenance External Service, it is an external service that takes
care of ordinary or extraordinary car maintenance.
\end_layout
\begin_layout Description
ADS: Auto Diagnosis System, an always on embedded peripheral which continuously
monitors the status of the car (e.g.
battery charge, tires pressure, impact detection)
\end_layout
\begin_layout Description
ECS: Emergency Call System, an always on embedded peripheral which can be
used to call the consumer service or an emergency number quickly
\end_layout
\begin_layout Description
Verification
\begin_inset space ~
\end_inset
code: it is a four digits code chosen by the user during the registration
procedure that adds another level of security to our service; the user
will need it to unlock the car
\end_layout
\begin_layout Description
Countdown: it is the time given to the user to pick-up the reserved car
before the reservation expires (during this period the reservation is active)
\end_layout
\begin_layout Description
EULA: End User License Agreement
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Overall Description
\end_layout
\begin_layout Subsection
Proposed System
\end_layout
\begin_layout Standard
The server-side implementation will be structured through a net of micro-service
s mainly written in Python and managed through Docker.
The server will run the business logic, host PowerEnjoy's website, and
users' data.
Besides, we propose a web/mobile application which allows to registered
users to use PowerEnjoy's services.
The web client will use Python/Javascript and HTML5/CSS for web pages generatio
n and formatting respectively.
We will also use open-source libraries such as Flask to speed up the developmen
t.
The mobile applications will be deployed on the main platforms currently
available (iOS, Android, Windows Phone) and will be written accordingly
to each devices' programming language.
Client-server communication will be platform agnostic since it will happen
through an encrypted RESTful API which returns its data through JSON.
\end_layout
\begin_layout Subsection
Domain Properties
\end_layout
\begin_layout Standard
We suppose these conditions will be respected at any given time:
\end_layout
\begin_layout Itemize
the user will request help only if he/she needs it;
\end_layout
\begin_layout Itemize
the user will never try to exploit the system's features (e.g.
sleep in the car);
\end_layout
\begin_layout Itemize
the user will never fake his/her position to cause a denial of service;
\end_layout
\begin_layout Itemize
the user will only provide correct and authentic information while signing
up;
\end_layout
\begin_layout Itemize
a booked car will always be driven by the user who reserved it;
\end_layout
\begin_layout Itemize
the user will never be robbed of the access credentials and the verification
code;
\end_layout
\begin_layout Itemize
the user agrees to be geolocalized;
\end_layout
\begin_layout Itemize
each available car is fully functional;
\end_layout
\begin_layout Itemize
each car has an embedded key to turn on the engine;
\end_layout
\begin_layout Itemize
each car is equipped with a properly working ADS and an ECS;
\end_layout
\begin_layout Itemize
each car is fitted with a properly working notification touchscreen display;
\end_layout
\begin_layout Itemize
an available car will always be found in the supposed position;
\end_layout
\begin_layout Standard
\begin_inset Newpage pagebreak
\end_inset
\end_layout
\begin_layout Subsection
Assumptions
\end_layout
\begin_layout Standard
This section explores some of the vague concepts or loosely explained ones:
further hypotheses have been added to expand the description of the requirement
s and to account better for the interaction between the external environment
and the developed application.
\end_layout
\begin_layout Standard
Due to some unclear points in the specification we made some assumptions,
which are:
\end_layout
\begin_layout Itemize
the system allows users to locate any car in PowerEnjoy's area of operation;
\end_layout
\begin_layout Itemize
the system's money saving option has to be enabled or disabled in the user
profile;
\end_layout
\begin_layout Itemize
the system permits users to reserve an available car only in his/her city;
\end_layout
\begin_deeper
\begin_layout Itemize
with "a certain geographical region" we mean that the user can reach the
vehicle in a reasonable amount of time;
\end_layout
\end_deeper
\begin_layout Itemize
the system can locate its users through Cellular Data or GPS;
\end_layout
\begin_layout Itemize
the system's proximity check is done through one of these: numerical code
on each cars' windshield or GPS data from user's phone;
\end_layout
\begin_layout Itemize
the fees are applied as soon as one of these conditions is met: one minute
is elapsed from the car's doors opening, or the engine is revved;
\end_layout
\begin_layout Itemize
each seat is equipped with a sensor which is used to detect the number of
passengers into each car;
\end_layout
\begin_layout Itemize
each user can't reserve more than one car at the same time;
\end_layout
\begin_layout Itemize
to be eligible for the 10% discount, almost two passengers have to remain
seated at the same time for at least one minute;
\end_layout
\begin_layout Itemize
if a car is parked in a special area, the discount equals to 40%;
\end_layout
\begin_layout Subsection
Actors Identifying
\end_layout
\begin_layout Standard
The system provides the interaction of two different types of actors who
can use different functionalities of the application system.
The types are set out below along with a brief description of their privileges.
\end_layout
\begin_layout Subsubsection
Guest
\end_layout
\begin_layout Standard
A person that is not registered (yet!) so can check for cars' position,
register or ask for help/advice.
\end_layout
\begin_layout Paragraph
Privileges:
\end_layout
\begin_layout Itemize
Register to the system by creating a new account;
\end_layout
\begin_layout Itemize
Check available cars' position and status;
\end_layout
\begin_layout Itemize
Contact the customer service;
\end_layout
\begin_layout Subsubsection
User
\end_layout
\begin_layout Standard
A person that is already registered to the system with his personal information;
a guest can become a user after the authentication to the system using
the login form.
\end_layout
\begin_layout Paragraph
Privileges:
\end_layout
\begin_layout Itemize
Log into the system;
\end_layout
\begin_layout Itemize
Consult reservations' history;
\end_layout
\begin_layout Itemize
Edit account information:
\end_layout
\begin_deeper
\begin_layout Itemize
personal and billing data;
\end_layout
\begin_layout Itemize
enable/disable money saving option;
\end_layout
\end_deeper
\begin_layout Itemize
Check available cars' position and status;
\end_layout
\begin_layout Itemize
Reserve a reservable car;
\end_layout
\begin_layout Itemize
Rent the reserved car;
\end_layout
\begin_layout Itemize
Check active reservation status:
\end_layout
\begin_deeper
\begin_layout Itemize
Remaining time until the reservation expires;
\end_layout
\begin_layout Itemize
Reserved car's position and status;
\end_layout
\begin_layout Itemize
Elapsed rental time;
\end_layout
\end_deeper
\begin_layout Itemize
Request help through the ECS;
\end_layout
\begin_layout Itemize
Terminate the rent;
\end_layout
\begin_layout Itemize
Contact the customer service;
\end_layout
\begin_layout Subsubsection
Deactivated User
\end_layout
\begin_layout Standard
A user with revoked privileges.
He/she cannot use the service until the issues with his/her account are
solved (e.g expired license).
\end_layout
\begin_layout Paragraph
Privileges:
\end_layout
\begin_layout Itemize
Log into the system;
\end_layout
\begin_layout Itemize
Consult reservations' history;
\end_layout
\begin_layout Itemize
Edit account information:
\end_layout
\begin_deeper
\begin_layout Itemize
personal and billing data;
\end_layout
\begin_layout Itemize
enable/disable money saving option;
\end_layout
\end_deeper
\begin_layout Itemize
Check available cars' position and status;
\end_layout
\begin_layout Itemize
Contact the customer service;
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Specific Requirements
\end_layout
\begin_layout Standard
In this section will be analyzed in detail functional and non-functional
requirements that the system developed has to satisfy, when the domain
properties previously denoted hold and referring to the declared goals.
\end_layout
\begin_layout Subsection
Functional requirements
\end_layout
\begin_layout Standard
The functional requirements include the functionalities that the system
must necessarily have and describe the interactions between the system
developed and the external environment independently from the implementation.
\end_layout
\begin_layout Enumerate
Registration of a guest to the system:
\end_layout
\begin_deeper
\begin_layout Enumerate
The system has to guarantee the registration to a new user by creating a
new account.
\end_layout
\end_deeper
\begin_layout Enumerate
Login of a user into the system:
\end_layout
\begin_deeper
\begin_layout Enumerate
The system has to allow the login to an already registered user when he
types the correct username and the password in the login form.
\end_layout
\end_deeper
\begin_layout Enumerate
Find the location of available cars in a specified area:
\end_layout
\begin_deeper
\begin_layout Enumerate
The system has to allow both guests and users to specify the address where
they want to locate an available car or to use their position;
\end_layout
\begin_layout Enumerate
The system has to guarantee that a car is showed on the map if and only
if it is available (that means that every available car is showed and that
every showed car is available);
\end_layout
\begin_layout Enumerate
The system has to guarantee that the car's position is regularly showed
up to date.
\end_layout
\end_deeper
\begin_layout Enumerate
Book a car with the possibility to cancel the reservation:
\end_layout
\begin_deeper
\begin_layout Enumerate
The system has to guarantee that only a user (i.e.
not a guest) can reserve a car;
\end_layout
\begin_layout Enumerate
The system must be able to check the position of the user;
\end_layout
\begin_layout Enumerate
The system has to guarantee that any user can reserve only one car at a
time;
\end_layout
\begin_layout Enumerate
The system has to ensure that the same car cannot be reserved at the same
time by different users;
\end_layout
\begin_layout Enumerate
The system has to guarantee that any user can have at most an active reservation
;
\end_layout
\begin_layout Enumerate
The system has to guarantee that every reservable car is available;
\end_layout
\begin_layout Enumerate
The system has to ensure that only a reservable car can be reserved;
\end_layout
\begin_layout Enumerate
The system has to guarantee that when a user reserves a car, the latter
is no more available;
\end_layout
\begin_layout Enumerate
The system has to ensure that only an active reservation can expire or be
canceled;
\end_layout
\begin_layout Enumerate
The system has to make sure that when a reservation expires or is revoked,
the car becomes available again;
\end_layout
\begin_layout Enumerate
When a reservation is activated, the system starts a countdown at the end
of which the reservation expires if the user did not pick-up the reserved
car;
\begin_inset Newpage pagebreak
\end_inset
\end_layout
\end_deeper
\begin_layout Enumerate
Open his/her reserved car;
\end_layout
\begin_deeper
\begin_layout Enumerate
The system must be able to check the proximity of the user to the reserved
car;
\end_layout
\begin_layout Enumerate
The system must be able to check if the money saving option is enabled for
the current reservation;
\end_layout
\begin_layout Enumerate
The system has to allow the user to insert the verification code;
\end_layout
\begin_layout Enumerate
The system has to unlock the reserved car only if the entered verification
code is correct;
\end_layout
\end_deeper
\begin_layout Enumerate
Be notified of active reservation status:
\end_layout
\begin_deeper
\begin_layout Enumerate
The system must be able to retrieve the starting time of the rental;
\end_layout
\begin_layout Enumerate
The system must be able to calculate and notify the elapsed time of the
rental periodically;
\end_layout
\begin_layout Enumerate
The system must be able to communicate with every grid power station to
check their power plugs' availability;
\end_layout
\begin_layout Enumerate
The system, to ensure a uniform distribution of parked cars, must be able
to notify the user the nearest selected station where to leave the car
to get a discount only if he/she inputs a destination and the money saving
option is active;
\end_layout
\end_deeper
\begin_layout Enumerate
End the rental:
\end_layout
\begin_deeper
\begin_layout Enumerate
The system has to allow the user to communicate that he/she wants to terminate
the rental using the car's display;
\end_layout
\begin_layout Enumerate
The system has to allow the user to end the rental only if he is in a safe
parking area;
\end_layout
\begin_layout Enumerate
The system has to guarantee that when a reservation is ended, the car becomes
available again;
\end_layout
\end_deeper
\begin_layout Enumerate
Know the total cost at the end of the rental:
\end_layout
\begin_deeper
\begin_layout Enumerate
The system has to communicate with the ADS to retrieve the car status and
rental information;
\end_layout
\begin_layout Enumerate
The system must be able to apply the discounts, if any, handling the previously
retrieved information;
\end_layout
\begin_layout Enumerate
The system must communicate to the user the final cost of the rental;
\end_layout
\end_deeper
\begin_layout Enumerate
Modify the profile information:
\end_layout
\begin_deeper
\begin_layout Enumerate
The system has to allow the user to modify his/her personal information;
\end_layout
\begin_layout Enumerate
The system has to allow the user to enable or disable the money saving option;
\end_layout
\end_deeper
\begin_layout Subsection
Non-functional requirements
\end_layout
\begin_layout Standard
The non-functional requirements are those not related to the functionality,
but rather consider the quality of the system to be implemented (Quality
of Service, QoS), regardless of the application domain.
\begin_inset VSpace smallskip
\end_inset
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
Security:
\end_layout
\begin_layout Itemize
Each user will only be able to access functionality that competes to his
category, and it is, therefore, necessary to provide an authentication
method: it will be used the symmetric username/password one.
Furthermore, each credential will not be stored in cleartext, and client/server
communications will be protected by asymmetric encryption.
\end_layout
\begin_layout Standard
Portability:
\end_layout
\begin_layout Itemize
The client must be compatible with all hardware and software platforms to
reach as many users as possible.
This requirement is satisfied by realizing the client as a web application,
in this way the only assumptions that must be met by users are the availability
of a web browser and a connection to the Internet.
\end_layout
\begin_layout Standard
Stability and reliability:
\end_layout
\begin_layout Itemize
The system must notify the user the result of each his/her transaction request
while maintaining an optimal level of reliability.
Therefore it will be able to face with the possible loss of connection
between clients and the central server by ensuring atomicity of all operations.
\end_layout
\begin_layout Standard
Performance:
\end_layout
\begin_layout Itemize
As for performance, the timing of getting and insertion the information
in the database must be acceptable to do not block the whole system.
\end_layout
\begin_layout Standard
Concurrency management:
\end_layout
\begin_layout Itemize
The system must ensure data consistency while dealing with multiple concurrent
accesses to the same resource in the database by multiple users authenticated
to the system.
\end_layout
\begin_layout Standard
Graphical User Interfaces (GUIs):
\end_layout
\begin_layout Itemize
The system has to include several graphical user interfaces: intuitive,
complete and exceptionally easy to use.
An interface to contain areas of input, dialog boxes, buttons, links and
drop-down menus will be developed.
The interfaces will interact with business logic and then be differentiated
according to user roles in the system: each interface will provide access
to features that compete for the particular user who is logged in.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Scenarios
\end_layout
\begin_layout Standard
This section will present some possible situations that may occur from the
interaction between a user and the system developed.
\end_layout
\begin_layout Standard
\begin_inset space \quad{}
\end_inset
\end_layout
\begin_layout Subsection
Alice is curious about PowerEnjoy
\end_layout
\begin_layout Standard
Lily tells Alice about a new service called PowerEnjoy: Alice, now curious,
tries to register to PowerEnjoy.
She visits the homepage, browses the site a little and then proceeds to
the registration page.
Alice then enters all the data needed by the system to complete the process:
name and surname, username, email address, password, ID card number and
license number.
To complete the sign-up she finally enters the billing information.
Once everything is done, the system sends her a confirmation mail with
a link used to activate her new account.
She has now completed the registration, and she can log into the system
and power enjoy the service.
\end_layout
\begin_layout Standard
\begin_inset space \quad{}
\end_inset
\end_layout
\begin_layout Subsection
Grandpa Peter and his expired license
\end_layout
\begin_layout Standard
Grandpa Peter has been registered to PowerEnjoy for a quite long time.
He loves the car sharing model, now more than ever since his old Panda
broke a long time ago and he could not pick up his nephews, David and Goliath,
from the pool.
There is a problem, though: Peter is getting old, and his license has to
be renewed to drive again.
After a long day at the Driver and Vehicle Licensing Agency, Grandpa Peter
successfully got his shiny license back! To reactivate his PowerEnjoy account,
Peter has to edit his account data and insert the new license card number:
after having logged in, he proceeds to his personal area by clicking “Edit
Personal Data", he puts the new data in the system, and finally he saves
the changes.
Grandpa Peter is on the road, again!
\end_layout
\begin_layout Standard
\begin_inset space \quad{}
\end_inset
\end_layout
\begin_layout Subsection
Grandpa Peter and his nephews
\end_layout
\begin_layout Standard
It's rainy outside, so Grandpa Peter has to pick up his two nephews from
the pool: he picks up his smartphone and checks if there are any available
cars near him.
He is getting old so he cannot walk for a long time, so he reserves the
nearest car which, unfortunately, has less than 50% battery charge remaining.
Once in the car's reach, Peter taps on “Open Vehicle” and inputs his verificati
on code.
His memory is aging just like him so the usual “1969” code, which corresponds
to the year he married his beloved Franca, turned into “1967” which is
not accepted by the system.
The system prompts him again, and this time Peter does not fail: the doors
unlock, and Grandpa is on the road once more! Peter's driving skills are
still amazing: he picks up the kids and gets home in no time, so he ends
the rent.
Unfortunately, he is not able to use the 20% discount due to the battery
charge left, but he will be cut 10% since he took at least two other people
in the car.
\end_layout
\begin_layout Standard
\begin_inset Newpage pagebreak
\end_inset
\end_layout
\begin_layout Subsection
Pablo and Tata go to the cinema
\end_layout
\begin_layout Standard
Tata and Pablo make a great couple.
It's Friday night, and the theaters are flooded by the latest sci-fi movie
everyone love.
Pablo loves all those lightsabers and starships while Tata just can't get
the point out of them.
The film will start in more than one hour: Pablo is ready for the night
out, Tata has to fix her makeup.
“Five minutes and I am ready!" - she said.
Unfortunately, Pablo forgot to charge his phone so he can't use his phone's
GPS to save precious battery juice and reserves his PowerEnjoy car by entering
his address into the app.
Time goes by; one hour has passed, and Pablo is still waiting for Tata
who seems to have no intentions leaving the bathroom.
The film has just begun, the reservation expired, the car is available
to be reserved again, and Pablo has to pay 1€ fee: “One minute and we are
rolling!” - she said.
Pablo, may the force be with you!
\end_layout
\begin_layout Standard
\begin_inset space \quad{}
\end_inset
\end_layout
\begin_layout Subsection
Gustavo, the discount hunter
\end_layout
\begin_layout Standard
Gustavo is a saver, methodic and old-fashioned man, and he built an economic
empire from scratch.
He owns a vintage 1968 Ford Torino which is only used on Saturday afternoons
with his closest friend to honor the times long gone: on the other days,
he mainly uses PowerEnjoy.
Gustavo has turned on the money saving option while signing up, and he
loves it.
Once in the car, he logs in and proceed to set up his seat and insert his
destination: the system now calculates the overall cars distribution in
the city, verifies the availability of power plugs in the nearest power
grid stations to the arrival and suggests to park in a special area just
300 meters away from his destination.
Once there, Gustavo, just before ending the rental, takes care of plugging
the car into the power grid: now, the smartphone application shows him
the total cost which includes the 40% discount.
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Models
\end_layout
\begin_layout Standard
In this section we are going to abstract from the previously seen scenarios
in order to have a more high-level description.
For this purpose we will use UML (Unified Modeling Language) diagrams.
\end_layout
\begin_layout Subsection
Use cases model
\end_layout
\begin_layout Standard
From previously denoted scenarios and from the whole analysis we did in
this document, we individuated the use cases of the system to be developed.
In these pictures there are some use Cases diagram which represent actors,
their use cases and their interactions.
Then some of them are better explained using a less formal and more narrative
way.
\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/Usecase_guest.png
width 60text%
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Guest Use Case
\end_layout
\end_inset
\end_layout
\end_inset
\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/usecase_user.png
width 100text%
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
User Use Case
\end_layout
\end_inset
\end_layout
\end_inset
\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/Usecase_disuser.png
width 100text%
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Deactivated User Use Case
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsubsection
Registration
\end_layout
\begin_layout Standard
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="top" width="20text%">
<column alignment="block" valignment="middle" width="75text%">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Actors
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="middle" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
Guest
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Preconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The guest has a working Internet connection and he has not registered an
account yet.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Events
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Enumerate
The guest reaches the registration page
\end_layout
\begin_layout Enumerate
The system requires the guest to enter all his/her personal information,
driving license data and login credentials along with the verification
code
\end_layout
\begin_layout Enumerate
The guest types the requested information and presses the Next button
\end_layout
\begin_layout Enumerate
The system verifies the uniqueness of the email, the equality of the twice
typed passwords and that the driving license is not expired yet
\end_layout
\begin_layout Enumerate
The system notifies the guest that he is going to be redirected to an external
service web page where he will be required to enter his billing information
\end_layout
\begin_layout Enumerate
The system receives a confirmation from the external payment service about
the correctness of the billing information
\end_layout
\begin_layout Enumerate
The system shows to the guest a recap of the information already provided
and requires him to confirm them, to read and accept the EULA and complete
the registration
\end_layout
\begin_layout Enumerate
The guest ticks the “I read carefully, and I accept the contract” box and
presses the “Confirm and Complete Registration” button
\end_layout
\begin_layout Enumerate
The system sends an email to notify the correct registration to the guest
\end_layout
\begin_layout Enumerate
The system reports the registration and redirects the user to the login
page
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Postconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The user has signed up.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Exceptions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The email the guest typed has been already used.
The second password does not match with the first one.
One of the fields is empty.
The SSN is not in compliance with the other guest's personal information.
The driving license is already expired.
The external payment service didn't confirm the billing information.
The guest did not accept the EULA.
In these cases the system notifies the error and cannot complete the registrati
on.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Subsubsection
Log in
\end_layout
\begin_layout Standard
\paragraph_spacing onehalf
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="top" width="20text%">
<column alignment="block" valignment="middle" width="75text%">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Actors
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
User or Deactivated User
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Preconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The actor has a working Internet connection and he has already registered
his account.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Events
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Enumerate
The actor reaches the log in page
\end_layout
\begin_layout Enumerate
The system requires the actor to enter his email and password
\end_layout
\begin_layout Enumerate
The actor types the requested information and press the Log in button
\end_layout
\begin_layout Enumerate
The system verifies the correctness of the email and password
\end_layout
\begin_layout Enumerate
The system redirects the actor to his personal page
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Postconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The actor is logged in.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Exceptions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The email or the password the actor typed are not correct.
One of the fields is empty.
In these cases the actor cant complete the log in.
The system notifies the error and cannot complete the login.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Subsubsection
Edit personal information
\end_layout
\begin_layout Standard
\paragraph_spacing onehalf
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="top" width="20text%">
<column alignment="block" valignment="middle" width="75text%">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Actors
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
User or Deactivated User
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Preconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The actor has a working Internet connection and he is already logged into
the system.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Events
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Enumerate
The actor reaches his personal area
\end_layout
\begin_layout Enumerate
The actor clicks the
\begin_inset Quotes eld
\end_inset
Edit personal information
\begin_inset Quotes erd
\end_inset
button
\end_layout
\begin_layout Enumerate
The system allows the actor to change his address, mobile phone number,
password (and to confirm it), driving license number, the expiration date
and the authority who released it
\end_layout
\begin_layout Enumerate
The user enters the new information and presses Save
\end_layout
\begin_layout Enumerate
The system verifies the correctness and the completeness of the information
\end_layout
\begin_layout Enumerate
The system shows the actor his updated information
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Postconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The user has modified his personal information.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Exceptions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
One of the fields is empty.
The second password does not match with the first one.
The driving license is already expired.
In these cases the system notifies the error and cannot complete the request.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Subsubsection
Edit billing information
\end_layout
\begin_layout Standard
\paragraph_spacing onehalf
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="top" width="20text%">
<column alignment="block" valignment="middle" width="75text%">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Actors
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
User or Deactivated User
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Preconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The actor has a working Internet connection and he is already logged into
the system.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Events
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Enumerate
The actor reaches his personal area
\end_layout
\begin_layout Enumerate
The actor clicks the
\begin_inset Quotes eld
\end_inset
Edit billing information
\begin_inset Quotes erd
\end_inset
button
\end_layout
\begin_layout Enumerate
The system notifies the actor that he is going to be redirect to an external
service web page where he will be required to enter his new billing information
\end_layout
\begin_layout Enumerate
The system receives a confirmation from the external payment service about
the correctness of the new billing information
\end_layout
\begin_layout Enumerate
The system shows the actor his updated information
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Postconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The user has modified his billing information.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Exceptions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The external payment service did not confirm the billing information.
In this case the system notifies the error and cannot complete the request.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Subsubsection
Check available cars' position and status
\end_layout
\begin_layout Standard
\paragraph_spacing onehalf
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="top" width="20text%">
<column alignment="block" valignment="middle" width="75text%">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Actors
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
Guest, User or Deactivated User
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Preconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The actor has a working Internet connection.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Events
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Enumerate
The actor opens the map
\end_layout
\begin_layout Enumerate
The system requires the actor to enter an address or to use his position
to localize cars
\end_layout
\begin_layout Enumerate
The actor types the address where he wants to find an available car or clicks
\begin_inset Quotes eld
\end_inset
Use my position
\begin_inset Quotes erd
\end_inset
button
\end_layout
\begin_layout Enumerate
The system verifies the correctness of the information and send a request
to the RMSS
\end_layout
\begin_layout Enumerate
The system receives an answer from the RMSS with the available cars and
shows them to the actor on the map
\end_layout
\begin_layout Enumerate
The actor taps the icon that stands for the available car he chooses
\end_layout
\begin_layout Enumerate
The system shows to the actor the status of the selected available car
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Postconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The actor obtains all the information about the position and the status
of any available car in a certain area.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Exceptions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The address field is empty.
The inserted address is not found or the location service does not work.
There is no available cars in the selected area.
In these cases the system notifies the error and cannot complete the request.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Subsubsection
Reserve a car
\end_layout
\begin_layout Standard
\paragraph_spacing onehalf
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="top" width="20text%">
<column alignment="block" valignment="middle" width="75text%">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Actors
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
User
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Preconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The user has a working Internet connection, he has already checked the position
and the status of an available car and he is logged into the system for
the whole reservation.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Events
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Enumerate
The user clicks on “Reserve car” button
\end_layout
\begin_layout Enumerate
The system send to the RMSS the user position and his reservation request
\end_layout
\begin_layout Enumerate
The system receives an affirmative answer from the RMSS
\end_layout
\begin_layout Enumerate
The system creates a new instance of the reservation
\end_layout
\begin_layout Enumerate
The system notifies the user the success of the reservation
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Postconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The user reserved successfully a car.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Exceptions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The communication with the RMSS failed.
The system says to the user that the service is temporarily not available.
The localization service does not work.
The system receives a negative answer from the RMSS.
In these cases the system notifies the error to the user and he cannot
complete the reservation.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Subsubsection
Open the reserved car
\end_layout
\begin_layout Standard
\paragraph_spacing onehalf
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="top" width="20text%">
<column alignment="block" valignment="middle" width="75text%">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Actors
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
User
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Preconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The user has a working Internet connection, has already reserved a car and
he is logged into the system.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Events
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Enumerate
The user reaches the car he reserved.
\end_layout
\begin_layout Enumerate
The system checks user position or requires him to enter the code on the
windshield
\end_layout
\begin_layout Enumerate
If necessary, the user enters the code he can read on the windshield
\end_layout
\begin_layout Enumerate
The system requires the user enter his verification code
\end_layout
\begin_layout Enumerate
The user types his verification code
\end_layout
\begin_layout Enumerate
The system verifies the correctness of the verification code and the status
of the reservation
\end_layout
\begin_layout Enumerate
The system unlocks the car doors, terminates the reservation and creates
a rent instance on the RMSS
\end_layout
\begin_layout Enumerate
The user opens the car doors
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Postconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The user can get in the car.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Exceptions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The user failed to unlock the car in less than one hour: the system notifies
the end of the reservation to the user, declares the reserved car as available
again and applies 1€ of fee to the user.
| The system is not able to check the user position.
The user fails to enter the windshield code.
The verification code is not correct.
In these cases the system doesnt unlock the doors.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Subsubsection
Use the reserved car and terminate the rent
\end_layout
\begin_layout Standard
\paragraph_spacing onehalf
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="top" width="20text%">
<column alignment="block" valignment="middle" width="75text%">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Actors
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
User
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Preconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The user has a working Internet connection, has already opened his reserved
car and he is logged into the system.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Events
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Enumerate
If the money saving option is actived, the user can enter his final address
on the touchscreen display in the car
\end_layout
\begin_layout Enumerate
If the user did it, the system shows a special parking area near his destination
\end_layout
\begin_layout Enumerate
The user starts the engine and uses the car
\end_layout
\begin_layout Enumerate
As a matter of choice, the user takes care of plugging the car into the
power grid
\end_layout
\begin_layout Enumerate
The user clicks
\begin_inset Quotes eld
\end_inset
Terminate rent
\begin_inset Quotes erd
\end_inset
\end_layout
\begin_layout Enumerate
The system verifies nobody is in the car and that it is in a safe parking
area
\end_layout
\begin_layout Enumerate
The system locks the car doors again, verifies the car's status and updates
the rent instance
\end_layout
\begin_layout Enumerate
If necessary, the system contacts the MES for an ordinary (or extraordinary)
car maintenance.
\end_layout
\begin_layout Enumerate
The system calculates the total cost and notifies the end of the rental
to the user along with the total cost
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Postconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The user successfully rented a car.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Exceptions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The address is not correct or it is not found.
The system notifies the error to the user and requires him to insert it
again.
| The car is not in a safe parking area.
The car is not empty.
In these cases the system doesnt allow to terminate the rent.
| The user can't pay the total cost: the system deactivate the user.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Subsubsection
Contact customer service
\end_layout
\begin_layout Standard
\paragraph_spacing onehalf
\begin_inset Tabular
<lyxtabular version="3" rows="5" columns="2">
<features tabularvalignment="middle">
<column alignment="center" valignment="middle" width="20text%">
<column alignment="block" valignment="middle" width="75text%">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Actors
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" topline="true" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Guest, User or Deactivated User
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Preconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The actor has a working Internet connection.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Events
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Enumerate
The actor reaches the “Contact the Customer Service” page
\end_layout
\begin_layout Enumerate
The system requires the actor to enter his own name, surname, mobile phone
number, email address and to explain his problem in less than 1000 words
\end_layout
\begin_layout Enumerate
The user types the requested information and press the Contact the Customer
Service” button
\end_layout
\begin_layout Enumerate
The system redirects the request of the user to the customer service.
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Postconditions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The actor successfully contacted the customer service.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
<row>
<cell alignment="center" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
Exceptions
\end_layout
\end_inset
</cell>
<cell alignment="block" valignment="top" bottomline="true" usebox="none">
\begin_inset Text
\begin_layout Plain Layout
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
The actor uses more than 1000 words to explain his request.
There is at least one empty field.
In these cases the system notifies the error and cannot complete the request.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
vspace{0.15cm}
\end_layout
\end_inset
\end_layout
\end_inset
</cell>
</row>
</lyxtabular>
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Sequence Diagram
\end_layout
\begin_layout Standard
This section presents the sequence diagram of the most important interaction,
in order to have a dynamic sight of the main entities too.
\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/seqdia_reg.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
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\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/seqdia_login.png
width 70text%
height 70theight%
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
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\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/seqdia_checkavailability.png
width 100text%
height 90theight%
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
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\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/seqdia_editinfo.png
width 100text%
height 70theight%
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
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\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/seqdia_editbilling.png
width 100text%
height 100theight%
keepAspectRatio
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Modify Billing Information Sequence Diagram
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\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/seqdia_reservation.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
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\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/seqdia_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
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\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/seqdia_rent.png
width 100text%
height 100theight%
\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
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\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/seqdia_contact.png
width 100text%
height 100theight%
keepAspectRatio
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Contact Customer Service Sequence Diagram
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Class Diagram
\end_layout
\begin_layout Standard
Here it is shown a class diagram in order to give a static sight of the
main involved entities and of their relations.
The diagram, whose aim is just to better specificy requirements, is shown
in this picture.
\end_layout
\begin_layout Standard
\begin_inset space \quad{}
\end_inset
\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/ClassD.png
width 100text%
height 100theight%
keepAspectRatio
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
Class Diagram
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Section
Alloy
\end_layout
\begin_layout Standard
In this section we tried to verify the consistency of our class diagram.
To this goal, we realized a formal model of the system based both on the
class diagram and in the previously done assumptions and considerations
about constraints.
We realized this model using Alloy syntax, thanks to which we get on formally
describing the domain of our application and its properties.
Then we verified the consistency of our model using Alloy Analyzer.
Here there is the code of the model of the system.
\end_layout
\begin_layout Standard
\begin_inset space \quad{}
\end_inset
\end_layout
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
lstdefinelanguage{alloy}
\end_layout
\begin_layout Plain Layout
{keywords={%
\end_layout
\begin_layout Plain Layout
assert, pred, all, no, lone, one, some, check, run,
\end_layout
\begin_layout Plain Layout
but, let, implies, not, iff, in, and, or, set, sig, Int, int,
\end_layout
\begin_layout Plain Layout
if, then, else, exactly, disj, fact, fun, module, abstract,
\end_layout
\begin_layout Plain Layout
extends, open, none, univ, iden, seq,
\end_layout
\begin_layout Plain Layout
},
\end_layout
\begin_layout Plain Layout
literate=%
\end_layout
\begin_layout Plain Layout
{:}{$
\backslash
colon
\backslash
$}1
\end_layout
\begin_layout Plain Layout
%{|}{$
\backslash
bullet$}1
\end_layout
\begin_layout Plain Layout
{==}{$=$}1
\end_layout
\begin_layout Plain Layout
{=}{$=
\backslash
$}1
\end_layout
\begin_layout Plain Layout
{!=}{$
\backslash
neq
\backslash
$}1
\end_layout
\begin_layout Plain Layout
{&&}{$
\backslash
land$}1
\end_layout
\begin_layout Plain Layout
{||}{$
\backslash
lor
\backslash
$}1
\end_layout
\begin_layout Plain Layout
{<=}{$
\backslash
le
\backslash
$}1
\end_layout
\begin_layout Plain Layout
{>=}{$
\backslash
ge
\backslash
$}1
\end_layout
\begin_layout Plain Layout
%{all}{$
\backslash
forall
\backslash
$}1
\end_layout
\begin_layout Plain Layout
{exists}{$
\backslash
exists
\backslash
$}1
\end_layout
\begin_layout Plain Layout
{!in}{$
\backslash
not
\backslash
in
\backslash
$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
in}{$
\backslash
in$}1
\end_layout
\begin_layout Plain Layout
{=>}{$
\backslash
implies
\backslash
$}2
\end_layout
\begin_layout Plain Layout
% the following isn't actually Alloy, but it gives the option to produce
nicer latex
\end_layout
\begin_layout Plain Layout
{|=>}{$
\backslash
Rightarrow$}2
\end_layout
\begin_layout Plain Layout
{<=set}{$
\backslash
subseteq$}1
\end_layout
\begin_layout Plain Layout
{+set}{$
\backslash
cup$}1
\end_layout
\begin_layout Plain Layout
{*set}{$
\backslash
cap$}1
\end_layout
\begin_layout Plain Layout
{==>}{$
\backslash
Longrightarrow$}3
\end_layout
\begin_layout Plain Layout
{<==>}{$
\backslash
Longleftrightarrow$}4
\end_layout
\begin_layout Plain Layout
{...}{$
\backslash
ldots$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
hl}{$
\backslash
hline$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
alpha}{$
\backslash
alpha$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
beta}{$
\backslash
beta$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
gamma}{$
\backslash
gamma$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
delta}{$
\backslash
delta$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
epsilon}{$
\backslash
epsilon$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
zeta}{$
\backslash
zeta$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
eta}{$
\backslash
eta$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
theta}{$
\backslash
theta$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
iota}{$
\backslash
iota$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
kappa}{$
\backslash
kappa$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
lambda}{$
\backslash
lambda$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
mu}{$
\backslash
mu$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
nu}{$
\backslash
nu$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
xi}{$
\backslash
xi$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
pi}{$
\backslash
pi$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
rho}{$
\backslash
rho$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
sigma}{$
\backslash
sigma$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
tau}{$
\backslash
tau$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
upsilon}{$
\backslash
upsilon$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
phi}{$
\backslash
phi$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
chi}{$
\backslash
chi$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
psi}{$
\backslash
psi$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
omega}{$
\backslash
omega$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Gamma}{$
\backslash
Gamma$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Delta}{$
\backslash
Delta$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Theta}{$
\backslash
Theta$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Lambda}{$
\backslash
Lambda$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Xi}{$
\backslash
Xi$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Pi}{$
\backslash
Pi$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Sigma}{$
\backslash
Sigma$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Upsilon}{$
\backslash
Upsilon$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Phi}{$
\backslash
Phi$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Psi}{$
\backslash
Psi$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
Omega}{$
\backslash
Omega$}1
\end_layout
\begin_layout Plain Layout
{
\backslash
\backslash
EOF}{
\backslash
;}1
\end_layout
\begin_layout Plain Layout
,
\end_layout
\begin_layout Plain Layout
sensitive=true, % case sensitive
\end_layout
\begin_layout Plain Layout
morecomment=[l]//,%
\end_layout
\begin_layout Plain Layout
morecomment=[l]{--},%
\end_layout
\begin_layout Plain Layout
morecomment=[s]{/*}{*/},%
\end_layout
\begin_layout Plain Layout
morestring=[b]",
\end_layout
\begin_layout Plain Layout
numbers=none,
\end_layout
\begin_layout Plain Layout
firstnumber=1,
\end_layout
\begin_layout Plain Layout
numberstyle=
\backslash
tiny,
\end_layout
\begin_layout Plain Layout
stepnumber=2,
\end_layout
\begin_layout Plain Layout
basicstyle=
\backslash
scriptsize
\backslash
ttfamily
\backslash
large,
\end_layout
\begin_layout Plain Layout
commentstyle=
\backslash
bfseries
\backslash
color{blue!20!black!50!green},
\end_layout
\begin_layout Plain Layout
keywordstyle=
\backslash
bfseries
\backslash
color{blue},
\end_layout
\begin_layout Plain Layout
numberstyle=
\backslash
bfseries
\backslash
color{red},
\end_layout
\begin_layout Plain Layout
ndkeywordstyle=
\backslash
bfseries
\backslash
color{red},
\end_layout
\begin_layout Plain Layout
tabsize=2,
\end_layout
\begin_layout Plain Layout
columns=fullflexible,
\end_layout
\begin_layout Plain Layout
}
\end_layout
\begin_layout Plain Layout
% inline
\end_layout
\begin_layout Plain Layout
\backslash
def
\backslash
A{%
\end_layout
\begin_layout Plain Layout
\backslash
lstinline[language=alloy,basicstyle=
\backslash
ttfamily,columns=fixed]}
\end_layout
\begin_layout Plain Layout
\end_layout
\begin_layout Plain Layout
% paragraph
\end_layout
\begin_layout Plain Layout
\backslash
lstnewenvironment{alloy}[1][]{%
\end_layout
\begin_layout Plain Layout
\backslash
lstset{language=alloy,
\end_layout
\begin_layout Plain Layout
floatplacement={tbp},captionpos=b,
\end_layout
\begin_layout Plain Layout
xleftmargin=8pt,xrightmargin=8pt,basicstyle=
\backslash
ttfamily,#1}}{}
\end_layout
\begin_layout Plain Layout
\end_layout
\begin_layout Plain Layout
% paragraph from file
\end_layout
\begin_layout Plain Layout
\backslash
newcommand{
\backslash
alloyfile}[1]{
\end_layout
\begin_layout Plain Layout
\backslash
lstinputlisting[language=alloy,%
\end_layout
\begin_layout Plain Layout
frame=lines,xleftmargin=8pt,xrightmargin=8pt,basicstyle=
\backslash
ttfamily,columns=fixed]{#1}
\end_layout
\begin_layout Plain Layout
\end_layout
\begin_layout Plain Layout
}
\end_layout
\begin_layout Plain Layout
\backslash
lstinputlisting[language=alloy]{res/alloy/AlloyPowerEnjoy.als}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Subsection
Generated Worlds
\end_layout
\begin_layout Standard
Here are presented three generated worlds, according to the model specified
in Alloy.
\end_layout
\begin_layout Standard
\begin_inset External
template PDFPages
filename res/img/alloy_mondo_1.pdf
rotateAngle 90
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Standard
\begin_inset External
template PDFPages
filename res/img/alloy_mondo_3.pdf
rotateAngle 90
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Newpage newpage
\end_inset
\end_layout
\begin_layout Standard
\begin_inset External
template PDFPages
filename res/img/alloy_mondo_2.pdf
rotateAngle 90
\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
to draw all the diagrams
\end_layout
\begin_layout Itemize
\series bold
Alloy Analyzer 4.2
\series default
to write and verify alloy models
\end_layout
\begin_layout Subsection
Hours spent
\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