This book is about programming-in-the-large, a term coined by DeRemer and
Kron  to distinguish the assembly of large applications from components, from
the task of implementing those components themselves. Many of the principles of
programming-in-the-large were earlier elucidated by Parnas in two articles [3, 4].
It is striking how many of the key ideas of programming-in-the-large that remain
relevant today were in Parnas’ seminal work.
In the 1980s, with the rise of local area networks (LANs) and object-oriented
programming, distributed software buses appeared as solutions to the growing complexity
of networked heterogeneous software systems. The synthesis of these trends
saw the emergence of the Common Object Request Broker Architecture (CORBA)
in the late 1980s. Long before then, industries such as banking and air travel
had developed on-line networked transactional systems that are still in heavy use
today. CORBA, as originally envisaged, was to be the glue for allowing those
legacy systems to be incorporated into modern applications. The use of systems
such as CORBA, and particularly of transaction processing monitors, as the backbone
for enterprise middlewares has, indeed, been a success story in enterprise
software environments. Unfortunately, and perhaps predictably, the challenge of
heterogeneity remained, as a heterogeneous collection of software buses emerged
for application deployment.