What Is a Software Crisis?
Software crisis refers to the phenomenon that a backward software production method cannot meet the rapidly growing demand for computer software, which leads to a series of serious problems in the software development and maintenance process.
- Chinese name
- Software crisis
- Foreign name
- software crisis
- Software crisis refers to the phenomenon that a backward software production method cannot meet the rapidly growing demand for computer software, which leads to a series of serious problems in the software development and maintenance process.
Software crisis implications
- Software crisis refers to a series of serious problems encountered in the development and maintenance of computer software. [1]
The background of the software crisis
- Software crisis. Before the 1960s, computers had just been put into practical use. Software design was often designed and compiled on a designated computer just for a specific application, using machine code or assembly language that is closely dependent on the computer. The scale of the software is relatively small, and the documentation usually does not exist. Systematic development methods are rarely used. Designing software is often equivalent to programming. It is basically personal design, personal use, personal operation, and self-sufficient private software production. the way.
- In the mid-1960s, the advent of large-capacity and high-speed computers quickly expanded the scope of computer applications and drastically increased software development. High-level languages have begun to appear; the development of operating systems has caused changes in computer applications; large amounts of data processing have led to the birth of the first generation of database management systems. The scale of software systems is getting larger and larger, and the degree of complexity is getting higher and higher, and software reliability issues are becoming more prominent. The original personal design and personal use methods can no longer meet the requirements. There is an urgent need to change software production methods and improve software productivity. The software crisis has begun to erupt.
- In 1968, the North Atlantic Treaty Organization (NATO) coined the term software crisis at an international academic conference in Federal Germany. The well-known software crisis began in the mid-1960s. In order to solve the problem, two well-known NATO conferences were held in 1968 and 1969, and the concept of software engineering was also proposed. [2]
Major performance of software crisis
- Software development progress is difficult to predict
- It is not uncommon to delay months or even years for a project, which reduces the credibility of software development organizations.
- Software development costs are difficult to control
- It's unbelievable to invest more and more. Often the actual cost is an order of magnitude higher than the budgeted cost.
- And some expedient measures taken in order to hurry up and save costs often damage the quality of software products, which will inevitably cause user dissatisfaction.
- Users have difficulty satisfying product features
- It is difficult to communicate and conflict between developers and users. Often, software developers cannot really understand the needs of users, and users do not understand the model and ability of computer to solve problems, and the two parties cannot communicate and describe in common familiar languages.
- When the two sides did not fully understand each other, they rushed into the field to design the system and rushed to write the program. This "closed door car" development method inevitably led to the final product not meeting the actual needs of users.
- Software product quality cannot be guaranteed
- It is difficult to eliminate errors in the system. Software is a logical product, and quality problems are difficult to measure with uniform standards, which makes quality control difficult.
- Software products are not without errors, but blind detection is difficult to find errors, and hidden errors are often hidden dangers that cause major accidents.
- Software products are difficult to maintain
- A software product is essentially a coded logical thinking activity for developers, which is difficult for others to replace. Unless it is the developer himself, it is difficult to detect and troubleshoot the system in a timely manner.
- In order to make the system adapt to the new hardware environment, or to add some new functions to the original system according to the needs of the user, it is possible to increase errors in the system.
- Software lacks proper documentation
- Documentation is an essential and essential part of the software. In fact, the software's documentation is a contract of rights and obligations between the development organization and the user, a task book issued by the system manager and overall designer to the developer, a technical instruction manual for the system maintainer, and the user Operating instructions.
- Lack of necessary documentation or unqualified documentation will bring many serious difficulties and problems to software development and maintenance. [3]
Software crisis cause analysis
- Unclear user needs
- In the software development process, the problem of unclear user needs is mainly reflected in four aspects:
- Before the software was developed, users themselves were not clear about the specific needs of software development;
- The user's description of software development requirements is inaccurate and may be omitted, ambiguous, or even wrong;
- During the software development process, users also requested to modify software development functions, interfaces, and support environments;
- Software developers' understanding of user needs differs from what users originally wanted.
- Lack of proper theoretical guidance
- Lack of strong methodological and tooling support. Because software development is different from most other industrial products, its development process is a complex logical thinking process, and its products rely heavily on the high intellectual input of developers. Relying too much on the skills and creativity of programmers in the software development process, aggravating the personalization of software development products is also an important reason for the software development crisis.
- Software development is getting bigger and bigger
- With the expansion of the scope of software development applications, the scale of software development is getting larger and larger. Large-scale software development projects need to organize a certain amount of manpower to complete them, and most managers lack experience in developing large-scale software development systems, and most software developers lack management experience. The information exchange of various types of personnel is not timely, accurate, and sometimes misunderstood. Software development project developers cannot effectively and independently handle all the relationships and branches of large software development, so they are prone to omissions and errors.
- Increasing complexity of software development
- Software development is not only rapidly expanding in scale, but its complexity has also increased dramatically. The particularity of software development products and the limitations of human intelligence have resulted in people's inability to deal with "complex problems". The concept of so-called "complex problems" is relative. Once people adopt advanced organizational forms, development methods, and tools to improve the efficiency and ability of software development, new, larger, and more complex problems are in front of people. [1]
Software crisis resolution
- Software engineering was born in the late 1960s. As an emerging engineering discipline, it mainly studies the objective regularity of software production, establishes concepts, principles, methods, technologies and tools related to systematic software production, and guides and supports the production of software systems. Activities to achieve the goals of reducing software production costs, improving software product quality, and increasing software productivity. Software engineering has absorbed many successful experiences from hardware engineering and other human engineering, clearly proposed a software life cycle model, developed many technologies and methods applicable to the software development and maintenance stages, and applied them to software engineering practice, achieving good results. Effect.
- During the software development process, people began to develop and use software tools to assist in software project management and technical production. People also integrated the software tools used in each stage of the software life cycle into a whole, forming a continuous support for software development and Maintain an integrated software support environment for the entire process, with a view to solving software crisis problems from both management and technical aspects.
- In addition, the combination of artificial intelligence and software engineering became an active research area in the late 1980s. Research on new software technologies based on program transformation, automatic generation, and reusable software has also made some progress, pushing the process of program design automation forward. Under the guidance of software engineering theory, developed countries have established relatively complete software industrialized production systems and formed strong software production capabilities. Software standardization and reusability have been highly valued by the industry and played an important role in avoiding re-use of labor and alleviating the software crisis. [1]
Software crisis crisis example
- In 1995, the Standish Group research organization took 8,000 software projects in the United States as a sample. The survey results showed that 84% of the software plans could not be completed within the set time and funding. More than 30% of the projects were cancelled during operation. The average project budget Over 189%.
- IBMOS / 360
- The IBMOS / 360 operating system is considered a typical case. Until now, it is still used in 360 series consoles. This decades-long, extremely complex software project even produced a working system that was not included in the original design. OS / 360 was the first very large software project, which used about 1,000 programmers. Fred Brooks admitted in his subsequent masterpiece "Myths of the Man and the Moon" that he made a multi-million dollar mistake when he was managing the project.
- Bank of America Trust Software System Development Case
- Bank of America entered the field of trust business in 1982 and planned to develop trust software systems. The original budget of the project was 20 million U.S. dollars, and the development time was 9 months. It was expected to be completed before December 31, 1984, and the system could not be completed until March 1987, and 60 million U.S. dollars had been invested during the period. Bank of America eventually had to give up because of the instability of the system, transferred $ 34 billion in trust accounts, and lost $ 600 million in trust business opportunities.