Where do you think might be the home of the software bugs? Correct, in software. But where exactly?
Why does it happen that programs do not work correctly? It’s very simple – they are created and used by people. If the user makes a mistake, this can lead to a problem in the operation of the program – it is used incorrectly, which means that it may not behave as expected.
An error – is a human action that produces an incorrect result.
However, software is designed and created by people who can (and do) make mistakes as well. This means that there are flaws in the software itself. They are called defects or bugs (both designations are equivalent). Remember – software is more than just code.
Defect, Bug – a deficiency of a component or system that can lead to the failure of certain functionality. A defect discovered during program execution can cause a failure of an individual component or the entire system.
During the execution of the program code, defects that were embedded even during its writing may appear: the program may not do what it should, or vice versa – do what it should not and a crash occurs.
Failure or crash is a discrepancy between the actual result of the operation of a component or system and the expected result.
Failure of the program can be an indicator of the presence of a defect in it.
Thus, the bug exists when three conditions are met simultaneously:
It is important to understand that not all bugs cause crashes – some of them may not manifest themselves in any way and remain unnoticed (or appear only under very specific circumstances).
Failures can be caused not only by defects, but also by environmental conditions: for example, radiation, electromagnetic fields or pollution can also affect the operation of both software and hardware.
In total, there are several sources of defects and, accordingly, failures:
Defects can occur at different levels, and the quality of the system will directly depend on whether they are corrected and when.
Quality – the degree to which the set of inherent characteristics meets the requirements.
Software Quality is a collection of characteristics of software that reflect its ability to meet stated and implied needs. Requirement is an established need or expectation. Usually assumed or required.
In the first case, everything was done correctly and we received a product that fully meets the customer’s expectations and meets the quality criteria.
In the second case, errors were made already during coding, which led to the appearance of defects in the finished product. But at this level, bugs are fairly easy to spot and fix, as we see non-compliance.
The third option is worse – here mistakes were made at the design stage of the system. This can only be noticed by conducting a thorough check with the specification. Correcting such defects is also not easy – you need to redesign the product design.
In the fourth case, the defects were laid down at the stage of requirements formation; all further development and even testing went down the initially wrong path. During testing, we will not find bugs – the program will pass all tests, but it can be rejected by the customer.
Conventionally, there are five reasons for the appearance of defects in the program code.