next up previous
Next: Why the Problems Up: Embedded Computer Systems Previous: Embedded Computer Systems

The Problem

During and after World War II, technology expanded rapidly, and engineers were faced with designing and building more complex systems than had previously been attempted. The creation of systems engineering as a discipline received much of its impetus from aerospace programs, but the new systems engineering techniques were soon adopted and applied to the process industry (chemicals and nuclear power), transportation systems, and other complex engineered systems.

As the systems we wanted to build became too complex or too time-critical to be controlled by humans or even electromechanical devices, computers were introduced to take over at least part and sometimes all of the control functions. Not only are computers flexible and seemingly limitless in their power, but they work at a speed that cannot be duplicated by any other means and are relatively cheap besides. These characteristics allow us to engineer products and complex systems that were previously inconceivable. The computer has freed us from many of the physical limits of electromechanical devices, but we are now faced with practical limitations in our ability to engineer the software parts of these systems.

As electromechanical controllers are replaced by computers, many of the basic engineering and systems engineering techniques that were developed to cope with complex systems no longer are adequate. Software adds the potential for introducing a level of complexity not previously possible. Most control software is too complex for complete mathematical analysis and yet too structured for statistical analysis. At first, heroic human effort, brute force techniques, and tremendous amounts of money were able to get large software projects like the Space Shuttle control system finished successfully. However, our ambitions are now outstretching the limits of what brute force and money can accomplish, and the technology to build them and provide the needed confidence in their quality does not exist.

As an example, the Space Shuttle software, one of the largest and most ambitious projects of the 1970's when it was built, contains about 400,000 lines of code. NASA put enormous amounts of money into its development and still spends approximately $100,000,000 a year to maintain it. In contrast, even automobiles and some household products now have or will soon have that much software in them. More complex projects, such as the new U.S. Air Traffic Control System, Space Station Freedom, commercial and military aircraft, and even telephone switching systems contain millions of lines of code. To build such software may require hundreds and sometimes thousands of people, and just organizing these projects is a massive undertaking. The result of not solving these system and software engineering problems may be failure in our attempts to build the complex systems of the future. As just one example, the huge cost overruns and technical difficulties currently being encountered with the new Air Traffic Control system has led to cancelling major parts of it.

Merely producing the enourmous amounts of code is not enough. The potential for losses--human, environmental, and financial--with these computer-controlled systems makes quality of paramount importance. Virtually all non-trivial software has errors in it, and we do not currently have the capability to locate and correct these errors. We are putting reliance on human products that we cannot demonstrate are trustworthy, and it is getting worse as the complexity of the systems we attempt to build increases.

While the U.S. has been ahead of the rest of the world in software engineering, this situation is starting to change. The EEC countries and the Japanese are catching up and may be ahead in achieving high quality levels. Currently, the Japanese outstrip the U.S. in quality and productivity for relatively simple software systems, and they are now working on the engineering of more complex systems. The EEC countries have launched major initiatives in software engineering, including applying mathematical techniques to software, and are now ahead of the U.S. in this and other areas. The center of gravity of software engineering research in general may now have shifted to Europe.

Although the U.S. is currently swept up in quality movements, the problems involved in engineering software are unique and are not receiving adequate attention. International economic competition is being affected: For example, the highly computerized Airbus A320 can provide tremendous cost savings over more traditional aircraft designs. Airbus Industries has more orders for the A320 than any newly introduced aircraft in history at the same time that Boeing is laying off workers because of reduced demand. Japan and Germany have been demonstrating "smart" cars for years while Detroit is at the early stages of this research.

In summary, the EEC and Japanese are more strategically investing in product-oriented computer science research than is the U.S. While the High Performance Computing and Communications Initiative has provided funding for the application of computers in scientific research and NII will fund research in information sharing and interconnecting computers into networks, relatively little research funding is available in the U.S. to support the application of computers in engineering. Thus, for example, HPCC supports research on how to use computers to analyze the data produced by space projects but not the research necessary to produce the software that will actually run the spacecraft that collects the data. The recent loss of the Mars Observer spacecraft is an apt reminder that these problems are still unsolved.


next up previous
Next: Why the Problems Up: Embedded Computer Systems Previous: Embedded Computer Systems

Jeannette Wing
Wed Apr 17 09:16:52 EDT 1996