Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Надежность ПО.docx
Скачиваний:
11
Добавлен:
23.11.2023
Размер:
5.26 Mб
Скачать

Виды ошибок программного обеспечения

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

Ошибки работы программ разделяются по разным факторам. Классификация у рядовых пользователей и разработчиков различается. То, что для первых – «просто программа вылетела» или «глючит», для вторых – огромная головная боль. Но существует и общепринятая классификация ошибок. Пример – по критичности:

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

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

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

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

  1. «Борбаг» – «стабильная» неполадка. Она легко обнаруживается на этапе разработки и компилирования. Иногда – во время тестирования наработкой исходной программы.

  2. «Гейзенбаг» – баги с поддержкой изменения свойств, включая зависимость от среды, в которой было запущено приложение. Сюда относят периодические неполадки в программах. Они могут исчезать на некоторое время, но через какой-то промежуток вновь дают о себе знать.

  3. «Мандельбаг» – непредвиденные ошибки. Обладают энтропийным поведением. Предсказать, к чему они приведут, практически невозможно.

  4. «Шрединбаг» – критические неполадки. Приводят к тому, что злоумышленники могут взломать программу. Данный тип ошибок обнаружить достаточно трудно, потому что они никак себя не проявляют.

Типы багов

Ошибки в программах бывают:

  • логическими;

  • синтаксическими

  • взаимодействия;

  • компиляционные;

  • ресурсные;

  • арифметические;

  • среды выполнения.

Искажение информации при передаче по каналам связи

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

В системах связи возможны несколько стратегий борьбы с ошибками:

• Обнаружение ошибок в блоках данных и автоматический запрос повторной передачи повреждённых

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

• Упреждающая коррекция ошибок добавляет к передаваемой информации такие дополнительные данные, которые позволяют исправить ошибки без дополнительного запроса.

Стратегии исправления ошибок.

Упреждающая коррекция ошибок (также прямая коррекция ошибок, англ. ForwardErrorCorrection, FEC) — техникапомехоустойчивого кодирования и декодирования, позволяющая исправлять ошибки методом упреждения. Применяется для исправления сбоев и ошибок при передаче данных путём передачи избыточной служебной информации, на основе которой может быть восстановлено первоначальное содержание. На практике широко используется в сетях передачи данных в телекоммуникационных технологиях.

Автоматический запрос повторной передачи

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

Запрос ARQ с остановками (англ. stop-and-wait ARQ). Передатчик ожидает от приемника подтверждения успешного приема предыдущего блока данных перед тем, как начать передачу следующего. В случае, если блок данных был принят с ошибкой, приемник передает отрицательное подтверждение и передатчик повторяет передачу блока. Его недостатком является низкая скорость из-за высоких накладных расходов на ожидание. Непрерывный запрос ARQ с возвратом (continuous ARQ withpullback) Передача данных от передатчика к приемнику производится одновременно. В случае ошибки передача возобновляется, начиная с ошибочного блока (то есть передается ошибочный блок и все последующие). Осуществляется передача только ошибочно принятых блоков данных.

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

Коды обнаружения ошибок - могут только установить факт ошибки.

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

По способу работы с данными коды, исправляющие ошибки, бывают:

Блоковые:

Делят информацию на фрагменты постоянной длины и обрабатывают каждый

из них в отдельности. Блоковые коды делятся на:

- Линейные коды общего вида (Коды Хэмминга)

- Линейные циклические коды (Коды CRC, Коды БЧХ)

Свёрточные

Работают с данными как с непрерывным потоком.

Кодирование производится с помощью регистра сдвига

Декодирование производится по алгоритму Витерби

Методы защиты информации при передаче по каналам

Распространены следующие

Методы связи автоматического запроса:

Криптогра́фия — наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним), целостности данных (невозможности незаметного изменения информации), аутентификации (проверки подлинности авторства или иных свойств объекта), шифрования (кодировка данных).

Известные криптографические методы защиты информации можно разбить

на два класса:

1) Шифрование - обработка информации путем замены и перемещения букв, при котором объем данных не меняется

2) Кодирование - сжатие информации с помощью замены отдельных сочетаний букв, слов или фраз.

Требования алгоритмам шифрования

• Высокий уровень защиты данных против дешифрования и возможной модификации;

• Защищенность информации должна основываться только на знании ключа и не зависеть от того, известен алгоритм или нет (правило Киркхоффа)

• Малое изменение исходного текста или ключа должно приводить к значительному изменению шифрованного текста (эффект «обвала»)

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

• Экономичность реализации алгоритма при достаточном быстродействии

• Стоимость дешифрования данных без знания ключа должна превышать стоимость данных

Современные алгоритмы шифрования

  • Симметричное шифрование

  • Стандарт ГОСТ 28147-89

  • Стандарт AES

  • Асимметричное шифрование

  • Алгоритм RSA

Отказы электронной аппаратуры и их классификация

Классификация ошибок, отказов, сбоев и неисправностей в электроаппаратуре

Отказ аппаратуры это событие с полной или частичной утратой работоспособности ЭВМ (компьютера)

Отказ (failure) — событие, при наступлении которого объект не способен функционировать так, как это требуется согласно документации на него. Иначе говоря, это потеря способности изделия выполнить требуемую функцию.

Отказ является событием, которое приводит к состоянию неисправности [ 11 (к нарушению работоспособности) объекта.

Ошибка (error) — событие несоответствия между вычисленным, наблюдаемым или измеренным значением или состоянием и истинным, заданным или теоретически правильным значением или состоянием.

Критерий отказа (failurecriterion) — заранее оговоренные признаки нарушения работоспособного состояния, по которым принимают решение о факте наступления отказа.

Классификация отказов электроаппаратуры

Классификация ошибок, отказов, сбоев и неисправностей в электроаппаратуре

Внезапное это резкое изменение одного или нескольких параметров

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

Отказы могут быть зависимыми и независимыми

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

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

Методы предотвращения угроз надежности

-Предотвращения на стадии проектирования

CASE-технологии (Computer-AidedSoftware/SystemEngineering) — инструментальные средства, используемые при проектировании систем. CASE-технологии охватывают весь спектр работ по созданию и сопровождению программного обеспечения (главным образом, анализ и разработку, составление проектной документации, кодирование и тестирование системы).

CASE-технологии имеют ряд характерных особенностей:

  • обладают графическими средствами для проектирования и документирования модели информационной системы

  • имеют организованное специальным образом хранилище данных, содержащее информацию о версиях проекта и его отдельных компонентах

  • расширяют возможности для разработки систем за счет интеграции нескольких компонент CASE-технологий

Кроме того, классификацию кейсов, возможно, проводить по другим различным признакам:

1. По степени новизны ситуации и применяемым в зависимости от этого методам решений;

2. По этапам принятия решения, для обработки которых применено рассмотрение конкретных ситуаций;

3. По иерархическому уровню принятия решений (конкретная ситуация рассматривается и оценивается по-разному руководителями различного уровня);

4. По специализации (одна и та же ситуация может рассматриваться с позиций

различных специальностей по-разному);

5. По способу проведения занятий (методом инцендента, ролевой игры, производственной задачи, разбора почты и т. д.).

В зависимости от времени, выделенного для изучения кейса, и от уровня сложности содержания, можно различить 4 вида кейсов:

1) структурированный кейс (highlystructures) содержит минимум дополнительной информации, изучив которую, студент должен применить определённую модель или формулу, причём подразумевается, что существует оптимальное решение, и «полет фантазии» не вполне уместен;

2) «маленькие наброски» (shortvignettes) содержит от 1 до 10 страниц краткого описания некоторой ситуации, плюс 1-2 страницы приложений. Кейс содержит только ключевую информацию и понятия, работая с которыми, студент опирается ещё и на собственные знания;

3) классические кейсы - это небольшие по объёму и очень простые ситуации, которые можно использовать исключительно в начале курса;

4) большие неструктурированные кейсы (до 50 страниц) используются для

самостоятельных творческих заданий.

Процесс систематического тестирования и оценки (SystematicTestandEvalutionProcess)

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

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

Для этих целей используются следующие оперативные методы повышения надежности:

1. Временная избыточное;

2. Информационная избыточность;

3. Программная избыточность

Временная избыточность состоит в использовании некоторой части производительности компьютера для контроля исполнения программ и восстановления (рестарта) вычислительного процесса. Для этого при проектировании систем должен предусматриваться запас производительности, который будет использоваться на контроль и оперативное повышение надежности функционирования. Величина временной избыточности зависит от требований к надежности и находится в пределах от 5-10% производительности процессора до 3-4-кратного дублирования производительности отдельной машины в многопроцессорных вычислительных комплексах.

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

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

Классификация показателей качества ПО:

По кол-во характеризуемых свойств:

Единичные

Комплексные

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

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

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

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

Зависимости от места применения применяются различные методы оценки качества ПО

Если оцениваемая продукция имеет все относительные показатели качества Ki>=1, то ее уровень качества выше или равен базовому; если все Ki<1, то ниже.

Возможны случаи, когда часть значений Ki>=1, часть Ki<1. При этом необходимо все показатели разделить на две группы. В первую группу должны войти показатели, отражающие наиболее существенные свойства продукции, во вторую - второстепенные показатели.

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

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

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

Следующая группа показателей, зависящая от стадии определения значений

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

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

Производственные показатели оцениваются на всех технологических стадиях производства изделия.

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

. Вероятность безотказной работы P(tз) – это вероятность того, что в пределах заданной наработки отказ системы не возникает.

2. Вероятность отказа – вероятность того, что в пределах заданной наработки отказ системы возникает.

Это показатель, обратный предыдущему.

Q(t з) =1 – P(t з) (2.1)

где t з – заданная наработка, ч.;

Q(t з) – вероятность отказа.

3. Интенсивность отказов системы – это условная плотность вероятности возникновения отказа ПИ в определенный момент времени при условии, что до этого времени отказ не возник.

где f(t) – плотность вероятности отказа в момент времени t.

Существует следующая связь между интенсивностью отказов системы и вероятностью безотказной работы

В частном случае, при

Если в процессе тестирования фиксируется число отказов за определѐнный временной интервал, то интенсивность отказов системы есть число отказов в единицу времени.

Среднее время восстановления T - математическое ожидание времени восстановления - t; времени, затраченного на обнаружение и локализацию отказа - t ; времени устранения отказа - t ; времени пропускной проверки работоспособности - t : t = t + t + t , где t - время восстановления после i-го отказа. n T = i/nt , i=1 где n - количество отказов. Для этого показателя термин "время" означает время, затраченное специалистом по тестированию на перечисленные виды работ. 6. Коэффициент готовности K - вероятность того, что ПИ ожидается в работоспособном состоянии в произвольный момент времени его использования по назначению: K = T / (T + T ). Необходимо стремиться повышать уровень надежности ПИ, но достижение 100%-ной надежности лежит за пределами возможного. Количественные показатели надежности могут использоваться для оценки достигнутого уровня технологии программирования, для выбора метода проектирования будущего программного средства. Основным средством определения количественных показателей надежности являются модели надежности, под которыми понимают математическую модель, построенную для оценки зависимости надежности от заранее известных или оцененных в ходе создания программных средств параметров. 7. Все приведенные показатели надежности ПО характеризуют наличие ошибок программы (производственных дефектов), но ни один из них не характеризует характер этих ошибок и возможные их последствия. Поэтому предлагается ввести новый показатель надежности ПО – средняя тяжесть ошибок (СТО): B=1/Q СУММ(bi*pi*zi) ,(2.8) где Q – вероятность сбоя ПО; СУММ – оператор суммирования по переменной i; bi – функция принадлежности тяжести последствий ошибки, возникшей при i-ом наборе входных данных, к максимально тяжелым последствиям; pi – вероятность ввода i-го набора входных данных при эксплуатации ПО; zi – дихотомическая переменная, равная 1, если при i-ом наборе входных данных был зафиксирован сбой, и 0 в противном случае; m – общее число наборов входных данных. Значение показателя надежности СТО лежит на интервале [0;1]. Чем ближе значение СТО к единице, тем тяжелее последствия ошибок ПО, и тем менее надежна программа. Близость СТО к нулю показывает незначительность последствий ошибок программы. Введение нового показателя надежности ПО позволило различать по надежности программные продукты, вероятности сбоя которых имеют один и тот же порядок. К тому же, говоря о надежности ПО, пользователь желает получить не столько безошибочное ПО, сколько безопасное. А именно безопасность ПО характеризует СТО. Значение этого показателя субъективно и может быть различным для одного и того же программного продукта в зависимости от области его применения. Это объясняется тем, что при использовании конкретного ПО, например, для выполнения студенческих расчетов и для выполнения конструкторских расчетов в космической промышленности последствия ошибок программы – несопоставимы. В ряде случаев, если к ПО предъявляются жесткие требования, лучше оценивать максимальную тяжесть ошибок ПО. Таким образом, оценивая вероятность сбоя ПО и СТО ПО, получаем многостороннюю оценку надежности ПО

2.2. Методы оценки надежности технических средств

Расчетные методы оценки надежности

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

  1. Словесная формулировка условий работоспособности. Пусть дана структура некоторого тракта передачи данных, состоящего из элементов a,b,c,d,e (рис 2.2). Словесная формулировка минимально необходимых условий работоспособности тракта выглядит следующим образом: «Тракт работоспособен, если работоспособны каналы(элементы): 1) a иd, или 2) a, cи е, или 3)b и e, или 4)b, c и d».

  1. Запись логической функции работоспособности Fл. При записи логической функции работоспособности используются основные логические операции математической логики (рис. 2.3): дизъюнкция (ИЛИ), конъюнкция (И); отрицание(НЕ).

Таким образом, логическая функция работоспособности для рассматриваемого примера (см. рис. 2.2.) может быть представлена в виде

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

Используя 9-ю формулу, разложим исходную логическую функцию работоспособности Fлв целях исключения повторяющихся членов и получим:

Упростим выражение в первых фигурных скобках, используя 10-ю формулу (дистрибутивность) и 11-ю формулу(коммутативность):

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

  1. Замена в Fл логических операндов на арифметические (получение Fп). Замена осуществляется по следующим правилам

Используя эти правила, преобразуем Fл в Fп и получим функцию работоспособности в виде

  1. Замена в Fл простых событий их вероятностями. В выражения Fл простые события(высказывания) a, b, c, d, eзаменяют на их вероятности Pa, Pb, Pc, Pd, Pe, и получают формулы для расчета вероятности работоспособного состояния тракта передачи данных:

  1. Подстановка в полученную формулу для Р числовых значений вероятностей состояний элементов и получение численного значения Р.

Метод структурных преобразований в расчетах надёжностью

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

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

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

Рассмотрим декомпозицию структуры (см. рис. 2.2)на две более простые последовательно-параллельных структуры. В качестве ключевого элемента выбирается элемент с. Пусть элемент с находится в работоспособном состоянии. В этом случае вместо элемента с может быть поставлена жесткая связь и исходная структура может быть преобразована в более простую структуру 1, в которой элемент с подключен последовательно (рис. 2.4.)

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

Общее правило декомпозиции сложной структуры по ключевому элементу:

1) выбрать ключевой элемент (с наибольшим числом связей) – х;

2) в месте элемента х сделать замыкание цепи – это первая простая структура;

3) в месте расположения х сделать, обрыв цепи –это вторая простая структура;

4) вероятность безотказного состояния первой структуры умножить на вероятность безотказного состояния элемента х и получить Р1 = РРх;

5) вероятность безотказного состояния второй структуры умножить на вероятность отказа элемента х, т.е. получить Р2 = Р(1 – Рх);

6) суммировать вероятности Р1 и Р2 и получить вероятность работоспособного состояния исходной структуры.

Оценка надежности с учетом надежности программного обеспечения.

Методы расчета надежности ИС с учетом надежности ПО пока не регламентируются нормативно-техническими документами. Основная направленность и последовательность расчета программной надежности в принципе совпадает с методами расчета надежности ТС. На этапах разработки и отладки программ производится оценка их на соответствие требованием ТЗ. По результатам оцениваются характеристики надежности программ, которые должны отражать:

  • Интенсивность отказов программы (обнаруженную и прогнозируемую);

  • Вероятность безотказной работы реализации ПО (обнаруженную и прогнозируемую);

  • Прогнозируемое среднее время восстановления ПО после отказов.

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

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

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