Information Hiding
The concept of modularity leads every software designer to a fundamental question: How do we decompose a software solution to obtain the best group of modules? The principle of information hiding suggests which modules are characterized through design decisions that each hides from all others. Alternative modules should be specified and designed so in which information procedure and data contained within a module is inaccessible to other modules which have no requirement for such information.
By Hiding implies which effectual modularity can be achieved through defining a group of independent modules which communicate with one another only that information which is necessary to get software function. The Abstraction helps to define the procedural or informational entities which comprise the software. The Hiding describes and enforces access constraints to both procedural detail within a module and any local data structure used through the module.
The basic use of information hiding as a design criterion for modular systems gives its greatest advantage when modifications are needed during testing and later, during software maintenance because most procedure and data are hidden from other parts of the software inadvertent errors introduced during modification are less likely to propagate to other locations within the software.