
Provide a
unifying vision for the system under development
Provide a
big picture for the project, one that ties the system together, provides a
vision of the system that makes it easy to understand how the pieces fit together,
like the picture on the box of a jigsaw puzzle (analogy borrowed from Robert C.
Martin).
Many people
regard the System Metaphor as the hardest of the XP core practices to understand, yet it has
also been regarded as one of the most important of the practices. The metaphor should be a simple picture of a
well-known system, but possibly in a totally unrelated field. Examples of metaphors that are quoted in
various literature or forums include a supermarket Checkout desk, a series of
garbage trucks taking garbage from the producer to the dump, a petrol pump.
Author’s
note : I have come across similar things during the analysis of large systems
(see ModelTheDomain). At some point in the analysis, one can draw
a simple picture depicting the relationships between a few key objects, and say
that this is what the system is really all about. Having identified these key relationships I could easily think of
a metaphor for what the system needed to do.
I would consider it to be a remarkable talent to be able to identify at
the outset the key relationships of the systems I have analyzed.
If the
metaphor approach is to be used safely, then rapid feedback is needed from code
and tests, to see whether the metaphor works in practice. The customer should be comfortable talking
in terms of the metaphor.