Designing Vs Modeling

These days (1999) I distinguish between Modeling and Designing. I say

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:


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


EditText of this page (last edited September 28, 2010) or FindPage with title or text search