1. Introduction to Chapter
The term "software crisis" has been used since the late 1960s to describe those recurring system development problems in which software development problems cause the entire system to be late, over budget, not responsive to the user and/or customer requirements, and difficult to use, maintain, and enhance. The late Dr. Winston Royce, in his paper Current Problems [1], emphasized this situation when he said in 1991: The construction of new software that is both pleasing to the user/buyer and without latent errors is an unexpectedly hard problem. It is perhaps the most difficult problem in engineering today, and has been recognized as such for more than 15 years. It is often referred to as the "software crisis". It has become the longest continuing "crisis" in the engineering world, and it continues unabated. This chapter describes some of the current issues and problems in system development that are caused by software—software that is late, is over budget, and/or does not meet the customers ' requirements or needs. Software is the set of instructions that govern the actions of a programmable machine. Software includes application programs, system software, utility software, and firmware. Software does not include data, procedures, people, and documentation. In this tutorial, "software" is synonymous with "computer programs." Because software is invisible, it is difficult to be certain of development progress or of product completeness and quality. Software is not governed by the physical laws of nature: there is no equivalent of Ohm 's Law, which governs the flow of electricity in a circuit; the laws of aerodynamics, which act to keep an aircraft flying stably in the air; or Maxwell 's Equations, which describe the radiation of energy from an antenna.
7*
1
In addition, software is not manufactured like hardware; it does not have a production phase nor manufactured spare parts like hardware; it is
References: 1. D.L. Parnas, "Designing Software for Ease of Extension and Contraction," IEEE Trans. Software Engineering, Vol. 5, No. 2, Mar. 1979, pp. 128-138. 2. G. Booch, "Object-Oriented Design," Software Engineering with Ada, 1983, 8. 9. 10. Benjamin/Cummings, Menlo Park, Calif. 3. IEEE Trans, Software Engineering (special issue on artificial intelligence and software engineering), J. Mostow, guest ed,, Vol. 11, No. 11, Nov. 1985. 4. D.L. Parnas, "Software Aspects of Strategic Defense Systems," American Scientist, Nov. 1985. 5. R. Baker, MA 15-Year Perspective on Automatic Programming," IEEE Trans. Software Engineering (special issue on 11. 12. artificial intelligence and software engineering), J. Mostow, guest ed., Vol. 11, No. 11, Nov. 1985, pp. 1257-1267. Computer (special issue on visual programming), R . B . Graphton and T. Ichikawa, guest eds., Vol. 18, No. 8, Aug. 1985. G. Raeder, " A Survey o f Current Graphical Programming Techniques," Computer (special issue on visual programming), R.B. Graphton and T. Ichikawa, guest eds., Vol. 18, No. 8, Aug. 1985, pp. 11-25. HP. Brooks, The Mythical Man-Month, 1975, Addison-Wesley, Reading, Mass., New York, Chapter 14. Defense Science Board, Report of the Task Force on Military Software, in press. H.D. Mills, "Top-Down Programming in Large Systems," in Debugging Techniques in Large Systems, R. Ruskin, ed., Prentice-Hall, Englewood Cliffs, N.J., 1971. B.W. Boehm, " A Spiral Model of Software Development and Enhancem e n t , " 1985, TRW t e c h . report 21-371-85, TRW, Inc., 1 Space Park, Redondo Beach, CA 90278. H. Sackman, W.J. Erikson, and E.E. Grant, * 'Exploratory Experimental Studies Comparing Online and Offline Programming Performance," CACM, Vol. 11, No. 1, Jan. 1968, pp. 3-11. 22