Testing Software Patterns

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