Central premise III
The semantics of the module must remain
unchanged when implementations are
replaced
Specifically, the client should not care how the
interface is implemented by the module
But what captures the semantics of the
module?
The signature of the interface?  Performance?
What else?