Transparency (computing)
Encyclopedia
Any change in a computing
system, such as new feature or new component, is transparent if the system after change adheres to previous external interface as much as possible while changing its internal behaviour. The purpose is to shield from change all systems (or human users) on the other end of the interface. Confusingly, the term refers to overall invisibility of the component, it does not refer to visibility of component's internals (as in white box
or open system
). The term transparent is widely used in computing marketing in substitution of the term invisible, since the term invisible has a bad connotation
(usually seen as something that the user can't see and has no control over) while the term transparent has a good connotation (usually associated with not hiding anything). The vast majority of the times, the term transparent is used in a misleading way to refer to the actual invisibility of a computing process.
The term is used particularly often with regard to an abstraction layer
that is invisible either from its upper or lower neighbouring layer.
Also temporarily used later around 1969 in IBM and Honeywell programming manuals the term referred to a certain programming technique. An application code was transparent when it was clear of the low-level detail (such as device-specific management) and contained only the logic solving a main problem. It was achieved through encapsulation – putting the code into modules that hid
internal details, making them invisible for the main application.
, so the user might even not notice it while using the folder hierarchy. The early File Transfer Protocol
(FTP) is considerably less transparent, because it requires each user to learn how to access files through an ftp client.
Similarly, some file systems allow transparent compression
and decompression of data, enabling users to store more files on a medium without any special knowledge; some file systems encrypt files transparently. This approach does not require running a compression or encryption utility manually.
In software engineering
, it is also considered good practice to develop or use abstraction layers for database
access, so that the same application will work with different databases; here, the abstraction layer allows other parts of the program to access the database transparently (see Data Access Object
, for example).
In object-oriented programming
, transparency is facilitated through the use of interfaces
that hide actual implementations done with different underlying classes
.
There are many types of transparency:
Formal definitions of most of these concepts can be found in RM-ODP
, the Open Distributed Processing Reference Model (ISO 10746).
The degree to which these properties can or should be achieved may vary widely. Not every system can or should hide everything from its users. For instance, due to the existence of a fixed and finite speed of light
there will always be more latency on accessing resources distant from the user. If one expects real-time interaction with the distributed system, this may be very noticeable.
Computing
Computing is usually defined as the activity of using and improving computer hardware and software. It is the computer-specific part of information technology...
system, such as new feature or new component, is transparent if the system after change adheres to previous external interface as much as possible while changing its internal behaviour. The purpose is to shield from change all systems (or human users) on the other end of the interface. Confusingly, the term refers to overall invisibility of the component, it does not refer to visibility of component's internals (as in white box
White box (software engineering)
In software engineering white box, in contrast to a black box, is a subsystem whose internals can be viewed, but usually cannot be altered. This is useful during white box testing, where a system is examined to make sure that it fulfills its requirements....
or open system
Open system (computing)
Open systems are computer systems that provide some combination of interoperability, portability, and open software standards. The term was popularized in the early 1980s, mainly to describe systems based on Unix,...
). The term transparent is widely used in computing marketing in substitution of the term invisible, since the term invisible has a bad connotation
Connotation
A connotation is a commonly understood subjective cultural or emotional association that some word or phrase carries, in addition to the word's or phrase's explicit or literal meaning, which is its denotation....
(usually seen as something that the user can't see and has no control over) while the term transparent has a good connotation (usually associated with not hiding anything). The vast majority of the times, the term transparent is used in a misleading way to refer to the actual invisibility of a computing process.
The term is used particularly often with regard to an abstraction layer
Abstraction layer
An abstraction layer is a way of hiding the implementation details of a particular set of functionality...
that is invisible either from its upper or lower neighbouring layer.
Also temporarily used later around 1969 in IBM and Honeywell programming manuals the term referred to a certain programming technique. An application code was transparent when it was clear of the low-level detail (such as device-specific management) and contained only the logic solving a main problem. It was achieved through encapsulation – putting the code into modules that hid
Information hiding
In computer science, information hiding is the principle of segregation of the design decisions in a computer program that are most likely to change, thus protecting other parts of the program from extensive modification if the design decision is changed...
internal details, making them invisible for the main application.
Examples
For example, the Network File System is transparent, because it introduces the access to files stored remotely on the network in a way uniform with previous local access to a file systemFile system
A file system is a means to organize data expected to be retained after a program terminates by providing procedures to store, retrieve and update data, as well as manage the available space on the device which contain it. A file system organizes data in an efficient manner and is tuned to the...
, so the user might even not notice it while using the folder hierarchy. The early File Transfer Protocol
File Transfer Protocol
File Transfer Protocol is a standard network protocol used to transfer files from one host to another host over a TCP-based network, such as the Internet. FTP is built on a client-server architecture and utilizes separate control and data connections between the client and server...
(FTP) is considerably less transparent, because it requires each user to learn how to access files through an ftp client.
Similarly, some file systems allow transparent compression
Data compression
In computer science and information theory, data compression, source coding or bit-rate reduction is the process of encoding information using fewer bits than the original representation would use....
and decompression of data, enabling users to store more files on a medium without any special knowledge; some file systems encrypt files transparently. This approach does not require running a compression or encryption utility manually.
In software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
, it is also considered good practice to develop or use abstraction layers for database
Database
A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...
access, so that the same application will work with different databases; here, the abstraction layer allows other parts of the program to access the database transparently (see Data Access Object
Data Access Object
In computer software, a data access object is an object that provides an abstract interface to some type of database or persistence mechanism, providing some specific operations without exposing details of the database. It provides a mapping from application calls to the persistence layer...
, for example).
In object-oriented programming
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
, transparency is facilitated through the use of interfaces
Protocol (object-oriented programming)
In object-oriented programming, a protocol or interface is a common means for unrelated objects to communicate with each other. These are definitions of methods and values which the objects agree upon in order to cooperate....
that hide actual implementations done with different underlying classes
Class (computer science)
In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...
.
Types of transparency in distributed system
Transparency means that any form of distributed system should hide its distributed nature from its users, appearing and functioning as a normal centralized system.There are many types of transparency:
- Access transparency – Regardless of how resource access and representation has to be performed on each individual computing entity, the users of a distributed system should always access resources in a single, uniform way.
- Location transparencyLocation transparencyIn computer networks location transparency describes names used to identify network resources independent of both the user's location and the resource location.A distributed system will need to employ a networked scheme for naming resources....
– Users of a distributed system should not have to be aware of where a resource is physically located. - Migration transparency – Users should not be aware of whether a resource or computing entity possesses the ability to move to a different physical or logical location.
- Relocation transparency – Should a resource move while in use, this should not be noticeable to the end user.
- ReplicationReplication (computer science)Replication is the process of sharing information so as to ensure consistency between redundant resources, such as software or hardware components, to improve reliability, fault-tolerance, or accessibility. It could be data replication if the same data is stored on multiple storage devices, or...
transparency – If a resource is replicated among several locations, it should appear to the user as a single resource. - ConcurrentConcurrency (computer science)In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other...
transparency – While multiple users may compete for and share a single resource, this should not be apparent to any of them. - Failure transparencyFailure transparencyIn a distributed system, failure transparency refers to the extent to which errors and subsequent recoveries of hosts and services within the system are invisible to users and applications....
– Always try to hide any failure and recovery of computing entities and resources. - Persistence transparencyPersistence (computer science)Persistence in computer science refers to the characteristic of state that outlives the process that created it. Without this capability, state would only exist in RAM, and would be lost when this RAM loses power, such as a computer shutdown....
– Whether a resource lies in volatile or permanent memory should make no difference to the user. - Security transparencyCapability-based securityCapability-based security is a concept in the design of secure computing systems, one of the existing security models. A capability is a communicable, unforgeable token of authority. It refers to a value that references an object along with an associated set of access rights...
– Negotiation of cryptographically secure access of resources must require a minimum of user intervention, or users will circumvent the security in preference of productivity.http://www.counterpane.com/sandl.html
Formal definitions of most of these concepts can be found in RM-ODP
RM-ODP
Reference Model of Open Distributed Processing is a reference model in computer science, which provides a co-ordinating framework for the standardization of open distributed processing...
, the Open Distributed Processing Reference Model (ISO 10746).
The degree to which these properties can or should be achieved may vary widely. Not every system can or should hide everything from its users. For instance, due to the existence of a fixed and finite speed of light
Speed of light
The speed of light in vacuum, usually denoted by c, is a physical constant important in many areas of physics. Its value is 299,792,458 metres per second, a figure that is exact since the length of the metre is defined from this constant and the international standard for time...
there will always be more latency on accessing resources distant from the user. If one expects real-time interaction with the distributed system, this may be very noticeable.