Grady Booch sez “Throw Models Away”

I wasn’t there, but apparently Grady Booch made a comment at OOPSLA last month that throwing away models is a good thing. Juha-Pekka’saccount of the Design and Modern Software Practices Panel has Grady saying “when the project gets closer to the delivery you normally throw away UML models. This is a natural choice since the efforts needed for keeping the design – user view, dynamics, behavior, interaction etc. – linked with the implementation are simply too high.” Ivan Moorehas Grady saying “I often throw models away but tend not to throw away the source code.”

I’ve gotta believe that this comment was somehow taken out of context and that the Grand Poobah of the Common Semantic Model doesn’t actually believe that tossing the model at the end o the project is a good thing. If we view these comments thru the lens of Code is Model, you realize this is a major violation of the “Models must be Intrinsic to the Development Process” tenet. Since code is model, it seems silly to throw out the UML model and keep the code model. The only reason I could think to do that, is because the UML model has no value.

And this leaves me wondering, exactly how much benefit does Grady Booch get from his UML model if he’s willing to throw them away near the end of the project.


Well, to me the UML diagrams are just a tool, a means to an end, but not the end itself. They are very nice to quickly visualize and start thinking about the relationships in the code and it's behavior, but there comes a moment at which code is just so much better at it that it might not be useful to keep synching them by hand. What I mean is that, at that point, the UML diagrams become useful as a visualization tool, and no longer as useful as a design tool (though by no means useless); and that's where model generation from code becomes far more interesting.
I think what they are saying is that you should use the UML at first to design the system, but since UML tools do not do a good job of making it easy to keep code and UML models in synch you get to a point where the maintenance is no longer worth the benefit, and therefore they toss the UML models in the trash after that point is reached. There would be no point in keeping them unless you intend to keep them up to date with the code, and since that becomes very burdensome after a while, it is more economical to throw them away. This, of course, has nothing to do with wether or not UML models are useful, of course they are. It has everything to do with the failure of the tools to provide an easy means of syncrhonizing code and models. Makes sense to me. If the tools vendors make the link then you will find the "throw them away" rule abandonned and people will then say, "Keep them". That's my take.
If Code-Is-Model is really an accurate statement, then throwing away the non-code model (the UML) is a completely legitimate thing to do as soon as it loses its value or gets in the way of maintaining the model that matters (the code). I think Grady's point here (I wasn't there) had to be something like this: Use a UML model (or whatever other high abstraction language you choose) when it has value and throw it away the moment it gets in your way or become an intolerable tax on your project. This is why I've always felt that all "code-as-model" modeling tools should use the code as the serialization format for the model. This is what the old Together tool did and that is why people liked it so much. The UML was just a way to visualize your code. There was no such thing as round tripping because there was only one thing... The code.