482 Chapter 18 ■ Distributed software engineering
5. Quality of service How should the quality of service that is delivered to system
users be specified and how should the system be implemented to deliver an
acceptable quality of service to all users?
6. Failure management How can system failures be detected, contained (so that
they have minimal effects on other components in the system), and repaired?
In an ideal world, the fact that a system is distributed would be transparent to
users. This means that users would see the system as a single system whose behavior
is not affected by the way that the system is distributed. In practice, this is impossi-
ble to achieve. Central control of a distributed system is impossible and, as a result,
individual computers in a system may behave differently at different times.
Furthermore, because it always takes a finite length of time for signals to travel
across a network, network delays are unavoidable. The length of these delays
depends on the location of resources in the system, the quality of the user’s network
connection, and the network load.
The design approach to achieving transparency depends on creating abstractions
of the resources in a distributed system so that the physical realization of these
resources can be changed without having to make changes in the application system.
Middleware (discussed in Section 18.1.2) is used to map the logical resources refer-
enced by a program onto the actual physical resources, and to manage the interac-
tions between these resources.
In practice, it is impossible to make a system completely transparent and users,
generally, are aware that they are dealing with a distributed system. You may there-
fore decide that it is best to expose the distribution to users. They can then be pre-
pared for some of the consequences of distribution such as network delays, remote
node failures, etc.
Open distributed systems are systems that are built according to generally
accepted standards. This means that components from any supplier can be integrated
into the system and can interoperate with the other system components. At the
networking level, openness is now taken for granted with systems conforming to
Internet protocols but at the component level, openness is still not universal.
Openness implies that system components can be independently developed in any
programming language and, if these conform to standards, they will work with other
components.
CORBA – Common Object Request Broker Architecture
CORBA is a well-known specification for a middleware system that was developed in the 1990s by the Object
Management Group. It was intended as an open standard that would allow the development of middleware to
support distributed component communications and execution, plus provide a set of standard services that
could be used by these components.
Several implementations of CORBA were produced but the system never achieved critical mass. Users preferred
proprietary systems or moved to service-oriented architectures.
http://www.SoftwareEngineering-9.com/Web/DistribSys/Corba.html