Again reiterating a point we made back in chapter one, we note that
this separation between interface and implementation was captured by
computer scientist David Parnas in a pair of rules, which are known
as Parnas's Principles:
The developer of a software component must provide the intended user with
all the information needed to make effective use of the services provided
by the component, and should provide no other information.
The implementor of a software component must be provided with all the
information necessary to carry out the given responsibilities assigned to
the component, and should be provided with no other information.
Following Parnas's principles leads to components that have clean
separation from each other.