From 5ede806c17e1ade1accb059a8a9a59ae58c25794 Mon Sep 17 00:00:00 2001 From: Giulio De Pasquale Date: Wed, 11 Jan 2017 20:23:31 +0100 Subject: [PATCH] RMSS comeback --- 1.RASD/RASD.lyx | 10764 ++++++++++---------- 3.Integration Test Plan Document/ITPD.lyx | 4 +- 2 files changed, 5384 insertions(+), 5384 deletions(-) diff --git a/1.RASD/RASD.lyx b/1.RASD/RASD.lyx index cbabab1..10585e5 100644 --- a/1.RASD/RASD.lyx +++ b/1.RASD/RASD.lyx @@ -1,5382 +1,5382 @@ -#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 don’t 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 - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Actors -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Preconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Events -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Postconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Exceptions -\end_layout - -\end_inset - - -\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 - - - - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Log in -\end_layout - -\begin_layout Standard -\paragraph_spacing onehalf -\begin_inset Tabular - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Actors -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Preconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Events -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Postconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Exceptions -\end_layout - -\end_inset - - -\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 can’t 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 - - - - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Edit personal information -\end_layout - -\begin_layout Standard -\paragraph_spacing onehalf -\begin_inset Tabular - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Actors -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Preconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Events -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Postconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Exceptions -\end_layout - -\end_inset - - -\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 - - - - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Edit billing information -\end_layout - -\begin_layout Standard -\paragraph_spacing onehalf -\begin_inset Tabular - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Actors -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Preconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Events -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Postconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Exceptions -\end_layout - -\end_inset - - -\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 - - - - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Check available cars' position and status -\end_layout - -\begin_layout Standard -\paragraph_spacing onehalf -\begin_inset Tabular - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Actors -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Preconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Events -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Postconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Exceptions -\end_layout - -\end_inset - - -\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 - - - - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Reserve a car -\end_layout - -\begin_layout Standard -\paragraph_spacing onehalf -\begin_inset Tabular - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Actors -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -User -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -Preconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Events -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Postconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Exceptions -\end_layout - -\end_inset - - -\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 - - - - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Open the reserved car -\end_layout - -\begin_layout Standard -\paragraph_spacing onehalf -\begin_inset Tabular - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Actors -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -User -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -Preconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Events -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Postconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Exceptions -\end_layout - -\end_inset - - -\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 doesn’t unlock the doors. -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -vspace{0.15cm} -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - - - -\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 - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Actors -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -User -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -Preconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Events -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Postconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Exceptions -\end_layout - -\end_inset - - -\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 doesn’t 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 - - - - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Contact customer service -\end_layout - -\begin_layout Standard -\paragraph_spacing onehalf -\begin_inset Tabular - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Actors -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Guest, User or Deactivated User -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -Preconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Events -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Postconditions -\end_layout - -\end_inset - - -\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 - - - - -\begin_inset Text - -\begin_layout Plain Layout -Exceptions -\end_layout - -\end_inset - - -\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 - - - - -\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 +#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 don’t 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 + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Actors +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Preconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Events +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Postconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Exceptions +\end_layout + +\end_inset + + +\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 + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Log in +\end_layout + +\begin_layout Standard +\paragraph_spacing onehalf +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Actors +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Preconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Events +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Postconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Exceptions +\end_layout + +\end_inset + + +\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 can’t 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 + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Edit personal information +\end_layout + +\begin_layout Standard +\paragraph_spacing onehalf +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Actors +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Preconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Events +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Postconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Exceptions +\end_layout + +\end_inset + + +\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 + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Edit billing information +\end_layout + +\begin_layout Standard +\paragraph_spacing onehalf +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Actors +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Preconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Events +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Postconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Exceptions +\end_layout + +\end_inset + + +\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 + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Check available cars' position and status +\end_layout + +\begin_layout Standard +\paragraph_spacing onehalf +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Actors +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Preconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Events +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Postconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Exceptions +\end_layout + +\end_inset + + +\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 + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Reserve a car +\end_layout + +\begin_layout Standard +\paragraph_spacing onehalf +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Actors +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +User +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Preconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Events +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Postconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Exceptions +\end_layout + +\end_inset + + +\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 + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Open the reserved car +\end_layout + +\begin_layout Standard +\paragraph_spacing onehalf +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Actors +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +User +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Preconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Events +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Postconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Exceptions +\end_layout + +\end_inset + + +\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 doesn’t unlock the doors. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +vspace{0.15cm} +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + + + +\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 + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Actors +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +User +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Preconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Events +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Postconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Exceptions +\end_layout + +\end_inset + + +\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 doesn’t 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 + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Contact customer service +\end_layout + +\begin_layout Standard +\paragraph_spacing onehalf +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Actors +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Guest, User or Deactivated User +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Preconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Events +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Postconditions +\end_layout + +\end_inset + + +\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 + + + + +\begin_inset Text + +\begin_layout Plain Layout +Exceptions +\end_layout + +\end_inset + + +\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 + + + + +\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 diff --git a/3.Integration Test Plan Document/ITPD.lyx b/3.Integration Test Plan Document/ITPD.lyx index c7fd98f..8028ce3 100644 --- a/3.Integration Test Plan Document/ITPD.lyx +++ b/3.Integration Test Plan Document/ITPD.lyx @@ -1391,7 +1391,7 @@ Car Manager \end_layout \begin_layout Subsubsection* -Reservation Management +RMSS \end_layout \begin_layout Standard @@ -5011,7 +5011,7 @@ Returns a list of cars around the Location. \end_layout \begin_layout Subsection -Reservation Management +RMSS \end_layout \begin_layout Standard