Построение эквивалентного представления зависимостей классов, полей, методов, функций и их перекрестного использования в исходном коде — различия между версиями

Материал из 0x1.tv

(Слайды)
== Слайды ==
[[File:Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf|left|page=-|256px]]

{{----}}

<!-- == Тезисы ==  -->

Для упрощения статического  анализа  многоязычных  программных систем, включающего построение эквивалентных представлений и выполнения различного рода анализов, предлагается использование универсального промежуточного представления (УПП) [1,2].

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

Предложен прототип генератора такого представления в текстовый формат на языке описания графов DOT.

=== Граф зависимостей классов, полей, методов, функций и их перекрестного использования ===

Для  построения  графа  зависимостей  классов,  полей,  методов, функций и их перекрестного использования  дальнейшем  «граф
зависимостей»)  путем  трансформации  УПП  необходим  полный  доступ к DOM УПП, которое в свою очередь представлено XML документом.
В качестве средства загрузки и обработки DOM УПП была выбрана библиотека pugixml [3].
Критерием выбора послужил сравнительный тест [4].
Так как предложенное эквивалентное представление предлагается в качестве конечного узла перед непосредственным выполнением пользовательского анализа, необходимо выбрать было формат визуализации.

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

Алгоритм генерации графа зависимостей двухпроходный. Дерево УПП имеет в контексте графа зависимостей структуру как на рисунке 1.

Загруженная DOM рекурсивно обходится в глубину и информация о каждом узле из контекста графа зависимостей сохраняется в индекс  DOM2.

После обхода происходит генерация графа зависимостей в файл на языке описания графов DOT путем обхода дерева DOM2 в глубину.

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

Вершины графа зависимостей представлены тремя типами: класс, поле, метод/функция.

Их общий вид представлен на рисунках 2, 3, 4.

[[File:Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде-pic1.png|left|page=-|480px]]
[[File:Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде-pic2.png|left|page=-|480px]]
[[File:Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде-pic3.png|left|page=-|480px]]
[[File:Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде-pic4.png|left|page=-|480px]]

В качестве тестового проекта было использованно УПП исходного текста проекта на C++ библиотеки pugixml [3,5].

Прототип генератора графа зависимостей имеет функционал получения среза по классам и методам, позволяющий визуализировать
только интересуемую часть графа (Рисунок 5).

[[File:Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде-pic5.png|left|page=-|640px]]



== Примечания и отзывы ==
<!-- <blockquote>[©]</blockquote> -->

<references/>

[[Category:OSEDUCONF-2016]]
[[Category:Образование]]
[[Category:Open-source]]

<!-- topub -->

Версия 10:35, 7 марта 2016

«Построение эквивалентного представления зависимостей классов, полей, методов, функций и их перекрестного использования в исходных текстах программ (Алексей Пустыгин, OSEDUCONF-2016)»

Аннотация

Докладчик
Алексей Пустыгин.jpg
Алексей Пустыгин

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

Универсальное промежуточное представление является текстовым эквивалентом абстрактного синтаксического дерева на языке разметки.

Видео


Слайды

Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf Построение эквивалентного представления зависимостей классов-методов-функций и их перекрестного использования в коде.pdf

Тезисы

Для упрощения статического анализа многоязычных программных систем, включающего построение эквивалентных представлений и выполнения различного рода анализов, предлагается использование универсального промежуточного представления (УПП) [1,2].

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

Предложен прототип генератора такого представления в текстовый формат на языке описания графов DOT.

Граф зависимостей классов, полей, методов, функций и их перекрестного использования

Для построения графа зависимостей классов, полей, методов, функций и их перекрестного использования (в дальнейшем — «граф зависимостей») путем трансформации УПП необходим полный доступ к DOM УПП, которое в свою очередь представлено XML документом. В качестве средства загрузки и обработки DOM УПП была выбрана библиотека pugixml [3]. Критерием выбора послужил сравнительный тест [4]. Так как предложенное эквивалентное представление предлагается в качестве конечного узла перед непосредственным выполнением пользовательского анализа, необходимо выбрать было формат визуализации.

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

Алгоритм генерации графа зависимостей двухпроходный. Дерево УПП имеет в контексте графа зависимостей структуру как на рисунке 1.

Загруженная DOM рекурсивно обходится в глубину и информация о каждом узле из контекста графа зависимостей сохраняется в индекс — DOM2.

После обхода происходит генерация графа зависимостей в файл на языке описания графов DOT путем обхода дерева DOM2 в глубину.

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

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

Вершины графа зависимостей представлены тремя типами: класс, поле, метод/функция.

Их общий вид представлен на рисунках 2, 3, 4.

page=-
page=-
page=-
page=-

В качестве тестового проекта было использованно УПП исходного текста проекта на C++ библиотеки pugixml [3,5].

Прототип генератора графа зависимостей имеет функционал получения среза по классам и методам, позволяющий визуализировать только интересуемую часть графа (Рисунок 5).

page=-


Примечания и отзывы