Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лекция 7. Статический анализ

Лекция 7. Статический анализ (Лекции)

PDF-файл Лекция 7. Статический анализ (Лекции) Надёжность программного обеспечения (53349): Лекции - 7 семестрЛекция 7. Статический анализ (Лекции) - PDF (53349) - СтудИзба2019-09-18СтудИзба

Описание файла

Файл "Лекция 7. Статический анализ" внутри архива находится в папке "Лекции". PDF-файл из архива "Лекции", который расположен в категории "". Всё это находится в предмете "надёжность программного обеспечения" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

НАДЁЖНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯЛекция 7:Статический анализВМиК МГУ им. М.В. Ломоносова,Кафедра АСВК, Лаборатория Вычислительных КомплексовАссистент Волканов Д.Ю.2План лекции• Статический анализ– Модели программ– Алгоритмы статического анализа– Обнаружение дефектов• Другие статические методы• Заключение2Литература• Карпов Ю.Г. Model Checking.Верификация параллельных ираспределенных программныхсистем, БХВ-Петербург, 2010.• Кларк, Грумберг, Пелед.Верификация моделей программ:Model checking, МЦНМО, 2002.• Peled. Software Reliability Methods,Springer, 2001.3О чём этот курс• Концепции и связи• Аналитические модели и средстваподдержки• Методы для увеличения надёжности ПО:––––––ВерификацияСтатический анализТестированиеРасчёт надёжностиАнализ статистики ошибокБезопасность4Статические методыобеспечения качества5• Формальные инспекции, аудит• Формальная верификация– Дедуктивная верификация– Model checking• Статический анализ• Трансформации– Рефакторинги– Модификации56Статический анализ• Использует исходный код ПО для анализа• Применяется для–––––––––Форматирования программВычисления программных метрикОптимизации программРаспараллеливания программПреобразования программОбфускации программДеобфускации программОбнаружения дефектов…6Статический анализ дляобнаружения дефектов7• Использует исходный код ПО ВС дляанализа• Позволяет проанализировать всевозможные трассы исполнения• Позволяет проанализировать все наборывходных данных• Может быть полностью автоматизирован• Позволяет обнаружить нефункциональныедефектыx=1 y=2 z=9 x=2z = 13y=5 z=07Нефункциональные дефекты• Ошибки этапа кодирования• Не являются явным нарушениемспецификации• Являются следствием– сложности языков программирования– сложности библиотек– сложности алгоритмов и структурданных88Нефункциональные дефекты• Выход за границу массива• Переполнение буфера• Использование неинициализированныхобъектов• Работа с некорректным указателем• Арифметические ошибки• Утечки ресурсов• Ошибки форматных строк• Ошибки работы с ресурсами• и т.д.9910Проявление дефектов••••••Без проявленияЗависанияСбоиПаденияДеградация производительности…1011Опасные конструкции• Язык С–––––––МакроопределенияУказателиМассивыАдресная арифметикаУказатели на функцииПриведения типовОбъединения (union)1112Характеристики анализа• Полнота – доля найденных дефектовпо отношению ко всем дефектампрограммы• Точность – доля найденныхистинных дефектов по отношению ковсем найденным• Ресурсоемкость12Общая схема обнаружениядефектов1313Модели программ.Требования14• Полнота представления объектовпрограммы• Восстанавливаемость– Идеально: возможность полноговосстановления исходного кода– Желательно: связь с исходным кодом• Эффективность поиска объектов1415Модели программ.

Типы•Структурные––•Поведенческие–––•Синтаксическое дерево разбораАбстрактное синтаксическое дерево (AST –abstract syntax tree)Граф потока управления (CFG – control flow graph)Граф зависимостей по данным (DDG – datadependence graph)SSA - static single assignmentГибридные–Абстрактный семантический граф (ASG - abstractsemantic graph)1516Модели программ: ASTint main(){int n = 10;int f = 1;while (n >0){f *= n;--n;}return f;}1617Модели программ: ASGint main(){int n = 10;int f = 1;while (n >0){f *= n;--n;}return f;}1718Модели программ: DDGint main(){int n = 10;int f = 1;while (n >0){f *= n;--n;}return f;}1819Модели программ: CFGint main(){int n = 10;int f = 1;while (n >0){f *= n;--n;}return f;}1920Модели программ: SSAint main(){int n = 10;int f = 1;while (n >0){f *= n;--n;}return f;}20Модели программ.

Резюме• Для простейшего статическогоанализа достаточно структурныхмоделей (AST)• Для обнаружения дефектовнеобходим учет семантики:– ASG– CFG– CFG в форме SSA2121Модели программ.Построение22• Построение парсера вручную• Использование генераторов парсеров(ANTLR, YACC, etc)• Использование самостоятельных парсеров(Elsa)• Использование парсеров в составе средствразработки (NetBeans, Eclipse CDT)• Использование Front-End компиляторов(gcc)• Использование фреймворков длястатического анализа (SUIF, CIL, LLVM, etc)22Общая схема обнаружениядефектов2323Анализ на основе состоянийпрограммы• Состояние программы – совокупностьсостояний всех объектов программы вкакой-либо точке• Цель – вычислить все возможныесостояния программы во всех точках• Обнаружение дефектов происходит наоснове проверки вычисленных состояний2424Алгоритмы статическогоанализа25• По типу алгоритму– Интервальный анализ– Анализ указателей– Ресурсный анализ• По масштабу– Внутрипроцедурный– Межпроцедурный• По консервативности– Пессимистический (консервативный) анализ– Оптимистический анализ2526Интервальный анализ• Состояние переменных представляютсяинтервальными значениями–––a = [10;20]b = (-40;20) U (30;100)c = [0;∞)• Вычисление состояния после выполненияоператора языка производится на основеинтервальной арифметики• Каждому оператору ставится в соответствиеуравнение, связывающее состояние довыполнения и после2627Интервальный анализЭлемент моделиИнтервальное правилоint a;Sl = Sl-1  <a, noninit>a = С;Sl = Sl-1 \ Ui<a, i>  <a, С>a = b;φ(…)if(cond) Strue else SfalseSl = Sl-1 \ Ui<a, i>  Uj<a, bj>Sl = Ui SiStrue= Sl-1  condSfalse= Sl-1  cond27Интервальный анализ.Примерint a;a=10;int b =if (b <…a = a}else{…a = b}f(…);100){28<a, noninit><a, [10:10]><a, [10:10]>, <b, (-; )>+ b;<a, [10:10]>, <b, (-; 100)><a, [-+10:110]>, <b, (-; 100)>/ 2;<a, [10:10]>, <b, [100; )><a, [50: /2]>, <b, [100; )>2829Анализ указателей• Отличие от интервального анализа:– хранятся не интервалы значений, асписки связи “points-to”– значения одних объектов могут влиятьна другиеoj10oj21...k1...01...k2...2930Анализ указателей.

Пример• p, q1 и q2 – указатели на динамическуюпамять• Пример для конструкции free(p);oj2p01...0k2q2q1oj101...0oj2p010...k2...0q20q100oinvalid...k1...oj101...k1...3031Анализ указателей. Пример• p, q – указатели• Пример для конструкции *p = qot1p1...k2...p0oj1q001...j2...q0ok101...k20...oj101...j2...ok101...k2...03132Анализ указателей. Пример• p, q – указатели• Пример для конструкции p = *qpp00ot1ok101...k2q01...k2oj1...q0oj21...k2...01...k2...01...k2......oinvalidoj100oj2001...k2...oj301...k2...oj301...k2...ot101...k2...ot101...k2...3233Ресурсный анализ••••Ресурсы – объекты программы, имеющие свойжизненный циклПримеры ресурсов:––––––––Выделенная динамическая памятьФайлыСемафорыМьютексыСокетыПотокиНити…Обычно ресурсы характеризуются состоянием иатрибутамиКаждый тип ресурса изменяет свое состояние поопределенным правилам33Ресурсный анализ.Объект в куче34• Правила использования– Создается ( p = malloc(…) )– Используется ( *p )– Освобождается ( free(p) )• Примеры дефектов– Использование не созданного объекта– Повторное освобождение– Утечка3435Ресурсный анализ.

Файл• Правила использования– Открыть ( f = fopen(“…”, “r” )– Читать/писать ( fprintf(f, …) )– Закрыть ( close(f) )• Примеры дефектов– Чтение из не открытого файла– Попытка писать в файл открытый начтение– …3536Ресурсный анализ• Отличие ресурсов от других объектовпрограммы:– Управляются операционной системой– Управление сменой состояний и атрибутовпроисходит через функции API• Необходимо анализировать неконструкции ЯП, а библиотечные вызовы• Необходима информация о семантикебиблиотечных вызовов:– Семантика зашита в анализатор– Семантика описывается через аннотированиебиблиотек3637Масштаб анализа• Внутрипроцедурный анализ– Каждая функция анализируетсяотдельно– Информация не передается междуфункциями– Ресурсоемкость относительно низкая– Точность и/или полнота – снижаются– Реализуется большинствоманализаторов3738Масштаб анализа• Межпроцедурный анализ– Все функция анализируется совместно– Информация передается междуфункциями– Ресурсоемкость очень высокая– Точность и/или полнота – выше– Реализовано в небольшом числесредств38Консервативность анализа• Определяется правилами объединенияветвей• Консервативный (пессимистический) анализ–––При объединении ветвей объединяет интервалыСохраняет полноту (обнаруживаем все ошибки)Теряет точность (много ложных обнаружений)• Оптимистический анализ–––При объединении ветвей пересекает интервалыТеряет полноту (может пропускать ошибки)Сохраняет точность (мало ложных обнаружений)3939Консервативность анализаint arr1[10];int arr2[5];if (…){…}// <i, [1..8]>else {…}// <i, [6..15]>a = arr1[i]; // возможноошибкаb = arr2[i]; // ошибка•Консервативныйанализ:––•<i, [1..15]>обнаружит обе ошибки(возможно первая –ложная)Оптимистическийанализ––<i, [6..8]>обнаружит вторую ошибку(пропустив первую)404041Решение уравнений• В результате применения алгоритмов в явномили неявном виде строится системауравнений• Решение системы––С использованием теории решетокМетодами абстрактной интерпретации• Завершаемость процесса решенияобуславливается––Монотонностью уравненийКонечностью системы уравнений41Общая схема обнаружениядефектов424243Обнаружение дефектов• На основе анализа допустимостисостояний в элементах модели• Использование неинициализированнойпеременной:– Конструкция: a = b– Условие: <a, noninit>  Sl-1• Повторное освобождение объекта– Конструкция: free(p)– Условие: <p, invalid>  Sl-14344Обнаружение дефектов• Разыменование некорректного указателя––Конструкция: a = *pУсловие: <p, invalid>  Sl-1• Арифметические операции над указателямина разные объекты––Конструкция: a = p – q;Условие: <p, o1>,<q, o2>  Sl-1, o1≠o2• Выход за границы объекта––Конструкция: a = *p;Условие: <p, o, k>  Sl-1, k≥≠osize44Проблемы статическогоанализа45• Анализ циклов• Анализ рекурсии и глубокойвложенности вызовов• Анализ больших типов данных• Анализ программ с исключениями• Анализ программ с полиморфизмоми указателями на функции45Статический анализ.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5136
Авторов
на СтудИзбе
443
Средний доход
с одного платного файла
Обучение Подробнее