Инструментальное средство для выявления пропущенных вызовов библиотеки OpenGL с использованием методов машинного обучения

Скрипачев, Антон Михайлович Кафедра информатики
Бесплатно
В избранное
Работа доступна по лицензии Creative Commons:«Attribution» 4.0

Введение…………………………………………………………………………………………………….. 6

1 Анализ методов и средств обеспечения надежности программ ……………………. 8

1.1 Надежность программного обеспечения ………………………………………………… 8

1.2 Ошибки в ПО …………………………………………………………………………………….. 12

1.3 Методы обеспечения надежности программного обеспечения ………………. 16

1.3.1 Тестирование ПО …………………………………………………………………………… 16

1.3.2 Статический анализ кода ………………………………………………………………… 18

1.4 Анализ существующих решений …………………………………………………………. 21

1.4.1 Система DMMC …………………………………………………………………………….. 21

1.4.2 Система PR-Miner ………………………………………………………………………….. 23

1.5 Предлагаемое решение ……………………………………………………………………….. 25

2 Разработка алгоритма статистического анализа для поиска пропущенных
вызовов функций на основе методов машинного обучения ………………………….. 27

2.1 Общая схема работы системы ……………………………………………………………… 27

2.2 Нейронные сети …………………………………………………………………………………. 31

2.2.1 Общая информация о нейронных сетях …………………………………………… 31

2.2.2 Виды нейронных сетей …………………………………………………………………… 37

2.2.3 Выбор вида нейронной сети ……………………………………………………………. 38

2.3 Рекуррентные нейронные сети…………………………………………………………….. 38

2.3.1 LSTM ……………………………………………………………………………………………. 39

2.3.2 GRU ……………………………………………………………………………………………… 40

2.3.3 Выбор вида рекуррентной нейронной сети ………………………………………. 40

2.4 Механизм нейронной сети ………………………………………………………………….. 41
3 Программная реализация инструмента для поиска пропущенных вызовов
функций ……………………………………………………………………………………………………. 42

3.1 Используемые программные средства …………………………………………………. 42

3.1.1 Qt ………………………………………………………………………………………………….. 42

3.1.2 LLVM……………………………………………………………………………………………. 44

3.1.3 SQLite …………………………………………………………………………………………… 45

3.1.4 Keras……………………………………………………………………………………………… 46

3.2 Разработка нейронной сети с использованием Keras …………………………….. 48

3.3 Разработка графического-пользовательского интерфейса ……………………… 60

3.4 Апробация инструмента для поиска пропущенных вызовов функций ……. 64

Заключение ………………………………………………………………………………………………. 67

Список использованных источников ………………………………………………………….. 68

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

В ходе данной работы был произведен обзор существующих решений по
поиску пропущенных вызовов функций. По результатам обзора было
определено, что на данный момент в открытых источниках не существует
инструментальных средств для поиска пропущенных вызовов функций.
Предложено в качестве метода машинного обучения для решения задачи
поиска пропущенных вызовов использование рекуррентных нейронных сетей на
основе управляемого рекуррентного блока.
На основе примеров исходного кода были сформированы обучающая и
тестовая выборка. Была разработана и обучена модель искусственной нейронной
сети и подобраны оптимальные параметры модели. На основе построенной
модели был разработано и протестировано инструментальное средство для
поиска пропущенных вызовов.
На основании полученных результатов была опровергнута гипотеза о
возможности решения задачи поиска пропущенных вызовов как задачи
многоклассовой классификации из-за низкой точности получаемых результатов
– 52,1 %. Однако, при рассмотрении не одного, а первых четырех результатов
модели точность является приемлемой – 83,2 %.
Возможные направления улучшения разработанного инструментального
средства:
– функция дообучения модели на основании корректировок от
пользователя;
– указание директории для анализа присутствующих в ней файлов в режиме
online;
– организация единого сервера с развернутой моделью искусственной
нейронной сети для централизации процесса дообучения;
– обнаружения нескольких пропущенных вызовов функций.

1 Карпович, Е. Е. Методология разработки программного обеспечения:
электронное пособие / Е. Е. Карпович. – Москва : Центр дистанционного
обучения. НИТУ «МИСиС», 2015. – 80 с.
2 Дроботун, Е. Б. Надежность программного обеспечения. виды и
критичность ошибок / Е. Б. Дроботун // Информационно-вычислительные
технологии в науке / Военная академия воздушно – космической обороны. –
Тверь. – 2009. – С. 55–59.
3 Ковалев, И. В. Анализ проблем в области исследования надежности
программного обеспечения: многоэтапность и архитектурный аспект / И. В.
Ковалев // Вестник СибГАУ. – 2014. – № 3. – С. 78–92.
4 Липаев, В. В. Программная инженерия. Методологические основы / В. В.
Липаев. – Москва : ТЕИС, 2006. – 605 с.
5 ГОСТ 27.002-2015. Надежность в технике. Основные понятия. Термины
и определения. – Введ. 01.03.2015. – Москва : Стандартинформ, 2015. – 23 с.
6 ГОСТ 19.004-80. ЕСПД. Термины и определения. – Введ. 01.07.1981. –
Москва : Стандартинформ, 1981. – 3 с.
7 Королев, А. Подсчет себестоимости часа разработки программного
обеспечения [Электронный ресурс] // Хабр. – Москва, 2015. – Режим доступа:
https://habr.com/ru/post/256537.
8 Якимов, И. А. Оптимизация читаемости порождаемых при символьных
вычислениях тестов / И. А. Якимов, А. С. Кузнецов, А. М. Скрипачев //
Сибирский журнал науки и технологий. – 2019. – Т. 20, № 1. – С. 35–41.
9 Макконнелл, С. Совершенный код. Практическое руководство по
разработке программного обеспечения / C. Макконнелл. Пер. с англ. – Москва :
Издательство «Русская редакция», 2010. – 896 c.
10 Martin Monperrus. Detecting Missing Method Calls in Object-Oriented
Software / Martin Monperrus, Marcel Bruch, Mira Mezini // Proceedings of the 24th
European Conference on Object-Oriented Programming. – 2010. – P. 25–28.
11 Zhenmin Li. PR-Miner: Automatically Extracting Implicit Programming
Rules and Detecting Violations in Large Software Code / Zhenmin Li, Yuanyuan Zhou
// European Software Engineering Conference and the ACM SIGSOFT Symposium on
the Foundations of Software Engineering. – 2005. – P. 10.
12 Флах, П. Машинное обучение. Наука и искусство построения
алгоритмов, которые извлекают знания из данных / П. Флах. Пер. с англ. –
Москва : Издательство «ДМК-Пресс», 2015. – 400 c.
13 Gösta Grahne. Efficiently Using Prefix-trees in Mining Frequent Itemsets /
Gösta Grahne, Jianfei Zhu // International Conference on Database and Expert Systems
Applications. – 2012. – P. 453–476.
14 Айвазян, С. А. Прикладная статистика: классификация и снижение
размерности / С. А. Айвазян, В. М. Бухштабер, И. С. Енюков, Л. Д. Мешалкин. –
Москва : Финансы и статистика. 1989. – 607 c.
15 Бринк Х. Машинное обучение / Х. Бринк, М. Феверолф, Д. Ричардс. Пер.
с англ. – Санкт-Петербург : Издательство «Питер», 2017. – 336 c.
16 ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных и
систем. Обозначения условные и правила выполнения. – Введ. 01.01.1992. –
Москва : Стандартинформ, 1992. – 22 с.
17 Николенко, С. И. Глубокое обучение. Погружение в мир нейронных
сетей / С. И. Николенко, Е. В. Архангельская, А. А. Кадурин. – Санкт-Петербург
: Издательство «Питер», 2018. – 480 c.
18 Якимов, И. А., Поиск недостающих вызовов библиотечных функций с
использованием машинного обучения / И. А. Якимов, А. С. Кузнецов // Труды
ИСП РАН. – 2017. – Т. 29, № 6. – С. 117–134.
19 Qt | Cross-platform software development for embedded & desktop / The Qt
company // Qt Group [сайт]. – Helsinki, 2019. – Режим доступа: https://www.qt.io.
20 The LLVM Compiler Infrastructure [Электронный ресурс] : сайт содержит
полную информацию о продукте LLVM. – Режим доступа: https://llvm.org.
21 SQLite Home Page [Электронный ресурс] : сайт содержит полную
информацию о системе управления базами данных SQLite. – Режим доступа:
https://www.sqlite.org/index.html.
22 Keras: The Python Deep Learning library : сайт содержит информацию об
открытой нейросетевой библиотеке Keras. – Режим доступа: https://keras.io.
23 Hale, J. Deep Learning Framework Power Scores 2018 [Электронный
ресурс] / J. Hale // Medium. – San Francisco, 2018. – Режим доступа:
https://towardsdatascience.com/deep-learning-framework-power-scores-2018-
23607ddf297a.
24 OpenGL – GLUT Program Sample Code [Электронный ресурс] : архив
содержит примеры исходного кода с использованием библиотеки OpenGL. –
Режимдоступа:
https://www.opengl.org/archives/resources/code/samples/glut_examples/examples/ex
amples.html.

Заказать новую

Лучшие эксперты сервиса ждут твоего задания

от 5 000 ₽

Не подошла эта работа?
Закажи новую работу, сделанную по твоим требованиям

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

    Последние выполненные заказы

    Хочешь уникальную работу?

    Больше 3 000 экспертов уже готовы начать работу над твоим проектом!

    Яна К. ТюмГУ 2004, ГМУ, выпускник
    5 (8 отзывов)
    Помощь в написании магистерских диссертаций, курсовых, контрольных работ, рефератов, статей, повышение уникальности текста(ручной рерайт), качественно и в срок, в соот... Читать все
    Помощь в написании магистерских диссертаций, курсовых, контрольных работ, рефератов, статей, повышение уникальности текста(ручной рерайт), качественно и в срок, в соответствии с Вашими требованиями.
    #Кандидатские #Магистерские
    12 Выполненных работ
    Алёна В. ВГПУ 2013, исторический, преподаватель
    4.2 (5 отзывов)
    Пишу дипломы, курсовые, диссертации по праву, а также истории и педагогике. Закончила исторический факультет ВГПУ. Имею высшее историческое и дополнительное юридическо... Читать все
    Пишу дипломы, курсовые, диссертации по праву, а также истории и педагогике. Закончила исторический факультет ВГПУ. Имею высшее историческое и дополнительное юридическое образование. В данный момент работаю преподавателем.
    #Кандидатские #Магистерские
    25 Выполненных работ
    Виктор В. Смоленская государственная медицинская академия 1997, Леч...
    4.7 (46 отзывов)
    Имеют опыт грамотного написания диссертационных работ по медицине, а также отдельных ее частей (литературный обзор, цели и задачи исследования, материалы и методы, выв... Читать все
    Имеют опыт грамотного написания диссертационных работ по медицине, а также отдельных ее частей (литературный обзор, цели и задачи исследования, материалы и методы, выводы).Пишу статьи в РИНЦ, ВАК.Оформление патентов от идеи до регистрации.
    #Кандидатские #Магистерские
    100 Выполненных работ
    Дарья Б. МГУ 2017, Журналистики, выпускник
    4.9 (35 отзывов)
    Привет! Меня зовут Даша, я окончила журфак МГУ с красным дипломом, защитила магистерскую диссертацию на филфаке. Работала журналистом, PR-менеджером в международных ко... Читать все
    Привет! Меня зовут Даша, я окончила журфак МГУ с красным дипломом, защитила магистерскую диссертацию на филфаке. Работала журналистом, PR-менеджером в международных компаниях, сейчас работаю редактором. Готова помогать вам с учёбой!
    #Кандидатские #Магистерские
    50 Выполненных работ
    Юлия К. ЮУрГУ (НИУ), г. Челябинск 2017, Институт естественных и т...
    5 (49 отзывов)
    Образование: ЮУрГУ (НИУ), Лингвистический центр, 2016 г. - диплом переводчика с английского языка (дополнительное образование); ЮУрГУ (НИУ), г. Челябинск, 2017 г. - ин... Читать все
    Образование: ЮУрГУ (НИУ), Лингвистический центр, 2016 г. - диплом переводчика с английского языка (дополнительное образование); ЮУрГУ (НИУ), г. Челябинск, 2017 г. - институт естественных и точных наук, защита диплома бакалавра по направлению элементоорганической химии; СПХФУ (СПХФА), 2020 г. - кафедра химической технологии, регулирование обращения лекарственных средств на фармацевтическом рынке, защита магистерской диссертации. При выполнении заказов на связи, отвечаю на все вопросы. Индивидуальный подход к каждому. Напишите - и мы договоримся!
    #Кандидатские #Магистерские
    55 Выполненных работ
    Анна К. ТГПУ им.ЛН.Толстого 2010, ФИСиГН, выпускник
    4.6 (30 отзывов)
    Я научный сотрудник федерального музея. Подрабатываю написанием студенческих работ уже 7 лет. 3 года назад начала писать диссертации. Работала на фирмы, а так же помог... Читать все
    Я научный сотрудник федерального музея. Подрабатываю написанием студенческих работ уже 7 лет. 3 года назад начала писать диссертации. Работала на фирмы, а так же помогала студентам, вышедшим на меня по рекомендации.
    #Кандидатские #Магистерские
    37 Выполненных работ
    Дмитрий М. БГАТУ 2001, электрификации, выпускник
    4.8 (17 отзывов)
    Помогаю с выполнением курсовых проектов и контрольных работ по электроснабжению, электроосвещению, электрическим машинам, электротехнике. Занимался наукой, писал стать... Читать все
    Помогаю с выполнением курсовых проектов и контрольных работ по электроснабжению, электроосвещению, электрическим машинам, электротехнике. Занимался наукой, писал статьи, патенты, кандидатскую диссертацию, преподавал. Занимаюсь этим с 2003.
    #Кандидатские #Магистерские
    19 Выполненных работ
    Татьяна П.
    4.2 (6 отзывов)
    Помогаю студентам с решением задач по ТОЭ и физике на протяжении 9 лет. Пишу диссертацию на соискание степени кандидата технических наук, имею опыт годовой стажировки ... Читать все
    Помогаю студентам с решением задач по ТОЭ и физике на протяжении 9 лет. Пишу диссертацию на соискание степени кандидата технических наук, имею опыт годовой стажировки в одном из крупнейших университетов Германии.
    #Кандидатские #Магистерские
    9 Выполненных работ
    Катерина М. кандидат наук, доцент
    4.9 (522 отзыва)
    Кандидат технических наук. Специализируюсь на выполнении работ по метрологии и стандартизации
    Кандидат технических наук. Специализируюсь на выполнении работ по метрологии и стандартизации
    #Кандидатские #Магистерские
    836 Выполненных работ

    Другие учебные работы по предмету

    Интеллектуальный анализ текстовых данных с rnприменением методов машинного обучения
    📅 2019 год
    🏢 Национальный исследовательский Томский политехнический университет (ТПУ)