Most complex systems require a combination of human and computer control, where humans provide intelligence and problem-solving ability while computers handle aspects requiring speed and computational power. Challenges exist in determining how to allocate tasks between humans and computers and how to design the features of this interaction so that the unique capabilities of each are optimized. Simply replacing the human by computers, the obvious and often only approach considered, may not result in the most efficient, useful, and safe systems. The desired end is a partnership between the computer and the human that is superior to either of them working alone.
Serious accidents are starting to occur in aircraft and other shared control systems where the design of the interaction between computers and humans is being blamed rather than failures or errors on the part of either of these system components. Although much research exists on how to make usable and ``friendly'' computer interfaces, very little exists on how to integrate computers and humans together in a complex system. Progress in this area will require joint research between psychologists and computer scientists.
In a slightly different context, a better understanding also is needed of the way to design software engineering tools and languages in order to minimize the number of errors that are introduced during software development and to provide usable and useful tools to software developers. One of the roadblocks in making progress on these problems is the lack of scientifically established information upon which to make decisions about the design of software engineering tools and techniques. There has been a great deal of study of the mathematical and engineering foundations of software engineering, but much less of the psychological foundations. We need to establish these foundations.