Надежность программного обеспечения. Часть 2.

Отказы ПО различаются также по последствиям. Существуют отказы, которые вызывают значительные материальные потери (аварии), связанные с разрушением или потерей дорогостоящего оборудования. Примером может служить выход из строя оборудования космической станции ВЕНЕРА, когда из-за неправильного кодирования командного сообщения не произошел раскрыв солнечных батарей и не была обеспечена их правильная ориентация, из-за чего бортовая аппаратура лишилась источника электропитания и была потеряна связь станции с наземными пунктами управления.

Хотя при неисправленной ошибке в ПО, приведшей к отказу при определенном сочетании входных данных, этот отказ будет повторен при последующих просчетах программы и при том же сочетании входных данных, тем не менее можно считать, что отказы ПО носят вероятностный характер, так как, во-первых, ошибки в ПО распределены случайным образом, а во-вторых, случайными являются и конкретные наборы входных данных. Поэтому интервал времени безотказной работы будет случайной величиной.

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

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

В последнее время в связи с успешными попытками нарушения правильного функционирования сложных комплексов программ путем внесения в ПО специальных программных ошибок («программных вирусов»), приводящих к дезорганизации вычислительного процесса, необходимость существенного повышения надежности ПО стала еще более очевидной.