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 , 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.
In addition, software is not manufactured like hardware; it does not have a production phase nor manufactured spare parts like hardware; it is typically custom-built, not assembled from existing components like hardware. Even in today's society, software is viewed with suspicion by many individuals, such as senior managers and customers, as somewhat akin to "black magic." The result is that software is one of the most difficult artifacts of the modern world to develop and build.
2. Introduction to Papers
The opening paper fortuitously appeared in a recent issue of Scientific American as the editors were casting about for a way to incorporate a recent rash of high-publicity software problems into the motivation for this tutorial. The paper defines and presents essentially all the major issues currently plaguing software development and maintenance. The article is "popular" rather than technical in the sense that it is journalistic in style and focuses on popular perceptions of software as "black magic," but it raises many issues that software professionals need to be familiar with. It is also worth noting that many of the problems described are partly or largely due to nonsoftware issues such as politics, funding, and external constraints, but again the software professional needs to know that problems unrelated to software engineering must overcome if software projects are to be successful. The term "software crisis" not unexpectedly originated with the military, for that is where large, complex "real-time" software was first developed. More recently, as civilian and commercial software systems have approached and exceeded military systems in size, complexity, and performance requirements, the "software crisis" has occurred in these environments as well. It is noteworthy that the Scientific American article mentions military systems only peripherally. The article begins with a discussion of the highlypublicized and software-related failure of the baggage system at the new Denver International Airport. As of the date of the article, opening of the airport had been delayed four times, for almost a...