Скачиваний:
313
Добавлен:
01.05.2014
Размер:
523.78 Кб
Скачать

Групповое занятие. Методы обеспечения надежности программных средств в асу.

Вопросы:

1. Классификация ошибок и показатели надежности программного обеспечения.

2. Методы и средства повышения надежности программного обеспечения.

Вопросы:

1. Методы защиты вычислительного процесса.

2. Методы защиты информации.

Учебная цель: Ознакомиться с основными методами защиты вычислительного процесса и информации в АСУ военного назначения.

Литература:

В.Ф. Шпак Основы автоматизации управления. Ч.2, стр. 13-16, 26-42.. Петродворец, ВМИРЭ, 1998 г.

Учебная цель: Ознакомиться с основными методами обеспечения надежности программного обеспечения АСУ военного назначения.

Литература:

В.Ф. Шпак Основы автоматизации управления. Ч.2, стр. 16-26. Петродворец, ВМИРЭ, 1998 г.

1. Классификация ошибок и показатели надежности программного обеспечения.

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

- конструкционные ошибки -15%;

- неисправности аппаратуры - 1%;

- ошибки системного ПО - 3%;

- ошибки функционального ПО - 75%;

- ошибки оператора - 5 %;

- ошибки исходных данных -1 %.

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

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

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

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

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

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

По виду проявления программные ошибки можно разделить на следующие основные классы (всего существует 169 катего­рий, объединенных в 20 классов):

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

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

• ошибки ввода-вывода - ошибки в модулях ввода-вывода и интерфейсах (ошибки формирования выдаваемых результатов, размещения информации, нарушение размеров полей ввода-вывода);

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

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

• ошибки компоновки (конфигурации) - ошибки, связанные с тем, что, из-за жёсткой организации работы программ, ПО после некоторой модификации (обычно связанной с разрешением какой-то проблемы) становится несовместимым с операционной системой или прикладными программными средствами;

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

• ошибки инициализации базы данных – непосредственно связаны с начальными значениями данных или с константа­ми в базе данных;

• ошибки определения глобальных переменных (данных, предназначенных для использования в различных программах);

ошибки в документации;

ошибки оператора - связаны с работой оператора, разработчика или испытателя;

неопознанные ошибки.

Исследования показали зависимость числа ошибок от вели­чины и сложности модуля программного обеспечения. Так, вы­явлено, что в среднем на 1000 операторов исходного текста приходится примерно 10-20 ошибок. Зависимость эта практиче­ски линейная. Тогда в качестве показателя надёжности можно принять, например, число ошибок, обнаруженных за период тестирования программного модуля.

Ограничивающие условия:

- обнаруженные в ходе тестирования ошибки устраняются;

- вновь возникшие ошибки при устранении обнаруженных не учитываются;

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

- набор тестов полон и соответствует функциональному назначению модуля.

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

Количество ошибок может быть оценено и предсказано с по­мощью набора показателей сложности. Основные показатели сложности;

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

, (1)

где LS – общее число логических операторов программы;

EX – общее число исполняемых операторов программы;

LLOOP – показатель сложности циклов;

LIF – показатель сложности условных операторов;

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

Показатель сложности взаимосвязей

, (2)

где АР - число связей с прикладными программами; SYS - число связей с системными программами; 0.5 - коэффициент важности SYS по сравнению с АР.

Показатель сложности вычислений:

, (3)

где CS- число операторов вычислительного характера;

- суммарная логическая сложность про­граммного обеспечения по всем LTOT модулям.

Показатель сложности ввода-вывода

, (4)

где - число операций ввода-вывода.

Удобочитаемость или показатель простоты программы

, (5)

где TS - общее число операторов; СОМ- число комментариев.

Показатель общей сложности

, (6)

где 1 , 0.1, 0.2 , 0.4 , -0.1- коэффициенты важности.

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

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