Data dictionary, domain modelling and making things easy
-
Upload
lockheed-martin -
Category
Technology
-
view
1.068 -
download
1
description
Transcript of Data dictionary, domain modelling and making things easy
Data dictionary, domain modellingand how to make things easyPassenger Terminal Conference 20142014-03-26Barcelona, Spain
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
Ole Nymoen
• Owns 46 airports • 46 million passengers• 814.000 movements• 9 billion NOK operating
income• We are Norway (almost)
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
Avinor
• 32+ years in IT• Operations, developer,
it-architect
The chalenges
• New Airport Operational DataBase (AODB)• New vendor• Integrations• Understanding each other• Different terminology • Missing documentation• …
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
The solution (to some of it)
• Define a new common language (data dictionary)• Define data models that fits the domain• Mandate their use “everywhere”
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
But
• Keep it simple• Be pragmatic• Ok to spend some time up front if it saves time later
• No magic, no rocket science, easy to use, good documentation
Data dictionary – what and why
• “What is a data dictionary” – Google it ;-) • Many things to many people
• Definition of terms
• One “thing” – one term and one definition
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
Data dictionary - how we made it
• Bottom up• In cooperation with vendor• Avinor and vendor had “all+++” terms already
• Often very loosely documented• Defined by usage in different
contexts
• Needed to be precisely defined
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
Data dictionary – what we made
• About 300 terms defined• Instantiated in XML
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
Data dictionary - examples
ACGT Actual Commencement of Ground Handling Time. The time when ground handling on an aircraft starts, can be equal to "AIBT" (to be determined locally). Always UTC time.
datetime
AcdmStatus A-CDM (Airport Collaborate Decision Making) status codes. Planning phase: - SCH Scheduled- INI Initiated Arrival phase:- AIR Airborne- FIR Flight entered local FIR- FNL Final- ARR Landed Ground phase: - IBK In-Block- BRD Boarding - RDY ReadyDeparture phase: - OBK Off-Block- RDI Ready for de-icing- DEI De-icing in progress - DEP Departedramp
string(4)
AircraftBearing The direction the aircraft is flying. Legal values are 0 - 359 (inclusive and clockwise) and is given relative to magnetic north.
integer
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
Data dictionary - examples (the last)
AircraftChapter Aircraft chapter code. Defines an aircraft type in terms of its certificated noise level. For example, chapter 2 aircraft are characterised by the noisier, low bypass turbofan aircraft and early high bypass turbofan aircraft; chapter 3 aircraft are characterised by the modern, quieter, high bypass turbofan aircraft; chapter 4 aircraft are aircraft which are likely to have previously been classified as chapter 3 but are deemed to have met even more stringent standards. Note: chapter 1 is not an official classification but is / was sometimes used to indicate excessively noisy (e.g. older) aircraft, for example Concorde. Allowable values defined in aircraft chapter reference data table.
string(4)
WakeTurbulenceCategory
The ICAO wake turbulence category is based on the maximum certificated take-off mass, as follows:- L (Light) aircraft types of 7 000 kg (15 500 lb) or less.- M (Medium) aircraft types less than 136 000 kg (300 000 lb) and more than 7 000 kg (15 500 lb)- H (Heavy) aircraft types of 136 000 kg (300 000 lb) or more- J (Super Heavy) for Airbus A380-800 and other of this size.
string(1)
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
Where are the Data Dictionary used?
• Domain models• Integrations (canonical format)• Interfaces• Databases• Spoken language
• Use them everywhere!
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
Domain model – what is that?
• Another “many things to many people”• At the end of the day – data structures defining the
interesting things in your domain• Creates order, impose structure
• Initially our domain are flight related information
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
«All» about a flight leg (for integration)class FlightLegData - main entities
«XSDcomplexType»FlightLegData
+ flightLegIdentifier :FlightLegIdentifier+ aircraftData :AircraftData [0..1]+ passengerData :PassengerData [0..1]+ departureData :DepartureData [0..1]+ arrivalData :ArrivalData [0..1]+ chargeBorderCrossing :ChargeBorderCrossing [0..*]+ codeShareData :CodeShareData [0..*]+ operatingAirlineIATA :AirlineIATA [0..1]+ operatingAirlineICAO :AirlineICAO [0..1]+ operatingAirlineTicketed :AirlineIATAorICAO [0..1]+ fl ightLegStatus :FlightLegStatus [0..1]+ acdmStatus :AcdmStatus [0..1]+ fl ightServiceTypeIATA :FlightServiceTypeIATA [0..1]+ fl ightServiceTypeICAO :FlightServiceTypeICAO [0..1]+ fl ightServiceTypeExtended :FlightServiceTypeExtended [0..1]+ fl ightIsMultiLeg :boolean [0..1]+ militaryFlightOwner :MilitaryFlightOwner [0..1]+ numberOfAircraft :Count [0..1]+ nextInformationTime :DateTimeUTC [0..1]+ remark :Remark [0..*]
«XSDcomplexType»FlightLegIdentifier
+ ifplid :IFPLID [0..1]+ callsign :Callsign [0..1]+ aircraftRegistration :AircraftRegistration [0..1]+ ssrCode :SSRCode [0..1]+ fl ightId :FlightId [0..1]+ fl ightDepartureDate :DateUTC [0..1]+ departureAirportIATA :AirportIATA [0..1]+ arrivalAirportIATA :AirportIATA [0..1]+ departurelAirportICAO :AirportICAO [0..1]+ arrivalAirportICAO :AirportICAO [0..1]
«XSDcomplexType»AircraftData
+ aircraftOwnerIATA :AircraftOwnerIATA [0..1]+ aircraftOwnerICAO :AircraftOwnerICAO [0..1]+ aircraftIATAType :AircraftIATAType [0..1]+ aircraftICAOType :AircraftICAOType [0..1]+ aircraftSeatingCapacity :Count [0..1]+ aircraftSeatingAvailable :Count [0..1]+ aircraftTailNumber :AircraftTailNumber [0..1]+ aircraftConfigVersion :AircraftConfigVersion [0..1]+ crewActiveOnBoard :Count [0..1]+ crewPassiveOnBoard :Count [0..1]+ baggageData :BaggageData [0..1]+ cargoData :CargoData [0..1]+ aircraftMTOW :Kilo [0..1]+ aircraftNumberOfEngines :Count [0..1]+ aircraftEngineType :AircraftEngineType [0..1]+ aircraftHorsePower :HorsePower [0..1]+ aircraftThrust :KiloNewton [0..1]+ aircraftNOx :Gram [0..1]+ aircraftChapter :AircraftChapter [0..1]+ aircraftIsNoiseCertificated :boolean [0..1]+ wakeTurbulenceCategory :WakeTurbulenceCategory [0..1]
«XSDcomplexType»PassengerData
+ paxAdultOnBoard :Count [0..1]+ paxChildOnBoard :Count [0..1]+ paxInfantOnBoard :Count [0..1]+ paxSeatedOnBoard :Count [0..1]+ paxTransit :Count [0..1]+ personsOnBoard :Count [0..1]
«XSDcomplexType»CodeShareData
+ codeShareFlightNumber :FlightNumber+ codeShareAirlineIATA :AirlineIATA [0..1]+ codeShareAirlineICAO :AirlineICAO [0..1]+ codeShareAirlineTicketed :AirlineIATAorICAO [0..1]
«XSDcomplexType»ArrivalData
+ arrivalSecurityIndicator :AirportSecurityIndicator [0..1]+ handlerArrival :HandlerData [0..*]+ aircraftParkingPosition :AircraftParkingPosition [0..1]+ fl ightStopIsTechnical :boolean [0..1]+ paxCanDisembark :boolean [0..1]+ paxBusIsNeeded :boolean [0..1]+ runwayArrival :Runway [0..1]+ mttt :duration [0..1]+ ettt :duration [0..1]+ eldt :DateTimeUTC [0..1]+ eldtAccuracy :EstimatedTimeAccuracy [0..1]+ tldt :DateTimeUTC [0..1]+ aldt :DateTimeUTC [0..1]+ sibt :DateTimeUTC [0..1]+ eibt :DateTimeUTC [0..1]+ aibt :DateTimeUTC [0..1]+ exit :duration [0..1]+ axit :duration [0..1]+ acgt :DateTimeUTC [0..1]+ aegt :DateTimeUTC [0..1]+ aght :duration [0..1]+ arrivalDelay :Delay [0..*]
«XSDcomplexType»DepartureData
+ departureSecurityIndicator :AirportSecurityIndicator [0..1]+ fl ightDIIndicator :DIIndicator [0..1]+ fl ightRule :FlightRule [0..1]+ handlerDeparture :HandlerData [0..*]+ aircraftParkingPosition :AircraftParkingPosition [0..1]+ fuelRampRequested :Kilo [0..1]+ paxCanEmbark :boolean [0..1]+ checkInData :CheckInData [0..*]+ gateData :GateData [0..*]+ paxBusIsNeeded :boolean [0..1]+ runwayDeparture :Runway [0..1]+ asbt :DateTimeUTC [0..1]+ asrt :DateTimeUTC [0..1]+ tsat :DateTimeUTC [0..1]+ asat :DateTimeUTC [0..1]+ ardt :DateTimeUTC [0..1]+ sobt :DateTimeUTC [0..1]+ eobt :DateTimeUTC [0..1]+ tobt :DateTimeUTC [0..1]+ aobt :DateTimeUTC [0..1]+ erzt :DateTimeUTC [0..1]+ arzt :DateTimeUTC [0..1]+ eczt :DateTimeUTC [0..1]+ aczt :DateTimeUTC [0..1]+ eezt :DateTimeUTC [0..1]+ aezt :DateTimeUTC [0..1]+ edit :duration [0..1]+ adit :duration [0..1]+ ctot :DateTimeUTC [0..1]+ etot :DateTimeUTC [0..1]+ ttot :DateTimeUTC [0..1]+ atot :DateTimeUTC [0..1]+ exot :duration [0..1]+ axot :duration [0..1]+ departureDelay :Delay [0..*]+ returnToRampTime :DateTimeUTC [0..1]
«XSDcomplexType»ChargeBorderCrossing
+ nextChargingArea :ChargingArea [0..1]+ previousChargingArea :ChargingArea [0..1]+ position4D :Position4D [0..1]
10..*
1
0..1
10..11 0..1
11
1 0..1
1
0..*
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
XML definitions
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
Integrations
• Why all the fuss – integrations are easy and fun. But require:• Clearly defined responsibility• Well documented data and business rules• Good architecture
• Why do we often end up with the thing on the right?
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
Integrations done «right»
• Common data format• Transformations done at the edges – NOT in the middle
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
cmp Integration done right
Messaging infrastructure, canonical data formats
System A System B System C
Sys A Connect Sys B Connect Sys C Conenct
The takeaway
• It takes a lot of work to create a good data dictionary anddomain model
• Do it and use them everywhere!
• Having a data dictionary andgood data definitions is magic
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
The one with a good DD
Thank you
Data dictionary, domain modelling and how to make things easyPassenger Terminal Conference 2014
• Questions?