Для лучшего понимания надежности программного обеспечения стоит сравнить ее с надежностью аппаратуры (подразд. 2.1.3). Возможны три причины отказа аппаратуры некоторого устройства: ошибка проектирования, производственный дефект и износ. Изменение интенсивности отказов аппаратуры (λ) в процессе эксплуатации графически можно представить соответствующей кривой на рис. 3.1.
Надежность программного обеспечения существенно отличается от надежности аппаратуры. Программы не изнашиваются, поломка программы невозможна. Более того, производственные дефекты (такие, как копирование системы для переноса ее на другой компьютер) не имеют особого значения, так как они сравнительно редки и быстро обнаруживаются. Таким образом, ненадежность программного обеспечения системы – следствие исключительно ошибок проектирования, т.е. ошибок, внесенных в процессе разработки. В условиях, когда ошибки исправляются тотчас же, как только они обнаруживаются, изменение интенсивности отказов программного обеспечения соответствует кривой «программного обеспечения» на рис. 3.1. Подчеркнем, что эта кривая отражает предположение, что при исправлении ошибок не вносятся новые. Это предположение обычно не справедливо.
Рис. 3.1. Различие между надежностью аппаратуры и программного обеcпечения
Сравнение кривых (см. рис. 3.1) показывает, что интенсивность отказов программного обеспечения и интенсивность отказов аппаратуры изменяются по-разному. Надежность аппаратуры определяется случайными отказами, надежность программного обеспечения – скрытыми в нем ошибками, природа которых не является случайной.