Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Надежность программного и аппаратного обеспечения систем.
Под надежностью программного обеспечения (ПО) принято понимать его безошибочность, обеспечивающую безотказную работу программ, и как следствие — систем управления. Надежность ПО является одной из важнейших его характеристик. Количественно надежность ПО определяется числом ошибок в программах. Эти ошибки можно разделить на логические и формальные. Логические ошибки обычно устраняются на этапе отладки программ, формальные—при трансляции программ. Однако вероятность невыявления ошибок ПО весьма велика. К тому же в процессе коррекции в программы вносятся новые ошибки. Как показывает опыт разработок ПО, достижение безошибочности является процессом чрезвычайно трудоемким и многоэтапным. Ошибки ПО присущи всем этапам его проектирования и, что существенно, остаются по завершении этих этапов. Изложенное 'проиллюстрировано на рис. 5. 3. 1, а. Здесь N — число ошибок в ПО; АО— автономная отладка ПО; КО — комплексная отладка; СИ— сдаточные испытания; Э —эксплуатация ПО; , , и — соответственно количество ошибок в ПО в начале каждого из перечисленных выше этапов. Как следует из рисунка, начало каждого этапа характеризуется резким увеличением числа ошибок, которое затем снижается за счет их обнаружения и устранения. Отмеченное объясняется тем, что каждый этап: имеет свою программу проверки, цели которых неодинаковы; осуществляется различными коллективами с разными целями и возможностями; обладает своим комплексом базовых входных данных. Рис. 5. 3. 1. К надежности программного обеспечения Следствием изложенного является то, что обнаружение ошибок ПО представляет собой непрерывный процесс, сопутствующий всей жизни ПО. Основными причинами ошибок ПО являются: неправильное построение программ; ошибки в логических схемах; ошибки кодирования, изготовления машинных носителей, согласования базовых (входных) данных; вычисления, обработки выходных данных. По данным Илдона (США, 1974), в трех вычислительных программах объемом от 160 до 200 тыс. операторов было зарегистрировано 7000 ошибок, что составляет от 3, 5 до 4%. Анализ этих ошибок выявил следующее: ошибки обработки машинных носителей составили 19% общего количества; ошибки согласования базовых данных — 14, ошибки вычисления — 12, ошибки обработки выходных данных — 9%. В последнее время четко проявилась тенденция использовать для оценки надежности ПО методы, обычно применяемые для оценки надежности аппаратуры. С этих позиций ошибка ПО рассматривается аналогично отказу при вероятностной оценке надежности аппаратуры. Как следствие надежность программного обеспечения оценивается вероятностью его работы без отказов в течение определенного периода времени, рассчитанной с учетом стоимости для пользователя каждого отказа. Вероятность того, что ошибка проявится на интервале времени от 0 до t, есть функция отказов ПО , где P(t) —вероятность исправной, т. е. безошибочной, работы ПО в интервале времени от 0 до t. Плотность вероятности Q(t) будет . Обозначим через R(t) функцию риска—условную вероятность того, что ошибка проявится в интервале от t до при условии, что до момента t ошибок не было и . Если — время проявления ошибки, то , или . (5. 3. 1)
Поделив обе части равенства (5. 3. 1) на и устремив к нулю, получим . (5. 3. 2) Разрешив (5. 3. 2) относительно P(t) и выбрав в качестве начальных условий Р(0) = 1, найдем
.
Таким образом, вероятность исправной работы ПО описывается экспоненциальной функцией времени (рис. 5. 3. 1, б). Среднее время между ошибками (отказами) . Один из способов оценки состоит в наблюдении времени между последовательными ошибками ПО. По мере обнаружения и исправления ошибок в программах время между двумя последовательными ошибками становится больше. Экстраполируя эту зависимость, можно прогнозировать величину для любого момента времени и, что самое существенное, предсказать полное число ошибок в ПО. При обнаружении ошибок функция P(t) улучшается, происходит переход от кривой к кривой , от кривой к кривой и т. д. В пределе при полной безошибочности ПО она стремится к прямой параллельной оси абсцисс, изображенной пунктиром. На рис. 5. 3. 1, в показаны зависимости интенсивности отказов от времени при разработке и эксплуатации аппаратных и программных комплексов. Как следует из рисунка, частость проявления ошибок в программах подобна частости отказов аппаратуры. Отказы из-за ошибок в ПО сначала уменьшаются вследствие их обнаружения и устранения в процессе отладки. Этот период I по своему характеру схож с периодом приработки аппаратуры. Далее следует период эксплуатации II, характеризующийся постоянной интенсивностью отказов из-за ошибок в ПО, если они не исправляются. Устранение этих ошибок порождает новые — вторичные ошибки, которые также подлежат устранению. После ряда доработок комплекс ПО морально устаревает и подлежит замене (возрастание в конце интервала жизни ПО). Уточним поведение во времени функции риска R(t). Для аппаратуры обычно рассматривается участок II кривой , где R (t) постоянна и справедлив так называемый экспоненциальный закон надежности. Для ПО предположение о постоянстве R(t) неправомочно, функция R(t) должна уменьшаться по мере обнаружения и исправления ошибок и как следствие описывается не одной кривой, а семейством кривых. На рис. 5. 3. 1, в этап III представляет область старения (износа). В связи с изложенным сделаем два предположения: 1) R(t) постоянно до обнаружения и исправления ошибок, после чего R(t) снова постоянно, но с другим — меньшим значением; 2) R(t) прямо пропорционально числу оставшихся ошибок, т. е. . Здесь к — константа; N — начальное число ошибок в ПО; L — число обнаруженных ошибок. Изложенное отражено графиком, показанным на рис. 5. 3. 1, 2. Неизвестные параметры N и к можно оценить, если обнаружено некоторое количество ошибок. Исключительно важным при этом является знание N, позволяющее оценить полное число ошибок в ПО. Знание к позволяет прогнозировать время появления (n+1), (n +2) и других ошибок. Для оценки величины N предложены различные алгоритмы, базирующиеся на различных моделях. Рассмотрим статистическую модель Миллса 1. Сначала программа «засоряется» некоторым количеством известных Действительно, пусть в программу внесено V ошибок, после чего начато тестирование. При тестировании обнаружено n+v ошибок, где п — число найденных собственных ошибок; v — число найденных внесенных ошибок. Тогда по методу максимального правдоподобия . (5. 3. 3) Следует иметь в виду, что программист обычно считает каждую обнаруженную ошибку последней. Использование соотношения (5. 3. 3) позволяет реалистически оценить состояние ПО. 2. Рассмотрим простую интуитивную модель. Тестирование ПО , Предположим, что возможность обнаружения всех ошибок одинакова. Это позволяет рассматривать каждое подмножество пространства ошибок п как аппроксимацию всего пространства. Тогда или По известному найдем величину N. Самый простой способ состоит в оценке величины N на основании статистики, например среднее число ошибок, приходящееся на один оператор по результатам тестирования предыдущих программ.
|