David L. Parnas published “On the Criteria To Be Used in Decomposing Systems into Modules” in Communications of the ACM in December 1972. The paper asks a deceptively simple question: when you break a program into modules, what should guide where the boundaries fall?
The conventional answer at the time was to split a system along the steps of its flowchart, giving each major processing stage its own module. Parnas argued this is almost always wrong. Instead, he proposed that each module should hide a difficult or likely-to-change design decision behind a stable interface.
This principle became known as information hiding. By keeping each design decision secret inside one module, the rest of the system does not depend on how that decision is implemented, so changes stay local and do not ripple across the whole program.
Information hiding became a cornerstone of modern software engineering and a direct ancestor of encapsulation in object-oriented programming. The paper is regularly cited as one of the most influential in the field.