Публикации 20.02.2012

20.02.2012 Конструирование практики поликультурного образования на основе полипарадигмального подхода

20.02.2012 Методология статистического исследования финансовых рынков при реализации денежно-кредитной политики Банком России

20.02.2012 Катодолюминесценция широкозонных материалов и наногетероструктур на их основе

20.02.2012 СИСТЕМА ПСИХОЛОГИЧЕСКОЙ ПОМОЩИ ДЕТЯМ С НЕДОСТАТКАМИ РЕЧИ

20.02.2012 Финансово-аналитический контроль деятельности организаций в условиях гармонизации с международными стандартами финансовой отчетности: теория и методология

20.02.2012 Синтез и супрамолекулярные свойства функционализированных по нижнему ободу (тиа)каликс[4]аренов

20.02.2012 Кембрийская радиация моллюсков: становление морфологического и таксономического разнообразия

20.02.2012 Внешняя и внутренняя задачи динамики изогнутого трубопровода: построение математических моделей и приближенное решение их уравнений

20.02.2012 Сперматогенез после экстремальных гипоксических и ишемических воздействий и возможность его медикаментозной коррекции в эксперименте

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

20.02.2012 КЛИНИКО-МОРФОЛОГИЧЕСКИЕ ОСОБЕННОСТИ И РЕЗУЛЬТАТЫ МЕДИКАМЕНТОЗНОГО И ХИРУРГИЧЕСКОГО МЕТОДОВ ЛЕЧЕНИЯ ПРОЛАКТИН-СЕКРЕТИРУЮЩИХ МАКРОАДЕНОМ ГИПОФИЗА

20.02.2012 Управление безопасностью сложных технических объектов угледобывающих предприятий

20.02.2012 Оценка организационных подходов в целях оплаты труда по достигнутому результату в учреждениях здравоохранения

Другие разделы


Современные методы статического и динамического анализа программ для решения приоритетных проблем программной инженерии

Автор Аветисян Арутюн Ишханович, 20.02.2012

Страницы: 1  2  3  4  5 

Аветисян Арутюн Ишханович

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

ПРОГРАММНОЙ ИНЖЕНЕРИИ 05.13.11 – математическое и программное обеспечение вычислительных машин,

комплексов и компьютерных сетей

Автореферат

диссертации на соискание ученой степени

доктора физико-математических наук

Москва – 2011 Работа выполнена в Федеральном государственном бюджетном учреждении науки Институте системного программирования Российской академии наук Научный консультант:

доктор физико-математических наук, академик РАН

Иванников Виктор Петрович Официальные оппоненты:

доктор физико-математических наук, чл.-корр. РАН

Воеводин Владимир Валентинович

доктор технических наук, чл.-корр. РАН

Каляев Игорь Анатольевич

доктор физико-математических наук, профессор

Крюков Виктор Алексеевич Ведущая организация: Федеральное государственное бюджетное учреждение науки Вычислительный центр им. А.А. Дородницына Российской академии наук Защита диссертации состоится “26” апреля 2012 г. в 15 часов на заседании диссертационного совета Д.002.087.01 при Федеральном государственном бюджетном учреждении науки Институте системного программирования Российской академии наук по адресу: 109004, Москва, ул. А. Солженицына, 25. С диссертацией можно ознакомиться в библиотеке Федерального государственного бюджетного учреждения науки Институте системного программирования Российской академии наук Автореферат разослан “___”___________________2012 г. Ученый секретарь диссертационного совета _____________________/Прохоров С.П./

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

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

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

Рассмотрим эти проблемы подробнее.

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

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

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

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

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

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

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

Обеспечение безопасности программно-аппаратных систем.

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

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

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

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

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

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

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

использовать преимущества их архитектуры.

распределенной памятью.

уязвимостей и других дефектов в программах на языках C/C++.

алгоритмов и нахождения недокументированных возможностей.

С/С++, за счет автоматического учета особенностей целевой платформы.

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

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

максимальное использование преимуществ их архитектуры.

разработки программ для систем с распределенной памятью.

приемлемое время с высокой степенью достоверности.

основе этих методов реализована интегрированная среда TrEx.

традиционных системах программирования языков C/C++.

Практическая значимость работы определяется тем, что на базе разработанных методов реализованы программные средства, обеспечивающие практическое решение рассматриваемых проблем при разработке и анализе программ. Эти средства используются в различных научно-исследовательских, промышленных и других организациях. Кроме того, разработанные программные средства используются в учебном процессе факультетов ВМК МГУ и ФУПМ МФТИ.

команд, ориентированный на платформы EPIC.

интенсивных атмосферных вихрей по теории В.Н. Николаевского.

десятки миллионов строк кода).

задач по обеспечению безопасности ПО в НИИ «Квант».

Svace и TrEx.

Апробация работы. Основные результаты диссертационной работы докладывались и обсуждались на конференциях и семинарах различного уровня. В том числе, 27 докладов на международных конференциях и 7 на всероссийских. В частности: Всероссийская научная конференция “Высокопроизводительные вычисления и их приложения», г. Черноголовка, 30 октября-2 ноября, 2000; Международный семинар «Супервычисления и математическое моделирование», Саров, 13-15 июня, 2001; Международная конференция “Parallel Computing Technologies (PaCT) Novosibirsk, Sept.3-7, 2001; Computer Science and Information Technologies (CSIT), Yerevan, September 17 – 20, 2001; Международной конференции “Параллельные вычисления и задачи управления” Москва, 2-4 октября, 2001; Parallel Computational Fluid Dynamics 2003, May 13-15, 2003 Moscow; Russian-Indian Workshop on High Performance Computing in Science and Engineering, June 16 – 20, 2003, Moscow; Conf. on Computer Science and Information Technology. September 22-26, 2003, Yerevan; The 10th EuroPVM/MPI conference. LNCS 2840. Sept. 2003, Venice; XII Международная конференция по вычислительной механике и современным прикладным программным системам, июнь – июль 2003, Владимир; Всероссийская научная конференция «Научный сервис в сети Интернет». Новороссийск, 20-25 сентября 2004; Parallel Computational Fluid Dynamics, May 24-27, 2004, Canary Islands, Spain; Fifth Mexican International Conference Avances en la Ciencia de la Computacion ENC’04, 20 – 24 September, Colima, Mexico; Международная научная конференция «Суперкомпьютерные системы и их применение», 26-28 октября 2004, Минск; Всероссийская научная конференция «Научный сервис в сети Интернет: технологии распределенных вычислений». Новороссийск, 19-24 сентября 2005; Computer Science and Information Technologies (CSIT), Yerevan, September 19 – 23, 2005; Всероссийская научная конференция «Научный сервис в сети ИНТЕРНЕТ: технологии параллельного программирования», г. Новороссийск, 18-23 сентября 2006; 13th International Conference On The Methods Of Aerophysical Research. 5 – 10 February, 2007, Novosibirsk; MTPP 2007 Parallel Computing Technologies First Russian-Taiwan Symposium Pereslavl-Zalesskii (Russia), September 2-3, 2007; Parallel Architectures and Compilation Techniques (PACT), Brasov, Romania, September 15-19, 2007; International Conference on the Methods of Aerophysical Research, Novosibirsk, 2007; Sixth International Conference on Computer Science and Information Technologies (CSIT’2007), 24-28 September, Yerevan, Armenia; Международная научная конференция «Космос, астрономия и программирование» (Лавровские чтения), 20-22 мая 2008 г. Санкт-Петербург; Седьмая международная конференция памяти академика А.П. Ершова Перспективы систем информатики. Рабочий семинар "Наукоемкое программное обеспечение", 15-19 июня 2009 г. Новосибирск; Международная конференция «РусКрипто’2009»; SAMOS 2009 Workshop, 2009; XIX Общероссийская научнтехническая конференция «Методы и технические средства обеспечения безопасности информации». Санкт-Петербург, 05-10 июля 2010 г.; Всероссийская конференция “Свободное программное обеспечение-2010”, СПб, 26-27 октября 2010 года; HiPEAC 2010, January 2010.

Гранты и контракты. Работа по теме диссертации проводилась в соответствии с планами исследований по проектам, поддержанным: грантами РФФИ: 06-07-89119-а «Исследование и разработка технологии решения вычислительно-сложных задач на базе распределенных вычислительных ресурсов», 08-01-00561-а “Инструментальная поддержка процесса разработки больших научно-технических приложений”, 08-07-00279-а “Исследование и разработка системы автоматического обнаружения дефектов в исходном коде программ”, 08-07-00311-а “Исследование и разработка набора инструментальных средств для языков параллельного программирования нового поколения”, 08-091850-КО_а “Компиляция программ для высокопроизводительных встраиваемых процессоров”, 09-07-00382-а “Методология поддержки разработки эффективных параллельных программ в среде ParJava”, 10-07-92600-КО_а “Кодогенерация и автоматическая настройка для акселераторов”, 11-07-00466-а “Исследование и разработка инструмента динамического анализа программ для автоматического обнаружения дефектов”; контрактами: «Исследование и разработка средств повышения защищённости программного обеспечения от внешних атак» в рамках ФЦП "Исследования и разработки по приоритетным направлениям развития науки и техники на 2002-2006 годы" (ГК № 02.447.11.1004); “Высокоуровневые модели параллельных вычислений и их библиотеки поддержки времени выполнения” (ГК № 07.514.11.4001) и “Проектирование и разработка web-ориентированного производственно-исследовательского центра, ориентированного на решение задач анализа программ” (ГК №.07.514.11.4040) в рамках ФЦП “Исследования и разработки по приоритетным направлениям развития научно-технологического комплекса России на 2007-2013 годы”; в рамках следующих Программ фундаментальных исследований Президиума РАН: Программа №1 "Проблемы создания научной распределенной информационнвычислительной среды на основе развития GRID технологий и современных телекоммуникационных сетей", Программа № 4 «Фундаментальные проблемы системного программирования», Программа №14 «Высокопроизводительные вычисления и многопроцессорные системы». Также работы проводились по договорам с компаниями Самсунг Электроникс Ко.Лтд. и ФГУП НИИ “Квант”. Кроме того, работа была поддержана грантом Президента Российской Федерации для поддержки молодых российских ученых и ведущих научных школ РФ.

Авторские свидетельства. Свидетельство об официальной регистрации программы для ЭВМ №2005613149. “Программа поиска уязвимостей типа переполнения буфера в исходном коде программ на языке C”. Федеральная служба по интеллектуальной собственности, патентам и товарным знакам. Зарегистрировано в Реестре программ для ЭВМ 05.12.2005 г. Правообладатель: Учреждение Российской академии наук Институт системного программирования РАН. Авторы: Аветисян А.И., Белеванцев А.А., Гайсарян С.С., Журихин Д.М., Маликов О.Р., Мельник Д.М., Несов В.С., Спиридонов С.В. Свидетельство об официальной регистрации программы для ЭВМ №2006613032. “Среда межпроцедурного анализа программ”. Федеральная служба по интеллектуальной собственности, патентам и товарным знакам. Зарегистрировано в Реестре программ для ЭВМ 31.08.2006 г. Правообладатель: Учреждение Российской академии наук Институт системного программирования РАН. Авторы: Аветисян А.И., Белеванцев А.А., Гайсарян С.С., Журихин Д.М., Маликов О.Р., Мельник Д.М., Несов В.С., Спиридонов С.В.

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

Публикации. По материалам диссертации опубликовано 56 работ, в том числе, 1 учебное пособие. 12 статей опубликовано в изданиях, входящих в список изданий, рекомендованных ВАК РФ. Получено 2 свидетельства о регистрации программ для ЭВМ. Наиболее значимые работы перечислены в списке публикаций.

Структура и объем диссертационной работы. Диссертация состоит из введения, шести глав и заключения, изложенных на 324 страницах, списка литературы из 273 наименований, содержит 63 рисунка и 17 таблиц.

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


Страницы: 1  2  3  4  5