Details

Title: Реализация алгоритма динамического слайсинга методом повторного исполнения по запросу: выпускная квалификационная работа бакалавра: направление 09.03.01 «Информатика и вычислительная техника» ; образовательная программа 09.03.01_02 «Технологии разработки программного обеспечения»
Creators: Мощенских Максим Александрович
Scientific adviser: Степанов Даниил Сергеевич
Organization: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и технологий
Imprint: Санкт-Петербург, 2023
Collection: Выпускные квалификационные работы; Общая коллекция
Subjects: динамический слайсинг; анализ программ; инструментация программ; Java; dynamic slicing; program analysis; program instrumentation
Document type: Bachelor graduation qualification work
File type: PDF
Language: Russian
Level of education: Bachelor
Speciality code (FGOS): 09.03.01
Speciality group (FGOS): 090000 - Информатика и вычислительная техника
DOI: 10.18720/SPBPU/3/2023/vr/vr23-3427
Rights: Доступ по паролю из сети Интернет (чтение, печать, копирование)
Record key: ru\spstu\vkr\22810

Allowed Actions:

Action 'Read' will be available if you login or access site from another network Action 'Download' will be available if you login or access site from another network

Group: Anonymous

Network: Internet

Annotation

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

There are many ways to reduce the amount of code to be analyzed when debugging. One of them is program slicing. Most of the approaches suffer from slicing time dependence on program trace size. In this thesis we implement an algorithm that overcomes the problem — dynamic slicing by on-demand re-execution. Based on this algorithm, we developed a program slicing application for Java programming language, then compared it with other slicing methods. The evaluation results show usefulness and applicability of the approach.

Document access rights

Network User group Action
ILC SPbPU Local Network All Read Print Download
Internet Authorized users SPbPU Read Print Download
-> Internet Anonymous

Table of Contents

  • 1. Алгоритмы динамического слайсинга
    • 1.1. Обход графа зависимостей программы по выполненным узлам
    • 1.2. Обход графа зависимостей программы по выполненным зависимостям
    • 1.3. Обход графа динамических зависимостей
    • 1.4. Обход сокращённого графа динамических зависимостей
    • 1.5. Метод повторного исполнения по запросу
    • 1.6. Резюме
  • 2. Постановка задачи
    • 2.1. Основные функции разрабатываемого приложения
    • 2.2. Требования к статическому анализу
    • 2.3. Требования к инструментированию
    • 2.4. Резюме
  • 3. Подход к реализации алгоритма динамического слайсинга методом повторного выполнения по запросу
    • 3.1. Выбор языка программирования, для которого разрабатывается слайсер
      • 3.1.1. Python
      • 3.1.2. C/C++
      • 3.1.3. Java
      • 3.1.4. C#
      • 3.1.5. Резюме
    • 3.2. Выбор языка программирования, на котором разрабатывается слайсер
      • 3.2.1. Java
      • 3.2.2. Groovy
      • 3.2.3. Kotlin
      • 3.2.4. Scala
      • 3.2.5. Резюме
    • 3.3. Выбор инструмента для статического анализа программ
      • 3.3.1. Soot
      • 3.3.2. Spoon
      • 3.3.3. WALA
      • 3.3.4. Резюме
    • 3.4. Выбор подхода для инструментирования программ
      • 3.4.1. Резюме
    • 3.5. Резюме
  • 4. Разработка приложения
    • 4.1. Архитектура приложения
    • 4.2. Программные сущности
    • 4.3. Нахождение зависимостей
    • 4.4. Слайсинг
    • 4.5. Запуск с инструментированием
    • 4.6. Резюме
  • 5. Тестирование
    • 5.1. Выбор инструмента для сравнения
    • 5.2. Тестовые программы
    • 5.3. Задача тестирования
    • 5.4. Ход тестирования
    • 5.5. Анализ результатов
    • 5.6. Резюме
  • 1. Программы, на которых проводилось сравнение с Slicer4J
  • 2. Сравнение временных показателей Slicer4J и ODRES

Usage statistics

stat Access count: 4
Last 30 days: 0
Detailed usage statistics