System Design System Design
Zhen JiangZhen Jiang
West Chester UniversityWest Chester University
[email protected]@wcupa.edu
RequirementRequirement
A flight is defined by a number and a date, and defines a route from an origin airport to a destination airport. A planes is assigned to a flight and it contains a set of numbered seats.
Use casesUse cases
• Customers make reservations for specific seats in specific flights.
• A route is the way followed by a flight from its origin airport to its destination airport. There may be several flights that share the same origin and destination airports. A route includes one or more spans.
• A span (segment) is a part of a route to get from a start airport to a termination airport as part of a specific flight. The start (or termination) airport is called origin (or destination) airport of this span.
• For each flight there are several connecting flights (different flights that leave from an intermediate stop closely after its arrival).
Use casesUse cases• A ticket includes a one-ticket route (one-way ticket) or a
two-ticket route (round-trip ticket). Using a round-trip ticket, a passenger can go to an airport and come back using the same route. If the passenger returns using a different route, she needs a set of one-way tickets. Such a round-trip is a special case of one-way trip where its source and destination are the same. Stops are not indicated in the ticket unless the flight number changes, which indicates a plane change.
• For the convenience of customers we may keep information on relevant facilities; for origins we keep aspects such as parking, for destinations we keep hotels near the airport, for intermediate stops we keep lists of hotels close to the airport, restaurants, etc. This information also may also include details of the cities nearby.
Use casesUse cases
• An airlink is any direct flight between two airports. All airlinks are spans of some flight. A basic airlink has no stops. A route is a set of connected basic airlinks connecting all the airports through which it passes
Use casesUse cases
Airport A
Airport C a span of Flight 12
Flight 12 (one stop at C)
Flight13 Airport D
Flight 14
Flight 16
Flight 17
Routes
Routes from A to D
Airport B
Connecting Flights of Flight 12
Flight 14
Airport E
Flight 13
Flight 18
Flight 15 (nonstop)
Design PatternsDesign Patterns
Passenger TicketSeries
book
TicketRoute
TicketUnit
id(/account#):String
creditInfo: String
ticketseries#: Stringbookdate: String
1
type: {one-way, round-trip}trip_source: Stringtrip_destination: String
ticket#: Stringorigin: Stringdestination: Stringflight$#: Stringclass: {A, B, C}seat#: String
1..2
1..*
1..*
1..*
Design PatternsDesign Patterns
TicketSeries TicketUnit
Flight
Seat
Span
{available seat#}
ticketseries#: Stringbookdate: String
origin: Stringdestination: String
ticket#: String
flight#: Stringschedule: List<departure time,
arrival time, stop>
seat#: String
{connecting flights haveconnecting schedule}
1..*
{available series tickets}
{connected spans}
Assignment Pattern
association as classdependence of constraints
Design PatternsDesign Patterns
1..*
Flight
flight#: Stringschedule: List<departure time, arrival time, stop>
Seat
Seat#: String
Plane
type: Stringno#: StringseatCapacity: InfoList oclassInfo: InfoList
1
*
assigned_to
a plane has afixed numberof seats in aclass
Design PatternsDesign Patterns
Airport
FlightSpan
origin: Stringdestination: String
flight#: Stringschedule: List<departure time,
arrival time, stop>
name: Stringcity: String
{connecting condition}
1..*
1
1..*
1
other_linka_connected_by
a_connecting
1..*
1
f_connecting
{connecting flights haveconnecting schedule} {connection between
different spans}s_connecting
Connection Pattern Connection Pattern
Connection Pattern
Design PatternsDesign Patterns
Airlink
Route
Flight
Span
dependence of constraint
origin: Stringdestination: String
flight#: Stringschedule: List<departure time,
arrival time, stop>
airline_link#: String
origin: Stringdestination: String
{connectionbetween basicairlinks in a route}
{connection of airlinks betweendifferent routes}
1..* 1..*
1 1subsetbasic
1..*
1
{connecting flights must haveconnecting schedule}
{connection betweendifferent spans}
Airlink
Path
airline_link#: String
origin: Stringdestination: String
1..* 1..*
1 1
subsetbasic
(a) (b)
Design PatternsDesign Patterns
AirportRoleAirport
Origin Intermediate Destination
name: Stringcity: String
departure_time: Dateparking_lot: Integer
arrival_time: Datedeparture_time: Datehotels: String
arrival_time: Datenearby_hotel: String
roleType: {route_t,span_t}
0..*
core
roles
Analysis PatternAnalysis Pattern
shanghai
Tokyo
Hongkong
Los Angeles (LAX)
Dallas (DAL)
Miami (MIA)
New York (NY)
Customer A booked in Dallas, on 8/29/00.: round-trip, Dallas Los Angeles 9/4/00.
Customer B booked in Shanghai, on 7/8/00.: one-way, Shanghai Miami 9/6/00,New York Los Angeles 9/11/00.
Customer B changed his reservation.: one-way, Shanghai Dallas 9/6/00.
Customer B booked for his friend.: one-way, Hongkong Dallas 9/4/00.
858 <W3:00pm, W7:00pm>
368 <W4:30pm, W12:30pm>
898 <M9:00am, M9:00am>
804 <F9:00pm, S6:30am>
803 <M8:00pm, M11:30pm><F6:00am, F2:30pm>
Design PatternDesign Pattern
AirportRole
Airlink
Airport
Route
Plane
Passenger TicketSeriesbook
TicketRoute
TicketUnit
Flight Seat
Span
assigned_to
association as classimplied relationship or dependence
{available seat#}
Origin Intermediate Destination
id(/account#): StringcreditInfo: String
ticketseries#: Stringbookdate: String
1 *
type: {one-way, round-trip}trip_source: Stringtrip_destination: String
origin: Stringdestination: String
ticket#: String
flight#: Stringschedule: List<departure time,
arrival time, stop>
seat#: String
type: Stringno#: StringseatCapacity: InfoListclassInfo: InfoList
{a plane has afixed number of seats ina class
name: Stringcity: String
departure_time: Dateparking_lot: Integer
arrival_time: Datedeparture_time: Datehotels: String
arrival_time: Datenearby_hotel: String
roleType: {route_t,span_t}
airline_link#: String
origin: Stringdestination: String
0..*
coreroles
{connecting condition}
1..*
1
1..*
1
other_linka_connected_by
a_connecting
{two connectingairlinks?}
{connectionbetween basicairlinks in a route}
{connection of airlinks betweendifferent routes}
1..* 1..*
1 1subset
basic
1..*
1
1..* 1
*
1..*
1
f_connecting 1..*
{connecting flights haveconnecting schedule}
1..2
1..*
1..*
{available series tickets}
{connection betweendifferent spans}
s_connecting
Top Related