find and solve ||
Please wait.....

Software Engineering Software Reliability

In Software Engineering Software reliability is the probability of failure-free operation of a computer program for a specified period in a specified environment. Reliability is a customer-oriented view of software quality. It relates to the operation rather than the design of the program, and hence it is dynamic rather than static.

Reliability is the most important dynamic characteristic of almost all software systems. Unreliable software results in high costs for end-users. Developers of unreliable systems may acquire a bad reputation for quality and lose future business opportunities

The Reliability of a software system is a measure of how well users think it provides the services that they require. Reliability is usually defined as the probability of failure-free operation for a specified time in a specified environment for a specific purpose. Say it is claimed that software installed on an aircraft will be 99.99% reliable during an average flight of five hours. This means that a software failure of some kind will probably occur in one flight out of 10000.

The formal definition of reliability may not equate to the user's experience of the software. The difficulty in relating such a figure to a user's experience arises because it does not take the nature of the failure into account. A user does not consider all services .to be of equal importance. A system might be thought of as unreliable if it ever failed to provide some critical service.

For example, say a system was used to control braking on an aircraft but failed to work under a single set of very rare conditions. If an aircraft crashed because of these failure conditions, pilots of similar aircraft would reg software as unreliable.

There is a general requirement for more reliable systems in all app domains. Customers expect their software to operate without failure available when it is required. Improved programming techniques, programming languages, and better quality management have led to significant improvements in reliability for most software. However, for some systems. such as those which control unattended machinery, these ' techniques may not be enough to achieve the level of reliability required, in these cases special programming techniques may be neces achieve the required reliability. Some of these techniques are di in this chapter.

The concept of Software reuse has been included in the following Because improved reliability is one of the benefits of reuse. Software components are not just used in one system but are tried and tested in a variety of different environments.

Design and implementation for discovered and eliminated so the reusable components contain few errors. Although absolute reliability specification is impossible, reusable components may have an associative quality certification. This allows reusers to incorporate them with confidence in their systems.


Upon completion of this Unit, you should be able to:

• Explain what meant software Reliability

• Know more about reliability metrics

• Know about Statistical analysis and programming for reliability

Software reliability

Software reliability is a function of the number of failures experienced particular user of that software. A software failure occurs when the is executing. It is a situation in which the software does not deliver the service expected by the user. Software failures are not the same as software faults although these terms are often used interchangeably.

Formal specifications and proof do not guarantee that the software will be reliable in practical use. The reasons for this are:

  1.  The specifications may not reflect the real requirements of system users many failures experienced by users were a consequence of specification errors and omissions, which could not be detected by formal system specifications. It may even be the case that the opaqueness of formal notations makes it more difficult for users to establish whether or not a system meets their real requirements.
  2.    The proof may contain errors Program proofs are large and complex so, like large and complex programs, they usually contain errors
  3.  The Proof may assume a usage pattern, which is incorrect. If the system is not used as anticipated, the proof may be invalid.

Because of additional design, implementation, and validation overheads, Increasing reliability can dramatically increase development costs. In the given above figure shown is the relationship between costs and incremental improvements in reliability.

If it is possible to measure if a system is 100% reliable as this would require an amount of time equal to the lifetime of the system. However, as reliability requirements increase, system coast usually rises exponentially. This is mostly due to the need for redundant hardware and a vast increase in testing costs to check that the required reliability has been achieved.

As discussed some specifications, which call for, ultra-reliable systems are The number of tests required to validate these specifications carried out in a reasonable time.

There is, of course, an efficiency penalty, which must be paid for reliability. Reliable software must include extra, often redundant perform the necessary checking for exceptional conditions. Tt program execution speed and increases the amount of store req1 program. Reliability should always take precedence over efficie the following reasons:

  • Computers are now cheap and fast: There is little need t equipment usage. Paradoxically, however, faster equipment increases expectations on the part of the user so considerations cannot be completely ignored
  • Unreliable software is liable to be discarded by users: If a company attains a reputation for unreliability because of a single unreliable it is likely to affect future sales of all of that company's products.
  • System failure costs may be enormous: For some applic a reactor control system or an aircraft navigation system, system failure is orders of magnitude greater than the cost of the control system.
  • Unreliable systems are difficult to improve: It is usual! tune an inefficient system because most execution time is s program sections. An unreliable system is more difficult to improve as unreliability tends to be distributed throughout the system.
  • Inefficiency is predictable: Programs take a long time to users can adjust their work to take this into account. Unreliability, by contrast, usually surprises the user. Software that is unrelic: hidden errors that can violate system and user data wit and whose consequences are not immediately obvious. For example, a fault in a CAD program used to design aircraft might not t until several plane crashers occur.
  • Unreliable systems may cause information loss: lnforr expensive to collect and maintains; it may sometimes be worth more than the computer system on which it is processed. A great deal of effort and money is spent duplicating valuable data to guard against data corruption caused by unreliable software.

The software process used to develop that product influences the reliability of the software product. A repeatable process, which is oriented towards defect avoidance, is likely to develop a reliable system. However, there is not a simple relationship between product and process reliability.

Users often complain that systems are unreliable. This may be due to poor software engineering. However, a common cause of perceived unreliability is incomplete specifications. The system performs as specified but the specifications do not set out how the software should behave in exceptional situations. As professionals, software engineers must do their best to produce reliable systems, which take meaningful and useful actions in such situations.

Mahira  khanna

Mahira khanna

I have the skills you need for you company blog, website, or other content materials


Report Response