This naturally leads to two views of a software system.
The term information hiding is used to describe the purposeful hiding of implementation details