Pattern-Oriented Software Architecture: A Pattern Language for Distributed Computing, 4th Volume
by Frank Buschmann, Kevlin Henney, Douglas C. Schmidt
Chapter 12. Interface Partitioning

Maskebærere (Mask Bearers) by Hilde Mæhlum, on display at Bærum Verk near Oslo © Kevlin Henney
Specifying component interfaces is a significant activity in a software project. Interfaces should reflect component responsibilities and usage protocols clearly, provide meaningful services for clients, and hide clients from the cost of change and evolution of component implementations. Otherwise, components become hard to use and their collaborations tend to be complex. This chapter presents eleven patterns for specifying well-defined component interfaces that expose the qualities listed above.
Interfaces are the 'business card' of a component. They should inform clients about the component's responsibilities, offered services, and usage protocols, and should make it easy for clients to collaborate with the component effectively and correctly. Consequently, designing and specifying usable and meaningful component interfaces is a key to successful software development. In addition, the productive use of software development and deployment approaches such as Component-Based Development [Szy02] and Service-Oriented Architectures (SOA) [Kaye03] depends strongly on the quality of the available service and component interfaces. Ultimately, inappropriately specified interfaces decrease the usability of a component, while increasing the structural complexity of ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access