In the process of software development and maintenance, there will be many problems. As a discipline, software engineering is to solve the software crisis, so what is the software crisis?
I. software crisis
Software crisis generally refers to a series of serious problems encountered in the development and maintenance of computer software.
The main manifestations of software crisis are as follows:
1. The progress of software development is difficult to predict
It is not uncommon to delay a project for months or even years, which reduces the reputation of software development organizations.
2. The cost of software development is difficult to control
It’s hard to believe that investment has been added again and again. The actual cost is often one order of magnitude higher than the budget cost.
But in order to catch up with the schedule and save the cost, some expedient measures often damage the quality of software products, which will inevitably cause the dissatisfaction of users.
3. It is difficult for users to meet product functions
It’s hard to communicate between developers and users, and it’s hard to unify conflicts. It is often that software developers cannot really understand the needs of users, and users do not understand the model and ability of computer to solve problems, and both sides cannot communicate and describe in common familiar languages.
Under the condition that the two sides don’t fully understand each other, they rush to design the system and start to write the program. This “behind the scenes” development mode will inevitably lead to the final product not meeting the actual needs of users.
4 the quality of software products cannot be guaranteed
Errors in the system are hard to eliminate. Software is a logical product, so it is difficult to unify the standard measurement of quality problems, which makes quality control difficult.
Software products are not error free, but blind detection is difficult to find errors, and hidden errors are often the hidden dangers of major accidents.
5 software products are difficult to maintain
Software products are essentially the logical thinking activities of developers, which are hard to be replaced by others. Unless it is the developer himself, it is difficult to detect and remove system faults in time.
In order to adapt the system to the new hardware environment, or add some new functions in the original system according to the needs of users, it is possible to add errors in the system.
6. Lack of proper documentation for the software
Documentation is an essential part of software. In fact, the software documentation is the contract of rights and obligations between the development organization and the user, the assignment issued by the system manager and the overall designer to the developer, the technical instruction manual of the system maintenance personnel and the user’s operation manual.
Lack of necessary documents or unqualified documents will bring many serious difficulties and problems to software development and maintenance.
Cause analysis of software crisis:
1 unclear user requirements
In the process of software development, there are four aspects of unclear user requirements:
Before the development of software, users themselves are not clear about the specific needs of software development;
The user’s description of software development requirements is not accurate, which may be missing, ambiguous, or even wrong;
In the process of software development, users also put forward the requirements of modifying software development function, interface, support environment, etc;
Software developers’ understanding of users’ needs is different from users’ original wishes.
Lack of correct theoretical guidance
Lack of strong methodological and tool support. Because software development is different from most other industrial products, its development process is a complex logical thinking process, and its products largely depend on the high level of intellectual input of developers. It is also an important reason for the crisis of software development to rely too much on the skills and creativity of the programmers in the process of software development, which intensifies the individuation of software development products.
3. The scale of software development is growing
With the wide application of software development, the scale of software development becomes larger and larger. Large-scale software development projects need to be completed by a certain amount of manpower, while most managers lack experience in developing large-scale software development systems, while most software developers lack experience in management. The information exchange of all kinds of personnel is not timely, accurate and sometimes misunderstood. Software development project developers can not effectively and independently deal with all the relationships and branches of large-scale software development, so they are prone to omissions and errors.
4. The complexity of software development is higher and higher
Software development is not only expanding rapidly in scale, but also increasing rapidly in complexity. The particularity of software development products and the limitation of human intelligence make people unable to deal with “complex problems”. The concept of “complex problem” is relative. Once people adopt advanced organization form, development methods and tools to improve the efficiency and ability of software development, new, bigger and more complex problems are put in front of people.
II. Software engineering
Software engineering is the solution to software crisisSoftware engineering was born in the late 1960s as a new engineering discipline,This paper mainly studies the objective regularity of software production, establishes the concepts, principles, methods, technologies and tools related to systematic software production, guides and supports the production activities of software system, so as to achieve the goal of reducing the cost of software production, improving the quality of software products and improving the level of software production。 Software engineering has absorbed many successful experiences from hardware engineering and other human engineering, clearly put forward the model of software life cycle, developed many applicable technologies and methods in software development and maintenance stage, and applied them to software engineering practice, achieving good results.
In the process of software development, people begin to develop and use software tools to assist in software project management and technology production. People also integrate the software tools used in each stage of the software life cycle into a whole, forming an integrated software support environment that can continuously support the whole process of software development and maintenance, in order to solve the software from both management and technology aspects Crisis.
In addition, the combination of artificial intelligence and software engineering has become an active research field in the late 1980s. Some progress has also been made in the research of new software technologies, such as program transformation, automatic generation and reusable software, to advance the process of program design automation. Under the guidance of software engineering theory, developed countries have established a relatively complete software industrial production system and formed a strong software production capacity. Software standardization and reusability have been highly valued by the industry, which plays an important role in avoiding reuse labor and alleviating software crisis.
Definition of software requirements