106
С самого начала исследования надёжности ПО возникла необходи-
мость определения программной ошибки
, как аналога отказа в техниче-
ских системах. В настоящее время не существует единого всеобъемлю-
щего определения программной ошибки. Приведём некоторые наиболее
часто используемые определения программной ошибки [6, 10, 13].
Программная ошибка происходит тогда, когда программа рабо-
тает не в соответствии со своими спецификациями.
Недостаток данного определения: заранее предполагается, что спе-
цификации корректны. Однако
редко можно встретить явное подтвер-
ждение корректности спецификации, хотя практика показывает, что од-
ним из главных источников ошибок являются спецификации.
Действительно: если программа работает не в соответствии с её
спецификациями, то это свидетельствует о присутствии ошибки, но
если программа работает в соответствии со спецификациями, то
нельзя утверждать, что ошибок в ней
нет.
Другие определения.
Ошибка происходит тогда, когда программа работает не в соот-
ветствии со спецификациями при условии, что она эксплуатируется
в заранее определённых границах.
Ошибка имеет место тогда, когда работа программы не соот-
ветствует сопутствующей ей документации.
В наибольшей степени лишённым недостатков предыдущих опре-
делений и потому наиболее приемлемым является
определение:
Программная ошибка имеет место тогда, когда программа ра-
ботает не так, как предполагает пользователь.
Конечно, такое определение полностью устраивает пользователя,
но не может устраивать разработчика ПО, если он точно не знает, что
ожидает пользователь от программы.
Из изложенного выше следует, что программная ошибка не являет-
ся неотъемлемым свойством программного обеспечения. Наличие
ошибки в программе – это функция от самой программы и от того, че-
го ждёт
от неё пользователь.
Определим некоторые наиболее часто встречающиеся признаки
ошибок программного обеспечения [11].
Потеря функциональных возможностей. Этих ошибок можно из-
бежать, если пользователь знает о их существовании. Но если пользова-
тель не подозревает о их существовании, то они могут давать не пра-
вильные выходные результаты или другие программные ошибки.
Авария системы –
это ошибки, определяемые такими признаками
как зацикливание, останов системы без какой-либо индикации, ошибки,
при которых программы должны быть перезагружены.