A transparency is some aspect of the distributed system that is hidden from the user (programmer, system developer, user or application program). A transparency is provided by including some set of mechanisms in the distributed system at a layer below the interface where the transparency is required. A number of basic transparencies have been defined for a distributed system. It is important to realize that not all of these are appropriate for every system, or are available at the same level of interface. In fact, all transparencies have an associated cost, and it is extremely important for the distributed system implementor to be aware of this. Much of the text of this book describes engineering solutions to archiving these transparencies, and attempts to outline the cost of the solutions. It is a matter for much research how the costs of implementing multiple transparencies interact. This is part of current research in how to reduce operating system and communications stack overheads through such approaches as Application Layer Framing and Integrated Layer Processing[#alf##1#]. The transparencies are: The transparencies are only one group of <#73#> properties<#73#> of an Open Distributed System. The groups are listed in table #tbtp#74>.

Table: Properties

Obligations are drawn from the properties of co-operation. These are ;SPM_quot;contractual;SPM_quot; in the Object Oriented Programming sense. The behavior of applications or Objects can be evaluated against precise specifications. Obligations include:

The reader may ask what freedom is left for the systems or applications programmer, when there are so many descriptive and prescriptive properties. That is exactly the strength of the Open Distributed Systems approach: The specification of the system will lead directly through object modeling to the choice of engineering and other tradeoffs available to the programmer. Prescriptive properties rule out those not available. Descriptive properties give choice - for example between failure transparency and access transparency constrained by a cost policy. The first seven chapters of this book discuss the design of the mechanisms needed to support these transparencies and describe some of the engineering costs involved in implementations of these mechanisms. The rest of this chapter outlines the distinction between operating system and application service support, and then provides an overview of the Object Oriented approach to structuring modules in open distributed systems. Much of the material is presented from the Engineering viewpoint.