Information Hiding
Each design unit hides internal details of processing activities
Design units communicate only through well-defined interfaces (as opposed, e.g. to global variables)
Each design unit is specified by as little information as possible
If internal details change, client units should need no change
Sample things to modularize and encapsulate
- Abstract data types
- Algorithms (e.g., sorting)
- Input and output formats
- Processing sequence
- Machine dependencies (e.g., character codes)
- Policies (e.g. when and how to do garbage collection)