Главная » Просмотр файлов » Диссертация

Диссертация (1150733), страница 16

Файл №1150733 Диссертация (Синтаксический анализ динамически формируемых программ) 16 страницаДиссертация (1150733) страница 162019-06-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 16)

Пример несовпадения типов приведён в листинге 17: переменная result имеет тип List<string>, однако запрос возвращает коллекцию двухэлементных кортежей.Наличие некоторых связей внешнего и встроенного кода делает невозможным полностью динамический подход, так как без статического анализа небудет получена информация, необходимая для корректного преобразования861234public List<string> NewReport(int prodId = 0, int status = 0, int nType = 0){int nProdIdL = prodId;5string sMagicKey = "[" + prodId.ToString() + "]";67string tbl = status == 0 ? "InOrders " : "OutOrders ";89while (nProdIdL > 0){sMagicKey = "[" + sMagicKey + "]";nProdIdL = nProdIdL - 1;}101112131415string sExec ="SELECT sOrderDescription, " + sMagicKey+ " FROM ts." + tbl;16171819List<string> result = db.Execute(sExec);return result;202122}Листинг 17: Пример кода метода на языке программирования C#, в котороможидаемый и реальный тип результата запроса не совпадаютвнешнего кода.

Примером такой ситуации может служить трансформациякода хранимой процедуры с динамическими запросами, формирующимизапрос SELECT из T-SQL в PL-SQL. При этом результат данного запросадолжен быть результатом процедуры. В T-SQL вне зависимости от типасформированного запроса его выполнение производится с помощью команды EXECUTE и результат выполнения автоматически возвращается вкачестве результата процедуры, а в PL-SQL для того, чтобы получить результат выполнения запроса и вернуть его из процедуры необходимо использовать конструкцию EXECUTE IMMEDIATE ...

INTO out_var 1 ,при этом out_var должна быть объявлена аргументом процедуры с модификатором OUT 2 . То есть в данном случае без статического анализа дина1EXECUTE IMMEDIATE — языковая конструкция PL-SQL, которая позволяет выполнить запрос и сохранитьрезультат его выполнения в переменной. Описание конструкции (дата обращения: 28.06.2015): http://docs.oracle.com/cd/B12037_01/appdev.101/b10807/13_elems017.htm.2Модификатор OUT для аргумента подпрограммы означает его передачу по ссылке, что позволяет возвращать егозначение в вызывающую подпрограмм. Описание создание хранимых процедур на языке PL-SQL (дата обращения:28.06.2015): http://docs.oracle.com/cd/A97630_01/appdev.920/a96624/08_subs.htm#752.87мически формируемого кода невозможно корректно преобразовать внешний код.Отдельно нужно проверить наличие конструкций, которые заведомоусложняют автоматическую обработку системы.

Примером такой конструкции может служить оператор MERGE3 в PL-SQL, проекция которогов другие языки может потребовать существенных усилий.7. Выбор подхода. Основной вопрос, который необходимо решить на данномшаге — это выбор между статическим [49] и динамическим подходом [35]или их композицией. Такая ситуация возникает, например, когда решениезадачи с помощью статического анализа крайне затруднено или невозможно, а динамический подход требует неприемлемых накладных расходов.Примером может послужить обработка конструкции MERGE, статическаяпроекция которой сложна. В данном случае на этапе статического анализавычисляется вся информация, необходимая для трансформаций во времявыполнения, которая может быть вычислена, и сохраняется, например, вспециальных переменных.

Далее во время выполнения происходит окончательная трансформация кода, и наличие заранее вычисленной информациисокращает накладные расходы.8. Выбор инструмента для обработки встроенного кода. Результатом проделанного анализа должно стать решение о том, какие именно средствамиспользовать. Необходимо выбрать готовый инструмент, если это возможно. Обзор основных существующих решений приведён в разделе 1.5. Рассмотрим ситуаций, в которых возможно использование рассмотренных инструментов.– Статический поиск синтаксических ошибок для сложно формируемых выражений может быть автоматически проведён с помощьютаких инструментов как JSA [68] или PHPSA [69]. Для детальнойдиагностики можно использовать Alvor [64], IntelliLang [72] илиPHPStorm [73].3MERGE — операция языка PL-SQL, позволяющая одновременно добавлять новые записи и обновлять существующие.

Описание конструкции (дата обращения: 28.06.2015): http://docs.oracle.com/cd/B10500_01/appdev.920/a96624/13_elems30.htm.88– Статическая трансформация встроенного кода, каждое выражение которого полностью содержится в константном литерале, может бытьосуществлена с помощью SQL Ways [67].– Для интерактивного изучения кода на PHP со встроенным HTML иJavaScript может использоваться Varis [75].– Статическая трансформация встроенного кода со сложной логикойформирования может быть автоматизирована с помощью инструментов, разработанных на платформе, представленной в данной работе.Необходимо также определить границы автоматизации процесса: какуючасть работ следует выполняеть с помощью инструментов (автоматически), а какую — вручную.

Провести чёткое разделение сложно, так каквозможны различные ситуации — от наличия готового инструмента, решающего необходимые задачи и специалистов, умеющих с ним работать, доотсутствия инструмента и соответствующих специалистов. В такой ситуации характеристики системы, оцененные на предыдущих шагах, не являются решающим фактором в принятии решения, однако необходимы условием для принятия правильного решения.Кроме того, после изучения существующих инструментов может быть принято решение о необходимости разработки собственного. В таком случаепроведённый анализ позволит сформулировать требования к этому инструменту, а основой для разработки может стать инструментальный пакет,предложенный в данной работе.Использование изложенного выше метода позволяет принять решение о способе и инструментах обработки встроенного кода в системах, использующихвстроенные языки, в контексте реинжиниринга. При этом метод учитывает такие характеристики динамически формируемого кода, как частота использования, сложность формирования выражений, его роль в системе.89Глава 5Эксперименты, ограничения,обсуждениеЗавершаемость и корректность предложенного алгоритма формально доказаны выше, однако его производительность требует экспериментальной оценки.При этом основной интерес представляет оценка на входных данных, близких креальным.

Также требуется оценить предложенную архитектуру и реализующуюеё платформу. Вместе с этим необходимо рассмотреть границы применимостиполученных в работе результатов. Таким образом, в данной главе решаются следующие задачи.Оценка производительности проводилась на реальных и на синтетическихданных. Краткое описание экспериментов приведено в таблице 2.Таблица 2: Эксперименты по оценке производительности алгоритмасинтаксического анализа динамически формируемых программЭкспериментИзмерения на промышленном проектеИзмерение производительности на синтетическихданныхСравнение производительности с другими реализациями аналогичных алгоритмовЧто исследовалосьОсобенности реальных входных данных,времени работы на реальных данныхЗависимость времени работы от структуры и размера входных данныхВремя работы на одинаковых входныхданных90Краткое описание экспериментов по оценке предложенной в работе архитектуры и реализующей её платформы представлено в таблице 3.Таблица 3: Эксперименты по оценке архитектуры YC.SEL.SDKЭкспериментРазработка синтаксического анализатора в промышленном проектеРазработка расширений дляMicrosoft Visual Studio IDEЧто исследовалосьЗаменяемость компонент платформы насторонние, реализованные ранее без использования платформы.Переиспользуемость компонент при разработке нескольких однотипных инструментов на основе предложенной платформы.

Функциональные возможностиинструментов, разработанных на основеплатформы.Далее приводятся детальные описания экспериментов и их результатов.5.1Апробация в промышленном проекте по реинжинирингуРеализованный инструментарий был апробирован в рамках промышленногопроекта “S2O” по миграции базы данных с MS-SQL Server 2005 на Oraclе 11gR2компании ЗАО “Ланит-Терком”.Система состояла из 850 хранимых процедур и содержала около 2,6 миллионов строк кода на T-SQL. В ней имелось 2430 точек исполнения динамическихзапросов, из которых больше 75% могли принимать более одного значения, а приих формировании использовалось от 7 до 212 операторов.

При этом в среднемиспользовалось 40 операторов для формирования запроса [49].Так как анализатор языка T-SQL был разработан ранее в рамках проекта, вкотором происходило внедрение, то для создания анализатора встроенного SQLбыла использована готовая грамматика и по ней построен синтаксический анализатор.

Построение регулярной аппроксимации и лексический анализ такжебыли реализованы ранее в рамках основного проекта и были переиспользованы.Возможность комбинирования сторонних компонент и компонент, созданных наоснове YC.SEL.SDK, показало преимущества разделения шагов анализа.91Далее были реализованы функции вычисления метрик и вывода результата,после чего полученная функциональность была встроена в существующую цепочку обработки основного кода. В результате работы реализованных функцийформировался отчёт, пример которого приведён в таблице 5.Тесты проводились на вычислительном устройстве с параметрами, эквивалентными указанным в разделе 5.2. В ходе экспериментов измерялись следующие характеристики для каждой точки выполнения динамически формируемогозапроса.– Время обработки t в миллисекундах.

Характеристики

Тип файла
PDF-файл
Размер
2,34 Mb
Высшее учебное заведение

Список файлов диссертации

Синтаксический анализ динамически формируемых программ
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6376
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее