Map
Index
Random
Help
Topics
th

Topic: information hiding

topics > computer science > programming > Group: program module



Group:
information
Group:
program design

Topic:
abstract data type
Topic:
importance of information hiding for requirement specification
Topic:
separate a module's interface specification from its implementation

Topic:
abstraction in programming
Topic:
aspect-oriented programming
Topic:
declarative vs. procedural representation
Topic:
decomposition of a system into levels
Topic:
design for change
Topic:
program module as encapsulation
Topic:
handling complexity
Topic:
families of programs
Topic:
identifying program modules
Topic:
interface between program modules
Topic:
local declaration of data
Topic:
localized understanding
Topic:
meaning vs. reference
Topic:
object-oriented design
Topic:
opaque and partially-opaque data types
Topic:
restricted use of global variables
Topic:
reusable programming
Topic:
security by access functions
Topic:
the 'uses' hierarchy for organizing systems
Topic:
virtual machine

Summary

A good programmer makes use of available information. Information should be hidden if its use makes a system difficult to understand and modify. Interfaces simplify a system by dividing the system into regions with clearly defined boundaries. (cbb 12/89)
Subtopic: allow change up

Quote: change a module's implementation without knowledge of the implementation of other modules and without affecting the behavior of other modules [»parnDL3_1985]
Quote: information hiding minimizes the cost of software by estimating the likelihood of change; likely changes should be easily made [»parnDL3_1985]

Subtopic: hide information up

Quote: the connections between parts of programs are the assumptions that the parts make about each other; these connections limit change and make proof difficult [»parnDL_1978]
Quote: well-structured programs limit the assumptions that parts make about each other
Quote: secrets are more important than interfaces or roles; secrets clarify the responsibilities of a module [»parnDL3_1985]
Quote: because of multiple disciplines, information hiding occurs naturally in many engineering projects, e.g., transformers; not true for software [»parnDL6_1990]
Quote: information hiding: user has everything needed to use a module but nothing more; the implementer has everything to implement a module and nothing more [»maclBJ_1987]
Quote: information hiding necessary if designers wish to maintain control over a program's structure [»parnDL8_1971]
Quote: higher-order-software algorithms never have knowledge of their users [»hamiM3_1976]
Quote: the major problem with procedural programs is the uncontrolled distribution of information [»creeC11_1997]
Quote: for information hiding, describe module structure by the roles played, the secrets held, or the facilities provided [»parnDL3_1985]

Subtopic: hide decisions up

Quote: a module should hide a design decision instead of dividing a program into major steps; information hiding [»parnDL12_1972]
Quote: design modules by hiding difficult or likely-to-change design decisions; not flowcharts or processing steps [»parnDL12_1972]

Subtopic: abstract interface up

Quote: an abstract interface provides a service without revealing its implementation [»hoffDM_2001]
Quote: Alphard's specification sections are the user's sole source of information about a form [»wulfWA6_1976]

Subtopic: hide implementation up

Quote: the A-7E flight software consists of a hardware-hiding module (hardware interfaces), a behavior-hiding module, and a software decision module (performance-related decisions)
Quote: an abstract interface provides a service without revealing its implementation [»hoffDM_2001]
Quote: a module should hide the sequence for processing an item; also character codes and alphabetic ordering
Quote: use routines to reduce complexity by hiding the details [»mccoS7_1998]
Quote: routines hide the order in which events occur; e.g., data from user and data from file in either order [»mccoS7_1998]
Quote: you do not want to look at source code even if it is readily available
Quote: representation abstraction separates logical definition from physical implementation; hides information about a module [»taivA4_1993]

Subtopic: objects hide implementation up

Quote: object orientation is encapsulation + abstraction + polymorphism; groups object state and operations with information hiding [»nicoJR6_1993]
Quote: categorize methods/functions as command or query; freely use queries while commands hide information [»huntA1_2003]
Quote: do not query an object, make a decision, and perform an action (procedural, bug prone) [»huntA1_2003]
Quote: tell objects what needs to be done, keep decisions inside objects (object-oriented, encapsulated)

Subtopic: limited access to data up

Quote: if restrict access to a data structure then only member functions can modify the data, cause illegal values, and define how to use the data [»stroB_1991]
Quote: named relationships hides their representation from the user [»kentW_1978]
Quote: in a 'uses' hierarchy, low level operations may assume a data structure, next level may allow similar data structures, and top level doesn't know [»parnDL5_1978]
Quote: a module hides a data structure with its internal links, accessing procedures, and modifying procedures [»parnDL12_1972]
Quote: restrict data structures to a module; all other modules must call access programs [»parnDL3_1985]
Quote: in a good CADES design, each holon manipulates a small subset of data items provided by its parent holon [»pearDJ7_1973]
Quote: except for low-level types or math entities, avoid global data, global functions, public data, friends, direct access, type fields, inline functions, void*, pointer arithmetic, C arrays, and casts [»stroB_1991]
Quote: MIL uses names of resources to convey or restrict access information between modules [»dereFL6_1975]

Subtopic: encapsulation vs. information hiding up

Quote: after each software development step, it must move to another place; avoids hidden information and insures isolation [»mcgoMJ7_1983]
Quote: hide interrupts via abstract processors; everything else as cooperating sequential processes [»dijkEW2_1971]
Quote: encapsulation reduces the need for information hiding
Quote: C++ types and data-hiding efficiently prevent accidental corruption of data. They do not provide secrecy and security [»stroB_1991]

Subtopic: full access to information up

Note: information is language and hence public; not private as in object-oriented programming [»cbb_1990, OK]
Quote: information hiding conflicts with code reading and other desirable activities [»liskB_1996]
Quote: a good programmer makes use of available information
Quote: access to source code does not violate information hiding because access is to people, not modules [»weisM11_1987]
Quote: a system has uniform closure if every component can access every other component, including their descriptions [»smitDR11_1985]

Subtopic: problems with overloading up

Quote: an overloaded or hidden name can cause difficult errors; minimize by avoiding names like 'i' for globals or variables in large functions [»stroB_1991]

Subtopic: problems of encapsulation up

Note: access control and visibility tend to be either too limited or too liberal; hard to make them work [»cbb_1990, OK]
Quote: with upcalls, need to separate client data from the level's data; the later must be consistent and unlocked before an upcall occurs [»clarDD12_1995]
Quote: class inheritance doesn't preserve encapsulation because functions are scattered among classes with many interdependencies [»wyboN4_1990]

Subtopic: problems with information hiding up

Quote: requirement changes often cross-cut information hiding boundaries; should restructure the code, but restructuring is expensive without observable change [»berrDM10_2002]
Quote: information hiding can lead to inefficient switching between modules due to subroutine calls; allow inline expansion of module code [»parnDL12_1972]
Quote: Google co-designed its applications and file system API

Related Topics up

Group: information   (46 topics, 1160 quotes)
Group: program design   (13 topics, 454 quotes)

Topic: abstract data type (64 items)
Topic: importance of information hiding for requirement specification (23 items)
Topic: separate a module's interface specification from its implementation (86 items)

Topic: abstraction in programming (67 items)
Topic: aspect-oriented programming (2 items)
Topic: declarative vs. procedural representation (54 items)
Topic: decomposition of a system into levels (49 items)
Topic: design for change (76 items)
Topic: program module as encapsulation (28 items)
Topic: handling complexity (60 items)
Topic: families of programs (11 items)
Topic: identifying program modules (26 items)
Topic: interface between program modules (55 items)
Topic: local declaration of data (11 items)
Topic: localized understanding (43 items)
Topic: meaning vs. reference (49 items)
Topic: object-oriented design (30 items)
Topic: opaque and partially-opaque data types (14 items)
Topic: restricted use of global variables (22 items)
Topic: reusable programming (77 items)
Topic: security by access functions (10 items)
Topic: the 'uses' hierarchy for organizing systems (18 items)
Topic: virtual machine
(13 items)


Updated barberCB 8/05
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.