УДК 621.322 Марков Г.А.
ЗАО «НПО «Эшелон», Москва, Россия
ПЛАНИРОВАНИЕ ИСПЫТАНИЙ ПРОГРАММ С ОТКРЫТЫМ КОДОМ С ПОМОЩЬЮ НЕЙРОСЕТЕВЫХ ТЕХНОЛОГИЙ
Введение
При разработке и испытаниях программного обеспечения (ПО), в большинстве случаев, принято считать, что надежность данного ПО монотонно возрастает. Обычно графически это представляют в экспоненциальном виде. Уже имеется множество моделей по оценке такого ПО, но мало кто поднимал тему оценки надежности открытого программного обеспечения, чья разработка происходит немного иначе, что сказывается и на его надежности. В связи с мало изученностью моделей оценки надежности именно открытого ПО в данной работе предложен вариант решения указанной проблемы при помощи нейронных сетей.
Актуальность
В настоящее время разработка ПО с открытым кодом (ОПО) широко развилась в ИТ-направлении. При этом вопросы оценки надежности и безопасности функционирования ОПО остаются актуальными по ряду причин. Так, особенность создания ОПО заключается в том, что в разработке и модификации участвуют совершенно различные группы программистов, которые используют различные стили, методы, уровни программирования и отладки, обладают различным опытом и квалификацией, технической поддержкой и т.д. Данные программы создаются в разное время, могут тестироваться различными способами и т.д. Замечено, что рост надежности таких программ имеет не имеет монотонный характер. Вследствие этого возникает сложность использования известных вероятностных моделей роста надежности (основанных на заранее определенных законах распределения) для оценки надежности и безопасности различных версий и реализаций ОПО и его компонентов. Для решения указанной проблемы проведено исследование возможностей технологий нейронных сетей.
Надежность программного обеспечения
Под надежностью программного обеспечения понимается способность программного продукта безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени. Степень надежности, как правило, характеризуется вероятностью работы программного продукта без отказа в течение определенного периода времени.
В литературе встречаются различные классификации моделей роста надежности, например:
- марковские, полумарковские и пуассоновские модели роста надежности от времени,
- отладочные модели роста надежности по результатам доработок [1, 2].
К недостаткам указанных моделей относят их монотонно-возрастающий вид, что не всегда соответствует реальному жизненному циклу программного обеспечения, в частности ОПО [2-5, 12] .
Нейронные сети
Искусственные нейронные сети (НС) - совокупность моделей биологических нейронных сетей. НС
представляют собой сеть элементов (искусственных нейронов), связанных между собой синоптическими соединениями [б]. Сеть обрабатывает входную информацию и в процессе изменения своего состояния во времени формирует совокупность выходных сигналов. Работа НС состоит в преобразовании входных сигналов во времени, в результате чего меняется внутреннее состояние сети и формируются выходные воздействия. Обычно НС оперирует цифровыми, а не символьными величинами.
Выделим характерные черты искусственных нейросетей как универсального инструмента для решения задач, например, НС представляют гибкую модель для нелинейной аппроксимации многомерных функций, НС могут выступать средством средство прогнозирования во времени для процессов, зависящих от многих переменных, НС свободны от ограничений обычных компьютеров благодаря параллельной обработке и сильной связанности нейронов и др. [6-10, 13] .
Обычно сеть состоит из произвольного количества слоев нейронов. Нейроны каждого слоя соединяются с нейронами предыдущего и последующего слоев по принципу "каждый с каждым"(рис.1).
входной
(распределительный)
псевдослой
скрытые (промежуточные) слои
выходной
слой
У1 У2
уз
у
уп
Рисунок 1. Многослойная сеть Обзор пакета Neuroshell2
Для выполнения данной работы был выбран пакет Neuroshell2, как наиболее подходящий [11]. Рассмотрим основные его особенности.
выходные сигналы
Главное меню программы позволяет использовать NeuroShell 2 тремя различными способами: как
«Систему для начинающего», как «Систему для профессионала», или как «Систему автономного использования». Все три системы состоят из подпрограмм, называемых "модулями". Большинству пользователей следует начинать с «Системы для начинающего».
Модуль "Нейронные сети для начинающего" представляет собой упрощенный набор процедур для построения и использования законченного, эффективного приложения на основе нейронной сети в рамках системы, работа с которой проще, чем работа с Системой для профессионала.
«Система для начинающего» использует трехслойную сеть с обратным распространением ошибки. «Система для начинающего» автоматически устанавливает параметры сети, такие, как скорость обучения, момент и количество скрытых нейронов.
Вы вводите данные, указываете входы и выходы и тренируете сеть. Затем Вы можете применить натренированную сеть к новым данным и экспортировать результаты.
«Система для профессионала» предоставляет опытному пользователю нейронных сетей возможность создавать и применять нейронные сети множества разнообразных архитектур при более тщательном контроле за процессом со стороны пользователя по сравнению с «Системой для начинающего».
Средства автономного использования позволят применять сеть независимо от NeuroShell 2. Например, «Генератор автономных файлов» обеспечивает средствами применения сети в реальном времени из программы, написанной на Visual Basic, Access Basic, Паскале, Си или на других языках. «Генератор программного кода» создает программный код для применения сетей небольшого или среднего размера, построенных с помощью NeuroShell 2.
Методика исследования
Основное назначение исследования заключается в изучении нейросетевых технологий с помощью программного пакета Neuroshell2, в сборе и подготовке статистики, исследовании различных нейросетевых технологий, анализе точности моделирования нейросетевых технологий, сравнении результата с известными математическими моделями.
Результаты исследования
Результаты работы показали возможность использования нейросетевых технологий при оценки и планирования испытаний программ. Начальные данные представлены на рис.2:
Рисунок 2. Исходные данные(количество успешных испытаний в течении времени)
Для начала задача решалась на системе для новичков, рассматривая различия результатов при изменении количества нейронов. Также перед обучением ставились разные параметры данных (как их представляет система: «легкие», «сложные» и «очень сложные»).
В данной системе пакет не справился с поставленной задачей, не смотря на применение различных комбинаций параметров. Настраивались различное количество нейроннов, сложность данных, время обучения и пр.
Далее задача решалась при помощи «модуля для профессионала».
В пакете имеется большой выбор топологий сетей. Показ всех результатов приведёт к большому объему статьи, поэтому ниже представлены лучшие результаты.
Результаты исследования простых сетей, когда каждый слой соединен только с предыдущим (использовались четыре слоя), представлены на рис.3.
Результат использования сетей с предшествующим, представлен на рис.
обходными 4 .
соединениями
когда каждый слой соединен с каждым
Результат использования рекуррентных сетей с отрицательной обратной связью показаны на рис.5.
Пример 5. Рекуррентные сети с отрицательной обратной связью
Выводы
Проведенное исследование подтвердило возможность использования нейронных сетей для решения задач оценки надежности программного обеспечения. Что касается нейросетевого пакета Neuroshell 2, то пакет справился с задачей, а, следовательно, нейронные сети хороший вариант для решения задач оценки надежности ОПО.
Исследование продемонстрировало, что лучше всего с поставленной задачей справилась простая 4-х слойная сеть, а также сети с обходными соединениями.
ЛИТЕРАТУРА
1. Методы оценки несоответствия средств защиты информации / А.С.Марков, В.Л.Цирлов, А.В.Барабанов; под ред. А.С.Маркова. - М.: Радио и связь, 2012. 192 с.
2. Марков А.С. Модели оценки и планирования испытаний программных средств по требованиям безопасности информации // Вестник Московского государственного технического университета им. Н.Э. Баумана. Серия: Приборостроение. 2011. № SPEC. С. 90-103.
3. Барабанов А.В. Стандартизация процесса разработки безопасных программных средств // Вопросы кибербезопасности. 2013. № 1(1). С.37-41.
4. Волканов Д.Ю., Зорин Д.А. Исследование применимости моделей оценки надежности для разработки программного обеспечения с открытым исходным кодом // Прикладная информатика. 2011. № 2. C.26-32 .
5. Марков А.С., Цирлов В.Л. Опыт выявления уязвимостей в зарубежных программных продуктах // Вопросы кибербезопасности. 2013. № 1(1). С.42-48.
6. Галушкин А.И., Цыпкин Я.З. Нейронные сети: история развития теории М.: ИПРЖР, 2001. 800 с.
7. Головко В.А. Нейронные сети: обучение, организация и применение. М.: ИПРЖР, 2001. 256 c.
8. Комарцова Л.Г., Максимов А.В. Нейрокомпьютеры. М.: Изд-во МГТУ им.Баумана, 2004. 400 с.
9. Тархов Д.А. Нейронные сети. Модели и алгоритмы: Справочник. М.: Радиотехника, 2005. 256 c.
10. Хайкин С. Нейронные сети: полный курс. 2-е изд. М.: "Вильямс", 2006. 1004 с.
11. Основные возможности NeuroShell Trader Release 6.0 и Power User. URL: http://tol64.blogspot.com/2012/06/neuroshell-trader-release-60-power-user.html (Дата обраще-ния: 1.04.2014) .
12. Волчихин В.И., Тарасов А.К., Авдонина Л. А. Проблема безопасности программных средств // Труды международного симпозиума Надежность и качество. 2012. Т. 2. С. 475-476.
13. Малыш В.Н., Федерякин А.В. Обеспечение информационной безопасности научно-методического портала при помощи искусственных нейронных сетей // Труды международного симпозиума Надежность и качество. 2009. Т. 1. С. 227-230.