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

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

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

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

Анализ целей и задач реинжиниринга.На данном шаге необходимо проанализировать цели и задачи реинжиниринга конкретной информационной системы. От этого напрямую зависитвыбор средств и инструментов анализа встроенного кода. Ниже перечислены основные классы задач реинжиниринга информационных систем, затрагивающих динамически формируемый код, которые можно выделитьна данном этапе.– Задача оценки качества кода и его сложности, которая часто сводитсяк расчёту различных формальных метрик кода [59, 60]. Здесь необходимо определить, требуется ли построение структурного представления кода для вычисления требуемых метрик с необходимой точностью.– Анализ надёжности системы, поиск различного рода уязвимостей иошибок [90,91].

При этом требуется изучение типов ошибок, которыепредполагается обнаруживать: обнаружение некоторых типов оши-81бок требуют построения структурного представления кода (семантические ошибки), в то время, как в других случаях это не требуется(лексические, синтаксические ошибки).– Извлечение или восстановлении утраченных знаний о системе [4, 90].В зависимости от деталей этой задачи может потребоваться динамический анализ или структурное представление встроенного кода.– Трансформация исходной системы: рефакторинг, перенос на новыепрограммно-аппаратные системы [4, 39, 90, 92].

Для решения подобных задач, как правило, требуется структурное представление кода.Особенно важен данный шаг при необходимости решать задачи трансформации динамически формируемого кода. Например, если необходимо какможно быстрее получить работающую систему, дальнейшее развитие которой не планируется, то можно пожертвовать качеством кода результирующей системы, что может существенно упростить его обработку. Однако,если после выполнения трансформации планируется активная разработкаили поддержка полученной системы, то к результирующему коду предъявляются дополнительные требования. Важными становятся, например, форматирование кода, его однородность (использование нескольких диалектовSQL вместо одного затрудняет работу с кодом), требуется сохранить нетолько внешнее поведение системы, но и её внутреннюю структуру на всехуровнях (пакеты, модули, процедуры).

Выполнение этих условий упроститдальнейшую работу с кодом системы, позволит уменьшить затраты на обучение команды, поиск новых специалистов.Например, при трансляции с одного диалекта на другой хранимого SQLкода который активно использует динамический SQL важно сохранить однородность результирующей системы в том смысле, что и основной коди встроенный должны быть быть написаны на одном и том же диалекте. Это особенно важно, если планируется дальнейшее развитие системы.Обусловлено это тем, что различные диалекты SQL содержат большое количество особенностей и разработчики на SQL часто оказываются специалистами достаточно узкого профиля. Таким образом, наличие двух различных диалектов вместо одного может усложнить набор команды.

Более того,82в процессе разработки необходимость переключаться между несколькимидиалектами так же может вызвать трудности.Таким образом, один из основных вопросов, на которые необходимо ответить при анализе целей: планируется ли активное изменение системыпосле её реинжиниринга, если последний включает трансформации.2.

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

Необходимо оценить следующие характеристики кода информационной системы.– Количество точек интереса — тех точек, где сформированное строковое выражение передаётся на обработку соответствующей компоненте. Это позволит оценить интенсивность использования встроенногокода. Как правило, за выполнение выражений на встроенном языкеотвечают характерные языковые конструкции, например EXECUTE вязыке T-SQL. Следовательно, необходимо оценить количество такихконструкций. Для грубой оценки можно использовать простой текстовый поиск. Он может оказаться полезным, так как если он свидетельствует о полном отсутствии соответствующих конструкций, тодальнейший анализ можно не проводить. Для более точной оценкинеобходимо использовать структурное представление кода, чтобы, например, не учитывать код, находящийся в комментариях.

Получитьструктурное представление и доступ к нему можно с помощью библиотек синтаксического анализа для соответствующего языка.– Сложность формирования строковых выражений. Прежде всего необходимо определить наличие динамически формируемого кода и оценить сложность его формирования, так как в случае использованиятолько константных строковых литералов специальных инструментовдля анализа встроенного кода не требуется.83Для данной оценки можно использовать алгоритм протягивания констант [11]. Однако потребуется его модификация. Необходимо, чтобыотдельно обрабатывались выражения, отвечающие за формированиекода, и собиралась следующая информация о процессе формирования кода как для каждой точки выполнения, так и для всей системы вцелом.– Количество конкатенаций.– Количество операторов ветвления: if-then-else, switсhcase и т.д.– Количество строковых функций: replace, substring и т.д.– Количество циклов, как “явных” (while, for), так и организованных с помощью рекурсии.– Количество переменных, значения которых нельзя полностью вычислить статически (например, значения из пользовательскоговвода).– Факт формирования кода в “телах” более чем одного метода/процедуры.

Для получения данной информации в используемом инструменте необходима поддержка межпроцедурного анализа [11, 93, 93].3. Возможности доступа к исходной системе в реальных условиях можетдать большое количество полезной информации (например, сведения обинтенсивности выполнения встроенного кода), которую трудно или даженевозможно получить другими способами, так как даже тесты часто невоспроизводят реальные сценарии функционирования системы. Однако такой доступ часто оказывается затруднённым, что вызывается, с одной стороны, вопросами безопасности, с другой стороны, отсутствием возможности гарантировать, что изменения, необходимые для получения требуемойинформации (например, ведение дополнительного журнала), не отразятсяна работоспособности системы.– Необходимо определить, есть ли доступ к системе, работающей в реальных условиях, и какая именно информация доступна: чтение опре-84делённых журнальных файлов, перехват сообщений на каком-либоуровне, доступ к базе данных системы.– Необходимо определить виды доступных модификаций, а также информацию, которая не является закрытой и может быть передана разработчикам.

Это влияет на то, какие задачи можно решать при помощи динамического анализа.– Необходимо определить возможность запуска модифицированной системы в реальных условиях. Если это возможно, то важно убедиться,что будет также возможно получить доступ к собранной информации. Это позволит, например, собрать информацию о том, с какимиобъектами программы работают с использованием динамически формируемых запросов при выполнении конкретных сценариев.4. Роль динамически формируемого кода в системе.

На данном шаге необходимо определить, какую роль в системе играют динамически формируемые запросы. Возможны следующие ситуации.– Использование динамически формируемого кода является одним изосновных элементов архитектуры системы. Данная ситуация, как правило, характеризуется большим количеством точек исполнения и наличием сложно формируемого кода.

Важно определить, какие именнокомпоненты системы построены таким образом, так как использование встроенных языков может быть неоднородным. Средние значенияпо всей системе могут быть не велики, при этом некоторые ключевые компоненты могут быть построены с активным использованиемдинамически формируемого кода, а в остальных компонентах он неиспользуется. При этом может оказаться, что ключевые компонентыявляются также наиболее критическими по производительности частями системы.– Динамически формируемый код используется как вспомогательноесредство. Явным признаком такой ситуации является малое количество или отсутствие такого кода, но это не всегда так. Возможна ситуация, когда динамически формируемых код активно используется85для реализации служебной и вспомогательной функциональности, например, для сбора статистики, администрирования и диагностики системы.

Тот факт, что данная функциональность не является основнойдля системы, может позволить обращать меньше внимания, например,на производительность результатов трансформации. Это даёт большевозможностей для использования динамического подхода, так как накладные расходы на дополнительные вычисления во время работы системы не окажут существенного воздействия на производительностьеё основных функций.5. Анализ требований к производительности и потреблению ресурсов.Необходимо определить, на сколько допустимы дополнительные накладные расходы на обработку встроенного кода. Ответ на данный вопрос важен при выборе между статическим и динамическим подходом к трансляции динамически формируемого кода. Выполнение динамически формируемых SQL-запросов само по себе требует дополнительных ресурсов.

Если на предыдущих шагах было выяснено, что динамически формируемыйкод активно используется в критическом по производительности фрагменте системы, а вычислительные ресурсы ограничены, то применение динамического подхода неприемлемо. Это связано с тем, что дополнительные вычисления для обработки кода существенно ухудшат быстродействиекритических фрагментов системы.6. Анализ особенностей конкретного внешнего и встроенного языков.Многие задачи требуют комплексной обработки внешнего и встроенного кода. Например, при статическом поиске ошибок, включающем ошибкииспользования типов переменных, необходимо проводить анализ, проверяющий, что тип переменной во внешнем коде соответствует типу, которыйвозвращается запросом.

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

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

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

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