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]

Source: SOA Principles of Service Design [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.

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

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]


References

  1. Erl, T. (2007). SOA Principles of Service Design. http://cds.cern.ch/record/1512390

Last updated