Passion * Technology * Ruthless Competence

Monday, November 07, 2005

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's account 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 Moore has 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.

Posted By Harry Pierson at 3:57 PM Pacific Standard Time
Tuesday, November 08, 2005 3:09:35 AM (Pacific Standard Time, UTC-08:00)
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.
Wednesday, November 09, 2005 2:39:36 PM (Pacific Standard Time, UTC-08:00)
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.
CatoTheElderII
Saturday, November 12, 2005 3:21:48 PM (Pacific Standard Time, UTC-08:00)
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.
Comments are closed.
Change Congress
Recent Bookmarks
Tags .NET Framework (2) __clrtype__ (9) ADO.NET (5) Agile (7) AJAX (3) Architecture (288) Guidance (6) Interop (2) Modelling (61) Patterns (7) Process (4) SOA (94) Web Services (5) ASP.NET (25) Async Messaging (2) Azure (1) Battlestar Galactica (3) BI (2) BizTalk (4) Blogging (117) dasBlog (11) Podcasting (4) BPM (1) C# (11) C++ (4) Capitals (5) CardSpace (3) CLR (2) CodePlex (1) College Football (10) Comedy Central (1) Community (81) Concurrency (6) Consumer Electronics (1) Database (13) Debugger (23) Dependency Injection (2) Development (122) C Plus Plus (1) Embedded (5) Lanugages (42) Media (2) P2P (11) Rotor (1) SharePoint (6) SOP (3) DIY (1) DLR (25) Domain Specific Languages (15) Durable Messaging (5) Dynamic Languages (12) Dynamic Silverlight (1) Education (3) Enterprise 2.0 (1) Entertainment (14) ETech (15) F# (51) Functional Programming (17) Game Development (2) Guidance Automation (3) Hardware (8) HawkCodeBox (1) HawkEye (3) Health (1) Hockey (31) Home Electronics (1) Home Network (5) Hosting API (1) Humor (5) IASA (1) Idempotence (3) infrastructure (5) Instrumentation (4) Integration (2) IronPython (112) IronRuby (16) Java (2) Job (3) Kodu (1) LangNET (2) Lightweight Debugger (5) LINQ (23) Live Framework (3) Live Mesh (2) Lost (1) Master Data Management (1) Media 2.0 (6) Microsoft (31) MIX06 (2) Mobile Phone (1) Monads (5) Morning Coffee (172) Object Oriented (4) Office (5) Open Source (8) Open Space (2) Operations (3) Other (135) Art (1) Books (1) Family (33) Games (18) General Geekery (27) Home Theater (1) Movies (23) Music (20) Politics (3) Society (1) Sports (37) Working at MSFT (19) Parallel Programming (3) Parsing Expression Grammar (16) patterns & practices (2) PDC08 (5) Politics (48) Polyglot (3) PowerPoint (2) PowerShell (39) Presentation (7) Projects (1) HawkWiki (1) Pygments (5) Python (6) Quote of the Day (4) Refactoring (1) Research (2) REST (18) Reuse (5) Robotics (2) Rock Band (4) Rome (5) Ruby (23) Ruby on Rails (1) Sci-Fi (2) Scripting (4) Security (3) Service Broker (14) SharePoint (2) Silverlight (20) Social Software (1) Software + Services (2) Software Design (2) Software Engineering (1) Software Factories (11) Software Industry (1) Space Elevator (1) Spark (1) SQL Server (2) Stephen Colbert (1) TechEd (7) TechEd06 (1) TechRec League (1) Television (6) Travel (7) Unified Client (1) Unit Testing (4) USC (1) UX (1) Virtual PC (2) Visual Basic (3) Visual Studio (20) Volta (2) Washington Capitals (37) WCF (31) Web 2.0 (67) Web Services (7) WF (21) Windows (3) Windows Live (29) Windows Live Writer (3) WPF (8) Xbox (1) Xbox 360 (54) XML (11) XNA (15) Zune (4)
Disclaimer: The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Inappropriate comments will be deleted at the authors discretion.