Below is the uncorrected machine-read text of this chapter, intended to provide our own search engines and external engines with highly rich, chapter-representative searchable text of each book. Because it is UNCORRECTED material, please consider the following text as a useful but insufficient proxy for the authoritative book pages.
5 Conclusions Modern society is increasingly dependent on large, complex computer-based systems and therefore on the software that drives them. In many cases, systems designed 20 years ago still provide a foundation for large businesses-and such systems are becoming unmaintainable. As the ability to manipulate, analyze, and grasp information has been magnified by information systems, so also has the appetite to process more and more information. Each new application has generated ever more complex sets of software systems. In the past few years, problems with such systems have cost millions of dollars, time, and even lives in applications ranging from aviation to controls for medical devices. Improving the quality and the trustworthiness of software systems is a national priority, but it is also a problem that seems forever to receive less attention than it deserves because software systems seem invisible, are poorly understood by laymen, and are not even adequately addressed in universities. Managers are consistently surprised by the inability of software engineers to deliver software on time, within budget, and with expected functionality. The nation should not have to wait for a catastrophe before it tries to enhance this critical resource. The software research community has ridden the waves of several advances; expert systems and object-oriented programming have been among the topical foci of researchers during this decade. Although large-system developers benefit from these and other advances, the software systems challenge is fundamental and is not amenable to solution through single categories of advances. As discussed in this report, a necessary first step is for the software engineering community and managers who procure and use large software systems to adopt a more realistic vision of the complex software system development process. Following on, the direction and conduct of software engineering research should be both broadened (in particular, by fostering interactions with practitioners) and made more systematic, through codification and dissemination of knowledge as well as an infusion of more mathematics, science, end' engineering. Good problems make good science and engineering and good problems in the software development community are being bypassed because software engineering researchers are unable to deal with them in a structured, rigorous manner. The Chinese pictograph for "crisis" is composed of the characters for "danger" and "opportunity." The wisdom this represents is worth noting as we grapple with the looming crisis in our ability to create and maintain large and complex software . - 23
24 systems. The danger is that soon we might not be able to create the software our business and government applications need. The opportunity is there for the software engineering research community to find new and fruitful directions in the problems faced by practitioners.