A Pattern...

      Describes a single kind of problem.

      Describes the context in which the problem occurs.

      Describes the solution as a constructable software entity.

      Describes design steps or rules for constructing the solution.

      Describes the forces leading to the solution.

      Describes evidence that the solution optimally resolves forces.

      Describes details that are allowed to vary, and those that are not.

      Describes at least one actual instance of use.

      Describes evidence of generality across different instances.

      Describes or refers to variants and subpatterns.

      Describes or refers to other patterns that it relies upon.

      Describes or refers to other patterns that rely upon this pattern.

      Relates to other patterns with similar contexts, problems, or solutions.