The Rebirth of Software
When these tools are developed-and even the ever optimistic Simonyi says it will take at least two years for his company to put a product on the market-the simplicity they bring to programming will not be their only benefit. They will also allow programmers to build software of a complexity we can’t approach using today’s methods.
But Simonyi’s colleagues and competitors have their own, often very different ideas about how to use modeling to save software from the burden of its increasing complexity. There’s Booch, for example, who is hoping to enrich the Uniform Modeling Language by building in a broader version of Kiczales’s “aspects,” so that, for example, functions like security and authentication would automatically weave themselves through entire software systems. He’s also involved, he says, in “finding ways to represent larger and larger abstractions”-that is, going beyond models of individual programs to models of the overall architecture of huge software projects.
“Writing software is fundamentally a very complex problem, and it’s getting worse,” says Booch. “We’re routinely writing applications now that have several million lines of code. To do that you have to build in an illusion of simplicity. Models let us do that.”
James Gosling, a research fellow at Sun Labs and the inventor of Java, is another recent convert to modeling. But again, the emphasis of his research is different. Recognizing that the software industry constantly reuses old programs, Gosling proposes finding a way to plug existing code into a modeling tool that will represent it graphically, rather than requiring programmers to pore over millions of lines of text. Theoretically, we could feed all our old, bug-riddled programs into such a tool, examine their underlying design, and identify their logical flaws.
“Like most programmers, I’m a big fan of starting over,” says Gosling. “But people almost never have that luxury. We’re building a tool that will read a very large system, say, two or three million lines, and will make it easier to understand.”
Code-named Jackpot, the project is still small, well outside Sun’s product development process. But it’s something that both Booch and Simonyi are enthusiastic about, as it is one more indication that modeling is becoming a force that will move the industry.
When will we be able to generate complex code from models alone? While Intentional Software has not yet marketed products, it plans to make concrete announcements in 2004. IBM’s purchase of Rational and commitment to the Unified Modeling Language, along with Sun’s interest in the concept, indicate that these ideas are achieving critical mass.
The challenges these visionaries are grappling with are huge. Yet their success also feels inevitable, because what they are proposing makes far more sense than believing that we can make a perfect thing out of millions of handmade pieces-a flaw in any one of which can break the whole. Which is exactly what we’re trying to do with software today.
“Software is so flexible, and the promise is so great, and the conventional improvements we’re used to today are nothing compared with what we will be able to do tomorrow,” says Simonyi. “Look what the hardware people have managed to do with Moore’s Law. Now it’s going to be software’s turn.”