September 01, 2005
Conference Coverage: Not Just Model - Model DrivenThe software complexity conundrum can be tackled only by raising the abstraction level and reducing risk through the Unified Modeling Language and Model-Driven Development, according to the current cochair of the UML 2.0 effort.
Some 15 years ago, a missing break statement nestled among millions of lines of code caused a system-wide AT&T failure, costing $1 billion. That's just one stale example of the growing problem in software: dealing with the sheer size of modern applications.
"Modern software is reaching the level of complexity encountered in biological systems. You're talking about tens of millions of lines of code," said IBM Distinguished Engineer Bran Selic in his June 2005 keynote at CMP's UML & Design World conference in Austin, Texas.
There are two kinds of complexity, Selic pointed out, referring to Frederick Brooks's theory on the topic: "Essential complexity is inherent to the problem, such as solving the traveling salesman problem. Accidental complexity is due to the technology or methods used to solve the problem. Most mainstream programming languages abound in accidental complexity," he said.
They are obtuse, chaotic and hard to abstract. "We have to constrain the unpredictable nature of technology. That's why we've eliminated
A Sisyphean Task?
The two keys to an engineering modelwhich Selic defined as "a reduced representation of some system that highlights its properties of interest from a given viewpoint"are first, that "we don't see everything at once," and second, that "what we do see is adjusted to human understanding."
Today, modeling languages are supported at the lower abstraction levels with action languages. Further, models can be refined continuously until the application is fully specified, until ultimately "the model becomes the system that it was modeling. There's something so special and so powerful about computers," Selic noted, adding, "In other engineering disciplines, the model and the code are separate, but in software they may not be. I can extract the model automatically from the actual implementation. The computer offers a uniquely capable abstraction device."
Thus, in model-driven development, or MDD (a term Selic prefers instead of the Object Management Group's Model-Driven Architecture, or MDA), the primary artifacts of development are models. However, the platform- independent concept that OMG had made a cornerstone of MDA has proved confusing, Selic opined. "To make a PIM, you have to explicitly say which platforms you are independent of. The OMG is backing off from this story because it seems to be too perfect."
Though he acknowledged the presence of MDA skeptics in the audience and among the UML & Design World faculty (namely, Software Development columnists Scott Ambler and Robert Martin), Selic pointed out that the concept merely hinges on two time-proven methods: abstraction and automation.
"The compiler is certainly the most dramatic invention of software engineering. I remember the first time I saw Turbo Cit was a revelation to see that you could integrate the compiler and runtime environment so seamlesslyand that took 30 years," Selic said. "MDD is really just an initiative to support abstraction and automation through open standards for the modeling language, interchange, model transformations and development processes."
And what of Microsoft's well-hyped foray into domain-specific languages? Profiles are UML's answer to the same question. A profile, Selic explained, is simply a version of a modeling language in which constraints or semantics are added and unused constructs are hidden"like a filter you can put on the model." As an example, SDL, a domain-specific language for telecommunications that has been around since the 1970s, has recently been defined as a UML profile.
"The complaint that really annoys me is that UML is too big," Selic declared. "You can do everything with a Turing machine, we knowbut programming languages aren't Turing machines. This demagogic appeal to simplicityit's cheap, really. As Einstein said, things should be simple, but not too simple."
Calling All Compiler Experts
Despite concluding with some examples of state-of-the-art applications built entirely via MDA and answering questions from the audience, it was clear that not all had been entirely convinced. Even so, a question about performance lightened the mood. "As a professor once said, performance is always a good question at the end of a software lecture," Selic joked. "It's always relevant, even if you've slept through the entire talk."
| ||||||||||||