An interface is a boundary across which two independent entities meet and interact or communicate with each other.
If you've been reading the sidebars, you've already encountered the term interface several times. This term is widely used when describing software elements and can mean many different things to different people. The term is so important when documenting software architecture that we have devoted Chapter 7 to the subject.
It is both possible and likely that an entity will have more than one interface through which it interacts or communicates. An interface is more than a list of its available services. Ideally, an interface specification should provide enough information to avoid unexpected interactions that can occur because of assumptions an entity makes about either the environment in which it is to be placed or the entities with which it interacts.