Purdue University Calumet
CS416: Software Engineering
TravelSoft, INC Team:Jason Adler Software ArchitectMustafa Jassim Aloqayli Testing EngineerJeremiah Eikenberg Requirements EngineerChristopher Nelson Software ArchitectRaymond Smith Integration EngineerBradley Van Cleave Project Manager
Author: Jason Adler
October 31, 2013
Software Design Document
Revision History
Version Member Comments Date
1.0.0 Jason Adler Created first draft 10/28/13
1.1.0 Jason Adler Made changesprimarily in section
3.3 and 6
10/30/13
1.2.0 Jason Adler Updated section 3.3 10/31/13
1.2.1 Jason Adler Updated section 3.3and resized images
10/31/13
2
1. Introduction............................................................................................................................................5 1.1 Purpose...........................................................................................................................................5 1.2 Scope..............................................................................................................................................5 1.3 Definitions, Acronyms, and Abbreviations....................................................................................5
2. References..............................................................................................................................................53. Decomposition Description....................................................................................................................5
3.1 Module Decomposition (Object Model)........................................................................................5 3.1.1 Framework Package...............................................................................................................6 3.1.2 FlightService Package...........................................................................................................6 3.1.3 ReportService Package..........................................................................................................6 3.1.4 AccountService Package........................................................................................................6 3.1.5 ReservationService Package..................................................................................................6 3.1.6 PaymentService Package.......................................................................................................6
3.2 Concurrent Process Decomposition...............................................................................................6 3.3 Data Decomposition.......................................................................................................................6
3.3.1 Account..................................................................................................................................6 3.3.2 PhoneNumber........................................................................................................................6 3.3.3 Address..................................................................................................................................7 3.3.4 CreditCard..............................................................................................................................7 3.3.5 Flight......................................................................................................................................7 3.3.6 Reservation............................................................................................................................7 3.3.7 Payment.................................................................................................................................7
3.4 State Model Decomposition...........................................................................................................7 3.5 Use Case Model Decomposition....................................................................................................7
4. Dependency Description........................................................................................................................7 4.1 Intermodule Dependencies (Class Model).....................................................................................7 4.2 Interprocess Dependencies.............................................................................................................7 4.3 Data Dependencies.........................................................................................................................8 4.4 State Dependencies.........................................................................................................................8 4.5 Layer Dependencies.......................................................................................................................8
5. Interface Description..............................................................................................................................8 5.1 Module Interfaces...........................................................................................................................8
5.1.1 FlightServiceInterface............................................................................................................8 5.1.2 ReportServiceInterface..........................................................................................................8 5.1.3 AccountServiceInterface........................................................................................................8 5.1.4 ReservationServiceInterface..................................................................................................9 5.1.5 PaymentServiceInterface.......................................................................................................9 5.1.6 DatabaseServiceInterface......................................................................................................9
5.2 Process Interfaces...........................................................................................................................96. Detailed Design......................................................................................................................................9
6.1 Services........................................................................................................................................10 6.2 Data Objects.................................................................................................................................13
6.2.1 Account................................................................................................................................13 6.2.2 Customer..............................................................................................................................13 6.2.3 Administrator.......................................................................................................................13 6.2.4 ServiceAgent........................................................................................................................13 6.2.5 Profile..................................................................................................................................14
3
6.2.6 CreditCard............................................................................................................................14 6.2.7 ReportPermissions...............................................................................................................14 6.2.8 Address................................................................................................................................15 6.2.9 Flight....................................................................................................................................15 6.2.10 Location.............................................................................................................................15 6.2.11 DateLocale.........................................................................................................................16 6.2.12 FlightNumber.....................................................................................................................16 6.2.13 Payment.............................................................................................................................17 6.2.14 PaymentStatus...................................................................................................................17 6.2.15 Reservation........................................................................................................................17 6.2.16 ReservationState................................................................................................................18
4
1. Introduction
1.1 Purpose
This document describes the design of the Airline Reservation System. It is intended to be used by developers, engineers, and customers to gain insight on the software design of the ARS.
1.2 Scope
This design describes the structure and classes of the Airline Reservation System.
1.3 Definitions, Acronyms, and Abbreviations
ARS—Airline Reservation System
2. References
ServiceFlowAchitecture.pngServiceProvider diagramsUse Case documentUse Case sequence diagramsState Transition diagramsFlightServiceInterface.pngReservationServices.jpgPaymentServiceInterface.jpgDatabaseServiceInterface.png
3. Decomposition Description
The ARS is described using two models: use case and class. The ARS is designed using a client-server architecture and is divided into modules and tiers accordingly.
3.1 Module Decomposition (Object Model)
The ARS is divided into several service modules that are placed in a tiered structure depending on the level of service they provide. See ServiceFlowAchitecture.png for more details.
All packages are prefixed with edu.purduecal.cs416.travelsoft. Data objects and service interfaces are located in the sub-package: framework. Each implementation of a service is located in a sub-package named after the service it is implementing. For example, a class called CustomerFlightService would be located in the package: “edu.purduecal.cs416.travelsoft.FlightService”.
5
3.1.1 Framework Package
This package (edu.purduecal.cs416.travelsoft.framework) consists of all data objects and service interfaces.
3.1.2 FlightService Package
This package (edu.purduecal.cs416.travelsoft.FlightService) contains all implementations of FlightServiceInterface.
3.1.3 ReportService Package
This package (edu.purduecal.cs416.travelsoft.ReportService) contains all implementations of ReportServiceInterface.
3.1.4 AccountService Package
This package (edu.purduecal.cs416.travelsoft.AccountService) contains all implementations of AccountServiceInterface.
3.1.5 ReservationService Package
This package (edu.purduecal.cs416.travelsoft.ReservationService) contains all implementations of ReservationServiceInterface.
3.1.6 PaymentService Package
This package (edu.purduecal.cs416.travelsoft.PaymentService) contains all implementations of PaymentServiceInterface.
3.2 Concurrent Process Decomposition
-intentionally left blank
3.3 Data Decomposition
The database will consist of seven tables: Account, PhoneNumber, Address, CreditCard, Flight, Reservation, and Payment.
3.3.1 Account
• The Account table will store all user account information.
3.3.2 PhoneNumber
6
• The PhoneNumber table will store all users' phone numbers.
3.3.3 Address
• The Address table will store all users' addresses.
3.3.4 CreditCard
• The CreditCard table will store all saved credit card information.
3.3.5 Flight
• The Flight table will store all available flights.
3.3.6 Reservation
• The Reservation table will store all reservations placed.
3.3.7 Payment
• The Payment Table will store all payments made.
3.4 State Model Decomposition
See section 4.4 of this document.
3.5 Use Case Model Decomposition
See Use Case document and Use Case sequence diagrams.
4. Dependency Description
4.1 Intermodule Dependencies (Class Model)
Users are directly dependent on the all services other than the database service. Services,excluding the database service, are all dependent on the database service. Services needed are provided via a service provider which provides the correct implementations of the services. See ServiceFlowArchitecture.png for more details.
4.2 Interprocess Dependencies
-intentionally left blank
7
4.3 Data Dependencies
The data structures flowing among the packages are defined by the classes. See the classdiagrams and Section 6 of this document for more information.
4.4 State Dependencies
See state transition diagrams.
4.5 Layer Dependencies
Layer dependencies between classes consist of a service provider which provides the class with the appropriate implementations of the services below it. See ServiceFlowArchitecture.png and the service provider diagrams for details.
5. Interface Description
This section describes the interfaces for ARS. The specifics of each interface are found in their respective class diagrams and are detailed in Section 6.
5.1 Module Interfaces
This section describes the interfaces for the services of the ARS.
5.1.1 FlightServiceInterface
The FlightServiceInterface is used, depending on the implementation, to look up,add, or remove flights from the database using the database service. The FlightServiceInterface consists of the following methods:
addFlight(Flight)removeFlight(Flight)Flight getFlight(String)List<Flight> getFlights(Location, Date)
Further details can be found in FlightServiceInterface.png
5.1.2 ReportServiceInterface
-not designed yet
5.1.3 AccountServiceInterface
-not designed yet
8
5.1.4 ReservationServiceInterface
The ReservationServiceInterface is used to place, get, or cancel reservations. All acccess to the database is done through the database service.Methods of the ReservationServiceInterface are the following:
Reservation getReservation(String)List<Reservation> getReservations(String)List<Reservation> getReservations(String, Date, Date)boolean commitReservation(Reservation)boolean cancelReservation(String)
More details can be found in ReservationServices.jpg
5.1.5 PaymentServiceInterface
The PaymentServiceInterface is used to process and cancel payments, and to add or remove payment types. All access to the database is done through the database service.The PaymentServiceInterface has the following methods:
boolean processPayment(Payment)boolean cancelPayment(Payment)boolean addPaymentType(CreditCard)boolean removePaymentType(CreditCard)
More details can be found in PaymentServiceInterface.jpg
5.1.6 DatabaseServiceInterface
The DatabaseServiceInterface is directly responsible for accessing the database. All other services use this service when accessing the database. The DatabaseServiceInterface has the following methods:
boolean create(Object)List<Object> retrieve(Map<String, String>)boolean update(Object)boolean deactivate(Object)
Further details can be found in DatabaseServiceInterface.png5.2 Process Interfaces
-intentionally left blank
6. Detailed Design
9
6.1 Services
6.1.1 Flight Service
6.1.2 Report Service
-not designed yet
6.1.3 Account Service
-not designed yet
6.1.4 Reservation Service
10
6.2 Data Objects
A list of all data objects created for the ARS and their diagrams are presented here.
6.2.1 Account
This data object contains the name, ID, and email of the user.
6.2.2 Customer
This data object extends Account, containing two additional objects: Profile and CreditCard.
6.2.3 Administrator
This data object extends Account and is used to represent an administrator.
6.2.4 ServiceAgent
This data object extends Account and contains two additional objects: Profile andReportPermissions.
13
6.2.5 Profile
This data object contains an ID, address, and phone number.
6.2.6 CreditCard
This data object contains the customer’s ID, cardholder name, card number, expiration, and CSV.
6.2.7 ReportPermissions
This enumeration contains three values: Flights, Customers, and Both.
6.2.8 Address
This data object contains a street, city, state, and zip code.
14
6.2.9 Flight
This data object contains the destination, departure, number of first class seats, number of coach seats, and a flight number for a flight.
6.2.10 Location
This enumeration contains values for all flight locations.
15
6.2.11 DateLocale
This data object stores a location and a date.
6.2.12 FlightNumber
This data object stores a string that is used to uniquely identify flights.
6.2.13 Payment
This data object contains a reservation ID, customer ID, price, credit card, and payment status.
6.2.14 PaymentStatus
This enumeration contains four values: Unprocessed, Processing, Successful, andDeclined.
16