Purdue University Calumet
CS416: Software Engineering
Software Design Document
TravelSoft, INC Team:
Jason Adler
Mustafa Jassim Aloqayli
Jeremiah Eikenberg
Christopher Nelson
Raymond Smith
Bradley Van Cleave
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.png
ServiceProvider diagrams
Use Case document
Use Case sequence diagrams
State Transition diagrams
FlightServiceInterface.png
ReservationServices.jpg
PaymentServiceInterface.jpg
DatabaseServiceInterface.png
3. Decomposition Description
The ARS is described using two models: use case and class. The ARS is designed using a clientserver 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 class
diagrams 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.png
5.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.1.5 Payment Service
11
12
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 and
ReportPermissions.
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, and
Declined.
16
6.2.15 Reservation
This data object contains the ID of the reservation, flight number, account
number, state, and confirmation number.
6.2.16 ReservationState
This enumeration contains four values: Initiated, Held, PendingPayment, and
Confirmed.