At the excellent SPA conference ( John Daniels led a workshop session "A Taxonomy of Models".

Defining “model” as including any kind of language, he made a table of how models are used; or rather, he wrote the outer headings and we (working in an interesting process) filled in the content:



S/W Specification

S/W Implementation

Sketch (= informal)

Understanding the business domain


Discussing S/W requirements


Block diagrams, architectural sketches

(= precise but abstract/incomplete)


Formal models of the business – plans, constraints, rules, …


Test suites;

Formal S/W specification models


class and sequence diagrams etc

(= precise+complete enough to execute)


Domain simulations


DSL stuff – high-level but executable


Ordinary programs


He suggested that different methodological approaches can be characterised by the sequence you follow through the table. For example:

            * Tedious waterfall:         1-2-3-4-5-6-9

            * MDA:                          5-6-9

            * Agile modeling:            1-{5-9}*

* XP:                             9-9-9

            * DSLs:                         1-8-9