Современные методы статического и динамического анализа программ для автоматизации процессов повышения качества программного обеспечения тема диссертации и автореферата по ВАК РФ 05.13.11, доктор физико-математических наук Аветисян, Арутюн Ишханович

  • Аветисян, Арутюн Ишханович
  • доктор физико-математических наукдоктор физико-математических наук
  • 2012, Москва
  • Специальность ВАК РФ05.13.11
  • Количество страниц 271
Аветисян, Арутюн Ишханович. Современные методы статического и динамического анализа программ для автоматизации процессов повышения качества программного обеспечения: дис. доктор физико-математических наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. Москва. 2012. 271 с.

Оглавление диссертации доктор физико-математических наук Аветисян, Арутюн Ишханович

ВВЕДЕНИЕ.

1. ОБЗОР СОВРЕМЕННЫХ МЕТОДОВ СТАТИЧЕСКОГО И ДИНАМИЧЕСКОГО АНАЛИЗА ПРОГРАММ ДЛЯ АВТОМАТИЗАЦИИ ПРОЦЕССОВ ПОВЫШЕНИЯ КАЧЕСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

1.1. Планирование команд и векторизация циклов.

1.2. Инструментальное обеспечение разработки МР/-программ.

1.3 Статические методы поиска дефектов в исходном коде программ.

1.4 Динамические методы анализа бинарного кода и проблемы безопасности программного обеспечения.

1.5. Компиляторные инфраструктуры, применяемые для поддержки работ в области компиляторных технологий.

2. ВЫЯВЛЕНИЕ ПАРАЛЛЕЛИЗМА КОМАНД ПРИ КОМПИЛЯЦИИ ПРОГРАММ.

2.1. Общий метод планирования команд для архитектур с явным параллелизмом команд в промышленном компиляторе.

2.2. Особенности применения метода планирования команд для современных архитектур в промышленном компиляторе.

2.2.1. Основные структуры данных.

2.2.2. Учёт различных типов команд.

2.2.3. Учёт зависимостей по данным.

2.2.4. Улучшения переименования регистров для компилятора GCC.

2.2.5. Кэширование истории преобразований.

2.2.6. Конвейеризация циклов.

2.2.7. Оценка выгодности перемещения команд при конвейеризации.

2.2.8. Доработка кодогенератора Itanium в компиляторе GCC.

2.2.9 Спекулятивное выполнение при планировании команд.

2.3 Поддержка условного выполнения при планировании команд.

2.3.1 Поддержка преобразования ветвлений в компиляторе GCC.

2.3.2 Преобразования ветвлений при планировании команд.

2.3.3 Экспериментальные результаты.

3. ПРИМЕНЕНИЕ ДИНАМИЧЕСКОГО АНАЛИЗА ДЛЯ НАСТРОЙКИ МР1-ПРОГРАММ. СРЕДА PARJAVA.

3.1. Модель JavaMPI-программы.

3.1.1. Определение модели процесса.

3.1.2. Модельное время.

3.1.3. Построение модели Уст?МР/-программы.

3.2. Оценка времени, затрачиваемого на передачу данных между процессами JavaMPI-программы.

3.2.1. Базовые операции обмена.

3.2.2. Моделирование функций MPI, осуществляющих коммуникации от точки к точке.

3.3. Моделирование «горячих» методов.

3.4. Интерпретация модели.

3.4.1. Интерпретация внутренних узлов.

3.4.2. Интерпретация базовых блоков.

3.4.3. Оценка времени выполнения фрагментов программы.

3.4.4 Интерпретация коммуникационных функций при оценке времени работы программы и оценка времени их выполнения.

3.5. Частичная интерпретация и редукция.

3.5.1. Определение частичной интерпретации.

3.5.2. Корректность редукции.

3.5.3. Применение частичной интерпретации для получения оценок времени выполнения методов.

3.6 Прогноз времени выполнения ./йггаМР/-программы для заданного числа узлов кластера.

3.6.1. Измерение времени работы областей (фрагментов) МР/-программы на целевой вычислительной системе для ускорения интерпретации ее модели.

3.6.2. Измерение времени выполнения сбалансированных гнезд циклов.

3.6.3. Измерение степени разбалансированности гнезда циклов и времени выполнения разбалансированных гнезд циклов в среде Par Java.

3.6.4 Оценка времени выполнения циклов, требующих синхронизации.

3.7. Результаты численных расчетов. Практическое применение среды Par Java.

3.7.1. Применение среды ParJava: настройка простой JavaMP/-программы.

3.7.2. Применение среды ParJava: разработка прикладной JavaMPI-nporpaMMbi моделирования процессов и условий генерации интенсивных атмосферных вихрей (торнадо).

4. ИСПОЛЬЗОВАНИЕ СТАТИЧЕСКОГО АНАЛИЗА ДЛЯ ПОИСКА УЯЗВИМОСТЕЙ И КРИТИЧЕСКИХ ОШИБОК В ИСХОДНОМ КОДЕ ПРОГРАММ.

4.1. Вводные замечания.

4.2. Методы и алгоритмы статического анализа.

4.3. Поиск уязвимостей и критических ошибок в исходном коде программ.

4.3.1. Архитектура инструмента статического анализа.

4.4. Анализ исходного кода инструментом Svace.

4.4.1. Ход анализа.

4.4.2. Описание спецификаций функций.

4.4.3. Описание детекторов.

4.4.4. Описание типов атрибутов.

4.4.5. Примеры реализованных детекторов.

4.4.6. Тестирование компонентов инструмента.

4.5. Тестирование качества анализа.

5. TREX - ПРОГРАММНАЯ СРЕДА ДЛЯ ДИНАМИЧЕСКОГО АНАЛИЗА БИНАРНОГО КОДА

5.1. Общая схема комбинированного анализа.

5.2. Внутреннее представление исполняемого кода программы.

5.3. Интеграция компонент статического и динамического анализа.

5.3.1. Цели и направления интеграции.

5.3.2. Модуль-расширение IDALuaPlugin.

5.3.3 Загрузчик VadsIDALoader.

5.3.4 Клиентский модуль системы ТгЕх.

5.4. Восстановление структуры бинарных данных по трассам программ.

5.4.1. Источники данных для анализа.

Уточнение понятия «сообщение».

Особенности анализа пакетов разного уровня.

Типы сообщений, с точки зрения их структуры.

Задача анализа протокола.

5.4.2. Особенности реализованной системы.

Особенности анализа файлов.

Особенности анализа входящих и исходящих данных.

Система описания моделей функций.

Система описания семантики функций и их параметров.

Общая схема подхода.

5.4.3. Пути развития системы.

Анализ шифрованного трафика.

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Современные методы статического и динамического анализа программ для автоматизации процессов повышения качества программного обеспечения»

Методы статического и динамического анализа программ были предназначены в первую очередь для разработки оптимизирующих компиляторов: каждая оптимизационная фаза компилятора базируется на одном из таких методов. Первые компиляторы были разработаны в конце 50-х годов прошлого века. Одним из основных критериев качества разрабатываемых программ являлась их эффективность. За пятьдесят лет развития техника оптимизирующей компиляции существенно продвинулась, и для одного вычислительного устройства (ядра) современные оптимизирующие компиляторы обеспечивают такую высокую эффективность объектного кода, что стало возможным почти полностью отказаться от ассемблера при разработке как прикладных, так и системных программ.

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

Современные вызовы связаны с такими долгосрочными тенденциями развития отрасли разработки ПО, как существенное усложнение аппаратуры (параллелизм на всех уровнях, специализированные устройства ускорения вычислений, распределенность), взрывной рост размера программных систем (десятки-сотни миллионов строк кода), массовое внедрение мобильных систем, переход на «облачные» инфраструктуры, доступность практически любых систем через сеть (Интернет, Интранет). В связи с этими вызовами особенно актуальна проблема автоматизации процессов обеспечения качества программных систем на этапах их разработки. Качество современных программных систем определяется тремя взаимосвязанными компонентами: (1) эффективностью; (2) безопасностью; (3) переносимостью. Как правило, в настоящее время обеспечение требуемого качества ПО связано с использованием ручного труда высококвалифицированных специалистов и является искусством. Это существенно увеличивает стоимость и сроки разработки ПО.

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

Рассмотрим проблему автоматизации процессов обеспечения качества ПО подробнее.

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

Таким образом, аппаратура современных вычислительных систем обеспечивает возможность параллельного выполнения вычислений на всех уровнях: на уровне команд (за счет возможности одновременной выдачи нескольких команд, дублирования функциональных устройств, конвейеризации и векторизации вычислений), на уровне параллельно выполняющихся потоков (каждый поток запускается на отдельном ядре), на уровне параллельно выполняющихся процессов (каждый многопоточный процесс запускается на отдельном узле кластера). Потенциально это может обеспечить очень высокую производительность вычислительных систем.

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

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

Автоматизация процессов обеспечения безопасности программно-аппаратных систем.

Развитие сетевых технологий привело к тому, что практически все современные компьютеры (кластеры, серверы, персональные компьютеры, встроенные системы и др.) доступны через сеть (Internet/Intranet). Широкое распространение получила концепция облачных вычислений», в рамках которой компьютер пользователя является лишь входной точкой, обеспечивающей доступ к мощным вычислительным системам, базам данных и др.

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

Устойчивость ПО к внедрению программ атакующего связана с отсутствием в нем «уязвимостей», т.е. таких ошибок разработчика, которые трудно обнаружить на этапе тестирования, но которые влияют на устойчивость работы ПО. Такие ошибки естественно искать в исходном коде программ. Для обнаружения ошибок этого класса широко используются методы статического и динамического анализа программ.

Ранее внедренные программы атакующего (часто их называют «недокументированными возможностями ПО», - далее НДВ) имеют целью воздействовать на атакованную систему по сигналу атакующего или постоянно обеспечивать дополнительные функции системы, не заметные для ее администрации. Как правило, такие программы внедряются в бинарный код, что значительно затрудняет их обнаружение.

Методы статического и динамического анализа дают возможность разработать новые технологии анализа программ (как на уровне исходного, так и на уровне бинарного кода), позволяющие обеспечить обнаружение дефектов (уязвимости, НДВ) и защиту от их использования.

Автоматизация процессов обеспечения переносимости (с сохранением качества приложений)

Современное многообразие процессорных архитектур, как для настольных и серверных, так в особенности и для мобильных систем, влечет актуальность задачи обеспечения переносимости приложений между архитектурами, а часто - и внутри одного семейства архитектур из-за серьезных различий между процессорными реализациями (разница в наборах 7 команд, количестве регистров, особенно векторных, объемах кэш-памяти и т.п.). Эта задача традиционно решается либо пересборкой приложения, написанного на языках общего назначения для новой архитектуры, либо использованием динамической компиляции (например, JavaVM).

Для сохранения качества приложения, то есть в основном производительности, в первом случае возникает необходимость поддерживать десятки бинарных версий приложения, собранных для различных архитектур и вариантов одной и той же архитектуры (например, для разных поколений процессоров х86-64). Эта необходимость связана с разным поведением машинно-зависимых оптимизаций (распределения регистров, планирования и конвейеризации кода, векторизации) даже на вариантах одной архитектуры, причем влияние на производительность программы может достигать десятков процентов.

В случае JavaVM приложение распространяется в промежуточном представлении для некоторой фиксированной архитектуры, а для сохранения производительности дополнительно применяются динамические оптимизации на целевой архитектуре во время выполнения приложения, в том числе с учетом профиля пользователя. Такой подход показал свою жизнеспособность и широко применяется. Однако JavaVM имеет ряд принципиальных ограничений, в частности, JavaVM плохо приспособлена для таких платформ как высокопроизводительные и встроенные системы. Кроме того, для языков общего назначения этот подход неприменим.

Обеспечение переносимости приложений на языках общего назначения, хотя бы в рамках вариантов одного семейства процессорных архитектур, делает необходимым создание новых методов статического и динамического анализа и соответствующей инфраструктуры, позволяющей эффективно применять машинно-независимые оптимизации на стороне разработчика, а машинно-зависимые оптимизации и оптимизации с учетом специфики приложения - на целевой архитектуре.

Цель и задачи работы. Разработка и развитие методов статического и динамического анализа программ, и реализация соответствующих программных и инструментальных средств, обеспечивающих автоматизацию программирования для современных платформ и надежное функционирование программного обеспечения в сетевой среде (Internet/Intranet). Для достижения поставленной цели в диссертационной работе необходимо решить следующие основные задачи:

• Разработать методы машинно-ориентированной оптимизации программ, позволяющие учитывать особенности функционирования современных процессоров с параллелизмом на уровне команд, с целью максимально использовать преимущества их архитектуры.

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

• Разработать масштабируемые (анализ большого объема кода в приемлемое время с высокой степенью достоверности) методы статического анализа программ, обеспечивающие нахождение уязвимостей и других дефектов в программах на языках C/C++.

• Разработать методы анализа бинарного кода с целью восстановления алгоритмов и нахождения недокументированных возможностей.

• Разработать технологический процесс, обеспечивающий переносимость программ, написанных на языках общего назначения C/C++, за счет автоматического учета особенностей целевой платформы.

Методы исследования. Для решения поставленных задач использовались методы теории множеств, теории графов, теории отношений, теории решеток, абстрактной интерпретации, теории компиляции, в том числе, динамической компиляции.

Научная новизна. В диссертации получены следующие новые результаты, которые выносятся на защиту:

• Новый метод планирования команд и конвейеризации циклов, учитывающий особенности функционирования современных процессоров (ARM, EPIC), с поддержкой условного и спекулятивного выполнения

• Новые методы разработки JavaMPI-nporpaMM, обеспечивающие высокий уровень автоматизации разработки за счет точного прогнозирования на инструментальной машине поведения разрабатываемого приложения с учетом особенностей высокопроизводительной вычислительной системы

• Новые методы статического анализа исходного кода программ, обеспечивающие аудит, нахождение уязвимостей и других дефектов как исходного кода на языках C/C++, так и бит-кода LLVM, в приемлемое время с высокой степенью достоверности

• Новые методы комбинированного статического и динамического анализа бинарного кода, базирующиеся на сборе и анализе трасс, позволяющие восстанавливать алгоритмы и находить недокументированные возможности в защищенном бинарном коде

• Новый метод двухэтапной компиляции, обеспечивающий переносимость программ, написанных на языках общего назначения C/C++, в промежуточном представлении LLYM (бит-код) с использованием динамической компиляции

Практическая значимость работы определяется тем, что на базе разработанных методов реализованы программные средства, обеспечивающие практическое решение рассматриваемых проблем при разработке и анализе программ. Эти средства используются в различных научно-исследовательских, промышленных и других организациях.

• На основе новых методов машинно-ориентированной оптимизации реализован и внедрен в основную ветвь промышленного свободно распространяемого компилятора GCC новый планировщик потока команд, который используется при оптимизации приложений для платформ EPIC (например, Itanium), а также как основа при разработке машинно-ориентированных оптимизаций для других архитектур (например, ARM).

• Инструменты среды ParJava интегрированы в промышленную среду разработки программ Eclipse на основе свободного ПО и применяются для разработки параллельных приложений, в частности, в ИФЗ РАН реализовано приложение моделирования процесса зарождения интенсивных атмосферных вихрей по теории В.Н. Николаевского.

• Инструменты среды Svace интегрированы в промышленную среду разработки программ Eclipse на основе свободного ПО. По контракту с компанией «Самсунг» Svace внедрена в технологический процесс разработки ПО внутри компании (несколько тысяч программистов, десятки миллионов строк кода).

• Интегрированная среда статического и динамического анализа бинарного кода используется для решения практических задач по обеспечению безопасности ПО.

• Метод двухэтапной компиляции на базе LLVM реализован для Linux-платформ на базе архитектур х86 и ARM. По контракту с компанией «Самсунг» на основе двухэтапной компиляции создается «облачное хранилище» приложений нового поколения, обеспечивающее с одной стороны переносимость программ в рамках семейства ARM, а с другой стороны, высокую степень надежности и безопасности приложений, доступных в рамках хранилища, за счет использования среды Svace и среды анализа бинарного кода.

По материалам диссертации опубликована 51 работа [1-51]. Основные результаты диссертационной работы докладывались и обсуждались на конференциях и семинарах

10 различного уровня. В том числе, 27 докладов на международных конференциях и 7 на всероссийских. Работа по теме диссертации проводилась в соответствии с планами исследований по проектам, поддержанным грантами РФФИ, контрактами в рамках ФЦП "Исследования и разработки по приоритетным направлениям развития науки и техники на 2002-2006 годы", в рамках Программ фундаментальных исследований Президиума РАН, а также с договорами с компаниями Самсунг Электронике Ко.Лтд. и ФГУП НИИ "Квант". Работа была поддержана грантом Президента Российской Федерации для поддержки молодых российских ученых и ведущих научных школ РФ. Было получено два свидетельства об официальной регистрации программы для ЭВМ в Федеральной службе по интеллектуальной собственности, патентам и товарным знакам.

Личный вклад. Выносимые на защиту результаты получены соискателем лично. В опубликованных совместных работах постановка и исследование задач осуществлялись совместными усилиями соавторов при непосредственном участии соискателя.

Диссертация состоит из введения, шести глав, заключения и списка литературы. Первая глава представляет собой аналитический обзор современного состояния методов статического и динамического анализа и их применения для решения проблем продуктивности и безопасности.

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Заключение диссертации по теме «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», Аветисян, Арутюн Ишханович

ЗАКЛЮЧЕНИЕ

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

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

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

2. Исследованы и разработаны методы и поддерживающие их программные инструменты разработки параллельных программ на языке Java с явными обращениями к коммуникационной библиотеке, реализованные в среде ParJava. Эти инструменты позволяют проводить итеративную разработку с минимальным использованием целевой аппаратуры, повышая продуктивность разработки МР/-программ для систем с распределенной памятью.

Инструменты среды ParJava интегрированы в промышленную среду разработки программ Eclipse на основе свободного ПО. Они применяются для разработки параллельных прикладных программ, в частности, в ИФЗ РАН реализовано приложение моделирования процесса зарождения интенсивных атмосферных вихрей по теории В.Н. Николаевского.

3. Исследованы и разработаны масштабируемые методы статического анализа исходного кода программ, обеспечивающие нахождение уязвимостей и других дефектов, для эффективного аудита, как исходного кода на языках C/C++, так и бит-кода LLVM, содержащего десятки миллионов строк, в приемлемое время с высокой степенью достоверности.

Эти методы реализованы в интегрированной среде Svace. Инструменты среды Svace интегрированы в промышленную среду разработки программ Eclipse на основе свободного ПО. По контракту с компанией «Самсунг» Svace внедрена в технологический процесс разработки ПО внутри компании (несколько тысяч программистов, десятки миллионов строк кода).

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

На основе этих методов реализована интегрированная среда ТгЕх, которая используется для решения практических задач по обеспечению безопасности ПО в НИИ «Квант».

5. Исследован и разработан метод двухэтапной компиляции, обеспечивающий возможность распространения программ, написанных на языках общего назначения C/C++, в промежуточном представлении LLVM (бит-код) с использованием динамической компиляции.

Метод двухэтапной компиляции на базе LLVM реализован для Linux-платформ на базе архитектур х86 и ARM. По контракту с компанией «Самсунг» на основе разработанных программных средств создается «облачное хранилище» приложений нового поколения, обеспечивающее с одной стороны переносимость программ в рамках семейства ARM, а с другой стороны, высокую степень надежности и безопасности приложений, доступных в рамках хранилища, за счет использования сред Svace и ТгЕх.

Автор выражает искреннюю благодарность своим учителям - академику Иванникову Виктору Петровичу и профессору Гайсаряну Сергею Суреновичу, а также членам коллектива отдела компиляторных технологий ИСП РАН без энтузиазма и высокого профессионализма которых многие идеи не смогли бы быть реализованы.

Список литературы диссертационного исследования доктор физико-математических наук Аветисян, Арутюн Ишханович, 2012 год

1. В.П. Иванников, С.С. Гайсарян, А.И. Аветисян, В.А. Падарян. «Оценка динамических характеристик параллельной программы на модели.» // Программирование, №4, 2006.

2. В.П. Иванников, А.И. Аветисян, С.С. Гайсарян, В.А. Падарян. «Прогнозирование производительности MPI-программ на основе моделей.» // Журнал «Автоматика и телемеханика», 2007, N5, с. 8-17.

3. А.И. Аветисян, В.В. Бабкова и А.Ю. Губарь. «Возникновение торнадо: трехмерная численная модель в мезомасштабной теории турбулентности по Николаевскому»// «ДАН/Геофизика», том 419, №4, с. 547-552.

4. Аветисян А.И., Бабкова В., Гайсарян С.С., Губарь А.Ю. «Рождение торнадо в теории мезомасштабной турбулентности по Николаевскому. Трехмерная численная модель в ParJava.» // Журнал «Математическое моделирование». 2008, т. 20, № 8, с. 28-40.

5. В.П. Иванников, Аветисян А.И., Гайсарян С.С., Акопян М.С. "Особенности реализации интерпретатора модели параллельных программ в среде ParJava." Журнал «Программирование». 2009 т. 35, №1 с. 10-25.

6. А.И. Аветисян, С.С. Гайсарян, В.В. Бабкова. Итеративная разработка параллельных программ в среде ParJava //Программирование, №4, 2009, с. 56-72.

7. А.Ю.Тихонов, А.И. Аветисян. Развитие taint-анализа для решения задачи поиска некоторых типов закладок . Труды ИСП РАН, т. 20, 2011 г. с. 9-24.

8. Арутюн Аветисян, Андрей Белеванцев, Алексей Бородин, Владимир Несов. Использование статического анализа для поиска уязвимостей и критических ошибок в исходном коде программ. Труды ИСП РАН том 21, 2011, стр. 23-38.

9. Арутюн Аветисян, Алексей Бородин. "Механизмы расширения системы статического анализа Svace детекторами новых видов уязвимостей и критических ошибок". Труды ИСП РАН том 21, 2011, стр. 39-54.

10. А.И. Аветисян, К.Ю. Долгорукова, Ш.Ф. Курмангалеев. Динамическое профилирование программы для системы LLVM. Труды ИСП РАН том 21, 2011, стр. 71-82.

11. А.И. Аветисян, М.С. Акопян, С.С. Гайсарян. Методы точного измерения времени выполнения гнезд циклов при анализе JavaMPI-nporpaMM в среде ParJava. Труды ИСП РАН том 21, 2011,стр. 83-102.

12. Дмитрий Мельник, Александр Монаков, Арутюн Аветисян. "Поддержка команд с условным выполнением в селективном планировщике команд". Труды ИСП РАН том 21, 2011, стр. 103-118.

13. А.И. Аветисян. "Двухэтапная компиляция для оптимизации и развертывания программ на языках общего назначения". Труды ИСП РАН том 22, 2012, стр. 1-11.

14. А.И. Аветисян. "Планирование команд и конвейеризация циклов на современных архитектурах". Труды ИСП РАН том 22, 2012, стр. 12-19.

15. А.И. Аветисян, А.И. Гетьман. "Восстановление структуры бинарных данных по трассам программ". Труды ИСП РАН том 22, 2012, 78-95.

16. А.Ю.Тихонов, А.И. Аветисян. "Комбинированный (статический и динамический) анализ бинарного кода". Труды ИСП РАН том 22, 2012, 120-131.

17. Другие публикации автора по теме диссертации (статьи, учебные пособия, материалы конференций)

18. А.И. Аветисян, И.В. Арапов, С.С. Гайсарян, В.А. Падарян. "Параллельное программирование с распределением по данным в среде ParJava." Вычислительные методы и программирование. Том 2, М. 2001 стр. 70-87.

19. А.И. Аветисян, В.А. Падарян. "Библиотека интерфейсов и классов, расширяющих язык Java средствами разработки параллельных программ в модели SPMD." Труды Института Системного Программирования РАН. Том 2, М. 2001, стр. 49-64.

20. А.И. Аветисян, И.В. Арапов, С.С. Гайсарян, В.А. Падарян. "Среда ParJava для разработки SPMD-программ для однородных и неоднородных сетей JavaVM." Труды ИСП РАН. Том 2, М. 2001, стр. 27-48.

21. A. Avetisyan, S. Gaissaryan, О. Samovarov. "Extension of Java Environment by Facilities Supporting Development of SPMD Java-programs". V. Malyshkin (Ed.): PaCT 2001, LNCS 2127, Springer-Verlag Berlin Heidelberg 2001, p. 175 180.

22. V. Ivannikov, S. Gaissaryan, A. Avetisyan, O. Samovarov. "ParJava: IDE Supporting SPMD Java-Programming" Computer Science and Information Technologies (CSIT), Yerevan, Sept. 17-20, 2001. Proceedings, p. 92-96.

23. В.П. Иванников, С.С. Гайсарян, А.И. Аветисян. "Среда ParJava: разработка масштабируемых параллельных SPMD-программ в окружении Java." Труды Международной конференции "Параллельные вычисления и задачи управления" Москва, 2-4 октября, 2001.

24. Victor Ivannikov, Serguei Gaissaryan, Arutyun Avetisyan, Vartan Padaryan. Development of Scalable Parallel Programs in ParJava Environment. // Parallel CFD 2003, pp. 291 293

25. V. Ivannikov, S. Gaissaryan, A. Avetisyan, V. Padaryan. "Analyzing dynamic properties of parallel program in ParJava Environment" Computer Science and Information Technologies (CSIT), Yerevan, September 22 26, 2003. Proceedings, p. 19-23.

26. Victor Ivannikov, Serguei Gaissaryan, Arutyun Avetisyan, Vartan Padaryan. Improving properties of a parallel program in ParJava Environment // The 10th EuroPVM/MPI conference, Venice, Sept. 2003, LNCS v. 2840, 491-494.

27. Victor P. Ivannikov, Serguei S. Gaissaryan, Arutyun I. Avetisyan, Vartan A. Padaryan. Checkpointing improvement in ParJava environment. // Parallel CFD 2004, May, 24-27, 2004, Gran-Canaria.

28. Сергей Гайсарян, Арутюн Аветисян, Вартан Падарян, Геннадий Леонтьев. Применение среды ParJava для разработки параллельных программ. // Международная научная конференция «Суперкомпьютерные системы и их применение». 26-28 октября 2004, Минск, с. 99-103.

29. В.П. Иванников, С.С. Гайсарян, А.И. Аветисян, В.В. Бабкова, В.А. Падарян "Разработка параллельных Java программ для высокопроизводительных вычислительных систем с распределенной памятью", Труды ИСП РАН, т. 5, 2004, стр. 41-62.

30. V. Ivannikov, S. Gaissaryan, A. Avetisyan, В. Babkova. "Using instrumental computer for SPMD-program analysis and tuning" Computer Science and Information Technologies (CSIT), Yerevan, September 19-23, 2005. Proceedings, p. 385 388.

31. Victor Ivannikov, Serguei Gayssaryan, Arutyun Avetisyan, Vartan Padaryan "Model Based Performance Evaluation for MPI Programs" //MTPP 2007 Parallel Computing Technologies First Russian-Taiwan Symposium Pereslavl-Zalesskii (Russia), September 2-3, 2007.

32. A.I. Avetisyan, V.V. Babkova, S.S. Gaissaryan, A.Yu. Gubar "Intensive Atmospheric Vortices Modeling Using High Performance Cluster Systems"// PaCT-2007, LNCS, v. 4671/2007, p. 487-495.

33. А.И. Аветисян, В.В. Бабкова, А.В. Монаков. Обеспечение высокопродуктивного программирования для современных параллельных платформ Труды ИСП РАН, том 16, 2009 г., стр 9-30.

34. А.И. Аветисян, В.А. Падарян, А.И. Гетьман, М.А. Соловьев. Автоматизация динамического анализа бинарного кода. Материалы международной конференции «РусКрипто'2009».

35. Alexander Monakov and Arutyun Avetisyan. "Implementing Blocked Sparse Matrix-Vector Multiplication on NVIDIA GPUs", SAMOS 2009 Workshop, LNCS Proceedings, 2009, №5657, pp 288-296

36. О.И. Самоваров, А.И. Аветисян, А.В. Николаев, А.О. Гетьман. «Технолгия использования вычислительной кластерной системы МФТИ-60 для численного модеирования». Москва, МФТИ, 2009. 73 с.

37. Brian J. Gough: An Introduction to GCC, Network Theory Ltd., 2004 (Revised August 2005).

38. Chris Lattner and Vikram Adve "LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation"// Proc. of the 2004 International Symposium on Code Generation and Optimization (CGO'04), Palo Alto, California, Mar. 2004.

39. Mary Hall, David Padua, and Keshav Pingali. 2009. Compiler research: the next 50 years. Commun. ACM 52, 2 (February 2009), pp 60-67.

40. Michael С Schatz, Cole Trapnell, Arthur L Delcher and Amitabh Varshney High-throughput sequence alignment using Graphics Processing UnitsIIBMC Bioinformatics 2007, 8:474

41. Ken Kennedy, Charles Koelbel, Hans P. Zima. "The rise and fall of high performance Fortran."// Commun. ACM vol. 54, No 11, (2011) pp 74-82

42. Michael Armbrust, Armando Fox, David A. Patterson et al. Above the Clouds: A Berkeley View of Cloud Computing// Technical Report No. UCB/EECS-2009-28, February 10, 2009, http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.html

43. Jianfeng Zhan, Lei Wang, Weisong Shi, Shimin Gong, Xiutao Zang. "PhoenixCloud: Provisioning Resources for Heterogeneous Cloud Workloads" CoRR (Computing Research Repository) abs/1003.0958: (2010)

44. David W. Wall. Limits of instruction-level parallelism. In Proceedings of the Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS) , volume IV, pp. 176-188, April 1991.

45. Joseph A. Fisher. Global Code Generation for Instruction-Level Parallelism: Trace Scheduling-2. Hewlett-Packard Technical Report #HPL-93-43, http://www.hpl.hp.com/techreports/93/HPL-93-43.html.

46. Alexandre Nicolau. Percolation Scheduling: a Parallel Compilation Technique. Technical Report. UMI Order Number: TR85-678, Cornell University, 1985.

47. Soo-Mook Moon and Kemal Ebcioglu. Parallelizing Nonnumerical Code with Selective Scheduling and Software Pipelining. ACM TOPLAS, Vol 19, No. 6, pages 853-898, November 1997.

48. J. Bharadwaj, K.N. Menezes, and C. McKinsey. Wavefront Scheduling: Path-Based Data Representation and Scheduling of Subgraphs. In Proceedings of the 32nd Annual International Symposium on Microarchitecture (MICR032), (Haifa, Israel), December 1999.

49. B.R. Rau. Iterative modulo scheduling: An algorithm for software pipelining loops. In Proc. of the 27th Annual International Symposium on Microarchitecture, pp. 63-74. November 1994.

50. M. Hagog, A. Zaks. Swing Modulo Scheduling in GCC. In Proceedings of the GCC Developer's Summit, Ottawa, Canada, 2004.

51. Thomas Ball and James R. Larus. Optimally Profiling and Tracing Programs. ACM Transactions on Programming Languages and Systems, Vol 16, No. 4, July 1994, pp.1319-1360.

52. Thomas Ball and James R. Larus. Efficient path profiling. In Proceedings of the 29th Annual ACM/IEEE international Symposium on Microarchitecture (Paris, France, December 02 04, 1996), pp. 46-57.

53. James R. Larus. Whole program paths. SIGPLAN Not. 34, 5 (May. 1999), pp. 259-269.

54. Thomas Ball and James R. Larus. Branch prediction for free. Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation (PLDI), pp. 300-313, June 1993.

55. Уязвимость переполнения буфера в модуле modssl сервера Apache. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0653

56. Использование уязвимости сервера Apache. http://seclists.org/vuln-dev/2002/Jun/268

57. Взламываемая уязвимость форматной строки в программе Dia. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-2480

58. Компилятор Open Research Compiler (ORC). http://ipf-orc.sourceforge.net

59. Компилятор Open64. http://www.open64.net

60. Поддержка спекулятивности в компиляторе GCC. http://gcc.gnu.org/ml/gcc-patches/2005-12/msg01752.html

61. Уязвимость испорченного ввода в функциях языка Perl. http://web.nvd.nist.gov/view/vuln/detail?vulnld=CVE-2011-1487

62. Уязвимость испорченного ввода в MediaWiki. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5249

63. Уязвимость испорченного ввода типа SQL Injection, http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6602

64. Carole Dulong, Rakesh Krishnaiyer, Dattatraya Kulkarni, Daniel Lavery, Wei Li, John Ng, and David Sehr. An overview of the Intel IA-64 compiler. Intel Technology Journal, November 1999.

65. David I. August, Wen-mei W. Hwu, Scott A. Mahlke. A Framework for Balancing Control Flow and Predication // International Symposium on Microarchitecture 1997. P. 92-103.

66. M Snir, SW Otto, S Huss-Lederman, DW Walker, J (1998) MPI—The Complete Reference: Volume 1, The MPI Core. MIT Press, Cambridge, MA.

67. Gropp, William; Steven Huss-Lederman, Andrew Lumsdaine, Ewing Lusk, Bill Nitzberg, William Saphir, and Marc Snir (1998) MPI—The Complete Reference: Volume 2, The MPI-2 Extensions. MIT Press, Cambridge, MA

68. Jesus Labarta, Sergi Girona, Vincent Pillet, Toni Cortes, Luis Gregoris "DiP: A Parallel Program Development Environment" (1996)

69. S. Shende and A. D. Malony. "The TAU Parallel Performance System" // International Journal of High Performance Computing Applications, Vol. 20, No 2, 2006. pp 287-311.

70. V. Bui, B. Norris, K. Huck, L. C. Mclnnes, L. Li, O. Hernandez, and B. Chapman, "A Component Infrastructure for Performance and Power Modeling of Parallel Scientific Applications", in Component-Based High Performance Computing (CBHPC 2008), 2008.

71. D. A. Grove and P.D. Coddington "Performance Modelling Techniques for Parallel Supercomputing Applications", Nova Publishers, 2011, pp. 85-86

72. Bronis R. de Supinski, Paul Hovland et al. SIAM Short Course on PERC Tools for Performance Data Gathering, Analysis and Modeling, 2004// http://www.siam.org/meetings/pp04/

73. Vikram S. Adve Rajive Bagrodia et al. POEMS: End-to-End Performance Design of Large Parallel Adaptive Computational Systems // IEEE Transactions on Software Engineering Volume 26 Issue 11, November 2000

74. S.D. Hammond, G.R. Mudalige, J.A. Smith, S.A. Jarvis J.A. Herdman and A. Vadgama. WARPP A Toolkit for Simulating High-Performance Parallel Scientific Codes// 2nd International Conference On Simulation Tools And Techniques (Simutools 2009)

75. S.D. Hammond, G.R. Mudalige, J.A. Smith, S.A. Jarvis J.A. Herdman and A. Vadgama. WARPP A Toolkit for Simulating High-Performance Parallel Scientific Codes// http://www2.warwick.ac.uk/fac/sci/csc/events/marcwkshpcomputersimulation/hammond.pdf

76. Jeffrey К. Hollingsworth, and Nick Rutar, "Data Centric Techniques for Mapping Performance Data to Program Variables", Parallel Computing, (38)1-2, Jan. 2012

77. E. D'Hollander, Frans Peters "Parallel computing: fundamentals, applications, and new directions" Elsevier, 1998, pp. 352 354

78. Jorg Behrens Performance analysis of parallel programs with Vampir// DKRZ Blizzard Workshop 2010 http://www.dkrz.de/Nutzerportal-en/doku/blizzard/program-analysis/tracing/

79. Andrew Sunderland, Andrew Porter "Profiling Parallel Performance using Vampir and Paraver" Tech. Report 2004 http://www.hpcx.ac.uk/research/publications/HPCxTR0704.pdf

80. K.D. Cooper and L. Torczon. Engineering a Compiler. Morgan Kaufmah Publishers, 2004, ISBN: 1-55860-698-X.

81. Hovemeyer, D. and Pugh, W. Finding bugs is easy. SIGPLAN Not. 39, 12 (Dec. 2004), 92106.

82. M. P. Gallaher and В. M. Kropp. Economic impacts of inadequate infrastructure for software testing. Technical report, RTI International, National Institute of Standards and Technology, US Dept of Commerce, May 2002.

83. David Wagner, Jeffrey S. Foster, Eric A. Brewer, and Alexander Aiken. A first step towards automated detection of buffer overrun vulnerabilities. In Network and Distributed System Security Symposium, pages 3-17, San Diego, CA, February 2000.

84. David A. Wheeler. Flawfinder. http://www.dwheeler.com/flawfinder/, апрель 2008.

85. J. Viega, J. T. Bloch, Y. Kohno, and G. Mcgraw. Its4: a static vulnerability scanner for c and c++ code. In Computer Security Applications, 2000. ACS AC '00. 16th Annual Conference, pages 257-267, 2000.

86. Fortify Software, Inc. RATS Rough Auditing Tool for Security. https://www.fortify.com/ssa-elements/threat-intelligence/rats.html.

87. Code Verification with Polyspace. http://www.mathworks.com/products/polyspace/.

88. Patrick Cousot, Radhia Cousot, Jerome Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, and Xavier Rival. The astrée analyzer, volume 3444/2005, pages 21-30. Springer Berlin / Heidelberg, 2005.

89. Thomas A. Henzinger, Ranjit Jhala, Rupak Majumdar, and Grégoire Sutre. Lazy abstraction. SIGPLAN Not., 37(l):58-70, January 2002.

90. Thomas Ball, Ella Bounimova, Byron Cook, Vladimir Levin, Jakob Lichtenberg, Con Mcgarvey, Bohus Ondrusek, Sriram K. Rajamani, and Abdullah Ustuner. Thorough static analysis of device drivers. SIGOPS Oper. Syst. Rev., 40(4):73-85, October 2006.

91. David Evans, John Guttag, James Horning, and Yang M. Tan. Lclint: a tool for using specifications to check code. SIGSOFT Softw. Eng. Notes, 19(5): 87-96, December 1994.

92. David Evans and David Larochelle. Improving security using extensible lightweight static analysis. IEEE Software, 19(1):42-51, /2002.

93. Nurit Dor, Michael Rodeh, and Mooly Sagiv. Cssv: towards a realistic tool for statically detecting all buffer overflows in c. SIGPLAN Not., 38(5): 155-167, May 2003.

94. Patrice Godefroid. The soundness of bugs is what matters (position statement). In BUGS'2005 (PLDI'2005 Workshop on the Evaluation of Software Defect Detection Tools), 2005.

95. David Hovemeyer and William Pugh. Finding bugs is easy. SIGPLAN Not., 39(12):92-106, December 2004.

96. Klocwork. Системы анализа исходного кода, http://www.klocwork.com/products/, апрель 2008.

97. Ted Kremenek and Dawson Engler. Z-Ranking: Using Statistical Analysis to Counter the Impact of Static Analysis Approximations, pages 1075-1075. 2003.

98. William R. Bush, Jonathan D. Pincus, and David J. Sielaff. A static analyzer for finding dynamic programming errors. Softw. Pract. Exper., 30(7):775-802, 2000.

99. Yungbum Jung, Jaehwang Kim, Jaeho Shin, and Kwangkeun Yi. Taming False Alarms from a Domain-Unaware С Analyzer by a Bayesian Statistical Post Analysis, pages 203-217. 2005.

100. Kwangkeun Yi, Hosik Choi, Jaehwang Kim, and Yongdai Kim. An empirical study on classification methods for alarms from a bug-finding static с analyzer. Inf. Process. Lett., 102(2-3):118-123, 2007.

101. Yichen Xie, Andy Chou, and Dawson R. Engler. Archer: using symbolic, path-sensitive analysis to detect memory access errors. In ESEC / SIGSOFT FSE, pages 327-336, 2003.

102. Dawson R. Engler, David Y. Chen, and Andy Chou. Bugs as inconsistent behavior: A general approach to inferring errors in systems code. In Symposium on Operating Systems Principles, pages 57-72,2001.

103. Coverity. Static source code analysis solutions, http://www.coverity.com.

104. GrammaTech, Inc. CodeSonar. http://www.grammatech.com/products/codesonar/overview.html.

105. Mooly Sagiv, Thomas Reps, Reinhard Wilhelm. Parametric shape analysis via 3-valued logic. // ACM Transactions on Programming Languages and Systems vol. 24, №3 2002. Pp. 217-298.

106. VMProtect Software. Vmprotect software protection, 2008. http://vmpsoft.com/

107. Oreans Technologies. Code virtualizer: Total obfuscation against reverse engineering, Dec. 2008. http://www.oreans.com/codevirtualizer.php

108. Лицензирование, шифрование, сжатие и защита программного обеспечения от взлома и исследования. http://setisoft.com/?lang=ru

109. Профессиональная система лицензирования и защиты программного обеспечения для Windows, http://enigmaprotector.com/ru

110. Safengine Protector, http://www.safengine.com/en-us/products/protector

111. SoftlCE. Kernel mode debugger for Microsoft Windows. http://en.wikipedia.org/wiki/SoftICE

112. Крис Касперски, Ева Рокко. Искусство дизассемблирования. / БХВ-Петербург, 2008. 896 стр.

113. Linux Kernel Debugger Linice. http://www.linice.com/

114. IceExt memory dumper, http://sourceforge.net/projects/iceext/

115. SoftwarePassport. http://www.siliconrealms.com/

116. OllyDbg. 32-bit assembler level analyzing debugger for Microsoft Windows. http://www.ollydbg.de/

117. Syser Kernel Debugger, http://www.sysersoft.com/

118. Debugging Tools for NT-Based Operating Systems, http://msdn.microsoft.com/en-us/library/windows/hardware/ff544635%28v=vs.85%29.aspx

119. Chris Eagle. IDA Pro Book. The Unofficial Guide to the World's Most Popular Disassembler. No Starch Press San Francisco, CA, USA 2008.

120. Dotfuscator Community Edition 4.0. http://msdn.microsoft.com/ru-ru/library/ms227240%28v=vs.90%29.aspx

121. Heng Yin and Dawn Song. TEMU: Binary Code Analysis via Whole-System Layered Annotative Execution. / Technical Report No. UCB/EECS-2010-3 January 11, 2010.

122. Fabrice Bellard. QEMU, a Fast and Portable Dynamic Translator. // Proceedings of the annual conference on USENIX Annual Technical Conference, 2005. p. 41.

123. Anderson, P., Reps, Т., and Teitelbaum, Т., Design and implementation of a fine-grained software inspection tool. // In IEEE Trans, on Software Engineering 29 8 (Aug. 2003), pp. 721-733.

124. Balakrishnan, G. and Reps, T. Analyzing memory accesses in x86 executables. // In Proc. Int. Conf. on Compiler Construction, Springer-Verlag, New York, NY, 2004, pp. 5-23.

125. Balakrishnan, G., Gruian, R., Reps, Т., and Teitelbaum, Т., CodeSurfer/x86 A platform for analyzing x86 executables, (tool demonstration paper). // In Proc. Int. Conf. on Compiler Construction, April 2005.

126. CodeSonar for Intel x86. http://www.grammatech.com/research/products/index.html

127. Horwitz, S. and Reps, T. and Binkley, D. Interprocedural slicing using dependence graphs. // In Proc. Of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation. Pp. 35-46.

128. T. Reps, G. Balakrishnan, and J. Lim. Intermediate-representation recovery from low-level code. // Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, 2006. Pp. 100-111.

129. GCC: the GNU Compiler Collection.// http://gcc.gnu.org/

130. The LLVM Compiler Infrastructure.// http://llvm.org/

131. Sebastian Pop, Albert Cohen, Cédric Bastoul, Sylvain Girbal, Georges-André Silber, Nicolas Vasilache. "GRAPHITE: Polyhedral Analyses and Optimizations for GCC" // http://gcc.gnu.org/wiki/Graphite?action=AttachFile&do=view&target=graphitepaper.pdf

132. SPEC CPU 2000 benchmarks, http://spec.org/cpu2000

133. Andrey Belevantsev, Maxim Kuvyrkov, Vladimir Makarov, Dmitry Melnik, Dmitry Zhurikhin. An interblock VLIW-targeted instruction scheduler for GCC. In Proceedings of GCC Developers' Summit 2006, Ottawa, Canada, June 2006, pp.1-12.

134. А. Белеванцев, M. Кувырков, Д. Мельник. Использование параллелизма на уровне команд в компиляторе для Intel Itanium. Труды ИСП РАН, т.9, 2006, с.9-22.

135. Andrey Belevantsev, Dmitry Melnik, and Arutyun Avetisyan. Improving a selective scheduling approach for GCC. GREPS: International Workshop on GCC for Research in Embedded and Parallel Systems, Brasov, Romania, September 2007.

136. Целевые архитектуры, поддерживаемые семейством компиляторов GCC. http://gcc.gnu.org/backends.html

137. Лицензия GNU GPL. http://www.gnu.org/copvleft/gpl.html

138. Первая версия автоматической векторизации LLVM. http://llvm.org/viewvc/llvm-project?view=rev&revision=l 49468

139. Отладчик LLDB для LLVM. http://lldb.llvm.org/

140. Компилятор переднего плана DragonEgg для LLVM. http://dragonegg.llvm.org/

141. MPI: A Message-Passing Interface Standard. Version 3.0 Message Passing Interface Forum March 14th, 2011

142. Mark Baker, Bryan Carpenter, and Aamir Shafi. MPJ Express: Towards Thread Safe Java HPC, Submitted to the IEEE International Conference on Cluster Computing (Cluster 2006), Barcelona, Spain, 25-28 September, 2006.

143. A. V. Aho, M.S. Lam, R. Sethi, J. D. Ullman. "Compilers: principles, techniques, and tools." 2nd ed., Pearson Education Inc., 2007, p.836.

144. D. E. Knuth, "An empirical study of FORTRAN programs," Software Practice and Experience, vol. 1, 1971, pp. 105-133.

145. A. Matthew, S. J. Fink, D. Grove, M. Hind, and P. F. Sweeney, "A Survey of Adaptive Optimization in Virtual Machines" // Proceedings of the IEEE, 93(2), 2005. Special issue on program generation, optimization, and adaptation

146. Khalid Al-Tawil, Csaba Andras Moritz. Performance Modeling and Evaluation of MPI. // Journal of Parallel and Distributed Computing, Vol. 61, No 2, pp. 202-223, 2001.

147. Ron Hitchens. Java NIO. O'Reily Media, Ink., 2002. ISBN 0-596-00288-2

148. В. А. Падарян. Оценка времени работы параллельной программы с помощью интерпретатора среды ParJava. / Препринт Института Системного Программирования РАН №6. М.:ИСП РАН, 2005.

149. Библиотека Libc++ для LLVM. http://libcxx.llvm.org/

150. Mark D. Hill, Michael R. Marty: Amdahl's Law in the Multicore Era. IEEE Computer (2008) vol. 41, No 7, hh 33-38

151. John L. Gustafson: Reevaluating Amdahl's Law. Commun. ACM (1988) vol. 31 No 5, pp 532-533

152. Арсеньев C.A., Губарь А.Ю., Николаевский B.H. Самоорганизация торнадо и ураганов в атмосферных течениях с мезомасштабными вихрями. //ДАН, 2004, т.396, № 4, с.541-546.

153. Хргиан А.Х. Физика атмосферы. М: Изд-во Московского Университета, 1986. С.240.

154. Nikolaevskiy V.N. Angular Momentum in Geophysical Turbulence: Continuum. Spatial Averaging Method . Dordrecht: Kluwer (Springer). 2003. p. 245.

155. Хаин А.П., Сутырин Г.Г. Тропические циклоны и их взаимодействие с океаном. Л.: Гидрометеоиздат, 1983. С.272.

156. Емцев Б.Т. Техническая гидромеханика. М.: Машиностроение, 1978. С.463.

157. J.C. Adams, W.S. Brainard, J.T. Martin, B.T. Smith, J.L. Wagener. Fortran 95 Handbook. Complete ISO/ANSI Reference. Scientific and Engineering Computation Series. MIT Press, Cambridge, Massachusetts, 1997

158. Флетчер К. Вычислительные методы в динамике жидкостей (2т). М.: Мир, 1991. С.504, С.522.

159. Gilbert Anthony. Tornado With a Measured Intensity of T3 at Hill Head, Hampshire, 5, November 1999. // J.Meteorol. 2000. 25, N254. c.361-367.

160. VisAD Java component library for interactive and collaborative visualization and analysis of numerical data, http://www.ssec.wisc.edu/~billh/visad.html.

161. P. Cousot and R. Cousot. Static determination of dynamic properties of programs. In Proceedings of the Second International Symposium on Programming, pages 106—130, Dunod, Paris, France, 1976.

162. A. Milanova. Precise and Practical Flow Analysis of Object-Oriented Software. PhD thesis, Rutgers University, Available as Techical Report DCS-TR-539, August, 2003.

163. Antoine Mine. Field-Sensitive Value Analysis of Embedded С Programs with Union Types and Pointer Arithmetic. Proceedings of LCTES'06, June 2006.

164. L. O. Andersen. Program Analysis and Specialization for the С Programming Language. PhD thesis, DIKU, University of Copenhagen, May 1994.

165. M. Emami, R. Ghiya, and L. Hendren. Context-Sensitive Interprocedural Points-to Analysis in the Presence of Function Pointers. In Proceedings of the SIGPLAN '94 Conference on Program Language Design and Implementation, Orlando, US, 1994.

166. M. Burke, P. Carini, J.-D. Choi, and M. Hind. Flow-insensitive interprocedural alias analysis in the presence of pointers. Lecture Notes in Computer Science, 892, pages 234-250. Springer-Verlag, 1995.

167. J.-D. Choi, M. Burke, and P. Carini. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. In 20th Annual ACM SIGACT-SIGPLAN Symposium on the Principles of Programming Languages, pages 232-245, January 1993

168. M. Hind, M. Burke, P. Carini, and J.-D. Choi. Interprocedural pointer alias analysis. ACM Transactions on Programming Languages and Systems, 21(4):848-894, July 1999.

169. W. Landi. Undecidability of static analysis. ACM Letters on Programming Languages and Systems, l(4):323-337, December 1992.

170. G. Ramalingam. The undecidability of aliasing. ACM Transactions on Programming Languages and Systems,16(5):1467-1471, September 1994.

171. T. J. Marlowe, B. G. Ryder, and M. G. Burke. Defining flow sensitivity in data flow problems. Technical Report RC20138, IBM T. J. Watson Research Center, July 1995.

172. M. Shapiro and S. Horwitz. Fast and accurate flow-insensitive point-to analysis. In 24th Annual ACMSIGACT-SIGPLAN Symposium on the Principles of Programming Languages, pages 114, January 1997.

173. S. Zhang, B. G. Ryder, and W. Landi. Program decomposition for pointer aliasing: A step toward practical analyses. In 4th Symposium on the Foundations of Software Engineering, pages 8192, October 1996.

174. D. Liang and M. J. Harrold. Efficient points-to analysis for whole-program analysis. In O. Nierstrasz and M. Lemoine, editors, Lecture Notes in Computer Science, 1687, pp 199-215. SpringerVerlag, September 1999.

175. A. Diwan, K. S. McKinley, and J. E. B. Moss. Type-based alias analysis. In SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 106-117, June 1998.

176. Лицензия BSD, http://www.opensource.org/licenses/bsd-license.php

177. Стандарт OpenCL. http://www.khronos.org/opencl/

178. Vladimir Makarov. The finite state automaton based pipeline hazard recognizer and instruction scheduler in GCC. In Proceedings of GCC Developers' Summit, Ottawa, Canada, June 2003.

179. S. Swanson, L. K. McDowell, M. M. Swift, S. J. Eggers and H. M. Levy. An evaluation of speculative instruction execution on simultaneous multithreaded processors. ACM Trans. Comput. Syst. 21,3 (Aug. 2003), pp. 314-340.

180. А.А.Белеванцев, С.С.Гайсарян, В.П.Иванников. Построение алгоритмов спекулятивных оптимизаций. Журнал Программирование, N3 2008, с. 21-42.

181. Dmitry Melnik, Sergey Gaissaryan, Alexander Monakov, Dmitry Zhurikhin. An Approach for Data Propagation from Tree SSA to RTL. GREPS: International Workshop on GCC for Research in Embedded and Parallel Systems, Brasov, Romania, September 2007.

182. Маликов О.P. Исследование и разработка методики автоматического обнаружения уязвимостей в исходном коде программ на языке Си. Диссертация на соискание звания к.ф-м.н., Москва, 2006.

183. Diego Novillo. A Propagation Engine for GCC. In Proceedings of GCC Developers' Summit 2005, Ottawa, Canada, July 2005, pp. 175-184.

184. Инструмент Coverity Prevent, http://www.coverity.com/library/pdf/coverityprevent.pdf

185. Инструмент статического анализа компании Klocwork. http://www.klocwork.com/products/insight/klocwork-truepath

186. P. Emanuelsson & U. Nilsson. A Comparative Study of Industrial Static Analysis Tools (extended version). Tech. rep., Linkoping University, 2008.

187. Среда Eclipse, http://www.eclipse.org/

188. D. Liang & M. J. Harrold. Efficient Computation of Parameterized Pointer Information for Interprocedural Analyses. In SAS '01: Proceedings of the 8th International Symposium on Static Analysis, pp. 279-298, London, UK, Springer-Verlag, 2001.

189. T. Kremenek, D. Engler. Z-Ranking: Using Statistical Analysis to Counter the Impact of Static Analysis Approximations. Static Analysis, pp. 295-315, 2003 — Springer.

190. Portable Executable and Object File Format Specification http://download.microsoft.eom/download/e/b/a/ebal050f-a31d-436b-9281-92cdfeae4b45/pecoff.doc

191. Tool Interface Standards (TIS). Executable and Linkable Format (ELF), http://www.x86.org/intel.doc/tools.htm

192. IDA Pro Disassembler, http://www.hex-rays.com/idapro/.

193. Fast Library Identification and Recognition Technology (FLIRT), http://www.idapro.ru/description/flirt/.

194. H. Yin, Z. Liang, D. Song. HookFinder: Identifying and Understanding Malware Hooking Behaviors. // Proceeding of the 15th Annual Network and Distributed System Security Symposium (NDSS'08), 2008

195. P. S. Magnusson, M. Christensson, J. Eskilson, D. Forsgren, G. Hallberg, J. Hogberg, F. Larsson, A. Moestedt, and B. Werner. Simics: A Full System Simulation Platform. // IEEE Computer, 35(2):50-58, Feb. 2002.

196. S. Debray, J. Patel. Reverse Engineering Self-Modifying Code: Unpacker Extraction. // Proceedings of the 17th. IEEE Working Conference on Reverse Engineering, Oct. 2010, pp 131-140.

197. Wang C., Hill J., Knight J,. Davidson J. Software tamper resistance: obstructing static analysis of programs // Tech. Rep., N 12, Dep. of Сотр. Sci., Univ. of Virginia, 2000.

198. Weiser M. Program slicing // Proceedings of the 5th International Conference on Software Engineering. // IEEE Computer Society Press, 1981. pp. 439^149.

199. Korel В., Laski J. Dynamic program slicing // Information Processing Letters, Vol. 29, Issue 3.1988,pp.155-163

200. А. Тихонов, А. Аветисян, В. Падарян. Методика извлечения алгоритма из бинарного кода на основе динамического анализа. // Проблемы информационной безопасности. Компьютерные системы. №3 2008. стр. 66-71

201. В.А. Падарян, М.А. Соловьев, А.И. Кононов. Моделирование операционной семантики машинных инструкций. // Программирование №3, 2011. стр. 50-64

202. Wireshark. http://www.wireshark.org/ дата обращения 22 апреля 2012

203. Network Driver Interface Specification 5.1 http://msdn.microsoft.com/en-us/library/ff556916.aspx дата обращения 22 апреля 2012

204. Trivial File Transfer Protocol (revision 2) http://www.ietf.org/rfc/rfcl350.txt дата обращения 22 апреля 2012

205. DOMAIN NAMES IMPLEMENTATION AND SPECIFICATION http://www.ietf.org/rfc/rfcl 035.txt November 1987

206. Domain Name System. Obsoleting IQUERY http://www.ietf.org/rfc/rfc3425.txt November 2002

207. А.И. Гетьман, Ю.В. Маркин, В.А. Падарян, Е.И. Щетинин. Восстановление формата данных. // Труды Института системного программирования РАН, том 19, 2010, стр. 195-214

208. Bitmap Storage http://msdn.microsoft.com/en-us/library/ddl83391(VS.85).aspx дата обращения 22 апреля 2012

209. J. Newsome and D. Song. Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software. // In Proceedings of the Network and Distributed System Security Symposium (NDSS 2005), 2005

210. J. Caballero , H. Yin ,Z. Liang ,D. Song . Polyglot: Automatic Extraction of Protocol Message Format using Dynamic Binary Analysis. // In Proceedings of the 14th ACM Conference on Computer and and Communications Security, 2007, pp. 317—329.

211. Z. Lin, X. Jiang, D. Xu, X. Zhang. Automatic Protocol Format Reverse Engineering through Context-Aware Monitored Execution. // In Network and Distributed System Security, 2008.

212. G. Wondracek, P. Milani Comparetti, C. Kruegel, E. Kirda. Automatic Network Protocol Analysis. // In 15th Symposium on Network and Distributed System Security, 2008.

213. W. Cui, M. Peinado, K. Chen, H. J. Wang, L. Irun-Briz. Tupni: Automatic Reverse Engineering of Input Formats. // Proceedings of the 15th ACM conference on Computer and communications security, 2008, pp. 391—402.

214. G. A. Venkatesh: The Semantic Approach to Program Slicing. // Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation (PLDI '91). pp. 26—28.

215. J. Caballero. Grammar and Model Extraction for Security Applications using Dynamic Program Binary Analysis. / PhD thesis in Electrical and Computer Engineering, Carnegie Mellon University, Pittsburgh, PA, September 2010

216. OSCAR «Open System for Communication in Realtime» http://iserverdl.khstu.ru/oscar/ Обновлено 07.02.2005

217. M. Venable, M.R. Chouchane, M.E. Karim, and A. Lakhotia. Analyzing memory accesses in obfuscated x86 executables. In DIMVA'05, pages 1-18, 2005.

218. А. Белеванцев, Д. Журихин, Д. Мельник. Компиляция программ для современных архитектур. Труды Института системного программирования РАН, том 17, 2009 г. стр. 31-50.

219. Portable Native Client Introduction, http://www.chromium.org/nativeclient/pnacl/building-and-testing-portable-native-client

220. Chris Lattner. LLVM: An Infrastructure for Multi-Stage Optimization.// Master's thesis, Computer Science Dept., University of Illinois at Urbana-Champaign, Urbana, IL, 61 pages.

221. Omri Traub, Stuart Schechter, Michael D. Smith. Ephemeral Instrumentation for Lightweight Program Profiling, 2000. www.eecs.harvard.edu/hube/publications/muck.pdf. Date retrieved: October 7, 2011.

222. OProfile official website, http://oprofile.sourceforge.net.

223. Java Virtual Machine Profling Interface documentation. http://download.oracle.eom/javase/l.4.2/docs/guide/jvmpi/jvmpi.html.

224. Vinodha Ramasamy, Robert Hundt, Dehao Chen, Wenguang Chen. Feedback-Directed Optimizations in GCC with Estimated Edge Profiles from Hardware Event Proceedings of GCC Summit 2008. http://research.google.com/pubs/pub36576.html.

225. U. Zwick. The smallest networks on which the Ford-Fulkerson maximum flow procedure may fail to terminate. Theoretical Computer Science, 1995, Vol. 148.

226. R. Levin. Complementing Incomplete Edge Profile by applying Minimum Cost Circulation Algorithms. Master's thesis, University of Haifa, 2007. http://www.cs.technion.ac.il/~royl/MscThesisFinalVersionSubmission.pdf.

227. Fabrizio Petrini, Wu-chun Feng, Adolfy Hoisie, Salvador Coll, Eitan Frachtenberg: The Quadrics Network: High-Performance Clustering Technology. // IEEE Micro, 2002, Volume 22, No l,pp 46-57.

228. Myrinet Overview, 2011 // http://web.archive.org/web/20110514103424/http://www.myricom.com/myrinet/overview/

229. Кевин Дайерлинг. InfiniBand: архитектура коммутации для серверов, запоминающих устройств и коммуникационных систем // Мир компьютерной автоматизации on-line, № 3, 2002, http://www.mka.ru/?p=44434

230. Альфред В. Ахо, Моника С. Лам, Рави Сети, Джеффри Д. Ульман. Компиляторы: принципы, технологии и инструментарий. Второе издание. Москва, Вильяме, 2008.

231. Т. Кормен, Ч. Лейзерсон, Р. Ривест. Алгоритмы. Построение и анализ. Москва, МЦНМО, 1999.а/

Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.