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).


C2 Wiki System Metaphor


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.