This metaphor is a design overview. It is a way of defining the system using a commonly understandable vocabulary with
its associated relationships. It allows the whole team to talk about the structure of the software in a convenient and
memorable way. A good metaphor is one that all team members can understand easily, remember, and always keep in the
back of their minds. It provides a unifying direction that developers can follow as they build the system a small piece
at a time.
Metaphors are not always easy to find at the start of a project. In that case, teams can simply identify the key
objects and their interactions in the system (System of Names). The real metaphor might emerge later on. When everybody
on the team can explain quickly the system through its major objects and their interactions, the goal has been reached.
The iterative nature of XP causes the architecture of our system to evolve over time. The metaphor is not static; it
will change and hopefully improve over time as our understanding of the system improves.
An example of a metaphor would be something like: "It's like a subway system with passengers and stations, tickets and
Communication: customer and developer define a common language they can use to talk about the system.
Direction: the metaphor helps guide the developers towards the solution.