Abstract

David L. Parnas (1972) proposed information hiding as the primary criterion for modular design, using the KWIC (Key Word In Context) system to compare traditional flow-based modularization vs encapsulating design decisions. His approach yields systems that are easier to modify, maintain, and evolve.

Key points

  • Traditional modularization (aligned with processing steps) leads to high coupling and brittle systems.
  • Information hiding: modules encapsulate design decisions (data structures, algorithms, storage formats).
  • KWIC case study: conventional design (5 modules aligned with processing sequence) vs information-hiding design (4 modules for storage, circular shift generation, sorting, output).
  • Benefits: localized changes, clear responsibilities, replaceable internals without breaking clients.
  • Trade-off: potential performance overhead due to inter-module communication; can be mitigated via inlining and efficient call mechanisms.

Connections

  • Precursor to object-oriented encapsulation and modern modular design.
  • Supports microservices and DDD bounded context thinking.
  • Relates to clean architecture and low coupling principles.
  • Anticipates interface contracts in modern API design.

Questions

  • How to apply information hiding in fast-paced agile projects?
  • Which metrics can quantify effective information hiding?
  • How to balance encapsulation with performance in real-time systems?
  • Applicability to distributed architectures?

Personal reflections

  • Encapsulating design decisions prevents leakage of implementation details across layers.
  • KWIC example illustrates how storage strategies can remain swappable with proper abstraction.
  • Critique of flow-based modularization still relevant for ETL/data pipeline architectures.
  • Stable interfaces support DevOps pipelines and isolate testing concerns.

References

Related Notes