Диссертация (1150733), страница 19
Текст из файла (страница 19)
Сайт конференции (дата обращения: 29.07.2015): http://2015.icse-conferences.org/.106Таблица 7: Критерии сравнения инструментов анализадинамически формируемых строковых выраженийКритерииНазваниеОписаниеколонкивтаблицесрезультатамисравнения 8Алгоритм синтаксического анализа динамически формируемых выраженийПостроениелеса Лес разбораПредоставляет ли алгоритм и соответразбораствующий инструмент функциональность по построению леса разбора динамически формируемого кода.Поиск синтаксиче- Синт. ошибки Реализует ли алгоритм и соответствуюских ошибокщий инструмент поиск синтаксическихошибок в динамически формируемомкоде.Поиск семантиче- Сем. ошибки Предоставляет ли алгоритм возможноских ошибоксти для поиска семантических ошибокв динамически формируемом коде.АрхитектураПлатформа для раз- ПлатформаПредоставляется ли в явном виде платработкиформа для создания новых инструментов статического анализа динамическиформируемых выражений.Модульность обра- Модульность Выделены ли отдельные независимыеботкишаги обработки или же анализ является монолитным.
Реализованы ли соответствующие выделенным шагам независимые компоненты.В таблице 8 приведены основные результаты сравнени. Были использованыследующие обозначения.– ’+’ — функциональность, соответствующая критерию, полностью реализована.– ’−’ — функциональность, соответствующая критерию, полностью не реализована.– ’+−’ — соответствующая функциональность реализована частично.107Таблица 8: Сравнение инструментов анализа динамическиформируемых строковых выраженийИнструментAbsParsAlvorJSAPHPSAIntelliLangVarisYC.SEL.SDKЛесразбора+−*−−−−+***+Синт.ошибки++++++−****Сем.ошибки+−−−+−+Платформа Модульность−−−−+−**−+−+−−+−+*В работе [28] утверждается, что поддерживаются атрибутные грамматики для описания языка. Это даёт возможность описать семантику построения леса.
При этом в работе обсуждаютсяпроблема уменьшения точности анализа при использовании семантики, а построение леса не обсуждается. Возможность построения корректного конечного представления леса разбора требуетотдельного исследования.**IntelliLang использует возможности платформы IntelliJ IDEA [74], поэтому средства для расширения некоторых возможностей унифицировано, однако самостоятельной платформы для анализавстроенных языков не предоставляется.***Такие свойства конструируемой структуры данных, как конечность, а так же возможности еёдальнейшей обработки в общем виде не обсуждаются.****Возможность диагностики синтаксических ошибок не реализована на данный момент в рамкахплатформы.
Однако данная задача может быть решена другими инструментами, так как обработкапроизводится по шагам и возможно добавить новый без существенных затрат.Метод реинжиниринга встроенного программного кода сформулирован впервые. Большинство существующих работ и инструментов посвящены решениюконкретных задач, часто входящих в состав мероприятий по реинжинирингу.Вместе с этим работа [37] рассматривает вопрос учёта встроенного SQL-кодапри оценке качества информационных систем и описывает метод решения данной задачи. Однако, метод затрагивает только часть области и является болееспециальным и узно направленным, чем предложенный в данной работе.Проведённое сравнение позволяет выявить несколько аспектов.– Многие инструменты могут быть расширены, однако ранее не предоставлялось полноценного самостоятельного инструментария специально предназначенного для создания новых инструментов для обработки динамически формируемых выражений.108– Основная цель большинства инструментов — это проверка корректностидинамически формируемого кода.
Прежде всего осуществляется поисксинтаксических ошибок.– Инструменты реализованы на основе разных подходов и предназначеныдля решения разных задач, поэтому детальное сравнение их возможностей, производительности и других аспектов не представляется возможным. Например, инструмент PHPSA изначально создавался для решениязадачи проверки корректности динамически формируемых выражений иотсутствие подсветки синтаксиса не является его недостатком.– Существование многочисленных инструментов для решения различных задач и создание новых говорит о том, что обработка встроенных языковявляется актуальной задачей.В результате можно утверждать, что YC.SEL.SDK является единственнойполноценной платформой для создания различных инструментов статическогоанализа динамически формируемых выражений, применимых в разных областяхи обладающих широкими функциональными возможностями.109ЗаключениеИтоги диссертационной работыВ качестве итогов работы приведём основные результаты полученные в ходевыполнения исследования.1.
Разработан алгоритм синтаксического анализа динамически формируемых выражений, позволяющий обрабатывать произвольную регулярнуюаппроксимацию множества значений выражения в точке выполнения, реализующий эффективное управление стеком и гарантирующий конечностьпредставления леса вывода. Доказана завершаемость и корректность предложенного алгоритма при анализе регулярной аппроксимации, представимой в виде произвольного конечного автомата без -переходов.2.
Создана архитектура инструментария для разработки программныхсредств статического анализа динамически формируемых строковых выражений.3. Разработан метод реинжиниринга встроенного программного кода в проектах по реинжинирингу информационных систем.Предложенный метод был применён в проекте компании ЗАО “ЛанитТерком” по переносу информационной системы с MS-SQL Server на OracleServer. Кроме того, реализован инструментальный пакет для разработки средствстатического анализа динамически формируемых выражений. На его основе реализован плагин для ReSharper. Код опубликован на сервисе GitHub под лицензией Apache License Version 2.0 [79].110Рекомендации по применению результатов работыПри применении результатов работы в индустрии и научных исследованияхнеобходимо учитывать следующие аспекты.– Множество, являющееся аппроксимацией значений динамически формируемого выражения, принимаемое на вход алгоритмом синтаксическогоанализа, должно быть регулярным.– Эталонный язык должен быть описан детерминированной контекстносвободной грамматикой.– Так как предложенная платформа создавалась с ориентацией на разработку инструментов для реинжинирига, то некоторые компоненты направлены на увеличение точности анализа динамически формируемого кода вущерб производительности.
При этом важно, что возможности платформы позволяют комбинировать различные реализации компонент. С другойстороны, платформа содержит возможности для различных оптимизаций.Например, некоторые алгоритмы могут быть ускорены с помощью распараллеливания.– Теоретическое исследование вопросов, связанных с обработкой SPPF в общем виде, является открытой исследовательской задачей. С другой стороны, было доказано, что из построенного SPPF могут быть извлечены деревья вывода для любых цепочек из аппроксимации, а с деревьями можноработать с помощью стандартных методов.Перспективы дальнейшей разработки тематикиПроблемой, подлежащей дальнейшему исследованию, является возможностьвыполнения семантических действий непосредственно над SPPF. Это необходимо для рефакторинга, улучшения качества трансляции, автоматизации переходана более надёжные средства метапрограммирования [97, 98].Важной задачей является теоретическая оценка сложности предложенногоалгоритма синтаксического анализа.
В существующих работах не приводится111строгих оценок для подобных алгоритмов, поэтому данная задача является актуальным самостоятельным исследованием.С целью обобщения предложенного подхода к синтаксическому анализу, атакже для получения лучшей производительности и возможностей для более качественной диагностики ошибок, планируется переход на алгоритм обобщённого LL-анализа (GLL) [47, 99–101]. Планируется исследовать возможность улучшения предложенного алгоритма при переходе на другие алгоритмы обобщённого LR-анализа [77], например, такие как BRNGLR [102] и RIGLR [22].Кроме того, важной задачей является реализация диагностики ошибок,решение которой для обобщённого восходящего анализа активно исследуется [24, 25, 103, 104].