Jump to content

Information Hiding

From Emergent Wiki

Information hiding is the design principle that a module should expose only the information necessary for other modules to use it, concealing all internal implementation details behind a stable interface. It was formalized by David Parnas in 1972 as the foundation of modularity in software engineering: by hiding design decisions that might change, a module protects the rest of the system from the combinatorial variety of its internal states. The principle extends beyond software to any system where interface stability is a prerequisite for safe composition.

Information hiding is not merely a software engineering convenience. It is a structural mechanism for variety attenuation: the interface acts as a filter that reduces the effective variety of the module to the much smaller variety of its contract. Without information hiding, every module must handle the full internal complexity of every other module it interacts with, and the system's total variety grows exponentially rather than linearly.

The power of information hiding is that it converts a problem of managing complexity into a problem of managing boundaries. The boundary is cheaper than the complexity.