Computer Software That Writes Itself

Software is a messy business. Last March the U.S. Federal Bureau of Investigation publicly abandoned a $170 million software overhaul because of unforeseen technical problems. Even when big projects go well, they often take so long to complete that the software is out of date by the time it's rolled out. Corporations often don't bother to upgrade obsolete software for fear that they're opening a can of worms. As software gets more elaborate and complex, the problem only gets worse.

The situation has triggered interest in using computer programs to generate other programs automatically. The benefits of automatic software are compelling. Companies would need fewer programmers and could ratchet up productivity. Humans writing computer code are also prone to errors. "If a programmer can sit down, specify what you want and push a button, you end up much more productive," says Doug Smith, a researcher at the Kestrel Institute, a nonprofit R&D center in Palo Alto, California. "It's the next stage in the evolution of computer programming."

Smith and his colleagues at Kestrel have developed a program that translates a description of a problem into guidelines a computer can understand. They've used this tool to develop software for scheduling cargo deployment for the U.S. military. The program runs faster than comparable ones developed manually and speeds up the programming process. A software designer can also return later with additional requirements and quickly crank out a new version. Some testing is still needed, however, to prove the program's reliability.

One automatic programming tool has already made it into the financial marketplace. SciComp, based in Austin, Texas, has developed a product that helps investment banks design programs to price financial derivatives. It takes complex mathematical models and translates them into something a computer can solve, allowing banks to flexibly change pricing models as they introduce new products and guidelines.

The bigger challenge is to enable laypeople to write complex software without putting rigid restrictions on the kind of software that can be produced. Utah-based Tenfold has gotten around this problem in part by concentrating on corporate software, which usually performs relatively simple tasks. Tenfold's automatic programming product generalizes the software requirements of vastly different corporations, ranging from insurance companies calculating policies to banks managing customer accounts, and provides for some tailoring for specific companies. The tool can generate corporate software in three weeks, compared with more than a year when done by hand. Gordon Novak, a computer scientist at the University of Texas at Austin, is working on a program in which problems can be depicted as geometric shapes connected with arrows.

Researchers at NASA hope to be able to generate programs on the fly during emergencies. If a space shuttle has to abort a launch, an automatically generated program could figure out whether it can make it into orbit or find a landing site. By using software to handle such a situation, "you eliminate an error-prone activity that humans are engaged in," says Dan Cooke, chairman of Texas Tech University's computer-science department, who's developing the software for NASA.

Still, automated code doesn't yet compare in quality to what's generated by hand, and scientists still have a lot to learn about how to translate human need into machine code. Programmers can rest easy knowing that their jobs are safe--at least for now.