История проблемы надежности и сертификации ПО
История проблемы надежности и сертификации ПО
Проблемы надежности ПО
1. Оценка надежности ПО.
2. Определение факторов, влияющих на достижение заданной надежности.
3. Совершенствование методов повышения надежности в процессе проектирования и в процессе эксплуатации разработанного ПО.
Направления исследований в вопросе надежности ПО
1. Обоснование интуитивного представления о надежности ПО.
2. Разработка методов, обеспечивающих достижение заданного уровня надежности.
Проблемы эталонов
Во многих случаях имеются эталонные изделия, с которыми сравниваются вновь изготовленные. Такое сравнение позволяет в статике выявить ошибки тиражирования. При этом ошибки проектирования сохраняются соответственно эталонному изделию.
Тиражирование программ может производится очень точно, а их физическое разрушение маловероятно и легко устранимо. Однако выявление ошибок в проектировании программ невозможно создать абсолютно эталонным, сравнивая с которым каждую программу в статике можно было бы обнаружить отличие и классифицировать его как отказ. В процессе отладки и испытания программ устраняются многие ошибки и программы приближаются к идеальным. Однако степень их приближения остается неизвестной и копии программ содержат ошибки эталонной программы.
См. также «2. Основные задачи в области надежности ПО»
2. Основные задачи в области надежности и сертификации ПО
1. Классификация ошибок
1.1. Организация систем сбора данных
1.2. Рекомендации по совершенствованию
1.3. Построение модели
2. Верификация программ
2.1. Статическая верификация
2.2. Динамическая верификация
3. Тестирование
3.1. Выбор тестов
3.2. Управление тестированием
4. Защита информации
5. Защита вычислительного процесса
3. Понятия и определения надежности ПО
Система – совокупность подсистем, функционально объединенных в соответствии с некоторым алгоритмом взаимодействия в процессе применения по назначению.
Программная ошибка – это когда программа работает не так, как предполагает пользователь, т.е. программная ошибка не является неотъемлемым свойством программы.
Надежность ПО (применительно к сложным системам) – свойство системы выполнять заданные функции, сохраняя во времени значения установленных эксплуатационных показателей в заданных.
Надежность ПО – это вероятность того, что программа какой-то период времени будет работать без сбоев, с учетом степени их влияния на выходные характеристики.
Ошибки ПО зависят от входной информации и состояния системы.
Надежность ПО базируется на понятиях корректности и устойчивости.
Программа считается корректной, если она выполняет запланированные действия и не имеет побочных эффектов. Корректность – узкое понятие, т.к. ее полная проверка для большинства программных систем практически невыполнима. Если ПО удовлетворяет своей спецификации, то оно корректно. Возможна ситуация, когда программа корректна с точки зрения разработчика, но не корректна с точки зрения пользователя. Систему можно считать надежной, если велика вероятность того, что при обращении к ней можно получить требуемую услугу.
Под устойчивостью программы понимается ее способность правильно выполнять правильное действие при наличии отказов в работе аппаратуры и ошибках в исходных данных. При оценке устойчивости должны быть заданы параметры окружающей среды, по отношению к которым программа должна быть устойчивой.
Под надежностью ПО понимается свойство ПО выполнять предписанные функции в соответствии с требованиями заказчика при определенных условиях функционирования в течении заданного времени и обусловленное корректностью и устойчивостью.
Модель типа «К из N»
– вероятность безотказной работы всей системы.
– вероятность безотказной работы одного элемента
Экспоненциальная модель
– вероятность безотказной работы одного элемента.
– интенсивность отказов i-ой подсистемы.
t – время.
Ошибки
1. Одна из способностей человека – понимать входную информацию, сопоставляя ее с образами, созданными образованием и жизненным опытом. Человек читает документ А и видит то, что хочет, а не то, что написано, пытается восстановить недостающие факты или не понимает информацию. Ошибки могут присутствовать и в самом документе А.
2. В большинстве случаев, чтобы правильно запомнить информацию надо ее понять. Ошибки появляются в результате неправильной интерпретации или полного непонимания входной информации. Информация может быть слишком сложной или двусмысленной, образовательный уровень человека может оказаться недостаточно высоким.
3. Человек может забыть входную информацию А либо точные правила выполнения перевода. Слабость других умственных способностей, таких как четкость мышления, также способствует появлению ошибок.
4. Многие не умеют ясно писать или выражать свои мысли, это затуманивает смысл их сообщений. Если количество выходной информации велико человека начинает использовать сокращения либо предполагает, что факты будут интуитивно очевидны. Это увеличивает вероятность того, что следующий участник процесса разработки при переводе совершит ошибки.
Классификация ошибок ПО
Где произошла ошибка?
1.1. Персонал
1.1.1.Структура
1.1.2.Процедура
1.2. Оборудование
1.2.1.Компьютер
Перечень оборудования и интерфейсов
1.2.2.Связь
Содержит информацию о внешнем оборудовании, включая линии связи.
1.2.3.Сопровождающее обеспечение
1.3. ПО
1.3.1.Внутреннее ПО
Языковой процессор, загрузчик, редактор связей, утилиты.
1.3.2.Применение
Это размеры, смежные модули, область применения. Каждый из этих разделов обеспечивает идентификацию относящихся к ним программ по имени, номеру версии и т.д.
На что похожа ошибка?
2.1. ПО
2.1.1.Внутреннее ПО
ОС, редактор связей, загрузчик, утилиты.
2.1.2.Применение
Каждый ошибочный элемент характеризуется именем, номером версии и будет специфицировать любой ошибочный код и любое диагностическое сообщение, являющееся следствием данной ошибки элемента.
2.2. Функции
Категория функций идентифицирует с помощью имени точку, в которой зафиксирована ошибка.
2.2.1.Процедура
2.2.2.Использование ресурса
При использовании ресурсов наиболее критичными ошибками являются:
· неправильное использование терминальных устройств;
· ошибки синхронизации;
· ошибки в описании форматов вводимой и выводимой информации.
2.3. Ресурсы
2.3.1.Имя
2.3.2.Использование ресурса
2.4. Область
2.4.1.Структура программы
2.4.2.Приложение
Как была сделана ошибка?
3.1. Данные
3.1.2.Входные
3.1.3.Внутренние
3.2. Процедуры
3.2.2.Вычисление
3.2.3.Контроль
3.2.4.Интерфейс
Когда была сделана ошибка?
4.1. Начальная разработка
4.2. Внедрение
4.3. Функционирование
Почему произошла ошибка?
5.1.Механические
5.1.1. Подстановка
5.1.2.Путаница
5.1.3.Пропуск
5.2. Умственные
5.3. Коммуникационные
5.3.2.Персонал
5.3.3.Документация
Целью задачи классификации ошибок ПО является создание методов упорядочивания информации о программных ошибках с тем, чтобы на основе этой информации выяснить причины, породившие ненадежность и о путях их предупреждения.
12. Классификация моделей надежности ПО
Имитационные модели
Модели имитируют процессы появления ошибок, процесс обнаружения ошибок, процесс исправления ошибок с точки зрения надежности ПО. Часто программу представляют как последовательность узлов, дуг и петель ориентированного графа.
Модель Шумана
Вводится ряд допущений и условий, основным из которых является условие существования программы исследователя системы. Остальные допущения и условия не связаны с какими-то специфическими свойствами ПО.
Условия сводятся к следующему:
1. Предполагается, что в начальный момент компоновки программных средств системы в них имеются небольшие ошибки (Е – количество ошибок). С этого времени отсчитывается время отладки , которое включает затраты времени на выявление ошибок с помощью тестов, на контрольные проверки и т.д. При этом время исправного функционирования системы не учитывается. В течение времени устанавливается ошибок в расчете на одну команду машинного языка. Т.о. удельное число ошибок на одну машинную команду остающихся в системе после времени работы равно
I – общее число машинных команд.
2. Предполагается, что значение функции частоты или интенсивности отказов пропорциональна числу ошибок, оставшихся в ПО после израсходования на отладку времени , то есть:
C – коэффициент пропорциональности.
Тогда, если время работы системы t отсчитывается от момента времени t0, а остается фиксированным ( =const), то функция надежности или вероятность безотказной работы на интервале времени от 0 до t есть
Для нахождения С и Е используются принцип максимального правдоподобия (пропорция).
Модель Джелинского-Моранды
Модель с дискретным убыванием интенсивности отказов. В этой модели предполагается, что интенсивность ошибок описывается кусочно-постоянной функцией, пропорциональной числу не устраненных ошибок. Т.е. предполагается, что интенсивность отказов постоянна до обнаружения и исправления ошибки, после чего она опять становится постоянной, но с другим, меньшим, значением. При этом предполагается, что между и числом оставшихся в программе ошибок существует прямая зависимость:
M – неизвестное первоначальное число ошибок
i – число обнаруженных ошибок, зависящих от времени t
k – константа
Частота обнаружения i-ой ошибки задается соотношением
Значения неизвестных параметров k и M может быть оценено на основе последовательности наблюдений интервалов между моментами обнаружения ошибок по методу максимального правдоподобия.
Модель Миллса
Модель можно использовать для сертификации ПО. В модели не используются предположения о поведении функции риска . Модель строится на твердом статистическом фундаменте.
Сначала программа «засоряется» некоторым количеством известных ошибок. Эти ошибки вносятся в программу случайным образом, а затем делается предположение, что для ее собственных и внесенных ошибок вероятность обнаружения одинакова и зависит только от их количества.
N – первоначальное число ошибок в программе.
S – количество внесенных ошибок.
(n+V) – количество ошибок, обнаруженное при тестировании.
n – число собственных ошибок
V – число внесенных ошибок
Оценка для N по методу максимального правдоподобия:
N можно оценивать после каждой ошибки. Миллс предлагает во время всего периода тестирования отмечать на графике число найденных ошибок и текущие оценки для N.
Вторая часть модели связана с выдвижением и проверкой гипотез о N.
Примем, что программе имеется не более k собственных ошибок и внесем в нее еще S ошибок. Теперь программа тестируется, пока не будут обнаружены все внесенные ошибки.
С – мера доверия к модели – вероятность того, что модель будет правильно
отклонять ложные предположения.
Минусы модели
С нельзя предсказать до тех пор, пока не будут обнаружены все внесенные ошибки, это может не произойти до самого конца этапа тестирования.
Модификация формулы для С, если не все ошибки обнаружены:
j – найденные внесенные ошибки, j < S
Модель математически проста и интуитивно привлекательна. Легко представить программу внесения ошибок, которая случайным образом выбирает модуль и вносит логические ошибки, изменяя или убирая операторы. Природа внесения ошибок должна оставаться в тайне, но все их следует регистрировать с целью последующего деления на собственные и несобственные.
Процесс внесения ошибок является самым слабым местом модели, поскольку предполагается, что для собственных и внесенных ошибок вероятность обнаружения одинакова, но неизвестна. Отсюда следует, что внесенные ошибки должны быть типичными, но на сегодня непонятно какими именно они должны быть. Однако по сравнению с проблемами других моделей эта проблема кажется не очень сложной и разрешимой.
Понятие сертификации ПО
Сопоставление того, что заявляет о программе разработчик и того, что на самом деле.
Центры сертификации…
Сертификаты…
Оценка надежности характеристик…
История проблемы надежности и сертификации ПО
Проблемы надежности ПО
1. Оценка надежности ПО.
2. Определение факторов, влияющих на достижение заданной надежности.
3. Совершенствование методов повышения надежности в процессе проектирования и в процессе эксплуатации разработанного ПО.