ЗНАЕТЕ ЛИ ВЫ?

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



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

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

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

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

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

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

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

Факторами, определяющими надежность программного обеспечения являются:

- подготовка инженерного персонала по технологии использования цифровой техники;

- контроль выдачи и изменения программ;

-постоянная связь разработчика и заказчика программного обеспечения;

- применение современных методов контроля процесса разработки программ и технической документации;

- внедрение стандартов, регламентирующих работы по программному обеспечению систем.

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

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

В основу структурного программирования должны быть положены следующие правила:

- программа должна составляться мелкими шагами;

- сложная задача должна разбиваться на простые составляющие с одним входом и выходом;

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

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

Рекомендуется объем модулей 100 -500 команд. Запрет на применение потенциально ненадежных программных конструкций, возможность оперативного автономного контроля результатов функционирования модуля обеспечивают высокую вероятность исключения ошибок на самых ранних этапах разработки программного обеспечения.

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

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

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

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

- детерминированное тестирование предусматривает задание конкретных исходных данных и маршрутов исполнения программы;

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

Диапазон варьирования исходных данных и степень охвата возможных маршрутов определяют эффективность обнаружения ошибок данным методом.

Восходящее тестирование начинается с автономного тестирования программных модулей самого нижнего уровня, а нисходящее тестирование с автономного тестирования головной программы.

 

12.1 Модели надежности программного обеспечения

 

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

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

число команд N в программе постоянно;

при начальном числе ошибок Ro в ходе испытаний длительностью Т их число снижается, R(t)< Ro новые ошибки в ходе исправлений не вносятся;

относительное число исправленных в ходе испытаний ошибок rи(T) = Rи(T) /N и их изменение во времени характеризуют оставшееся число ошибок r(T) = [R0 – Rи(t)] /N и интенсивность их возникновения:

 

l[T]=ks r[T],

 

где ks – коэффициент пропорциональности.

В ходе эксплуатации программ:

и будет не ниже , поскольку r(t)<r(0)=r(T).

Коэффициент ks и r(T) рассчитывают по результатам двух интервалов испытаний. В частности, начальная наработка на отказ ПО при испытаниях T0= 1/l( T0) = N/ (ks R0), откуда R0 ks=N/ T0. Зная число отказов, предшествующих второй наработке, находим:

, получаем

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

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

Лекция 13

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

13.1 Статистические показатели определения надежности программного обеспечения

Наиболее распространенными показателями надежности программного обеспечения являются следующие:

- начальное число ошибок N0 в программном обеспечении после сборки программы и перед ее отладкой;

- число ошибок n в программном обеспечении, обнаруженных и оставшихся после каждого этапа отладки;

- наработка на отказ T на этапе;

- необходимое время этапа отладки ^ τк.о на заданное качество (на число оставшихся ошибок);

- надежность Pо программного обеспечения при отладке на отсутствие единичной ошибки;

- эксплуатационная надежность P или коэффициент готовности Kг..

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

1) до отладки программного обеспечения на ассемблере (измерительный прибор), с числом передач управления около 20% от объема составляет

N0 = 0,069035 Sп – 0,001251Sо,

где Sп, Sо – количество соответственно передач управления и объем программного обеспечения в словах

2) до отладки программного обеспечения, начальное число N0 составляет 2% от объема в словах;

3) до отладки программного обеспечения, начальное число N0 =1 ошибка на 750 бит текста ассемблера;

4) до отладки программного обеспечения, для объема V в битах

 

N0 = ∙2

 

5) до комплексной отладки, для специализированных микропроцессоров число N0 ошибок составит 0,5% от объема программного обеспечения в словах;

6) до комплексной отладки, с точностью 20% для ассемблера с объемом V в словах N0 = 5 V/1024.

Среднестатистические оценки начального числа N0 ошибок в программном обеспечении после автономной отладки дают соответственно значения 4,34 для ассемблера и 1,44 для языка программирования высокого уровня на 1К слов кода программы.

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

, t – время работы;

 

T = (13.1)

 

- экспоненциальная модель среднего времени наработки на отказ; k – коэффициент темпа выработки ошибок, определяемый по формуле

 

n = N0[1- ] , (13.2)

где n – число обнаруженных и исправленных ошибок программного обеспечения; τк.о – время комплексной отладки программы. Начальная наработка программы T0 = 1/k N0,число оставшихся неисправленных ошибок n0 = N0 . Алгоритм определения надежности имеет итерационный характер, так как производится уточнение числа N0 по числу фактически обнаруженных ошибок N0 = n[1- ].

13.2 Статистические определения надежности программного обеспечения

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

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

- размер процессора (Б) при числе ИМС более 20 тыс. и быстродействием более 4000 – 1500 команд/с; средний (С) при числе ИМС около 10 тыс. и быстродействие более 250 – 1500 команд/с; (Н) при числе ИМС около 1 тыс. и быстродействие менее 250 команд/с.

- объем программного обеспечения, тысяч команд;

- коэффициент изменения числа отказов λ программного обеспечения по годам работы от начала работы Кр;

- коэффициент начального качества Кк;

- коэффициент ремонтопригодности и частоты изменений Ки;

- коэффициент уровня загруженности и изменений Кз.

В таблице 13.1 приведена зависимость начальной надежности программного обеспечения от размера процессора и объема.

 

Т а б л и ц а 13.1 - Зависимость начальной надежности программного обеспечения от размера процессора и объема

Тип управляющего программного обеспечения Размер процессора Объем ПО λ103, 1/ч
Мини - и микросистемы элементарная управляющая программа базовая управляющая программа расширенная управляющая программа базовая операционная система расширенная операционная система   С С С С С   0,25 – 1,0 1,0 – 4,0 4,0 – 16 16 – 64 64 - 256   0,4 1,5 6,0
Типовые системы базовой конфигурации управляющая программа операционная система с малыми возможностями операционная система со средними возможностями универсальная операционная система (полного объема)   М   М/С   С   С/Б   4,0 – 16   16 – 64   64 – 256   64 - 256   6,0      

 

Вероятность ошибки одной длинной операции (умножения, деления), включающая вероятности от программных, сбойных и вводных ошибок, будет 2∙10-6, а вероятность ошибки выполнения короткой операции (пересылка, обращение к памяти и т.д.) приближена к возможной верхней границе надежности программного обеспечения и составляет 1,2∙10-8.

Требования надежности к перспективным системам информационного обмена задают вероятностью разрядной ошибки передачи информации не более 10-12 ошибки на бит.

 

Т а б л и ц а 13.2 - Зависимость надежности программного обеспечения от продолжительности работы системы

Число лет работы Более 6
Кр 0,2 0,1 0,05 0,03 0,01

 

Т а б л и ц а 13.3 - Зависимость надежности программного обеспечения от уровня загруженности системы

Начальное качество Кк Ремонтопригодность и частота изменений Ки Уровень загруженности и пользовательские изменения Кз
Низкое Среднее Довольно высокое Высокое   0,5 0,25 Низкая Средние   Довольно высокая Высокие   0,25 0,5 Очень низкое Низкие   Средние Высокие Очень высокие 0,25 0,5  

 

Интенсивность отказов программного обеспечения λп определяется с помощью таблиц 13.1 – 13.3 по выражению

 

λп = λКр Кк Ки Кз. (13.3)

 

 

ЛЕКЦИЯ 14

Цель лекции: Обучение оценке степени влияния на надежность приборов и систем внешних факторов

 





Последнее изменение этой страницы: 2016-04-07; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.204.42.98 (0.013 с.)