Concept: Metaphor (System of Names)
Related Elements
Main Description


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 turnstiles, etc.".


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