Composability - A Musical Metaphor
As you might expect, the term composability derives from music. The
composability
characteristic treats a pattern as an atomic unit that is analogous to a musical
note.
A composable pattern must be formulated in such a way that it can be combined
with other related patterns to solve larger problems. This is similar to the
quality of
a musical note that allows you to combine it in different ways to form numerous
compositions. Like many analogies, it has limitations.
Maximizing composability means minimizing restrictions and maximizing
flexibility
to improve the ratio between functionality on the one hand and simplicity, ease
of
use, and ease of learning on the other. It is completely possible to compose a
set of
patterns to engineer a total software solution. This characteristic maps to the
pattern
as a whole. Answering some of the following questions can help you determine
whether a pattern is composable:
● Does this pattern, or its context, provide a solution that could form a part
of the
solution to a larger problem?
● Does this pattern, while helping to solve a larger problem, exclude the usage
of
any other patterns?
● Does this pattern work with other patterns to provide a solution to a larger
problem, apart from solving the problem it is intended for?
Extensibility
Any well-conceived and well-documented pattern is extensible and also lends
itself
to parameterization so that it can be used along with other related patterns to
solve
a larger problem. Extensibility is critical because patterns are rarely
implemented in
isolation. An extensible pattern often provides a solution in a problem domain
that
is considered to be a superset or extension to the current problem. This
characteristic
maps to the pattern as a whole. Some of the questions you can ask to determine
pattern openness include:
● Is the solution generic enough to enable it to be applied to specific business
application scenarios having the relevant context?
● Is the pattern solution open to enable parameterization and hence generate
variants of itself to apply to specific business application scenarios with the
relevant context?
Microsoft naming conventions and best practices coding standards as stated in
Coding Techniques and Programming Practices (Visual Studio .NET Design
Considerations),
which is on the MSDN Web site at http://msdn.microsoft.com/library/en-us
/vsent7/html/vxconcodingtechniquesprogrammingpractices.asp