Chapter 12. Interface Partitioning

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 ...

Get Pattern-Oriented Software Architecture: A Pattern Language for Distributed Computing, 4th Volume now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.