Автореферат (1150732), страница 3
Текст из файла (страница 3)
Также описываетсяYC.SEL.SDK.ReSharper — “обёртка” для YC.SEL.SDK, позволяющая создаватьрасширения к ReSharper для поддержки встроенных языков.В четвёртой главе описывается метод реинжиниринга встроенного программного кода, основные шаги которого представлены на рисунке 2. Данныйметод позволяет сформулировать требования к конкретным инструментам обработки встроенного программного кода, необходимым для обработки заданнойинформационной системы.В пятой главе приводятся результаты экспериментального исследованияYC.SEL.SDK.Реализованный инструментарий был апробирован в рамках промышленного проекта по миграции базы данных с MS-SQL Server 2005 на Oraclе 11gR2,что позволило оценить предложенную архитектуру и протестировать отдельныекомпоненты инструментария на реальных данных.Обрабатываемая система состояла из 850 хранимых процедур и содержала около 2,6 миллионов строк кода.
В ней присутствовало 2430 точек выполнения динамических запросов, 75% этих запросов могли принимать более одногозначения, при их формировании использовалось от 7 до 212 операторов, среднееколичество операторов для формирования запроса равнялось 40.Алгоритм успешно завершил работу на 2188 входных графах из 2430,аппроксимирующих множества значений запросов. Ручная проверка входныхграфов, на которых алгоритм завершался с ошибкой, показала, что они дей11Рис. 2: Основные шаги метода обработки встроенных языков и их результаты12Рис. 3: Распределение запросов по времени анализаствительно не содержали ни одного выражения, корректного в эталонном языке.
Причиной этого была либо некорректная работа лексического анализатора,либо наличие в выражениях конструкций, не поддержанных в существующейграмматике. Так как лексический анализатор и грамматика были полностью заимствованы из оригинального проекта, то наличие этих ошибок не являетсянедостатком алгоритма синтаксического анализа. В дальнейшем часть найденыхошибок была исправлена.Общее время синтаксического анализа составило 27 минут, из них 13минут было затрачено на разбор графов, не содержащих ни одного корректноговыражения, и 4 минуты — на обработку графа, прерванную по таймауту. На анализ двух графов было затрачено более 2 минут. Распределение входных графовпо интервалам времени, затраченным на анализ, приведено на рисунке 3.Также было проведено сравнение производительности компоненты синтаксического анализа YC.SEL.SDK с инструментом Alvor.
Данный инструментреализует подход, близкий к представленному в работе, и содержит независимыешаги анализа, что позволяет легко выделить синтаксический анализ, которыйоснован на GLR-алгоритме. Существенным отличием является то, что Alvor нестроит деревьев вывода. Важным для успешного проведения измерений является то, что исходный код Alvor опубликован, и это позволило модифицировать еготаким образом, чтобы измерить параметры выполнения конкретных методов.Так как Alvor не предоставляет средств для простой реализации поддержки новых языков, то для сравнения было выбрано подмножество языка SQL,общее для Alvor и реализованного в рамках апробации инструмента. Измеренияпроводились на синтетических данных, построенных с помощью последовательного соединения базовых блоков, каждый из которых содержит ветвления с ℎ13Рис.
4: Сравнение производительности Alvor и синтаксического анализатора на базеYC.SEL.SDKпараллельными путями. Результаты экспериментов представлены на графике 4.При более чем шестнадцатикратном повторении блоков с ℎ = 2 время работыAlvor превысило 30 минут и измерения были прекращены. Аналогичная ситуация возникает и при более чем десятикратном повторении блоков с ℎ = 3. Такимобразом, измерения показывают, что время работы анализатора Alvor растёт экспоненциально относительно количества повторений базового блока при ℎ > 1.Анализатор созданный на основе YC.SEL.SDK в таких случаях имеет лучшуюпроизводительность (до 1000 раз). При этом на линейном входе Alvor работаетбыстрее. Однако существуют возможности для оптимизации текущей реализации, благодаря чему производительность YC.SEL.SDK на линейном входе можетбыть улучшена.Шестая глава содержит итоги сравнения и соотнесения полученных результатов с существующими аналогами.
Получены следующие выводы.1. Разработанный алгоритм синтаксического анализа динамически формируемых выражений является единственным алгоритмом, обрабатывающим регулярную аппроксимацию и строящим конечное представление леса разбора.2. Созданная архитектура позволяет предоставить платформу для разработкисредств анализа динамически формируемого кода.143. Метод реинжиниринга встроенного программного кода сформулированвпервые.В заключении подведены итоги диссертационной работы, которые заключаются в достижении следующих результатов.1. Разработан алгоритм синтаксического анализа динамически формируемыхвыражений, позволяющий обрабатывать произвольную регулярную аппроксимацию множества значений выражения в точке выполнения, реализующий эффективное управление стеком и гарантирующий конечность представления леса вывода.
Доказана завершаемость и корректность предложенного алгоритма при анализе регулярной аппроксимации, представимойв виде произвольного конечного автомата без -переходов.2. Создана архитектура инструментария для разработки программных средствстатического анализа динамически формируемых строковых выражений.На её основе реализован инструментальный пакет для разработки средствстатического анализа динамически формируемых выражений, применённый для реализации расширения для ReSharper.3. Разработан метод реинжиниринга встроенного программного кода в проектах по реинжинирингу информационных систем. Данный метод применёнв проекте компании ЗАО “Ланит-Терком” по переносу информационнойсистемы с MS-SQL Server на Oracle Server, для чего реализованы соответствующие программные компоненты.Кроме этого были сформулированы следующие рекомендации по применению результатов работы в индустрии и научных исследованиях.1. Необходимо, чтобы множество, являющееся аппроксимацией значений динамически формируемого выражения, подаваемое на вход алгоритму синтаксического анализа, было регулярным.2.
Эталонный язык должен быть описан детерминированной контекстносвободной грамматикой.3. Важно учитывать, что платформа разрабатывалась с ориентацией на создание инструментов для реинжинирига. Поэтому в некоторых компонентахточность анализа является более приоритетной, чем производительность.Однако архитектура платформы позволяет легко заменять отдельные компоненты и достигать желаемого соотношения точности и производительности инструментов.Также были определены перспективы дальнейшей разработки тематики, основными из которых являются исследование возможности выполнения семантических действий непосредственно над SPPF и теоретическая оценка сложности предложенного алгоритма.
Кроме этого, с целью обобщения предложенного подхода, а также для получения лучшей производительности и возможностей15для более качественной диагностики ошибок необходимо рассмотреть применение других алгоритмов обобщённого синтаксического анализа (GLL, BRNGLR,RIGLR) для решения рассматриваемой задачи.Публикации автора по теме диссертации в журналах из перечня российских рецензируемых научных журналов, в которых должны быть опубликованы основные научные результаты диссертаций на соискание ученых степеней доктора икандидата наук1. Григорьев, С. В. Разработка синтаксических анализаторов в проектах по автоматизированному реинжинирингу информационных систем / Я.
А. Кириленко, С. В. Григорьев, Д. А. Авдюхин // Научно-технические ведомостиСанкт-Петербургского государственного политехнического университета информатика, телекоммуникации, управление. — 2013. — Т. 3, № 174. — C. 94–98.2. Григорьев, С. В. Инструментальная поддержка встроенных языков в интегрированных средах разработки / С. В. Григорьев, Е.
А. Вербицкая, М. И. Полубелова и др. // Моделирование и анализ информационных систем. — 2014.— Т. 21, № 6. — С. 131–143.3. Григорьев, С. В. Обобщенный табличный LL-анализ / С. В. Григорьев,А. К. Рагозина // Системы и средства информатики. — 2015. — Т. 25, № 1.— С. 89–107.Публикации автора по теме диссертации в других изданиях4.
Grigorev, S. GLR-based abstract parsing / S. Grigorev, I. Kirilenko // InProceedings of the 9th Central & Eastern European Software EngineeringConference in Russia (CEE-SECR ’13). — 2013. — P. 1–9.5. Grigorev, S. String-embedded language support in integrated developmentenvironment / S.
Grigorev, E. Verbitskaia, A. Ivanov et al. // Proceedings of the10th Central and Eastern European Software Engineering Conference in Russia(CEE-SECR ’14). — 2014. — P. 1–11.6. Grigorev, S. From Abstract Parsing to Abstract Translation / S. Grigorev, I.Kirilenko // Proceedings of the Spring/Summer Young Researchers’ Colloquiumon Software Engineering. — 2014. — P. 1–5.167.
Grigorev, S. Relaxed Parsing of Regular Approximations of String-EmbeddedLanguages / E. Verbitskaia, S. Grigorev, D. Avdyukhin // Preliminary Proceedingsof the PSI 2015: 10th International Andrei Ershov Memorial Conference. — 2015.— P. 1–12.17.