UML to power NASA satellite

19 January 2007 » MDA, UML, Web architecture

CNET just announced that NASA will use the Model driven architecture capabilities in the IBM Rational line of software development products to manage the software to power the James Webb Space Telescope.

If every thing goes as planned, this will be an huge milestone for MDA, which uses UML diagrams to generate executable code. In MDA, changes to the diagram change the underlying code, and vice versa.

The concept take WYSIWYG much further, in that you’re using visual models to create and update entire architectures, not just building user interfaces.

This is particularly interesting because of what Martin Fowler, a luminary in the object-oriented analysis and design, has to say about UML as a programming language.

In the first chapter of UML Distilled, Martin Fowler describes the three common methods for using the UML today:

At the heart of the role of the UML in software development are the different ways in which people want to use it…

To untangle this, Steve Mellor and I independently came up with a characterization of the three modes in which people use the UML: sketch, blueprint, and programming language.

By far the most common of the three, at least to my biased eye, is UML as sketch. In this usage, developers use the UML to help communicate some aspects of a system…. Most UML diagrams shown in books… are sketches. Their emphasis is on selective communication rather than complete specification.

In contrast, UML as blueprint is about completeness… the distinction, I think, rests on the fact that sketches are deliberately incomplete, highlighting important information, while blueprints intend to be comprehensive, often with the aim of reducing programming to a simple and fairly mechanical activity. In a sound bite, I’d say that sketches are explorative, while blueprints are definitive…

Eventually, however, you reach the point at which all the system can be specified in the UML and you reach UML as a programming language. In this environment, developers draw UML diagrams that are compiled directly into executable code, and the UML becomes the source code…

Later in the chapter, Fowler goes on to express his opinion about the third usage,

In my view, it’s worth using the UML as a programming language only if it results in something that’s significantly more productive than using another programming language. I’m not convinced that it is, based on various graphical development environments I’ve worked with in the past. Even if it is more productive, it still needs to get a critical mass of users for it to make the mainstream. That’s a big hurdle in itself.

Prior to this announcement on CNET, I had taken a very pragmatic approach to using UML to model applications: use them as a way to sketch or document your code, as Fowler describes above.

However, if IBM and NASA can pull this off, it would be huge coup for UML as a programming language, not to mention putting regular programmers and developers out of work…. except, of course, those who write the software that creates the UML modeling tools in the first place… :)