Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Надежность программного обеспечения систем обработки данных

..pdf
Скачиваний:
6
Добавлен:
12.11.2023
Размер:
8.74 Mб
Скачать

В. В. Шураков

НАДЕЖНОСТЬ

ПРОГРАММНОГО

ОБЕСПЕЧЕНИЯ

СИСТЕМ

ОБРАБОТКИ

ДАННЫХ

Второ* издание, переработанное и дополненное

Допущено Министерством высшего

исреднего специального обраэовемия СССР

вкечествв учебнике

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

МОСКВА 'ФИНАНСЫ И СТАТИСТИКА'

1967

ББК 32.973—01 УДК 681.3—092

Ш98

Рецензенты.

чл -кор АН УССР Е. Л. ЮЩЕНКО и кафедра механизированной обработки

экономической информации Московского авиационного института им С. Орджоникидзе

Шураков В. В.

Ш98 Надежность программного обеспечения систем обработки данных: Учебник.— 2-е изд., перераб. и доп.— М.: Финансы и статистика, 1987.—272 с.: ил.

Описываются основные проблемы надежности

программного обеспечения

на разных этапах его разработки Рассматриваются

методы обеспечения надеж

ности в процессе создания и контроля систем программного обеспечения, моде

лирования и оценки надежности Используются результаты

и примеры, получен*

ные отечественными и зарубежными специалистами

 

Для студентов вузов, обучающихся по специальности «Организация меха*

низированной обработки экономической информации»

 

2405000000—017

ББК 32.973—01

Ш --------------------- 114—87

010(01)—87

 

©Издательство «Статистика», 1981 © Издательство «Финансы и статистика», 1987

ВВЕДЕНИЕ

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

В Основных направлениях экономического и социального разви­ тия СССР на 1986—1990 годы и на период до 2000 года1, принятых XXVII съездом КПСС, наряду с развитием вычислительной техники и повышением надежности и эффективности ее использования под* черкивается необходимость увеличить производство программных' средств для вычислительной техники и автоматизированных систем управлении.

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

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

данных, и его отквзы в работе

могут оквзать

существенное влияние

на функционирование систем обрвботки двииых в целом.

Исследование надежности

ПО развивается

в настоящее> время

в двух направлениях; обоснование интуитивного представления о на­ дежности ПО и разработки методов, обеспечивающих достижение заданного уровни надежности ПО.

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

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

1 Материалы XXVII еъезда Коммунистической партии Советского Союза.—М.: Политиздат, 1986.—С. 280—284.

3

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

среды. п« отношению к которым

программа

должна быть устойчи

вой Обйчио разработчик средств

ПО не

располагает средствами

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

Вйжиое место в теории надежности имеет выявление полного спект ра ДОибок, встречающихся при разработке системных и проблемных

предоамм

Сложность

получения статистически

приемлемых резуль­

т а т в известной мере

сдерживает дальнейшее

развитие

теории

на

дарИости программных средств

 

 

 

л Одним

из существенных факторов, оказывающих

влияние

на

дфтижеиие надежности средств ПО, является стоимость их создания

От-

qy+ствие целенаправленного сбора статистических данных по затратам

S

разработку

систем ПО

в

настоящее

время не

позволяет

 

в

полном

объеме рекомендации

по

дан

ормулировать

му вопросу,

но

имеющиеся

подходы,

изложенные

в

учеб­

нике, указывают пути решения проблемы Основная роль в создании систем ПО с заданным уровнем на­

дежности принадлежит собственно процессу разработки программного обеспечения Учитывая важность этого подхода и накопленный опыт, во втором разделе рассматриваются конструктивные решения обеспе­ чения надежности ПО в процессе разработки Материал разде­ ла базируется на отечественном н зарубежном опыте проектирования ПО Вопросы достижения заданного уровня надежности ПО в процессе контроля рассматриваются с учетом продолжения процесса разра­ ботки Организационные средства и методы обеспечения надежности рассматриваются в третьем разделе учебника Здесь же отра­ жены усилия по моделированию и оценке надежности систем ПО путем рассмотрения наиболее распространенных разновидностей мо­ делей оценки надежности ПО в процессе разработки, а также прогно­ зирования надежности в ходе сопровождения

В учебнике использованы результаты, полученные отечествен­ ными и зарубежными специалистами в области надежности про­ граммного обеспечения систем обработки данных Ряд примеров для иллюстрации теоретических положений взят из литературных источников

Р а з д е л I

ОСНОВНЫЕ КОНЦЕПЦИИ НАДЕЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Г л а в а 1

ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ И ПОНЯТИЯ

Надежность — один из важнейших факторов, определяющнх общую производительность и эффективность систем. В связи с этим уже на стадии проектирований системы вопросам надежности должно уделяться присг тальное внимание. В этот период, когда устанавливается первоначальная взаимозависимость между характеристи­ ками системы, затратами и графиком выполнения работ, должны быть сформулированы и требования к надеж­ ности, так как именно они в значительной мере определя­ ют реализуемость проекта и стоимость будущей системы.

Теория надежности как наука получила развитие при­ менительно к сложным техническим системам. Необхо­ димость и полезность контроля технических компонент систем и систем в целом с целью проверки соответствия их текущих характеристик заданным доказаны практи­ кой. В этом плане выполнено значительное количество работ по надежности применительно к техническим систе­ мам, разработано множество моделей обеспечения разум­ ными методами надежности сложных систем и их техни­ ческой готовности.

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

(ремонту) системы или ее

компонентов

после сбоя.

Под системой в теории надежности принято понимать

совокупность подсистем или

элементов, функционально

объединенных в соответствии с некоторым

алгоритмом

5

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

де всего ненадежностью ПО.

1 1. ОПРЕДЕЛЕНИЕ НАДЕЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

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

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

Программная ошибка. Люди имеют различные точки зрения на то, что представляет из себя программная ошибка Не существует одного всеобъемлющего опреде­ ления ошибки

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

6

Второе распространенное определение утверждает, что ошибка происходит тогда, когда программа работает не в соответствии со спецификациями при условии, что она эксплуатируется в заранее определенных границах Это определение имеет некоторые недостатки. Если даже система случайно используется вне заранее определенных пределов, то она должна выдать какие-то разумные ре­ зультаты. В противном случае в системе имеется ошибка.

Рассмотрим, например, систему слежения за воздуш­ ными объектами в районе крупного аэропорта. Предполо­ жим, что в задаче иа разработку системы требовалось, чтобы было обеспечено одновременное слежение за Й4 са­ молетами. Неожиданно в поле наблюдения системы поя­ вился 25-й самолет. Если в этом случае система сработает каким-то непредвиденным образом, то, следовательно, в ней присутствует ошибка, несмотря иа то, что система используется вне заранее определенных предёнов.

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

Достаточно широко используется следующее опреде­ ление: ошибка — это несоответствие работы программы первоначальным требованиям пользователя-эакаэчика. Это определение существенно отличается от приведенных выше, но тоже имеет ряд недостатков. Кроме того, изло­ женные в письменном виде требования пользователя очень редко бывают достаточно подробными, чтобы опи­ сать желаемое поведение программы при всех возмож­ ных случаях.

Упомянутые выше недостатки разрешает следующее определение: программная ошибка имеет место тогда, когда программа работает не так, как предполагает пользователь. Такое определение полностью устраивает

пользователя, но не может устраивать разработчика ПО, так кик он должен точно знать, что ожидает пользо­ ватель от!системы. Положение усугубляется еще н тем, что понятие «пользователь» включает любого человека,

вводящего данные

в систему

или

взаимодействующего

с ней любым другим образом.

что

программные ошибки

Из Изложенного

следует,

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

Надежность ПО. Применительно к сложным системам надежность ПО [4] определяется как Свпбтп тм »и ы

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

Как следует из определения, должны быть известны следующие основные моменты: заданное время работы; среда, в которой функционирует система; то, что понима­ ется под эксплуатационными показателями.

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

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

8

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

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

Например, электронное оборудование проходит опре­ деленные этапы (рис. 1.1, кривая а);

1) начальный этап службы оборудования, характери зующийся высокой интенсивностью отказов, которая до­ статочно быстро снижается по мере выявления и устра­ нения недолговечных и могущих в скором времени отка­ зать элементов в процессе отладки;

Рис 1.1 Сравнительная оценка надежности ТО и ПО

9

2) второй этап службы оборудования, характери­ зующийся относительно неизменной интенсивностью отка­ зов. Этот этап является основным периодом службы оборудования, когда отказы возникают случайно.

Редкие внезапные отказы выравниваются в плавную кривую интенсивности отказов, которая в области износа быстро возрастает. Горизонтальная часть кривой соот­ ветствует периоду нормального функционирования. Здесь отказы подчиняются закону Пуассона, т. е. их можно считать случайными и независимыми. Такое изменение интенсивности отказов является желательным с точки зрения обеспечения надежности, так как оно позволяет прогнозировать надежность на основании данных уско­ ренных испытаний на срок службы;

3) этап износа — это период, когда число отказов воз­ растает в результате процессов износа после продолжи­ тельного срока службы.

Надежность ПО в значительной степени отличается от надежности оборудования. Действительно, ПО не под­ вержено износу, практически отсутствуют ошибки произ­ водства, так как встречаются они редко и легко могут быть исправлены (например, ошибки перезаписи при ко­ пировании). Ненадежность ПО целиком определяется ошибками разработки. Для среды, в которой по мере обнаружения ошибки исправляются и не вносятся в ре­ зультате исправления новые ошибки, надежность ПО из­

меняется в

соответствии с кривой Ь на рис. 1.1.

Из рисунка видно, что кривые надежности ПО (Ь) и

оборудования

(а) ведут себя различно. Надежность обо­

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

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

ю

Соседние файлы в папке книги