Composability
Motivation
The separation of concerns theory encourages us to break down a larger problem into multiple smaller problems (concerns). This gives us the opportunity to build corresponding pieces of solution logic, each of which solves a small problem (addresses an individual concern). These capabilities are part of units that are assembled Into a composition through which they are coordinated to collectively solve the large problem. [1]

If something is decomposed, it can be recomposed. In fact, composition is usually the reason something is decomposed in the first place. [1]
Various forms of composition have existed in the past, ranging from the assembly of simple programming libraries to the more formal approaches defined by object-orientation. [1]
Definition
Composable structures are those whose elements are effective composition participants, regardless of the size and complexity of the composition.
Related Characteristics
Reusability
Composability is closely associated with Reusability because composition can be seen as a form of reuse. [1]
Heuristic
The more reusable the logic provided by a service, the more opportunities it will have to participate in compositions. [1]
Loose Coupling
Heuristic
Reducing dependency requirements allows an element to become part of more types of compositions. [1]
Heuristic
The dependencies an element brings with it can establish fundamental constraints that directly affect its attainable level of composability. [1]
Abstraction & Encapsulation
Heuristic
Increased information hiding reduces awareness of what lies beneath a composition. [1]
Heuristic
By enforcing information hiding upon each composition member, the composition itself is shielded from changes that may occur within individual member boundaries.
Autonomy
Heuristic
Autonomy reduces the functional overlap across elements, which further enhances the quality of composition. [1]
Heuristic
Higher levels of autonomy provide increased flexibility for elements to be recomposed. [1]
Statelessness
Composition Controller
Composition controller is located at the head of a composition hierarchy. [1]
Heuristic
The logic encapsulated by a designated controller will almost always be limited to a single business task, which is the logic of orchestration. [1]
Heuristic
While designated controllers may be reusable, service reuse is not usually a primary design consideration. [1]
Heuristic
Statelessness is not always as strictly emphasized on designated controllers as with composition members. [1]
Heuristic
Any capability acting as a controller can become a member of a larger composition, which brings the composition member design characteristics into account as well. [1]
Heuristic
Controller is required to (somehow) sacrifice its autonomy when composing others. Therefore, the controller’s actual autonomy can become equivalent to the combined measures of autonomy of all involved composition members.
References
Erl, T. (2007). SOA Principles of Service Design. http://cds.cern.ch/record/1512390
Last updated