Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции-ТРПС.doc
Скачиваний:
13
Добавлен:
15.11.2018
Размер:
810.5 Кб
Скачать

1.2. Невозможность доказательства отсутствия программных ошибок

Можно считать, что итоговым продуктом технологии программирования является программное средство, содержащее программы, которые выполняют набор требуемых функций. Здесь под термином “программа” будем понимать правильно работающую программу, т.е. программу, которая не содержит ошибок. Сложность состоит в том, что понятие ошибки в программе трактуется неоднозначно. Согласно работам [2,3], будем считать, что в программе имеется ошибка, если программа не выполняет того, что разумно ожидать от нее пользователю. При этом “разумное ожидание пользователя” формируется на основании документации по применению этой программы. Отсюда следует, что понятие ошибки в программе является существенно не формальным. В ПС программы и документация взаимно увязаны, образуют некоторую целостность. Поэтому правильнее говорить об ошибке не в программе, а в ПС в целом.

Будем считать, что в программном средстве имеется ошибка, если оно не выполняет того, что разумно ожидать от него пользователю. В частности, разновидностью ошибки в ПС является несогласованность между программами ПС и документацией по их применению. В работе [3] выделяется в отдельное понятие частный случай ошибки в ПС, когда программа не соответствует своей функциональной спецификации, т.е. описанию, составляемому на этапе, который предшествует непосредственному программированию. Такая ошибка именуется дефектом программы. Однако выделение такой разновидности ошибки в отдельное понятие вряд ли оправданно, так как причиной ошибки может оказаться сама функциональная спецификация, а не уже готовая программа.

Итак, мы сталкиваемся с ситуацией, когда задание на ПС сформулировано неформально, а понятие ошибки в ПС не формализовано. Отсюда следует, что в общем случае нельзя доказать формальными методами, т.е. с привлечением строгого математического аппарата, правильность ПС.

Конечно, каждое ПС проходит этап опытного тестирования, когда некоторому набору исходных данных соответствует определенный ожидаемый результат. Однако, как указал Дейкстра [4], нельзя показать правильность ПС с помощью тестирования – тестирование может лишь выявить наличие в ПС ошибок, но не их отсутствие. Поэтому понятие правильной ПС неконструктивно в том смысле, что после окончания работы над созданием ПС мы не сможем достоверно убедиться, что достигли итоговой цели.

1.3. Надежность программного средства

В качестве альтернативы правильного ПС введем термин надежное ПС. Под надежностью ПС будем понимать его способность безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени с достаточно большой вероятностью. При этом под отказом в ПС понимают проявление в нем ошибки [2]. Таким образом, надежное ПС не исключает наличия в нем ошибок. Важно лишь то, что эти ошибки при практическом применении данного ПС в заданных условиях проявлялись достаточно редко. Убедиться, что ПС обладает таким свойством можно при его опытном тестировании, а также при практическом применении. Таким образом, в реальности мы можем разрабатывать лишь надежные, но не правильные ПС.

ПС может обладать различной степенью надежности. Как определить эту степень? Так же, как в любой отрасли техники – степень надежности характеризуется вероятностью работы ПС без отказа в течение определенного периода времени [2]. Однако в силу специфических особенностей ПС определение этой вероятности наталкивается на ряд трудностей по сравнению с решением аналогичной задачи в технике.

При оценке степени надежности ПС следует также учитывать последствия каждого отказа. Некоторые ошибки в ПС могут вызывать лишь некоторые неудобства при его применении, тогда как другие ошибки могут иметь катастрофические последствия, например, угрожать полному разрушению информации на магнитном носителе. Поэтому для оценки надежности ПС иногда используют дополнительные показатели, учитывающие степень вреда для пользователя при проявлении конкретного отказа. Позже мы еще вернемся к этому вопросу.