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

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

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

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

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

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

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