In computer science, a public interface is the logical point at which independent software entities interact. The entities may interact with each other within a single computer, across a network, or across a variety of other topologies.
It is important that public interfaces will be stable and designed to support future changes, enhancements, and deprecation in order for the interaction to continue.
A project must provide additional documents that describe plans and procedures that can be used to evaluate the project’s compliance.
The programmer must create fully insulated classes and insulate the public interfaces from compile-time dependencies.
Various methodologies, such as refactoring, support the determination of interfaces. Refactoring generally applies to the entire software implementation, but is especially helpful in properly flushing out interfaces. There are other approaches defined through the pattern community.[1]