- •Методы и средства анализа безопасности программного обеспечения
- •Общие замечания
- •Контрольно-испытательные методы анализа безопасности программного обеспечения
- •Логико-аналитические методы контроля безопасности программ
- •Сравнение логико-аналитических и контрольно-испытательных методов анализа безопасности программ
- •Способы тестирования программного обеспечения при испытаниях его на технологическую безопасность
- •Обобщенные способы анализа программных средств на предмет наличия (отсутствия) элементов разрушающих программных средств Статистические и динамические способы исследования по
- •Особенности исследования защищенного по
- •Описание способов проведения испытаний, оценки качества и сертификации программных средств
- •Состав методического обеспечения проведения испытаний программ
- •Состав инструментальных средств проведения испытания программ
- •Общая номенклатура показателей качества по
- •Выбор номенклатуры показателей качества
- •Оценка значений показателей качества по
- •Организационные вопросы проведения испытаний по
- •Методологические вопросы проведения испытаний по
- •Построение программно-аппаратных комплексов для контроля технологической безопасности программ Состав инструментальных средств контроля безопасности по при его разработке
- •Структура и принципы построения программно-аппаратных средств контрольно-испытательного стенда испытания технологической безопасности по
- •Метод расчета вероятности наличия рпс на этапе испытаний программного обеспечения вычислительных задач
- •Постановка задачи
- •Обоснование состава множества информативных характеристик
- •Алгоритмы приближенных вычислений вероятностных характеристик наличия в программах рпс
- •Алгоритм a
- •Алгоритм б
- •Обоснование критериев принятия решения о наличии в программе рпс
- •Подходы к исследованию сложных программных комплексов
- •Общие замечания
- •Анализ характеристик программных модулей с помощью управляющего графа
- •Алгоритм а
- •Определение характеристик взаимосвязи модулей и структурной сложности программ с учетом полного числа связей
- •Построение критических путей, подлежащих обязательному тестированию
- •Алгоритм б
Метод расчета вероятности наличия рпс на этапе испытаний программного обеспечения вычислительных задач
Постановка задачи
С точки зрения технологической безопасности тестирование должно позволять не только декларировать факт отсутствия в проверенных частях программных комплексов РПС, но и получать количественные характеристики, чаще всего вероятностные, существования таких дефектов в непроверенных программных компонентах. Данное утверждение справедливо для больших комплексов программ, полностью проверить все логические ветки которых не представляется возможным. К таким программам, в частности, можно отнести комплексы управления сложным технологическим процессом.
При исследовании сложных комплексов программ возникают существенные трудности использования известных методов детерминированного тестирования, связанные с необходимостью генерации входных наборов данных и расчета эталонных выходных данных. Использование метода стохастического тестирования упрощает генерацию входных данных, однако необходимость расчета эталонов сохраняется. Существенным при этом является то, что принципиально невозможно создать единый алгоритм расчета эталонов для различных тестируемых программ, что особенно характерно для программ, реализующих вычислительные алгоритмы.
Сущность вероятностного тестирования заключается в следующем. Исследуемая программа реализуется на наборах входных данных, представляющих собой случайные величины, распределенные по некоторому закону F(x). Для некоторого множества контрольных точек определяются вероятностные характеристики (ВХ) случайных величин, являющихся для этих точек выходными данными. Полученные ВХ сравниваются с эталонными ВХ, рассчитанными для данного закона распределения входных величин по заданному в спецификациях программы алгоритму, который данная программа реализует. В зависимости от степени совпадения экспериментально определенных ВХ с эталонными делается вывод об отсутствии в программе дефектов, преднамеренно внесенных на этапе ее создания. Необходимо отметить, что данный метод позволяет выявлять любые дефекты программы, в том числе и случайные ошибки. Однако использование стохастического тестирования наиболее целесообразно для тех участков сложных программных комплексов, для которых детерминированные методы требуют существенных по объему затрат на подготовку тестовых наборов данных. В то же время применение на этапе отладки программ более простых методов позволяет практически ликвидировать вероятность проявления случайных ошибок после завершения отладки и представления программного обеспечения на испытания.
Область применения метода вероятностного тестирования программ определяется в основном границами применимости математического аппарата, используемого для расчета эталонных вероятностных характеристик. Для программ, реализующих вычислительные функции, задача расчета вероятности наличия в программе РПС формулируется следующим образом [ЕУ].
Дано:алгоритмА, подлежащий реализации программойП, и требуемая достоверность результатов тестированияР0(вероятность наличия РПС в нетестируемых ветвях программы при заданном числе испытаний).
Требуется определить.
последовательность законов распределения F1(x),...,Fn(x),j=1,...,входных величинХ={xj}, при которой с вероятностьюРпргарантируется отсутствие в тестируемой программе РПС; при этом с вероятностьюР0такие дефекты могут иметь место в нетестированных участках программы;
множество контрольных точек (КТi),i=1,...,k, в которых определяется экспериментальное распределение выходных величин;
множество Giвероятностных характеристик, снимаемых с заданного множества КТ;
множество величин Liтаких, что если существуетi, что (Giэкс-Giэт>Li), то программа содержит дефекты с вероятностьюР0или не содержит их с вероятностьюРпр.
Для решения данной задачи необходимо использовать методику, основанную на модификации метода вероятностного тестирования и позволяющую последовательно решить следующие частные задачи: определить множество информативных характеристик Giслучайных величин, снимаемых с некоторого множества КТiисследуемой программы; определить критерии принятия решения о наличии дефектов в программеП, обеспечивающих заданную достоверность такого решения.