Communicating Precise Object Interface Behavior in Complex Domains *
Abstract:
Typical separation of component interfaces from their implementations plays at least one important role in software development. The separation makes it possible to develop multiple concrete components that are syntactically compatible with the same interface, and the compatibility is compiler-checkable. The "plug-compatibility " of multiple implementations for a single interface greatly augments the reusability of the interface and its (many) concrete implementations. Unfortunately, syntactic descriptions of interfaces are inadequate for communicating to programmers what the components do. This inadequacy often goes unnoticed essentially because the typical example components such as stacks, lists, and queues are "well understood " and are familiar to most audiences. Of course, previous familiarity or common understanding do not characterize components in complex domains where it becomes essential for object interfaces to communicate with their users [4].

