DesigningVsModeling

Last edit September 28, 2010
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