Tuesday, May 5, 2020

Software Crisis free essay sample

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 Ohms 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 Maxwells 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 typically custom-built, not assembled from existing components like hardware. Even in odays 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 year, at a cost to the airport authority of over $1 million a day. Almost as visible in recent months, and also mentioned in the article, are failures of software development for the Department of Motor Vehicles (DMV) of the State of California, and for the advanced air traffic control system of the US Federal Aviation Administration (FAA). The DMV project involved attempts to merge existing, separately developed systems that managed drivers licenses and vehicle registrations. As 2 as been pointed out in the press [2], the State of California has had problems with computer projects of over $1 billion in value, and the problems resulted from the acquisition policies of the State of California (how contractors and consultants are selected and managed by the State), and from hardware-software integration difficulties, as well as from causes strictly related to software development. The article identifies the first use of the term software engineering in a 1968 conference of the NATO Science Committee in Garmisch, Germany. (See also the Bauer article in this Tutorial. Many approaches that have been proposed to improve software development are discussed; the author feels that most of these ideas have not lived up to the expectations of their originators. Also discussed is the idea that there are no silver bullets. (See the article by Brooks in this chapter. ) The Scientific American article looks favorably on the use of formal specification methods to solve the problem of software quality, and on software reuse (the ability to use a software product developed for one application again later for another application) to solve the productivity or cost problem. The Software Engineering Institutes Capability Maturity Model was also favorably mentioned (see the article by Paulk, Curtis, Chrissis, and Weber in this Tutorial) as a motivation to software developers to improve their practices. The paper reports an SEI finding that approximately 75 percent of all software developers do not have any formal process or any productivity or quality metrics. Because software development depends on an educated workforce and good communications rather than on a fixed plant of any kind, software is inherently a suitable export product for developing countries. Although the US is still strong in software design and project management, the article notes that third world countries—notably India and Far Eastern countries— are capable of producing many more lines of code per dollar. A sidebar by Dr. Mary Shaw provides a view of software engineerings history, and of how that history may serve as a roadmap for software engineerings future. Finally, the paper urges education of computer science students in software engineering as an essential step toward resolving the software crisis. The second and last article in this chapter, No Silver Bullets: Essence and Accidents of Software Engineering, is by Fred Brooks, one of the legendary figures in software engineering. He has been called the father of software engineering project management in the United States. He worked at IBM in the 1960s and was the software project manager for the OS/360 operating system. This paper, which he wrote in 1987, states that no single technique exists to solve the software crisis, that there is no silver bullet. The easy problems (accidents) have been solved and the remaining difficulties are essential. He views the solution to the software crisis as a collection of many software engineering tools and techniques that, used in combination, will reduce or eliminate software problems. Although Brooks sees no single solution to the software crisis, no single technology or management technique, he does see encouragement for the future through disciplined, consistent efforts to develop, pro pagate, and exploit many of the software tools and techniques that are being developed today. In a report, also written in 1987 [3], Brooks states his belief that most software development problems of the US Department of Defense are managerial rather than technical. ) Brooks believes the hard part of building software is the specification and design of a system, not the coding and testing of the final product. As a result, he believes that building software will always be hard. There is no apparent simple solution. Brooks describes the three major advances in software development as: †¢ †¢ The use of high level languages The implementation of time-sharing to improve the productivity of programmers and the quality of their products Unified programming environment Brooks also cites the Ada language, objectoriented programming, artificial intelligence, expert systems, and automatic programming (automated generation of code from system specification and design) as technologie s with the potential for improving software. From the perspective of another eight years, the Al-related technologies for the most part have yet to fulfill the potential that Brooks saw for them in 1987. A central nervous system of some 100 computers networked to one another and to 5,000 electric eyes, 400 radio receivers and 56 bar-code scanners orchestrates the safe and timely arrival of every valise and ski bag. At least that is the plan. For nine months, this Gulliver has been held captive by Lilliputians—-errors in the software that controls its automated baggage system. Scheduled for takeoff by last Halloween, the airports grand opening was postponed until December to allow BAE Automated Systems time to flush the gremlins out of its $193-million system. December yielded to March. March slipped to May. In June the airports planners, their bond rating demoted to junk and their budget hemorrhaging red ink at the rate of $1. 1 million a day in interest and operating costs, conceded that they could not predict when the baggage system would stabilize enough for the airport to open. To veteran software developers, the Denver debacle is notable only for its visibility. Studies have shown that for every six new large-scale software systems that are put into operation, two others are canceled. The average software development project overshoots its schedule by half; larger projects generally do worse. And D some three quarters of all large systems are operating failures that either do not function as intended or are not used at all. The art of programming has taken 50 years of continual refinement to reach this stage. By the time it reached 25, the difficulties of building big software loomed so large that in the autumn of 1968 the NATO Science Committee convened some 50 top programmers, computer scientists and captains of industry to plot a course out of what had come to be known as the software crisis. Although the experts could not contrive a road map to guide the industry toward firmer pound, they did coin a name for that distant goal: software engineering, now defined formally as the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software. A quarter of a century later software engineering remains a term of aspiration. The vast majority of computer code is still handcrafted from raw programming languages by artisans using techniques they neither measure nor are able to repeat consistently. Its like musket making was before Eli Whitney, says Brad J. Cox, a professor at George Mason University. Before the industrial revolution, there was a nonspecialized approach to manufacturing goods that involved very little interchangeability and a maximum of craftsmanship. If we are ever going to lick this software crisis, were going to have to stop this hand-to-mouth, every-progranrnier-biiflds-everything-from-theground-up, preindustrial approach. The picture is not entirely bleak. Intuition is slowly yielding to analysis as programmers begin using quantitative measurements of the quality of the software they produce to improve Softwares Chronic Crisis by W. W. Gibbs from Scientific American, Sept. 1994, pp. 86-95. Reprinted with permission. Copyright  © 1994 by Scientific American, Inc. All rights reserved. 4 the way they produce it. The mathemat- bedded in light switches, youve got to ical foundations of programming are get the software right the first time besolidifying as researchers work on ways cause youre not going to have a chanc e of expressing program designs in alge- to update it, says Mary M. Shaw, a probraic forms that make it easier to avoid fessor at Carnegie Mellon. serious mistakes. Academic computer The amount of code in most conscientists are starting to address their sumer products is doubling every two failure to produce a solid corps of soft- years, notes Remi H. Bourgoi^Jon, diware professionals. Perhaps most im- rector of software technology at Philips portant, many in the industry are turn- Research Laboratory in Eindhoven. Aling their attention toward inventing the ready, he reports, televisions may contechnology and market structures need- tain up to 500 kilobytes of software; an ed to support interchangeable, reusable electric shaver, two kilobytes.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.