These days (1999) I distinguish between Modeling and Designing. I say
- "Modeling" is describing something you know. A good model makes correct assertions.
- "Designing" is manipulating space for things you don't know. A good design e.g., lets you change things easily (there are many dimensions of 'goodness').
You take a drawing of the Model into the room full of business and database and other experts. They critique it to see whether it contains any
FalseAssertionsAndUnattractiveRestrictions regarding their business.
--
AlistairCockburn
"Designing" for me is manipulating space for things you know for sure (i.e. you have running automated tests for). --
KentBeck
I love you - you do all designy things the reverse from me! -- Alistair (in a cheery mood on a sunny day.)
Just as a good design lets you change things easily, so does a good modeling language. From
InformationModelingAndRelationalDatabases by
TerryHalpin, the following criteria provide a basis for evaluating conceptual modeling languages:
- Expressibility
- Clarity
- Simplicity and orthogonality
- Semantic stability
- Semantic relevance
- Validation mechanisms
- Abstraction mechanisms
- Formal foundation
A design is a model without any implementation-specific or technology-specific details. A model is a design with those details.
Programmers are prone to seeing a spectrum of detail between designs and models, but this is false. There is a very sharp distinction between the two determined by the fact that users of a system only ever see its design whereas implementors are most interested in the model details. The
ExplicitUserModel of a system is its design.
Hmm. An architecture
is a description (with visuals, perhaps) of a system containing modeling information, but lacking implementation or (sometimes) technology-specific details. A design
is one solution to an architecture that fits technology to the system. The code
is one particular implementation of the design that expresses a particular technology with specific details. This is the normal descent of granularity in designing. Eh?
CategoryComparisons