Software Design/Specify interface contracts

This page augments Design by contract article on Wikipedia.

Why
Well-specified interface contracts reduce cases when clients intentionally or unintentionally rely on unspecified behaviour, thus making the client code more robust.

Conversely, when clients don't use unspecified behaviour, maintaining the interface's compatibility doesn't require researching the code of the clients.