What is software reliability?
Technically software reliability is the probability of a failure free operation over some period of time. However, it's been used to describe a collection of development practices aimed at improving software reliability or reducing software defects.
Software reliability: The probability that software will not cause the failure of a system for a specified time under specified conditions. The probability is a function of the inputs to and use of the system, as well as a function of the existence of defects in the software. The inputs to the system determine whether existing defects, if any, are encountered.
Software defect: A problem which, if not corrected, could cause an application to either fail or to produce incorrect results. Software defects are the result of errors that are manifest in the system requirements, software requirements, interfaces, architecture, detailed design or code. A defect may result in one or more failures. It’s also possible that a defect may never result in a fault if the operational profile is such that the code containing the defect is never executed.
Software defect pileup: When residual defects in the software are not removed and over time the number increases to the point of adversely affecting the reliability and schedule of the software releases.
Software Failure: The inability of a system or system component to perform a required function within specified limits. A departure of program operation from program requirements. A failure may be produced when a fault is encountered and a loss of the expected service results.
There may not be a one to one relationship between faults and failures. This can happen if the system has been designed to be fault tolerant. It can also happen if a fault does not result in a failure either because it is not severe enough to result in a failure, or does not manifest into a failure due to the system not achieving that operational or environmental state that would trigger it.
Software failure rate: The ratio of the number of failures of a given category or severity to a given period of time; for example, failures per second of execution time, failures per month.
Software fault: A defect in the code that can be the cause of one or more failures.
Software reliability growth: The improvement of the software reliability due to operational usage, stresses and correction of defects that cause software failures. Reliability growth is "reset" whenever new features are added to the software.
Software quality: Software quality is the degree to which the software possesses a desired set of attributes.
Software reliability engineering (SRE): The application of statistical techniques to data collected during system development and operation to specify, estimate, or assess the reliability of software-based systems. The application of software reliability best practices to enhance software reliability characteristics of software being developed and integrated into a system.
Software reliability estimation: The application of statistical techniques to observed failure data collected during system testing and operation to assess the reliability of the software.
Software reliability model: A mathematical expression that specifies the general form of the software failure process as a function of factors such as fault introduction, fault removal, and the operational environment.
Software reliability prediction: A forecast or assessment of the reliability of the software based on parameters associated with the software product and its development environment.
Software reliability assessment: A means to predict or benchmark the predicted defect density of a specific software project.
Effective size: The amount of new and modified lines of code plus a derated amount of reused but not modified code.