Years run, computers become more powerful, program listings are longer, and programmers still make the same mistakes (or encounter them) ... I propose to deal with the main types of errors and the reasons why they occur
In order to maximize the meaning of the phrase "
relevant at all times ", as illustrative examples, information from the times of the good old DOS will be given, therefore the material is recommended for reading by
lovers of nostalgiaWhat are the types of errors?
Type number 1. Errors in the software package made during development and not detected during testing
• In the Microsoft Works Reference and Works 2.0 online help of the Integrated Information Processing Package 2.0, the IF function is described as
(, , )
However, in reality, the operation of this function should have the following form:
(, , )
In the Microsoft Works for Windows User's Guide of the Works 3.0 package, this error has been fixed
:)')
• In the Russian version of Norton Utilities (version 7.0, by Symantec) in the format utility sformat when setting the option:
: [ …]
When formatting, a message is displayed:
:
and vice versa, when specifying the option:
: […]
When formatting, a message is displayed:
:
• The failure of the launch of the first American satellite to Venus occurred, most likely due to an error in the program — instead of the comma required in the operator, the programmer put a period. Here is how this statement was written:
DO 50 I = 12.525
In fact, it should look like this:
DO 50 I = 12,525
The program in Fortran IV required a cycle, and the programmer put a period, and the result was the assignment of the value 12,525 to the implicit variable DO50I (spaces in Fortran are ignored) [Thanks for this valuable
commentary amendment to the habraiser
rexxer2 ]
• The loss of communication with the Phobos-1 space station (USSR) was due to an erroneous command transmitted from Earth to the on-board computer.
• The cause of the complications that arose when the Soviet-Afghan and Soviet-French crews returned to Earth from the space expedition were errors in the on-board computer software.
This type includes errors in the algorithms, when the algorithm is incorrect or created on the basis of incorrect ideas about reality:
• One of the first computerized air defense systems of the United States (60s) on the very first duty raised the alarm, taking the moon ascending from beyond the horizon for an enemy rocket, since this “object” was approaching the territory of the United States and did not give signals that it “ your ”
:)Type number 2. Errors when entering incorrect data in the computer
Very popular mistakes, the prevention of which is known under the name "protection against a fool"
• In 1983, a flood occurred in the southwestern United States. The reason was that incorrect weather data was entered into the computer, as a result of which he gave an erroneous signal to the gateways blocking the Colorado River.
• Another sad example: in the eighties of the last century, an airplane crashed with tourists on board in Antarctica, because the incorrect coordinates of the airport of take-off were laid in the flight control system and the system mistakenly calculated the height of the flight over the mountains
Type 3. Computer viruses that "interfere" with the computer and the program it runs.
• In the summer of 1988 at a Michigan hospital, a computer virus infected three computers that processed patient information. The virus mixed up the patient names in the database. As a result of this “intervention”, the diagnostic information of some patients was attributed to other patients.
Type 4. Failure of computer components and systems serving it.
Here, in principle, everything is exactly the same as 20 years ago: during the operation of a computer system, physical damage to the drive, power supply failure, power outages, voltage fluctuations in the electrical network, etc. are possible. complete loss of information stored on the hard disk, partial or complete loss of information in the database files, disruption of computer-controlled systems and much more. To prevent errors of this type, systems are used in which several computers duplicate each other work simultaneously, two or more drives are installed in computers in parallel (we recall RAID arrays), the equipment is connected to uninterruptible power supplies that ensure its operation during a power outage or voltage fluctuations of the electrical network, etc. etc.
Type number 5. Failure or malfunction of the measuring devices and sensors used in the management of any technical systems and technological processes
• In July 1985, there was a premature shutdown of the computer of one of the main engines of the American spacecraft Challenger (Shuttle), which almost ended in disaster. The position was saved by the commander of the ship, who managed on two working main engines and two less powerful engines for maneuvering to bring the Challenger into orbit. The reason was that one of the three on-board computers that control the engines (for each engine on the computer) was “deceived” by a failed sensor measuring the temperature of the gas in the engine. To eliminate such problems in the future, the following spacecraft of the Shuttle series were installed sensors of a modified design.
• When a new generation of Arian-5 French missiles were launched, at about the 37th second of the flight, the computer on board the missile received incorrect information from the control system sensors about the spatial orientation of the missile. Based on this information, the computer began to adjust the flight trajectory in order to compensate for the error that does not actually exist. The rocket began to deviate from the course, which led to an increase in loads on its body. As a result of excessive loads, the upper part of the rocket fell off, and on command from the ground the rocket was blown up.
Type 6. “The evil will of a person”, which is often carried by either a programmer or an operator
A programmer, while creating a program, can specifically make a mistake in it
:) . Another variant of the “evil will of the programmer” is the inclusion of a “logical bomb” in the program, triggered, for example, after a certain number of program launches, certain values ​​of input data, etc. The computer operator can consciously enter incorrect data into the computer, which will be processed by the computer, giving incorrect output in accordance with the principle of "garbage at the entrance - garbage at the exit."
• The assembly line of the Volga Automobile Plant in the city of Togliatti operates under the control of the ACS, which ensures timely delivery of parts to the conveyor from warehouses and from the auxiliary production workshops. To accomplish this task, the information management system stores information about thousands of units and parts from which the car is assembled, about stocks of parts in warehouses, their movement along transport lines, etc. Based on this information, the ACS independently controls automated warehouses and transport conveyors as well as a number of other devices.
A programmer who developed software to control the main pipeline of the Volga Automobile Plant, deliberately introduced a “logic bomb” into the program in protest against low wages. After some time, this “logical bomb” worked, and the main conveyor stopped for several days. The damage from the shutdown amounted to 1 million rubles (in the prices of the 80s), this damage was incomparable with the salary of all VAZ programmers combined, and the programmer was disqualified and transferred to the workers.
Summing up
Analysis of these types of errors shows that the main tasks facing software developers in terms of improving its reliability are:
- elimination of errors made in the development of software (type 1 errors);
- software design taking into account the human factor, that is, in such a way that it is protected from the "fool" (type 2 errors). At the same time, not only users working at the computer, but also instruments and sensors, from which the computer receives information when managing technical or other systems (the 5th type of errors) can "pass the fool";
- use of known security measures to reduce the likelihood of computer viruses being transferred (type 3 errors) with programs being transferred to operation (in the practice of software distribution there are cases when the developers of these programs write distributions on computers infected with viruses).
Thus, the software product must undergo thorough testing and debugging (detection of errors of the 1st and 2nd types). The detection of possible errors of the 5th type is carried out by means of simulating the failure of devices and sensors on the tested software systems.
I hope this material will be useful. I wish everyone to make fewer mistakes, because this is especially important in current times of crisis
: ^)PS: The information is provided according to data from
these sources , many important additions and refutations are presented below in the comments, especially from the habraiser
scoon . However, the original text does not change