he entire history of software engineering is that of the rise in levels of abstraction" said Grady Booch in his talk "The Limits of Software
." Today, we're at the beginning stages of the next level. Executable UML is the next logical, and perhaps inevitable, evolutionary step in the ever-rising level of abstraction at which programmers express software solutions. Rather than elaborate an analysis product into a design product and then write code, application developers of the future will use tools to translate abstract application constructs into executable entities. Someday soon, the idea of writing an application in Java or C++ will seem as absurd as writing an application in assembler does today. And the code generated from an Executable UML model will be as uninteresting and typically unexamined as the assembler pass of a third generation language compile is today.
This shift is made possible by the confluence of four factors:
- The development of the Model Driven Architecture (MDA) standards by the Object Management Group (OMG)
- The adoption of the Precise Action Semantics for the Unified Modeling Language specification by the OMG in November of 2001
- A proposed profile of UMLExecutable UMLsupports creating a complete and implementation-neutral self-contained expression of application functionality. Steven J. Mellor and Marc J. Balcer define this profile in their book Executable UML: A Foundation for Model-Driven Architecture
- The availability of high-quality Model Compilers and Virtual Execution Environments (VEEs) that provide "out of the box" platforms upon which Executable UML models can execute. These VEEs, which exist today in a somewhat incipient stage, will someday soon reduce low-level system architectures to near-commodity status.
This article reviews these four factors in greater detail and discusses the implications of them relative to the future of software development.
|Author Note: It is important to note that Executable UML as described by Mellor and Balcer is one instance, but not the only possible instance, of a method and UML profile showing the viability of Executable UML as a general concept. While a discussion of their book is part of the intent of this paper, it is the wider sense of Executable UML (that also encompasses MDA, Action Semantics, and VEEs) that is the central theme.