What is modeling good for?

or really what is it not good for?  I was attending CASCON (a Canadian CS conference, largely sponsored by IBM, with some help from the NRC).  I went to one workshop on Modeling (*first one on the linked page*), MDD, MDE, or whatever you might like to call it.  There were some good talks.  One from a fellow at IBM describing the Rational Toolset, and some of the reasoning behind it.  One from a fellow at GM describing the challenges behind getting people to adopt modeling as a way of creating software.  There were also several talks from Canadian academics outlining a research strategy for understanding and improving MDD, from the very technological side, to processes and practices.

So, after all the talks, especially as we were trying to define the research area, one fellow said – often when we are trying to understand what something is good for, it helps to know what it isn’t good for, under what circumstances, would we not want to use models to create software?  There wasn’t really a good answer to that comment.  I’ve thought about this some, probably not deeply enough, but I think it has to do with overhead.  Modeling is probably always a good idea, but eventually, maybe sooner rather than later, you’re going to incur some significant overhead, over other methods of software development, such that modeling just doesn’t make sense anymore.  I guess what this says, is that in order to make modeling successful, we really need good infrastructure tools to support development, collaboration and practices – so that the benefits associated with MDD are not outweighed by the costs of using it.  Of course, this is always assuming that your code generator works well, and creates code that runs well.  To mind this is a problem that will soon be overcome – I mean people used to write software with cards and machine language – they don’t do that anymore.

Other than that, there are probably some areas where the overhead associated with modeling will just never make sense – like in some scientific coding, where the software is only used once or twice.  What other situations can you think of?

And something I’ve been wondering lately – how did assembly language programmers feel about structured programming languages when they appeared on the scene?  Did they switch easily, or were there significant issues of trust involved before the switch-over occured?


One Response

  1. The question is whether modeling would incur in less effort than coding. In previous successful transitions the new technology was clearly more efficient than the old.

    Some models used as abstractions may be useful, but there are no indications whatsoever, not from empirical data nor from analysis, that they are more useful than lines of code to fully represent a system in all its detail. They are hard to debug, unwieldy with minutiae, and (since MDD must guarantee formal semantics) unnecessarily obtuse.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: