SlideShare a Scribd company logo
1 of 5
Download to read offline
А.В. Зараковский, С.В. Клименков, Н.И. Ткаченко, А.Е. Харитонова
Научно-технический вестник Санкт-Петербургского государственного университета
информационных технологий, механики и оптики, 2011, № 2 (72)
123
5
КОМПЬЮТЕРНЫЕ СИСТЕМЫ
И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
УДК 004.423.4
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ
ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОДА В ФОРМАТ RDF СРЕДСТВАМИ
СЕМАНТИЧЕСКОГО АНАЛИЗА
А.В. Зараковский, С.В. Клименков, Н.И. Ткаченко, А.Е. Харитонова
Описано решение задачи преобразования исходного кода на объектно-ориентированном языке в формат RDF сред-
ствами семантического анализа. Рассмотрены основные принципы семантического анализа объектно-
ориентированного кода и предложен архитектурный прототип программного продукта, осуществляющего преобра-
зование кода в RDF.
Ключевые слова: код, RDF, семантический анализ, машинный анализ, триплет, грамматика, синтаксическое дерево,
лексер, парсер, Java, ANTLR.
Введение
Одним из обязательных условий успешной разработки и сопровождения любого программного
продукта является удобочитаемость его исходного кода. Стремясь добиться этого, программисты стара-
ются делать код более логичным и понятным, именуя должным образом переменные и методы, исполь-
зуя правильно подобранные типы и классы, снабжая код комментариями. Все это говорит о том, что код
является отличным источником информации о самом себе.
Программист, читая чужую программу с подробными комментариями, без труда поймет, что дела-
ет каждый метод, для чего предназначена любая переменная или же любой объект. Человек способен
анализировать текст программы, распознавая в нем целостные куски информации. На самом деле в этот
момент он осуществляет разбор кода на информационные блоки и сопоставление получаемых фактов
друг с другом, так что, по сути, он строит зависимости в виде триплетов «объект – предикат – субъект» и
оперирует уже ими. В качестве примеров можно привести обычные мысли вроде «переменная представ-
ляет целое число» или «метод запускается без параметров». В случае машинного анализа все не так про-
сто. Машина не обладает разумом и способностью к анализу, а значит, не сможет самостоятельно про-
вести разбор кода, как это делает человек. Таким образом, для успешной реализации машинного анализа
кода необходимо выбрать формат представления данных и разработать специальную программу, которая
осуществит разбор кода и приведет его к нужному программисту виду.
Язык описания ресурсов
В рамках данной работы в качестве формата, в который осуществляется преобразование про-
граммного кода, выбран Resource Description Framework (RDF). RDF – это разработанная консорциумом
Всемирной паутины модель для представления данных, входящая в концепцию семантической паутины,
а в особенности – метаданных. Метаданные – это информация о данных. Зачастую это структурирован-
ные данные, представляющие собой характеристики описываемых сущностей для целей их идентифика-
ции, поиска, оценки и управления ими. Важной особенностью формата RDF является то, что он описы-
вает ресурсы в виде, пригодном (и достаточно удобном) для машинной обработки.
Ресурсом в RDF может быть любая сущность – информационная (сайт, программа, изображение)
или неинформационная (человек, город, любое абстрактное понятие). Утверждение о ресурсе строится в
виде триплетов и имеет вид «субъект – предикат – объект». Множество RDF-утверждений образует ориен-
тированный граф, в котором вершинами являются субъекты и объекты, а предикаты являются ребрами.
RDF сам по себе представляется не каким-либо форматом файла, а абстрактной моделью. Для ра-
боты с RDF в основном используются несколько форматов, в число которых входят RDF/XML, RDFa,
N3. Все они уже имеют определенные правила записи и структуру [1].
Семантический анализ программного кода
Основные принципы. Определившись с форматом хранения данных, можно перейти к основной
задаче – собственно семантическому анализу программного кода. Для начала рассмотрим основные ас-
пекты семантики любого объектно-ориентированного языка программирования.
Контекстно-свободная грамматика. Любой язык программирования имеет свой алфавит, который
целиком состоит из терминальных и нетерминальных символов. Терминальный символ – это любой
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ...
Научно-технический вестник Санкт-Петербургского государственного университета
информационных технологий, механики и оптики, 2011, № 2 (72)
124
имеющий конкретное известное значение символ, как, например, цифра или буква. Нетерминальный сим-
вол – это элемент конструкции языка, не имеющий заранее известного значения, как, например, формула
или команда. Нетерминальные символы состоят из множества терминальных и в итоге к ним сводятся.
Язык программирования описывается набором правил, выделяющих некоторое подмножество из-
вестных символов из множества слов конечного алфавита языка. Такой набор правил называется грамма-
тикой языка и может как задавать правила определения правильности построения слова языка, так и по-
зволять построить любое новое слово языка. Первые являются распознающими (или аналитическими)
грамматиками, вторые же являются порождающими.
Грамматика, левая часть правил которой состоит целиком из нетерминальных символов, называ-
ется контекстно-свободной [2].
Расширенная форма Бэкуса-Наура. Расширенная форма Бэкуса-Наура (РБНФ) – это формальная
система определения синтаксиса, в которой одни синтаксические зависимости определяются через дру-
гие. Используется для описания контекстно-свободных грамматик.
Правило в РБНФ имеет вид «идентификатор = выражение.», где идентификатор – это имя нетер-
минального символа, а выражение – это соответствующая правилам РБНФ комбинация терминальных и
нетерминальных символов. Точка в конце – это специальный символ, указывающий на завершение пра-
вила.
Набор возможных конструкций РБНФ очень невелик и состоит лишь из конкатенации символов,
выбора, условного вхождения и повторения. Также при записи правила РБНФ можно использовать груп-
пирующие скобки для определения сложных правил [3].
Синтаксическое дерево. Объектно-ориентированный код, будучи правильно оформленным, сам
по себе предоставляет отличные возможности для семантического анализа. При соблюдении правил
именования сущностей в коде и его правильной структуры всегда существует возможность получить
объектную модель, отражающую организацию кода. Каждый объект в программе можно рассматривать
атомарно, не вдаваясь в подробности его реализации. Это называется абстрагированием. В свое же время
каждый объект может включать в себя множество других объектов, которые также можно рассматривать
как конечную атомарную сущность. Элементарные типы, которые помимо других объектов могут вклю-
чаться в объект, всегда являются конечными и не имеют возможности инкапсулировать в себе что-либо.
В данном случае при употреблении термина «объект» под объектом все же понимается не экземпляр
класса, как можно было подумать, а некий атомарный блок информации – метод, класс, объявление пе-
ременной, блок комментариев или даже программа целиком. Каждый объект каким-то образом связан с
другими, например, имеет некую вложенность в другой объект.
Рассмотрим следующий код:
public class Hello {
public static void main(String[] args) {
String str = "Hello, world!";
System.out.println( str );
}
}
Эта программа объявляет переменную str, присваивает ей значение, а затем вызывает метод выво-
да ее содержимого в поток out.
При анализе этого кода можно выделить класс Hello, в котором объявлен метод void main(String[]
args), в котором объявлена переменная String str, которой присваивается значение «Hello, world!», и вы-
зывается метод println() с входным параметром str объекта out класса System. Соответственно, это можно
и нужно отразить не словами, а в виде некой формализованной модели, которая покажет вложенность
кода, значения, типы и сами сущности. Наилучшим образом для этого подходит двоичное дерево, такое,
что каждый его узел может быть законченным, т.е. отражать некое детерминированное значение или по-
ле любого примитивного типа, или расходиться вниз, демонстрируя, что элемент не является заключи-
тельным в иерархии. Примерное такое дерево, построенное по вышеприведенному коду, можно увидеть
на рис. 1.
Таким образом, при семантическом анализе объектно-ориентированного кода можно составить
иерархию объектов и элементарных типов, а также провести зависимости и связи между ними. Такую
иерархию представляет абстрактное синтаксическое дерево (АСД) или Abstract Syntax Tree (AST), листья
которого представляют элементарные типы в коде, а различные ветви – объекты, представленные в коде.
АСД – это конечное, помеченное, ориентированное дерево, в котором вершины сопоставлены с операто-
рами языка программирования, а листья – с соответствующими операндами. Таким образом, листья яв-
ляются лишь пустыми операторами и представляют только переменные и константы. Количество ветвей,
как и количество листьев, не ограничено, однако дерево всегда имеет одну вершину – объект, представ-
ляющий программу целиком.
Применение контекстно-свободной грамматики при разборе кода приводит к получению абст-
рактного синтаксического дерева, в котором элементы не определяются конкретной грамматикой разби-
раемого языка. Классическим примером являются ограничительные скобки в языковых конструкциях –
А.В. Зараковский, С.В. Клименков, Н.И. Ткаченко, А.Е. Харитонова
Научно-технический вестник Санкт-Петербургского государственного университета
информационных технологий, механики и оптики, 2011, № 2 (72)
125
группировка операндов в АСД явно задается структурой дерева, а ограничивающие скобки вообще от-
сутствуют в разборе, так как не влияют на АСД. АСД со свободной грамматикой отличается от дерева
разбора, т.е. дерева с конкретной грамматикой, тем, что в нем отсутствуют ребра и узлы для тех синтак-
сических правил, которые никак не влияют на семантику программы. Для языка с контекстно-свободной
грамматикой составление АСД является достаточно тривиальной задачей. Большинство правил грамма-
тики создают вершину, а символы в правиле становятся ребрами. Правила, которые ничего не привносят
в АСД, такие, как, например, группирующие, просто заменяются в вершине одним из своих символов.
Кроме того, анализатор может создать полное дерево разбора и затем пройти по нему, удаляя узлы и
ребра, которые не используются в абстрактном синтаксисе, чтобы получить АСД.
Рис. 1. Двоичное дерево разбора кода
В конечном итоге после разбора кода нас интересует, само собой, не АСД, а структура программы,
откуда удалены все ненужные звенья дерева [4].
Решение задачи разбора кода
Построить семантическую модель кода и дерево разбора должны программа-лексер и программа-
парсер, понимающие грамматику выбранного языка программирования, проходя от вершины к конеч-
ным операндам. Лексер – это программный модуль, осуществляющий разбор текста по заданным грам-
матическим правилам и генерирующий поток токенов, т.е. нетерминальных символов языка программи-
рования. Например, токенами языка Java для полной грамматики языка будут являться класс, метод, блок
комментариев, блок кода. Парсер – это программный модуль, который, основываясь на поступающих из
потока лексера токенах, по заданным правилам строит абстрактное дерево разбора. Лексер должен выде-
лять в коде следующие сущности, которые описываются лексическими правилами или грамматикой:
 функции, методы и процедуры, а также их вызовы;
 объекты и их вложенность;
 поля элементарных типов;
 комментарии, условные комментарии и документирующие комментарии;
 директивы;
 блоки кода и управляющие конструкции;
 различные атрибуты любой из перечисленных сущностей.
Дальнейший разбор дерева будет заключаться в выделении необходимых и важных для постав-
ленной задачи узлов и листьев АСД. К примеру, не имеет смысла переводить в вид RDF различные тер-
минальные символы, если они находятся в левой части грамматического правила. Таким образом, не
имеет значения все то, что не укладывается в контекстно-свободную грамматику. В связи с тем, что RDF
является языком описания ресурсов, а терминал вряд ли можно к таковым отнести, то парсер АСД в RDF
должен такие листья дерева исключать из разбора.
На вход парсера в RDF поступают АСД и правила разбора в RDF. Работа парсера заключается в
переводе поступающей информации в вид триплетов «субъект – предикат – объект», если эта информа-
ция имеет ценность для поставленной задачи. Генерируемый парсером RDF поток триплетов поступает
на вход модуля, записывающего триплеты в выбранном формате.
Архитектурная модель создаваемой системы представлена на рис. 2.
ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ...
Научно-технический вестник Санкт-Петербургского государственного университета
информационных технологий, механики и оптики, 2011, № 2 (72)
126
Объектно-
ориентированный
код
Lexer
AST Parser
RDF Parser
XML Writer
RDF Storage
Lexing rules
(grammar)
AST parsing
rules
RDF parsing
rules
Token stream
AST
Triplet stream
RDM XML file
Рис. 2. Архитектура системы разбора кода в RDF
Программная реализация разбора кода
Существует два метода разбора кода – нисходящий и восходящий. Нисходящий разбор начинается
с корня дерева, осуществляя рекурсивный проход до листьев. Восходящий же, наоборот, начинает про-
ход с листьев, а заканчивает корнем. Алгоритмы восходящего метода разбора – более сложные, а в сово-
купности с тем фактом, что избыточность RDF не повлечет каких-то серьезных последствий, можно ут-
верждать, что разумнее в задаче перевода кода в RDF использовать более простой и быстрый метод нис-
ходящего разбора.
Существует множество программных библиотек, помогающих разобрать текст программы на кон-
текстно-свободном языке программирования и получить его абстрактное представление в виде двоично-
го дерева. Каждое такое средство разбора оперирует грамматикой выбранного языка, написанной с со-
блюдением единой РБНФ, проводя лексический и синтаксический разборы.
Одно из подобных программных средств – это Another Tool for Language Recognition (ANTLR).
ANTLR – это генератор парсеров на языке Java, который принимает на вход файл грамматики, написан-
ный по единой форме Бэкуса–Наура, и файл с исходным кодом разбираемой программы, а на выходе
создает абстрактное синтаксическое дерево. На самом деле провайдер ANTLR предоставляет утилиту
ANTLRWorks, позволяющую описать грамматику и генерирующую классы лексера и парсера. Помимо
утилиты предоставляется библиотека Java времени выполнения ANTLR, которая как раз и запускает в
работу лексер и парсер, получает от них результат и строит дерево.
Готовых решений для перевода дерева в RDF не существует. Соответственно, встает задача разра-
ботки подобного решения. Поскольку к этому моменту уже имеется формальная форма представления
кода, которая является результатом работы ANTLR, перед парсером RDF ставятся только следующие
задачи:
 выборка важных и необходимых узлов АСД;
 сопоставление объектов, субъектов и предикатов на основе анализа ветвей АСД;
 формирование триплетов RDF;
 создание и запись XML-сущностей (или других, что зависит от выбранной формы записи RDF), от-
ражающих суть каждого триплета.
Решение должно состоять из двух модулей – RDF Parser и XML Writer.
RDF Parser должен проходить по всем узлам дерева разбора, проверять каждый на соответствие
правилам разбора в RDF и, если узел необходим для решения задачи, генерировать новый триплет в по-
токе триплетов и запоминать узел как проверенный.
XML Writer, получая триплеты из потока, генерирует XML-код, который описывает триплеты в
нужном формате.
Алгоритмы работы RDF Parser и XML Writer представлены на рис. 3, а, б.
Весь программный комплекс, как «черный ящик», должен выглядеть так: на входе – исходный код
программы, на выходе – требуемая форма записи RDF и, при необходимости, – отчет об ошибках. Отчет
об ошибках служит для дополнительного анализа, если, к примеру, исходный код программы был напи-
сан с нарушениями общепринятых стандартов записи кода (например, соглашение о записи кода на язы-
ке Java).
И.С. Рубина
Научно-технический вестник Санкт-Петербургского государственного университета
информационных технологий, механики и оптики, 2011, № 2 (72)
127
а б
Рис. 3. Алгоритм RDF Parser (а); алгоритм XML Writer (б)
Заключение
В работе рассмотрены основные принципы решения задачи преобразования исходного кода на
объектно-ориентированном языке программирования в формат RDF и предложен прототип архитектуры
программного продукта решающего эту задачу. Программный продукт, основанный на предложенном
архитектурном прототипе, может найти достаточно широкое применение при решении задач анализа
кода, в экспертных системах и САПР.
Литература
1. Eric Miller. RDF Primer: W3C Recommendation // W3C [Электронный ресурс]. – Режим доступа:
http://www.w3.org/TR/rdf-primer/ (дата обращения: 20.01.10).
2. Context-free grammar // Wikipedia [Электронный ресурс]. – Режим доступа:
http://en.wikipedia.org/wiki/Context-free_grammar (дата обращения: 04.02.10).
3. Extended Backus-Naur Form // Wikipedia [Электронный ресурс]. – Режим доступа:
http://en.wikipedia.org/wiki/EBNF (дата обращения: 04.02.10).
4. Parr T. The definitive ANTLR reference: Building domain-specific languages / Terence Parr. – San Fran-
cisco; The pragmatic programmers, LLC, 2007. – 384 p.
Зараковский Алексей Владимирович – Санкт-Петербургский государственный университет информацион-
ных технологий, механики и оптики, студент, dbiryukov@list.ru
Клименков Сергей Викторович – Санкт-Петербургский государственный университет информацион-
ных технологий, механики и оптики, ассистент,
Serge.Klimenkov@Servicom.Ru
Ткаченко Никита Иванович – Санкт-Петербургский государственный университет информацион-
ных технологий, механики и оптики, студент,
n.i.tkachenko@gmail.com
Харитонова Анастасия Евгеньевна – Санкт-Петербургский государственный университет информацион-
ных технологий, механики и оптики, ассистент,
Anastassia.Kharitonova@Elcom.SPb.Ru

More Related Content

What's hot

Максим Литвинов
Максим ЛитвиновМаксим Литвинов
Максим ЛитвиновLidia Pivovarova
 
раздел 4 проектирование и использование баз данных
раздел 4  проектирование и использование баз данныхраздел 4  проектирование и использование баз данных
раздел 4 проектирование и использование баз данныхtatianabtt
 
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Alexey Neznanov
 
презентация2
презентация2презентация2
презентация2Suchkov
 
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
Некоторые трудности при обучении программированию:что нельзя обойти и умолч...Некоторые трудности при обучении программированию:что нельзя обойти и умолч...
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...Alexey Neznanov
 
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...Alexey Noskov
 
Диаграмма вариантов использования
Диаграмма вариантов использованияДиаграмма вариантов использования
Диаграмма вариантов использованияDEVTYPE
 
Сила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программированияСила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программированияVasiliy Sabadazh
 

What's hot (13)

Инструментальные системы извлечения информации
Инструментальные системы извлечения информацииИнструментальные системы извлечения информации
Инструментальные системы извлечения информации
 
ch6.pdf
ch6.pdfch6.pdf
ch6.pdf
 
Максим Литвинов
Максим ЛитвиновМаксим Литвинов
Максим Литвинов
 
Dialog
DialogDialog
Dialog
 
раздел 4 проектирование и использование баз данных
раздел 4  проектирование и использование баз данныхраздел 4  проектирование и использование баз данных
раздел 4 проектирование и использование баз данных
 
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
 
8 3-1
8 3-18 3-1
8 3-1
 
презентация2
презентация2презентация2
презентация2
 
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
Некоторые трудности при обучении программированию:что нельзя обойти и умолч...Некоторые трудности при обучении программированию:что нельзя обойти и умолч...
Некоторые трудности при обучении программированию: что нельзя обойти и умолч...
 
Авиком
АвикомАвиком
Авиком
 
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
 
Диаграмма вариантов использования
Диаграмма вариантов использованияДиаграмма вариантов использования
Диаграмма вариантов использования
 
Сила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программированияСила парадигмы: обзор парадигм программирования
Сила парадигмы: обзор парадигм программирования
 

Similar to ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОДА В ФОРМАТ RDF СРЕДСТВАМИ СЕМАНТИЧЕСКОГО АНАЛИЗА

Programming Concepts
Programming ConceptsProgramming Concepts
Programming ConceptsMister_Lee
 
Применение статического анализа при разработке программ
Применение статического анализа при разработке программПрименение статического анализа при разработке программ
Применение статического анализа при разработке программTatyanazaxarova
 
Понятия технологии разработки объектно-ориентированных информационных систем ...
Понятия технологии разработки объектно-ориентированных информационных систем ...Понятия технологии разработки объектно-ориентированных информационных систем ...
Понятия технологии разработки объектно-ориентированных информационных систем ...Aimurat Adilbekov
 
10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскаль10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскальAnna_Malina
 
10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскаль10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскальAnna_Malina
 
МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ ЕГО СО...
МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ ЕГО СО...МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ ЕГО СО...
МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ ЕГО СО...ITMO University
 
Инструментальные системы извлечения информации
Инструментальные системы извлечения информацииИнструментальные системы извлечения информации
Инструментальные системы извлечения информацииAlexey Noskov
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Unguryan Vitaliy
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Sergey Nemchinsky
 
эволюция языков программирования
эволюция языков программированияэволюция языков программирования
эволюция языков программированияAndrey Radionov
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системыNetpeak
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системыNetpeak
 
Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальAndrey Dolinin
 
Л1 Введение в ROS.pdf
Л1 Введение в ROS.pdfЛ1 Введение в ROS.pdf
Л1 Введение в ROS.pdfAlekseyKabanov3
 
1 общие понятия о проектировании мехатронных систем
1 общие понятия о проектировании мехатронных систем1 общие понятия о проектировании мехатронных систем
1 общие понятия о проектировании мехатронных системMakhabbat Kalenova
 
Fact Extraction (ideograph)
Fact Extraction (ideograph)Fact Extraction (ideograph)
Fact Extraction (ideograph)NLPseminar
 
ПРИМЕНЕНИЕ ОНТОЛОГИЙ В СИСТЕМЕ УПРАВЛЕНИЯ ИНТЕЛЛЕКТУАЛЬНЫМИ РЕСУРСАМИ
ПРИМЕНЕНИЕ ОНТОЛОГИЙ В СИСТЕМЕ УПРАВЛЕНИЯ ИНТЕЛЛЕКТУАЛЬНЫМИ РЕСУРСАМИПРИМЕНЕНИЕ ОНТОЛОГИЙ В СИСТЕМЕ УПРАВЛЕНИЯ ИНТЕЛЛЕКТУАЛЬНЫМИ РЕСУРСАМИ
ПРИМЕНЕНИЕ ОНТОЛОГИЙ В СИСТЕМЕ УПРАВЛЕНИЯ ИНТЕЛЛЕКТУАЛЬНЫМИ РЕСУРСАМИITMO University
 

Similar to ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОДА В ФОРМАТ RDF СРЕДСТВАМИ СЕМАНТИЧЕСКОГО АНАЛИЗА (20)

Programming Concepts
Programming ConceptsProgramming Concepts
Programming Concepts
 
Применение статического анализа при разработке программ
Применение статического анализа при разработке программПрименение статического анализа при разработке программ
Применение статического анализа при разработке программ
 
10 инф
10 инф10 инф
10 инф
 
Понятия технологии разработки объектно-ориентированных информационных систем ...
Понятия технологии разработки объектно-ориентированных информационных систем ...Понятия технологии разработки объектно-ориентированных информационных систем ...
Понятия технологии разработки объектно-ориентированных информационных систем ...
 
Составные части объектного подхода
Составные части объектного подходаСоставные части объектного подхода
Составные части объектного подхода
 
10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскаль10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскаль
 
10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскаль10кл общие сведения о языке программирования паскаль
10кл общие сведения о языке программирования паскаль
 
МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ ЕГО СО...
МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ ЕГО СО...МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ ЕГО СО...
МЕТОД НАВИГАЦИИ ПО ТЕКСТУ ДОКУМЕНТА С ПОМОЩЬЮ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ ЕГО СО...
 
Инструментальные системы извлечения информации
Инструментальные системы извлечения информацииИнструментальные системы извлечения информации
Инструментальные системы извлечения информации
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 
эволюция языков программирования
эволюция языков программированияэволюция языков программирования
эволюция языков программирования
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системы
 
Принципы работы поисковой системы
Принципы работы поисковой системыПринципы работы поисковой системы
Принципы работы поисковой системы
 
Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования Паскаль
 
Л1 Введение в ROS.pdf
Л1 Введение в ROS.pdfЛ1 Введение в ROS.pdf
Л1 Введение в ROS.pdf
 
1 общие понятия о проектировании мехатронных систем
1 общие понятия о проектировании мехатронных систем1 общие понятия о проектировании мехатронных систем
1 общие понятия о проектировании мехатронных систем
 
Fact Extraction (ideograph)
Fact Extraction (ideograph)Fact Extraction (ideograph)
Fact Extraction (ideograph)
 
ПРИМЕНЕНИЕ ОНТОЛОГИЙ В СИСТЕМЕ УПРАВЛЕНИЯ ИНТЕЛЛЕКТУАЛЬНЫМИ РЕСУРСАМИ
ПРИМЕНЕНИЕ ОНТОЛОГИЙ В СИСТЕМЕ УПРАВЛЕНИЯ ИНТЕЛЛЕКТУАЛЬНЫМИ РЕСУРСАМИПРИМЕНЕНИЕ ОНТОЛОГИЙ В СИСТЕМЕ УПРАВЛЕНИЯ ИНТЕЛЛЕКТУАЛЬНЫМИ РЕСУРСАМИ
ПРИМЕНЕНИЕ ОНТОЛОГИЙ В СИСТЕМЕ УПРАВЛЕНИЯ ИНТЕЛЛЕКТУАЛЬНЫМИ РЕСУРСАМИ
 
Интегрированная среда для языка Рефал
Интегрированная среда для языка РефалИнтегрированная среда для языка Рефал
Интегрированная среда для языка Рефал
 

More from ITMO University

МЕТОД ПОВЫШЕНИЯ ЧУВСТВИТЕЛЬНОСТИ ВОЛОКОННО-ОПТИЧЕСКОГО ГИДРОФОНА
МЕТОД ПОВЫШЕНИЯ ЧУВСТВИТЕЛЬНОСТИ  ВОЛОКОННО-ОПТИЧЕСКОГО ГИДРОФОНАМЕТОД ПОВЫШЕНИЯ ЧУВСТВИТЕЛЬНОСТИ  ВОЛОКОННО-ОПТИЧЕСКОГО ГИДРОФОНА
МЕТОД ПОВЫШЕНИЯ ЧУВСТВИТЕЛЬНОСТИ ВОЛОКОННО-ОПТИЧЕСКОГО ГИДРОФОНАITMO University
 
МЕТОДЫ ПОЛУЧЕНИЯ И СВОЙСТВА СЛОЕВ НА ОСНОВЕ АМОРФНОГО УГЛЕРОДА, ОРИЕНТИРУЮЩИ...
МЕТОДЫ ПОЛУЧЕНИЯ И СВОЙСТВА СЛОЕВ НА ОСНОВЕ  АМОРФНОГО УГЛЕРОДА, ОРИЕНТИРУЮЩИ...МЕТОДЫ ПОЛУЧЕНИЯ И СВОЙСТВА СЛОЕВ НА ОСНОВЕ  АМОРФНОГО УГЛЕРОДА, ОРИЕНТИРУЮЩИ...
МЕТОДЫ ПОЛУЧЕНИЯ И СВОЙСТВА СЛОЕВ НА ОСНОВЕ АМОРФНОГО УГЛЕРОДА, ОРИЕНТИРУЮЩИ...ITMO University
 
ПРИМЕНЕНИЕ ДИСКРЕТНОГО КОСИНУСНОГО ПРЕОБРАЗОВАНИЯ ДЛЯ ПОСТРОЕНИЯ ГОЛОГРАММЫ ...
ПРИМЕНЕНИЕ ДИСКРЕТНОГО КОСИНУСНОГО ПРЕОБРАЗОВАНИЯ  ДЛЯ ПОСТРОЕНИЯ ГОЛОГРАММЫ ...ПРИМЕНЕНИЕ ДИСКРЕТНОГО КОСИНУСНОГО ПРЕОБРАЗОВАНИЯ  ДЛЯ ПОСТРОЕНИЯ ГОЛОГРАММЫ ...
ПРИМЕНЕНИЕ ДИСКРЕТНОГО КОСИНУСНОГО ПРЕОБРАЗОВАНИЯ ДЛЯ ПОСТРОЕНИЯ ГОЛОГРАММЫ ...ITMO University
 
ПОГРЕШНОСТИ ИЗГОТОВЛЕНИЯ И УСТАНОВКИ ОТРАЖАТЕЛЬНЫХ ПРИЗМ
ПОГРЕШНОСТИ ИЗГОТОВЛЕНИЯ И УСТАНОВКИ ОТРАЖАТЕЛЬНЫХ ПРИЗМПОГРЕШНОСТИ ИЗГОТОВЛЕНИЯ И УСТАНОВКИ ОТРАЖАТЕЛЬНЫХ ПРИЗМ
ПОГРЕШНОСТИ ИЗГОТОВЛЕНИЯ И УСТАНОВКИ ОТРАЖАТЕЛЬНЫХ ПРИЗМITMO University
 
СПЕКТРОСКОПИЧЕСКОЕ И ТЕРМОДИНАМИЧЕСКОЕ ИССЛЕДОВАНИЕ ТЯЖЕЛОЙ ВОДЫ
СПЕКТРОСКОПИЧЕСКОЕ И ТЕРМОДИНАМИЧЕСКОЕ ИССЛЕДОВАНИЕ  ТЯЖЕЛОЙ ВОДЫСПЕКТРОСКОПИЧЕСКОЕ И ТЕРМОДИНАМИЧЕСКОЕ ИССЛЕДОВАНИЕ  ТЯЖЕЛОЙ ВОДЫ
СПЕКТРОСКОПИЧЕСКОЕ И ТЕРМОДИНАМИЧЕСКОЕ ИССЛЕДОВАНИЕ ТЯЖЕЛОЙ ВОДЫITMO University
 
МЕТРОЛОГИЧЕСКИЙ АНАЛИЗ В СОЦИАЛЬНЫХ СЕТЯХ
МЕТРОЛОГИЧЕСКИЙ АНАЛИЗ В СОЦИАЛЬНЫХ СЕТЯХМЕТРОЛОГИЧЕСКИЙ АНАЛИЗ В СОЦИАЛЬНЫХ СЕТЯХ
МЕТРОЛОГИЧЕСКИЙ АНАЛИЗ В СОЦИАЛЬНЫХ СЕТЯХITMO University
 
ПЕРСПЕКТИВЫ РАЗВИТИЯ ОПТИКИ ТОНКИХ ПЛЕНОК
ПЕРСПЕКТИВЫ РАЗВИТИЯ ОПТИКИ ТОНКИХ ПЛЕНОКПЕРСПЕКТИВЫ РАЗВИТИЯ ОПТИКИ ТОНКИХ ПЛЕНОК
ПЕРСПЕКТИВЫ РАЗВИТИЯ ОПТИКИ ТОНКИХ ПЛЕНОКITMO University
 
ИССЛЕДОВАНИЕ ПРОЦЕССОВ ФОРМИРОВАНИЯ ПОЛИМЕРНОГО МИКРОЭЛЕМЕНТА НА ТОРЦЕ ОПТИЧЕ...
ИССЛЕДОВАНИЕ ПРОЦЕССОВ ФОРМИРОВАНИЯ ПОЛИМЕРНОГО МИКРОЭЛЕМЕНТА НА ТОРЦЕ ОПТИЧЕ...ИССЛЕДОВАНИЕ ПРОЦЕССОВ ФОРМИРОВАНИЯ ПОЛИМЕРНОГО МИКРОЭЛЕМЕНТА НА ТОРЦЕ ОПТИЧЕ...
ИССЛЕДОВАНИЕ ПРОЦЕССОВ ФОРМИРОВАНИЯ ПОЛИМЕРНОГО МИКРОЭЛЕМЕНТА НА ТОРЦЕ ОПТИЧЕ...ITMO University
 
МЕТОД ДИАГНОСТИКИ ФУНКЦИОНАЛЬНОЙ АКТИВНОСТИ ТКАНЕЙ И ОРГАНОВ БИООБЪЕКТОВ
МЕТОД ДИАГНОСТИКИ ФУНКЦИОНАЛЬНОЙ АКТИВНОСТИ ТКАНЕЙ И ОРГАНОВ БИООБЪЕКТОВМЕТОД ДИАГНОСТИКИ ФУНКЦИОНАЛЬНОЙ АКТИВНОСТИ ТКАНЕЙ И ОРГАНОВ БИООБЪЕКТОВ
МЕТОД ДИАГНОСТИКИ ФУНКЦИОНАЛЬНОЙ АКТИВНОСТИ ТКАНЕЙ И ОРГАНОВ БИООБЪЕКТОВITMO University
 
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...ITMO University
 
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...ITMO University
 
РЕКУРРЕНТНОЕ СИСТЕМАТИЧЕСКОЕ ПОМЕХОЗАЩИТНОЕ ПРЕОБРАЗОВАНИЕ КОДОВ: ВОЗМОЖНОСТИ...
РЕКУРРЕНТНОЕ СИСТЕМАТИЧЕСКОЕ ПОМЕХОЗАЩИТНОЕ ПРЕОБРАЗОВАНИЕ КОДОВ: ВОЗМОЖНОСТИ...РЕКУРРЕНТНОЕ СИСТЕМАТИЧЕСКОЕ ПОМЕХОЗАЩИТНОЕ ПРЕОБРАЗОВАНИЕ КОДОВ: ВОЗМОЖНОСТИ...
РЕКУРРЕНТНОЕ СИСТЕМАТИЧЕСКОЕ ПОМЕХОЗАЩИТНОЕ ПРЕОБРАЗОВАНИЕ КОДОВ: ВОЗМОЖНОСТИ...ITMO University
 
Информационная система «Забота о каждом»
Информационная система  «Забота о каждом» Информационная система  «Забота о каждом»
Информационная система «Забота о каждом» ITMO University
 
Проект "Я рядом"
Проект "Я рядом"Проект "Я рядом"
Проект "Я рядом"ITMO University
 
Проект «Театральный мост»
Проект «Театральный мост»Проект «Театральный мост»
Проект «Театральный мост»ITMO University
 
Студенческие инициативы в развитии ИКТ для старшего поколения
Студенческие инициативы в  развитии ИКТ для старшего  поколения Студенческие инициативы в  развитии ИКТ для старшего  поколения
Студенческие инициативы в развитии ИКТ для старшего поколения ITMO University
 
СОХРАНЁННОЕ РАДИО
СОХРАНЁННОЕ  РАДИОСОХРАНЁННОЕ  РАДИО
СОХРАНЁННОЕ РАДИОITMO University
 
Проект: «Разработка Системы Оценки и учёта Добровольческой Деятельности «СО...
Проект: «Разработка Системы Оценки и учёта  Добровольческой Деятельности  «СО...Проект: «Разработка Системы Оценки и учёта  Добровольческой Деятельности  «СО...
Проект: «Разработка Системы Оценки и учёта Добровольческой Деятельности «СО...ITMO University
 
«Нет преграды патриотам!»
«Нет преграды патриотам!»«Нет преграды патриотам!»
«Нет преграды патриотам!»ITMO University
 
Проект «Наш любимый детский сад»
Проект «Наш любимый детский сад»Проект «Наш любимый детский сад»
Проект «Наш любимый детский сад»ITMO University
 

More from ITMO University (20)

МЕТОД ПОВЫШЕНИЯ ЧУВСТВИТЕЛЬНОСТИ ВОЛОКОННО-ОПТИЧЕСКОГО ГИДРОФОНА
МЕТОД ПОВЫШЕНИЯ ЧУВСТВИТЕЛЬНОСТИ  ВОЛОКОННО-ОПТИЧЕСКОГО ГИДРОФОНАМЕТОД ПОВЫШЕНИЯ ЧУВСТВИТЕЛЬНОСТИ  ВОЛОКОННО-ОПТИЧЕСКОГО ГИДРОФОНА
МЕТОД ПОВЫШЕНИЯ ЧУВСТВИТЕЛЬНОСТИ ВОЛОКОННО-ОПТИЧЕСКОГО ГИДРОФОНА
 
МЕТОДЫ ПОЛУЧЕНИЯ И СВОЙСТВА СЛОЕВ НА ОСНОВЕ АМОРФНОГО УГЛЕРОДА, ОРИЕНТИРУЮЩИ...
МЕТОДЫ ПОЛУЧЕНИЯ И СВОЙСТВА СЛОЕВ НА ОСНОВЕ  АМОРФНОГО УГЛЕРОДА, ОРИЕНТИРУЮЩИ...МЕТОДЫ ПОЛУЧЕНИЯ И СВОЙСТВА СЛОЕВ НА ОСНОВЕ  АМОРФНОГО УГЛЕРОДА, ОРИЕНТИРУЮЩИ...
МЕТОДЫ ПОЛУЧЕНИЯ И СВОЙСТВА СЛОЕВ НА ОСНОВЕ АМОРФНОГО УГЛЕРОДА, ОРИЕНТИРУЮЩИ...
 
ПРИМЕНЕНИЕ ДИСКРЕТНОГО КОСИНУСНОГО ПРЕОБРАЗОВАНИЯ ДЛЯ ПОСТРОЕНИЯ ГОЛОГРАММЫ ...
ПРИМЕНЕНИЕ ДИСКРЕТНОГО КОСИНУСНОГО ПРЕОБРАЗОВАНИЯ  ДЛЯ ПОСТРОЕНИЯ ГОЛОГРАММЫ ...ПРИМЕНЕНИЕ ДИСКРЕТНОГО КОСИНУСНОГО ПРЕОБРАЗОВАНИЯ  ДЛЯ ПОСТРОЕНИЯ ГОЛОГРАММЫ ...
ПРИМЕНЕНИЕ ДИСКРЕТНОГО КОСИНУСНОГО ПРЕОБРАЗОВАНИЯ ДЛЯ ПОСТРОЕНИЯ ГОЛОГРАММЫ ...
 
ПОГРЕШНОСТИ ИЗГОТОВЛЕНИЯ И УСТАНОВКИ ОТРАЖАТЕЛЬНЫХ ПРИЗМ
ПОГРЕШНОСТИ ИЗГОТОВЛЕНИЯ И УСТАНОВКИ ОТРАЖАТЕЛЬНЫХ ПРИЗМПОГРЕШНОСТИ ИЗГОТОВЛЕНИЯ И УСТАНОВКИ ОТРАЖАТЕЛЬНЫХ ПРИЗМ
ПОГРЕШНОСТИ ИЗГОТОВЛЕНИЯ И УСТАНОВКИ ОТРАЖАТЕЛЬНЫХ ПРИЗМ
 
СПЕКТРОСКОПИЧЕСКОЕ И ТЕРМОДИНАМИЧЕСКОЕ ИССЛЕДОВАНИЕ ТЯЖЕЛОЙ ВОДЫ
СПЕКТРОСКОПИЧЕСКОЕ И ТЕРМОДИНАМИЧЕСКОЕ ИССЛЕДОВАНИЕ  ТЯЖЕЛОЙ ВОДЫСПЕКТРОСКОПИЧЕСКОЕ И ТЕРМОДИНАМИЧЕСКОЕ ИССЛЕДОВАНИЕ  ТЯЖЕЛОЙ ВОДЫ
СПЕКТРОСКОПИЧЕСКОЕ И ТЕРМОДИНАМИЧЕСКОЕ ИССЛЕДОВАНИЕ ТЯЖЕЛОЙ ВОДЫ
 
МЕТРОЛОГИЧЕСКИЙ АНАЛИЗ В СОЦИАЛЬНЫХ СЕТЯХ
МЕТРОЛОГИЧЕСКИЙ АНАЛИЗ В СОЦИАЛЬНЫХ СЕТЯХМЕТРОЛОГИЧЕСКИЙ АНАЛИЗ В СОЦИАЛЬНЫХ СЕТЯХ
МЕТРОЛОГИЧЕСКИЙ АНАЛИЗ В СОЦИАЛЬНЫХ СЕТЯХ
 
ПЕРСПЕКТИВЫ РАЗВИТИЯ ОПТИКИ ТОНКИХ ПЛЕНОК
ПЕРСПЕКТИВЫ РАЗВИТИЯ ОПТИКИ ТОНКИХ ПЛЕНОКПЕРСПЕКТИВЫ РАЗВИТИЯ ОПТИКИ ТОНКИХ ПЛЕНОК
ПЕРСПЕКТИВЫ РАЗВИТИЯ ОПТИКИ ТОНКИХ ПЛЕНОК
 
ИССЛЕДОВАНИЕ ПРОЦЕССОВ ФОРМИРОВАНИЯ ПОЛИМЕРНОГО МИКРОЭЛЕМЕНТА НА ТОРЦЕ ОПТИЧЕ...
ИССЛЕДОВАНИЕ ПРОЦЕССОВ ФОРМИРОВАНИЯ ПОЛИМЕРНОГО МИКРОЭЛЕМЕНТА НА ТОРЦЕ ОПТИЧЕ...ИССЛЕДОВАНИЕ ПРОЦЕССОВ ФОРМИРОВАНИЯ ПОЛИМЕРНОГО МИКРОЭЛЕМЕНТА НА ТОРЦЕ ОПТИЧЕ...
ИССЛЕДОВАНИЕ ПРОЦЕССОВ ФОРМИРОВАНИЯ ПОЛИМЕРНОГО МИКРОЭЛЕМЕНТА НА ТОРЦЕ ОПТИЧЕ...
 
МЕТОД ДИАГНОСТИКИ ФУНКЦИОНАЛЬНОЙ АКТИВНОСТИ ТКАНЕЙ И ОРГАНОВ БИООБЪЕКТОВ
МЕТОД ДИАГНОСТИКИ ФУНКЦИОНАЛЬНОЙ АКТИВНОСТИ ТКАНЕЙ И ОРГАНОВ БИООБЪЕКТОВМЕТОД ДИАГНОСТИКИ ФУНКЦИОНАЛЬНОЙ АКТИВНОСТИ ТКАНЕЙ И ОРГАНОВ БИООБЪЕКТОВ
МЕТОД ДИАГНОСТИКИ ФУНКЦИОНАЛЬНОЙ АКТИВНОСТИ ТКАНЕЙ И ОРГАНОВ БИООБЪЕКТОВ
 
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
КОЛИЧЕСТВЕННАЯ ОЦЕНКА КАЧЕСТВА ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ НЕЧЕТКОЙ ...
 
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
 
РЕКУРРЕНТНОЕ СИСТЕМАТИЧЕСКОЕ ПОМЕХОЗАЩИТНОЕ ПРЕОБРАЗОВАНИЕ КОДОВ: ВОЗМОЖНОСТИ...
РЕКУРРЕНТНОЕ СИСТЕМАТИЧЕСКОЕ ПОМЕХОЗАЩИТНОЕ ПРЕОБРАЗОВАНИЕ КОДОВ: ВОЗМОЖНОСТИ...РЕКУРРЕНТНОЕ СИСТЕМАТИЧЕСКОЕ ПОМЕХОЗАЩИТНОЕ ПРЕОБРАЗОВАНИЕ КОДОВ: ВОЗМОЖНОСТИ...
РЕКУРРЕНТНОЕ СИСТЕМАТИЧЕСКОЕ ПОМЕХОЗАЩИТНОЕ ПРЕОБРАЗОВАНИЕ КОДОВ: ВОЗМОЖНОСТИ...
 
Информационная система «Забота о каждом»
Информационная система  «Забота о каждом» Информационная система  «Забота о каждом»
Информационная система «Забота о каждом»
 
Проект "Я рядом"
Проект "Я рядом"Проект "Я рядом"
Проект "Я рядом"
 
Проект «Театральный мост»
Проект «Театральный мост»Проект «Театральный мост»
Проект «Театральный мост»
 
Студенческие инициативы в развитии ИКТ для старшего поколения
Студенческие инициативы в  развитии ИКТ для старшего  поколения Студенческие инициативы в  развитии ИКТ для старшего  поколения
Студенческие инициативы в развитии ИКТ для старшего поколения
 
СОХРАНЁННОЕ РАДИО
СОХРАНЁННОЕ  РАДИОСОХРАНЁННОЕ  РАДИО
СОХРАНЁННОЕ РАДИО
 
Проект: «Разработка Системы Оценки и учёта Добровольческой Деятельности «СО...
Проект: «Разработка Системы Оценки и учёта  Добровольческой Деятельности  «СО...Проект: «Разработка Системы Оценки и учёта  Добровольческой Деятельности  «СО...
Проект: «Разработка Системы Оценки и учёта Добровольческой Деятельности «СО...
 
«Нет преграды патриотам!»
«Нет преграды патриотам!»«Нет преграды патриотам!»
«Нет преграды патриотам!»
 
Проект «Наш любимый детский сад»
Проект «Наш любимый детский сад»Проект «Наш любимый детский сад»
Проект «Наш любимый детский сад»
 

ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОДА В ФОРМАТ RDF СРЕДСТВАМИ СЕМАНТИЧЕСКОГО АНАЛИЗА

  • 1. А.В. Зараковский, С.В. Клименков, Н.И. Ткаченко, А.Е. Харитонова Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики, 2011, № 2 (72) 123 5 КОМПЬЮТЕРНЫЕ СИСТЕМЫ И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ УДК 004.423.4 ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОДА В ФОРМАТ RDF СРЕДСТВАМИ СЕМАНТИЧЕСКОГО АНАЛИЗА А.В. Зараковский, С.В. Клименков, Н.И. Ткаченко, А.Е. Харитонова Описано решение задачи преобразования исходного кода на объектно-ориентированном языке в формат RDF сред- ствами семантического анализа. Рассмотрены основные принципы семантического анализа объектно- ориентированного кода и предложен архитектурный прототип программного продукта, осуществляющего преобра- зование кода в RDF. Ключевые слова: код, RDF, семантический анализ, машинный анализ, триплет, грамматика, синтаксическое дерево, лексер, парсер, Java, ANTLR. Введение Одним из обязательных условий успешной разработки и сопровождения любого программного продукта является удобочитаемость его исходного кода. Стремясь добиться этого, программисты стара- ются делать код более логичным и понятным, именуя должным образом переменные и методы, исполь- зуя правильно подобранные типы и классы, снабжая код комментариями. Все это говорит о том, что код является отличным источником информации о самом себе. Программист, читая чужую программу с подробными комментариями, без труда поймет, что дела- ет каждый метод, для чего предназначена любая переменная или же любой объект. Человек способен анализировать текст программы, распознавая в нем целостные куски информации. На самом деле в этот момент он осуществляет разбор кода на информационные блоки и сопоставление получаемых фактов друг с другом, так что, по сути, он строит зависимости в виде триплетов «объект – предикат – субъект» и оперирует уже ими. В качестве примеров можно привести обычные мысли вроде «переменная представ- ляет целое число» или «метод запускается без параметров». В случае машинного анализа все не так про- сто. Машина не обладает разумом и способностью к анализу, а значит, не сможет самостоятельно про- вести разбор кода, как это делает человек. Таким образом, для успешной реализации машинного анализа кода необходимо выбрать формат представления данных и разработать специальную программу, которая осуществит разбор кода и приведет его к нужному программисту виду. Язык описания ресурсов В рамках данной работы в качестве формата, в который осуществляется преобразование про- граммного кода, выбран Resource Description Framework (RDF). RDF – это разработанная консорциумом Всемирной паутины модель для представления данных, входящая в концепцию семантической паутины, а в особенности – метаданных. Метаданные – это информация о данных. Зачастую это структурирован- ные данные, представляющие собой характеристики описываемых сущностей для целей их идентифика- ции, поиска, оценки и управления ими. Важной особенностью формата RDF является то, что он описы- вает ресурсы в виде, пригодном (и достаточно удобном) для машинной обработки. Ресурсом в RDF может быть любая сущность – информационная (сайт, программа, изображение) или неинформационная (человек, город, любое абстрактное понятие). Утверждение о ресурсе строится в виде триплетов и имеет вид «субъект – предикат – объект». Множество RDF-утверждений образует ориен- тированный граф, в котором вершинами являются субъекты и объекты, а предикаты являются ребрами. RDF сам по себе представляется не каким-либо форматом файла, а абстрактной моделью. Для ра- боты с RDF в основном используются несколько форматов, в число которых входят RDF/XML, RDFa, N3. Все они уже имеют определенные правила записи и структуру [1]. Семантический анализ программного кода Основные принципы. Определившись с форматом хранения данных, можно перейти к основной задаче – собственно семантическому анализу программного кода. Для начала рассмотрим основные ас- пекты семантики любого объектно-ориентированного языка программирования. Контекстно-свободная грамматика. Любой язык программирования имеет свой алфавит, который целиком состоит из терминальных и нетерминальных символов. Терминальный символ – это любой
  • 2. ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ... Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики, 2011, № 2 (72) 124 имеющий конкретное известное значение символ, как, например, цифра или буква. Нетерминальный сим- вол – это элемент конструкции языка, не имеющий заранее известного значения, как, например, формула или команда. Нетерминальные символы состоят из множества терминальных и в итоге к ним сводятся. Язык программирования описывается набором правил, выделяющих некоторое подмножество из- вестных символов из множества слов конечного алфавита языка. Такой набор правил называется грамма- тикой языка и может как задавать правила определения правильности построения слова языка, так и по- зволять построить любое новое слово языка. Первые являются распознающими (или аналитическими) грамматиками, вторые же являются порождающими. Грамматика, левая часть правил которой состоит целиком из нетерминальных символов, называ- ется контекстно-свободной [2]. Расширенная форма Бэкуса-Наура. Расширенная форма Бэкуса-Наура (РБНФ) – это формальная система определения синтаксиса, в которой одни синтаксические зависимости определяются через дру- гие. Используется для описания контекстно-свободных грамматик. Правило в РБНФ имеет вид «идентификатор = выражение.», где идентификатор – это имя нетер- минального символа, а выражение – это соответствующая правилам РБНФ комбинация терминальных и нетерминальных символов. Точка в конце – это специальный символ, указывающий на завершение пра- вила. Набор возможных конструкций РБНФ очень невелик и состоит лишь из конкатенации символов, выбора, условного вхождения и повторения. Также при записи правила РБНФ можно использовать груп- пирующие скобки для определения сложных правил [3]. Синтаксическое дерево. Объектно-ориентированный код, будучи правильно оформленным, сам по себе предоставляет отличные возможности для семантического анализа. При соблюдении правил именования сущностей в коде и его правильной структуры всегда существует возможность получить объектную модель, отражающую организацию кода. Каждый объект в программе можно рассматривать атомарно, не вдаваясь в подробности его реализации. Это называется абстрагированием. В свое же время каждый объект может включать в себя множество других объектов, которые также можно рассматривать как конечную атомарную сущность. Элементарные типы, которые помимо других объектов могут вклю- чаться в объект, всегда являются конечными и не имеют возможности инкапсулировать в себе что-либо. В данном случае при употреблении термина «объект» под объектом все же понимается не экземпляр класса, как можно было подумать, а некий атомарный блок информации – метод, класс, объявление пе- ременной, блок комментариев или даже программа целиком. Каждый объект каким-то образом связан с другими, например, имеет некую вложенность в другой объект. Рассмотрим следующий код: public class Hello { public static void main(String[] args) { String str = "Hello, world!"; System.out.println( str ); } } Эта программа объявляет переменную str, присваивает ей значение, а затем вызывает метод выво- да ее содержимого в поток out. При анализе этого кода можно выделить класс Hello, в котором объявлен метод void main(String[] args), в котором объявлена переменная String str, которой присваивается значение «Hello, world!», и вы- зывается метод println() с входным параметром str объекта out класса System. Соответственно, это можно и нужно отразить не словами, а в виде некой формализованной модели, которая покажет вложенность кода, значения, типы и сами сущности. Наилучшим образом для этого подходит двоичное дерево, такое, что каждый его узел может быть законченным, т.е. отражать некое детерминированное значение или по- ле любого примитивного типа, или расходиться вниз, демонстрируя, что элемент не является заключи- тельным в иерархии. Примерное такое дерево, построенное по вышеприведенному коду, можно увидеть на рис. 1. Таким образом, при семантическом анализе объектно-ориентированного кода можно составить иерархию объектов и элементарных типов, а также провести зависимости и связи между ними. Такую иерархию представляет абстрактное синтаксическое дерево (АСД) или Abstract Syntax Tree (AST), листья которого представляют элементарные типы в коде, а различные ветви – объекты, представленные в коде. АСД – это конечное, помеченное, ориентированное дерево, в котором вершины сопоставлены с операто- рами языка программирования, а листья – с соответствующими операндами. Таким образом, листья яв- ляются лишь пустыми операторами и представляют только переменные и константы. Количество ветвей, как и количество листьев, не ограничено, однако дерево всегда имеет одну вершину – объект, представ- ляющий программу целиком. Применение контекстно-свободной грамматики при разборе кода приводит к получению абст- рактного синтаксического дерева, в котором элементы не определяются конкретной грамматикой разби- раемого языка. Классическим примером являются ограничительные скобки в языковых конструкциях –
  • 3. А.В. Зараковский, С.В. Клименков, Н.И. Ткаченко, А.Е. Харитонова Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики, 2011, № 2 (72) 125 группировка операндов в АСД явно задается структурой дерева, а ограничивающие скобки вообще от- сутствуют в разборе, так как не влияют на АСД. АСД со свободной грамматикой отличается от дерева разбора, т.е. дерева с конкретной грамматикой, тем, что в нем отсутствуют ребра и узлы для тех синтак- сических правил, которые никак не влияют на семантику программы. Для языка с контекстно-свободной грамматикой составление АСД является достаточно тривиальной задачей. Большинство правил грамма- тики создают вершину, а символы в правиле становятся ребрами. Правила, которые ничего не привносят в АСД, такие, как, например, группирующие, просто заменяются в вершине одним из своих символов. Кроме того, анализатор может создать полное дерево разбора и затем пройти по нему, удаляя узлы и ребра, которые не используются в абстрактном синтаксисе, чтобы получить АСД. Рис. 1. Двоичное дерево разбора кода В конечном итоге после разбора кода нас интересует, само собой, не АСД, а структура программы, откуда удалены все ненужные звенья дерева [4]. Решение задачи разбора кода Построить семантическую модель кода и дерево разбора должны программа-лексер и программа- парсер, понимающие грамматику выбранного языка программирования, проходя от вершины к конеч- ным операндам. Лексер – это программный модуль, осуществляющий разбор текста по заданным грам- матическим правилам и генерирующий поток токенов, т.е. нетерминальных символов языка программи- рования. Например, токенами языка Java для полной грамматики языка будут являться класс, метод, блок комментариев, блок кода. Парсер – это программный модуль, который, основываясь на поступающих из потока лексера токенах, по заданным правилам строит абстрактное дерево разбора. Лексер должен выде- лять в коде следующие сущности, которые описываются лексическими правилами или грамматикой:  функции, методы и процедуры, а также их вызовы;  объекты и их вложенность;  поля элементарных типов;  комментарии, условные комментарии и документирующие комментарии;  директивы;  блоки кода и управляющие конструкции;  различные атрибуты любой из перечисленных сущностей. Дальнейший разбор дерева будет заключаться в выделении необходимых и важных для постав- ленной задачи узлов и листьев АСД. К примеру, не имеет смысла переводить в вид RDF различные тер- минальные символы, если они находятся в левой части грамматического правила. Таким образом, не имеет значения все то, что не укладывается в контекстно-свободную грамматику. В связи с тем, что RDF является языком описания ресурсов, а терминал вряд ли можно к таковым отнести, то парсер АСД в RDF должен такие листья дерева исключать из разбора. На вход парсера в RDF поступают АСД и правила разбора в RDF. Работа парсера заключается в переводе поступающей информации в вид триплетов «субъект – предикат – объект», если эта информа- ция имеет ценность для поставленной задачи. Генерируемый парсером RDF поток триплетов поступает на вход модуля, записывающего триплеты в выбранном формате. Архитектурная модель создаваемой системы представлена на рис. 2.
  • 4. ОСНОВНЫЕ ПРИНЦИПЫ РЕШЕНИЯ ЗАДАЧИ ПРЕОБРАЗОВАНИЯ ... Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики, 2011, № 2 (72) 126 Объектно- ориентированный код Lexer AST Parser RDF Parser XML Writer RDF Storage Lexing rules (grammar) AST parsing rules RDF parsing rules Token stream AST Triplet stream RDM XML file Рис. 2. Архитектура системы разбора кода в RDF Программная реализация разбора кода Существует два метода разбора кода – нисходящий и восходящий. Нисходящий разбор начинается с корня дерева, осуществляя рекурсивный проход до листьев. Восходящий же, наоборот, начинает про- ход с листьев, а заканчивает корнем. Алгоритмы восходящего метода разбора – более сложные, а в сово- купности с тем фактом, что избыточность RDF не повлечет каких-то серьезных последствий, можно ут- верждать, что разумнее в задаче перевода кода в RDF использовать более простой и быстрый метод нис- ходящего разбора. Существует множество программных библиотек, помогающих разобрать текст программы на кон- текстно-свободном языке программирования и получить его абстрактное представление в виде двоично- го дерева. Каждое такое средство разбора оперирует грамматикой выбранного языка, написанной с со- блюдением единой РБНФ, проводя лексический и синтаксический разборы. Одно из подобных программных средств – это Another Tool for Language Recognition (ANTLR). ANTLR – это генератор парсеров на языке Java, который принимает на вход файл грамматики, написан- ный по единой форме Бэкуса–Наура, и файл с исходным кодом разбираемой программы, а на выходе создает абстрактное синтаксическое дерево. На самом деле провайдер ANTLR предоставляет утилиту ANTLRWorks, позволяющую описать грамматику и генерирующую классы лексера и парсера. Помимо утилиты предоставляется библиотека Java времени выполнения ANTLR, которая как раз и запускает в работу лексер и парсер, получает от них результат и строит дерево. Готовых решений для перевода дерева в RDF не существует. Соответственно, встает задача разра- ботки подобного решения. Поскольку к этому моменту уже имеется формальная форма представления кода, которая является результатом работы ANTLR, перед парсером RDF ставятся только следующие задачи:  выборка важных и необходимых узлов АСД;  сопоставление объектов, субъектов и предикатов на основе анализа ветвей АСД;  формирование триплетов RDF;  создание и запись XML-сущностей (или других, что зависит от выбранной формы записи RDF), от- ражающих суть каждого триплета. Решение должно состоять из двух модулей – RDF Parser и XML Writer. RDF Parser должен проходить по всем узлам дерева разбора, проверять каждый на соответствие правилам разбора в RDF и, если узел необходим для решения задачи, генерировать новый триплет в по- токе триплетов и запоминать узел как проверенный. XML Writer, получая триплеты из потока, генерирует XML-код, который описывает триплеты в нужном формате. Алгоритмы работы RDF Parser и XML Writer представлены на рис. 3, а, б. Весь программный комплекс, как «черный ящик», должен выглядеть так: на входе – исходный код программы, на выходе – требуемая форма записи RDF и, при необходимости, – отчет об ошибках. Отчет об ошибках служит для дополнительного анализа, если, к примеру, исходный код программы был напи- сан с нарушениями общепринятых стандартов записи кода (например, соглашение о записи кода на язы- ке Java).
  • 5. И.С. Рубина Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики, 2011, № 2 (72) 127 а б Рис. 3. Алгоритм RDF Parser (а); алгоритм XML Writer (б) Заключение В работе рассмотрены основные принципы решения задачи преобразования исходного кода на объектно-ориентированном языке программирования в формат RDF и предложен прототип архитектуры программного продукта решающего эту задачу. Программный продукт, основанный на предложенном архитектурном прототипе, может найти достаточно широкое применение при решении задач анализа кода, в экспертных системах и САПР. Литература 1. Eric Miller. RDF Primer: W3C Recommendation // W3C [Электронный ресурс]. – Режим доступа: http://www.w3.org/TR/rdf-primer/ (дата обращения: 20.01.10). 2. Context-free grammar // Wikipedia [Электронный ресурс]. – Режим доступа: http://en.wikipedia.org/wiki/Context-free_grammar (дата обращения: 04.02.10). 3. Extended Backus-Naur Form // Wikipedia [Электронный ресурс]. – Режим доступа: http://en.wikipedia.org/wiki/EBNF (дата обращения: 04.02.10). 4. Parr T. The definitive ANTLR reference: Building domain-specific languages / Terence Parr. – San Fran- cisco; The pragmatic programmers, LLC, 2007. – 384 p. Зараковский Алексей Владимирович – Санкт-Петербургский государственный университет информацион- ных технологий, механики и оптики, студент, dbiryukov@list.ru Клименков Сергей Викторович – Санкт-Петербургский государственный университет информацион- ных технологий, механики и оптики, ассистент, Serge.Klimenkov@Servicom.Ru Ткаченко Никита Иванович – Санкт-Петербургский государственный университет информацион- ных технологий, механики и оптики, студент, n.i.tkachenko@gmail.com Харитонова Анастасия Евгеньевна – Санкт-Петербургский государственный университет информацион- ных технологий, механики и оптики, ассистент, Anastassia.Kharitonova@Elcom.SPb.Ru