Системное программирование


Текущие проекты

Инструмент изменения функциональности бинарного кода построенный на принципах аспекно-ориентированного программирования

Начало проекта – 2014 год. Заказчик - Samsung.

В рамках работ для компании Samsung в 2014 году группой анализа программ разработан инструмент, предоставляющий возможности изменения функциональности исполняемых программ и библиотек на уровне машинного кода для операционных систем Android и Tizen с применением техник аспектно-ориентированного программирования. Инструмент предоставляет возможности изменения функциональности программы или библиотеки скомпилированной для архитектуры ARM, путем статического изменения машинного кода с добавлением новой функциональности в определенных точках исходной программы.

Разработка алгоритмов и инструмента статического анализа программ на языках с динамической типизацией

Начало проекта – 2010 год.

В рамках исследовательских работ в 2010 году начато исследование методов статического анализа программ на языках с динамической типизацией. Создан прототип инструмента, позволяющий проводить вывод типов для программ на языке Python. В настоящий момент разрабатываются алгоритмы анализа программ с динамической типизацией с учетом чувствительности к потоку управления программы.

Инструмент итеративного динамического анализа программ Avalanche

Начало проекта – 2009 год.

В рамках перспективных направлений исследований в 2009 году в группе анализа программ началась разработка инструмента Avalanche для итеративного динамического анализа программ на базе среды динамической инструментации программ Valgrind. В настоящий момент проводятся исследования, направленные на увеличение производительности динамического анализа с использованием распределенных вычислений, исследование методов и разработка инструментов целенаправленного анализа отдельных модулей и функций целевой программы, а также исследование методов воспроизведения дефектов, найденных в процессе статического анализа программ, при помощи методов динамического анализа.

Инструменты статического анализа исходного программ на языках C, C++ и C#

Начало проекта – 2001 год. Заказчик - Klocwork a Rogue Wave Company.

По заказу и совместно с канадской компанией Klocwork a Rogue Wave Company (ранее Klocwork Inc.) в группе анализа программ разрабатывается семейство инструментов статического анализа исходного кода программ на языках C, C++ и C# с объемом кода в несколько миллионов строк. В рамках проекта непосредственно в ИСП РАН разработан фронтенд компилятора языков C и C++ с поддержкой расширений языка для компиляторов GCC, Microsoft C++ Compiler, Green Hills, CodeWarior и других, а также собственный фронтенд компилятора для языка C#.

Завершенные проекты

Инструмент профилирования используемой памяти в программах на языке Java для операционной системы Android

Начало проекта – 2013 год. Окончание проекта - 2013 год. Заказчик - Samsung.

В рамках работ для компании Samsung в 2013 году группой анализа программ разработан инструмент анализа используемой памяти программами, написанными на языке Java и исполняющимися в Java-машине Dalvik, являющейся составной частью операционной системы Android.

Инструмент поиска ошибок синхронизации в многопоточных программах

Начало проекта – 2012 год. Окончание проекта - 2012 год. Заказчик - Samsung.

В рамках работ для компании Samsung в 2012 году группой анализа программ разработан инструмент поиска ошибок синхронизации в многопоточных Java программах на основе инструментации Java байт-кода.

Реализованы алгоритмы инструментации Java байт-кода для сбора трасс выполнения программы и с применением библиотеки ThreadSanitizer реализован обнаружитель состояния гонки при доступе к ресурсам программы из разных потоков и взаимной блокировки потоков программы. Особенностью реализации инструмента является возможность его применения на Java машинах не поддерживающих встроенные механизмы инструментации (Dalvik).