Sign in
[Profoundly Esoteric Image]
GarethJ's WebLog - Code generation and abstraction
Options
Blog Home
Email Blog Author
Send to friend
RSS for Posts
RSS for Comments
Search Blogs
Advanced search options...
Search In:
Everything
Blogs
Forums
People
Groups
Places
Pages
Date range:
All Time
Last Year
Last 6 Months
Last 3 Months
Last Month
Last Week
Last Two Days
Search
Tags
Built with DSL Tools
Code samples
Community
DSL Tools
Enterprise Development
Fun
Metablog
Modeling
Pages
Sounding off
T4
Tech thrills
The real world
UML
Visual Studio
VSX
Archive
Archives
June 2010
(1)
April 2010
(2)
March 2010
(1)
October 2009
(1)
September 2009
(6)
May 2009
(3)
February 2009
(4)
January 2009
(2)
November 2008
(6)
October 2008
(5)
September 2008
(3)
July 2008
(2)
May 2008
(4)
April 2008
(4)
March 2008
(2)
February 2008
(9)
January 2008
(9)
December 2007
(6)
November 2007
(1)
October 2007
(3)
September 2007
(5)
August 2007
(3)
July 2007
(3)
June 2007
(5)
May 2007
(6)
April 2007
(1)
March 2007
(2)
February 2007
(5)
January 2007
(3)
December 2006
(2)
November 2006
(2)
October 2006
(3)
September 2006
(3)
August 2006
(2)
July 2006
(2)
June 2006
(5)
May 2006
(1)
April 2006
(3)
March 2006
(1)
February 2006
(3)
January 2006
(3)
December 2005
(10)
November 2005
(5)
October 2005
(3)
September 2005
(8)
August 2005
(2)
July 2005
(4)
June 2005
(5)
May 2005
(6)
April 2005
(2)
March 2005
(4)
February 2005
(4)
January 2005
(5)
December 2004
(9)
November 2004
(4)
October 2004
(13)
August 2004
(4)
July 2004
(2)
Imprecise Models and Killing Hippies
MSDN Blogs
>
[Profoundly Esoteric Image]
>
Imprecise Models and Killing Hippies
Imprecise Models and Killing Hippies
GarethJ
7 Dec 2005 5:17 AM
Comments
0
You'll gather by now from the torrent of posts (well, a relative torrent for me) that I'm catching up on my blogging. We've been pretty heads down of late getting our latest CTP out of the door. Bear with me, this is a long one.
A while back,
Harry
had
a post that was even more interesting
than his usual high standard. Entitled "Code is Model" is set out something of a manifesto (or a set of tenets as its fashionable to call them) for making models more relevant to the software construction process and more acceptable to the industry as more than "pretty pictures".
Number one on this list was the following
Models must be Precise
There must be no ambiguity in the meaning of the elements in a model. In C#, every statement and keyword has an exact well-defined meaning. There is never a question as to what any given piece of C# code means. There may be context-sensitive meanings, such as how the keyword "using" has different meanings in C# depending on where it is used. If you don't have a similar level of precision in your model, there's no way to transform it to lower abstraction models in a deterministic fashion. Models that can't be transformed into lower abstraction models are nothing more than pretty pictures - perhaps useful for communication with other people on the project, but useless as development artefacts.
Now as a fully-paid-up member of the DSL Tools team, you'd expect me to be waving pom-poms here, but in fact this tenet put me in mind of the first track on the excellent Primal Scream album
"XTRMNTR"
, called "Kill All Hippies". When I first bought this album, the track name raised a wry smile with me - as a young fellow, I was inclined to get irritated to the point of apoplexy with the vagueness and well meaning-but-don't-actually-get-anything-done attitudes I perceived to come from hippies and I'd have been vehemently in agreement with the Primals' sentiment - in an entirely non-aggressive way of course ;-).
I've mellowed a bit since then, (some may disagree) and I find that a bit of refusal to tie things down too early can be a useful counterpoint to my own tendency to make every decision as fast as possible and be rather unbending about changing them from then on.
So although as an industry we desperately need to drag models kicking and screaming from the far left of pretty-picturedom a good long way to the right in the direction of precision, I don't want to throw the baby out with the bathwater.
I'm going to take it as a given that folks believe that precise models are valuable development artefacts. Why do I think imprecise models are also valuable? Here are three things that tools for imprecise models help you to do:
Communicate with people about design
Think out loud in a way that's more shareable that your whiteboard
Start with an imprecise model and progress gradually toward precise models
Hopefully the first of these is obvious - there is value in model as communication device - it's just not enormous. I've
talked before about the value
of the second - I draw pictures on my whiteboard and when I'm on a conference call to Redmond, they're effectively useless.
The third is something I've only recently become a convert to. I'm happy to have models which are not precise so long as I can still reason about them programmatically. This allows me to have development processes that are about a quantitive process of iterative refinement.
Here's an example - in some infrastructure modelling tool, I have a node type which specifies a logical machine group. One of its properties is the number of actual machines required to suit the proposed scale of the application to be deployed. I'd like to be able to put "Depends on outcome of Fred's scalability investigation" into that numeric field, or perhaps "4->8". I can still generate a pretty good report from this model, but I can't really provision a set of physical servers from it.
But here's the kicker - it's vital that I can write tools that programmatically assess this model and tell me what work needs to be done in order to make it precise. I want to know exactly what must be done on this model before, for example, it is suitable for feeding into some kind of provisioning tool. You might say it needs to be precisely imprecise; I prefer to think of it as quantifiable imprecision.
What this all comes down to is awareness. I wasn't good with hippies until I was self-aware enough to value their difference from me. Even imprecise models need to be precisely programmable if we're to be aware what uses they can be put to.
Edited: Forgot to link to Harry's original article.
0 Comments
Modeling
,
Sounding off
,
DSL Tools