Исследование и разработка системы автоматического обнаружения дефектов в исходном коде программного обеспечения
Стадии проекта
Предложение принято
Конкурс завершен
Проект закончен
Проект
02.514.11.4081
Продолжительность работ
2008 - 2009, 15 мес.
Бюджетные средства
18,3 млн
Внебюджетные средства
3,12 млн
Конкурс
Исследование и разработка системы автоматического обнаружения дефектов в исходном коде программного обеспечения.
Исследование и разработка методики автоматического обнаружения уязвимостей защиты и других критических ошибок в исходном коде на языках Си/Си++ и поддерживающих ее алгоритмов. Разработка экспериментального образца системы автоматического обнаружения дефектов в программах.
Этапы проекта
1
08.08.2008 - 31.10.2008
• Осуществлены патентные исследования
• Проведён выбор и обоснование принятых направлений исследований и способов решения задач анализа исходного кода программного систем.
• Проанализированы стандарты в области уязвимостей программных систем и проведена классификация дефектов и уязвимостей программного обеспечения.
• Исследованы существующие методы анализа программного обеспечения, в частности, методы автоматизированного выявления уязвимостей в исходном коде.
• Проведено сопоставление ожидаемых показателей системы обнаружения дефектов, реализующей результаты НИР, и показателей существующих систем.
• Разработана общая методика проведения исследований.
• Проведена Экспертная оценка характеристик специфицированных средств обнаружения дефектов
• Проведены мероприятия по участию в научно-технической конференции, начаты работы по подготовке диссертационной работы, публикаций.
• Подготовлена отчетная документация за первый этап работ.
• Проведён выбор и обоснование принятых направлений исследований и способов решения задач анализа исходного кода программного систем.
• Проанализированы стандарты в области уязвимостей программных систем и проведена классификация дефектов и уязвимостей программного обеспечения.
• Исследованы существующие методы анализа программного обеспечения, в частности, методы автоматизированного выявления уязвимостей в исходном коде.
• Проведено сопоставление ожидаемых показателей системы обнаружения дефектов, реализующей результаты НИР, и показателей существующих систем.
• Разработана общая методика проведения исследований.
• Проведена Экспертная оценка характеристик специфицированных средств обнаружения дефектов
• Проведены мероприятия по участию в научно-технической конференции, начаты работы по подготовке диссертационной работы, публикаций.
• Подготовлена отчетная документация за первый этап работ.
2
01.11.2008 - 31.12.2008
2.1. Результаты работы на отчетном этапе:
• уточнено множество дефектов, обнаруживаемых с помощью экспериментального образца;
• в качестве базовой теории для решения задачи поиска специфицированных дефектов выбрана теория решеток;
• разработана модель исходного кода программы, включающая:
a. SSA-представление исходного кода (Static Single Assignment), характеризующееся сокращенным набором инструкций управления потоком исполнения, однократным присваиванием для каждой переменной, использованием трёхоперандного кода для записи операций;
b. дополнительную информацию об объявлениях глобальных и статических переменных, используемых типах, сигнатурах функций, именах полей структур, классов, объединений;
c. семантические дуги (например, связывающие вызовы функций с их определениями).
• предложено расширение модели программы за счет внесения дополнительной информации с помощью аннотирования функций и ресурсов программы;
• предложен метод обнаружения дефектов в исходном коде на языках C/C++, включающая в себя:
a. разбор исходного кода и представление его в виде абстрактного синтаксического дерева;
b. построение модели исходного кода программы на основе SSA-представления;
c. итеративный алгоритм, представляющий собой последовательное выполнение базовых алгоритмов анализа;
d. базовые алгоритмы: алгоритм интервального анализа, алгоритм анализа указателей на объекты и функции и алгоритм построения графа потока управления;
e. использование репозитория объектов, обеспечивающего хранение результатов анализа и обеспечивающего взаимодействие между отдельными алгоритмами;
f. алгоритм восстановления путей, уточняющий решения, полученные базовыми алгоритмами анализа;
g. алгоритмы обнаружения специфицированных дефектов.
• проведена оценка вычислительной сложности разработанных алгоритмов (необходимое время анализа на данном этапе оценивается единицами часов для программы, содержащей до ста тысяч строк исходного кода);
• выполнена оценка возможности применения разработанного метода для других языков программирования, а именно, для языков Pascal/Delphi, Java, C#.
2.2. Новизна научных, конструкторских или технологических решений в сравнении с другими работами, родственными по тематике и целевому назначению и определяющими мировой уровень:
• разработаны алгоритмы анализа указателей и интервального анализа, обеспечивающие полный и точный анализ программ;
• предложены пути повышения эффективности поиска дефектов, а именно:
o итеративный алгоритм на основе базовых алгоритмов, позволяющий гибко варьировать соотношение между точностью обнаружения дефектов и временем выполнения анализа;
o алгоритм восстановления путей, позволяющий повысить точность получаемых результатов;
o для обеспечения анализа сложных конструкций языков C/C++ разработаны эвристики;
o для ограничения вычислительной сложности разработанные алгоритмы предусматривают параметризацию.
2.3. Особенности исследования, разработки, метода или методологии проведения работы на отчетном этапе: выполнялись теоретические исследования поставленных задач, включающие в себя разработку метода, модели и алгоритмов обнаружения дефектов в исходного коде на языке C/C++.
2.4. Объекты интеллектуальной собственности, созданные на отчетном этапе: отсутствуют.
• уточнено множество дефектов, обнаруживаемых с помощью экспериментального образца;
• в качестве базовой теории для решения задачи поиска специфицированных дефектов выбрана теория решеток;
• разработана модель исходного кода программы, включающая:
a. SSA-представление исходного кода (Static Single Assignment), характеризующееся сокращенным набором инструкций управления потоком исполнения, однократным присваиванием для каждой переменной, использованием трёхоперандного кода для записи операций;
b. дополнительную информацию об объявлениях глобальных и статических переменных, используемых типах, сигнатурах функций, именах полей структур, классов, объединений;
c. семантические дуги (например, связывающие вызовы функций с их определениями).
• предложено расширение модели программы за счет внесения дополнительной информации с помощью аннотирования функций и ресурсов программы;
• предложен метод обнаружения дефектов в исходном коде на языках C/C++, включающая в себя:
a. разбор исходного кода и представление его в виде абстрактного синтаксического дерева;
b. построение модели исходного кода программы на основе SSA-представления;
c. итеративный алгоритм, представляющий собой последовательное выполнение базовых алгоритмов анализа;
d. базовые алгоритмы: алгоритм интервального анализа, алгоритм анализа указателей на объекты и функции и алгоритм построения графа потока управления;
e. использование репозитория объектов, обеспечивающего хранение результатов анализа и обеспечивающего взаимодействие между отдельными алгоритмами;
f. алгоритм восстановления путей, уточняющий решения, полученные базовыми алгоритмами анализа;
g. алгоритмы обнаружения специфицированных дефектов.
• проведена оценка вычислительной сложности разработанных алгоритмов (необходимое время анализа на данном этапе оценивается единицами часов для программы, содержащей до ста тысяч строк исходного кода);
• выполнена оценка возможности применения разработанного метода для других языков программирования, а именно, для языков Pascal/Delphi, Java, C#.
2.2. Новизна научных, конструкторских или технологических решений в сравнении с другими работами, родственными по тематике и целевому назначению и определяющими мировой уровень:
• разработаны алгоритмы анализа указателей и интервального анализа, обеспечивающие полный и точный анализ программ;
• предложены пути повышения эффективности поиска дефектов, а именно:
o итеративный алгоритм на основе базовых алгоритмов, позволяющий гибко варьировать соотношение между точностью обнаружения дефектов и временем выполнения анализа;
o алгоритм восстановления путей, позволяющий повысить точность получаемых результатов;
o для обеспечения анализа сложных конструкций языков C/C++ разработаны эвристики;
o для ограничения вычислительной сложности разработанные алгоритмы предусматривают параметризацию.
2.3. Особенности исследования, разработки, метода или методологии проведения работы на отчетном этапе: выполнялись теоретические исследования поставленных задач, включающие в себя разработку метода, модели и алгоритмов обнаружения дефектов в исходного коде на языке C/C++.
2.4. Объекты интеллектуальной собственности, созданные на отчетном этапе: отсутствуют.
3
01.01.2009 - 31.07.2009
Разработан экспериментальный образец САОД. Проведены экспериментальные исследования экспериментального образца САОД. Проведена доработка экспериментального образца САОД по результатам экспериментальных исследований.
4
01.08.2009 - 30.11.2009
Реализована подсистема формирования отчетов об обнаруженных дефектах. Проведена оценка полноты решения задач и эффективности полученных результатов в сравнении с современным научно-техническим уровнем. Проведена оценка возможности создания конкурентоспособной системы автоматического обнаружения дефектов и разработаны рекомендации по использованию результатов проведенных НИР. Реализованы мероприятия по достижению технико-экономических показателей. Разработан проект ТЗ на выполнение ОКР
Программа
Программа "Исследования и разработки по приоритетным направлениям развития научно-технологического комплекса России на 2007-2013 годы"
Программное мероприятие
1.4 Проведение проблемно-ориентированных поисковых исследований и создание научно-технического задела по перспективным технологиям в области информационно-телекоммуникационных систем
Разработка программных средств параллельной обработки и комплексирования двумерных и трехмерных данных для автоматического обнаружения и распознавания объектов
Продолжительность работ
2014 - 2016, 25 мес.
Бюджетные средства
32,41 млн
Организация
ООО "ПАВЛИН Техно"
профинансировано
Разработка интеллектуальных алгоритмов обнаружения и распознавания дорожных ситуаций для бортовых систем беспилотных летательных аппаратов, осуществляющих автоматическое патрулирование транспортных магистралей с применением ГЛОНАСС
Продолжительность работ
2014 - 2016, 27 мес.
Бюджетные средства
19,15 млн
Организация
ООО "ПАВЛИН Техно"
профинансировано
Исследование и разработка методов,обеспечивающих возможность автоматического обнаружения логических ошибок и шаблонов неэффективного поведения в параллельных приложениях и их реализации в web-среде в виде программного комплекса
профинансировано
Исследование и разработка средств повышения защищённости программного обеспечения от внешних атак.
профинансировано
Разработка новых перспективных методов и алгоритмов для автоматического распознавания патологий органов грудной полости по рентгеновским изображениям
Продолжительность работ
2014 - 2015, 18 мес.
Бюджетные средства
9,4 млн
Организация
АНО ВО "Университет Иннополис"
профинансировано