IEEE defines software reliability as the probability of failure-free software operation for a specified period of time in a given environment. Building reliability into software first necessitates defining the metrics by which we will measure reliability, so that we know the current state and we can measure the effect of any changes. Different people have different viewpoints on what reliability in a software system means:
- Conforms to requirements
- Whether the system actually fulfils its purpose
- User satisfaction
It is useful to take all these perspectives into account when considering how reliable a system is and how it can get better. There are various metrics to measure the reliability of a software system, and they can be broadly classified as dynamic and static.