1. A method of developing a software application in which a check-in terminal communicates with two or more airline systems and services, the method comprising: providing a common code base to a computer system, wherein the common code base is incompatible with the two or more airline systems and services; describing data and messages used by the application using a declarative data description language; defining a library of system components, stored in a store of the computer system, including: a) a terminal abstraction layer that allows interactions between the check-in terminal and the application to control the check-in terminal; and b) an airline systems and services abstraction layer that allows interactions between the two or more airline systems and services and the application, wherein the two or more airline systems and services comprise check-in systems; providing a graphical (GUI) tool to model the workflow of the application, the workflow including screens and services described declaratively by a declarative data description language, the graphical tool being for display on a display device of the computer system; and assembling the application using the graphical tool, declarative rules, and customizations of system components selected from the library.