Диссертация (1150733), страница 14
Текст из файла (страница 14)
Использовалась платформа.NET и язык программирования F# [83]. Весь исходный код опубликован наGitHub [79]. Большинство компонент опубликовано под открытой лицензиейApache License Version 2.0 3 .За основу алгоритма синтаксического анализа динамически формируемыхвыражений был взят реализованный в YC алгоритм синтаксического анализаRNGLR.
Генератор управляющих таблиц был использован практически без модификаций, интерпретатор был реализован отдельно. Кроме этого, переиспользовались некоторые структуры данных и вспомогательные функции, такие какпредставление леса разбора и его печать в формате DOT 4 , представление GSS.Лексический анализ реализован на основе инструмента FsLex [87], которыйпотребовал значительных доработок для того, чтобы обеспечить обработку конечного автомата, а не линейного входа.
Остальные компоненты, необходимыедля статического анализа динамически формируемых выражений, такие как построение аппроксимации, вспомогательные функции для упрощения построенияцелевых инструментов, были реализованы в рамках проекта YC.Бинарные пакеты, содержащие разработанные компоненты и инструменты,опубликованы на NuGet 5 .3Apache License Version 2.0 — одна из так называемых открытых лицензий. Сайт с текстом лицензии и сопроводительными материалами (дата обращения 28.06.2015): http://www.apache.org/licenses/LICENSE-2.04DOT — текстовый язык описания графов [89].5NuGet — менеджер пакетов для платформы .NET и одноимённый ресурс для их публикации. Позволяет публиковать и устанавливать пакеты, автоматически отслеживать зависимости между ними. Документация (дата обращения:29.07.2015): https://www.nuget.org/.74Глава 4Метод реинжинирингавстроенного программногокодаВ данной главе изложен метод реинжиниринга встроенного программногокода, рассмотрены основные типы решаемых задач, описаны особенности обработки встроенных языков.
Основной акцент сделан на обработку динамическиформируемого SQL-кода, однако изложенный метод может быть адаптирован кобработке систем, использующих другие встроенные языки.4.1ОсобенностиРеинжиниринг информационных систем, как правило, является комплекснойзадачей, которая может включать в себя различные шаги, такие как анализ кода,рефактоинг, трансформацию, перенос на другие программно-аппаратные платформы [4]. При этом часто проводится всесторонний анализ многокомпонентной системы целиком, что приводит к необходимости учитывать различные особенности и работать с разнообразными артефактами: документацией, исходнымкодом, конфигурационными скриптами, скриптами баз данных и т.д.
В связи свысокой сложностью такого анализа, реинжиниринг, как правило, является автоматизированным, а не полностью автоматическим процессом, что означаетвозможность (и необходимость) активного участия в этом процессе человека.75Например, может оказаться, что в системе имеются файлы особого формата, идля их автоматической обработки потребуется создание уникального инструмента, что, в свою очередь, потребует значительных ресурсов. Однако размер этихфайлов невелик и их ручной анализ прост. Таким образом, в ситуации, когдазатраты на создание инструмента значительно выше затрат на ручной анализ,часто оказывается выгоднее отказаться от создания инструмента.При реинжиниринге информационных систем необходимо учитывать и динамически формируемый встроенный код.
С одной стороны, такой код можетсодержать важную информацию о системе. Например, в динамически формируемых SQL-запросах могут содержаться сведения о схеме данных и особенностях работы с ней, не извлекаемые из внешнего кода. С другой стороны, приактивном использовании динамически формируемый код является артефактом,требующим отдельного внимания и, следовательно, должен быть учтён, например, при оценке сложности обработки системы, часто проводимой на начальныхэтапах реинжиниринга.При большом количестве встроенного кода процесс его обработки необходимо автоматизировать. Однако, информационные системы используют встроенные языки с разной интенсивностью и разными способами.
В зависимостиот характера использования встроенных языков меняются требования к автоматизации их обработки: необходима ли инструментальная поддержка или ручнаяобработка потребует меньше ресурсов, чем создание или освоение инструмента,какими именно инструментами пользоваться в тех или иных случаях, на какиеаспекты необходимо обратить внимание при принятии решений.Отметим, что метод реинжиниринга информационных систем, учитывающийвстроенный код, на настоящий момент отсутствует. Ниже такой метод представлен. Он является набором рекомендаций по выбору конкретного инструментариядля использования при реинжиниринге.
Обработка системы зависит от особенностей конкретного инструмента и решаемых задач и, во многом, должна бытьизложена в инструкции по применению инструмента. По этой причине данныйвопрос рассматриваться не будет.76Рисунок 14: Основные шаги метода обработки встроенных языков и ихрезультаты4.2МетодОбщая последовательность шагов метода представлена на рисунке 14.В таблице 1 представлено подробное описание шагов с указанием вопросов,на которые необходимо ответить на каждом шаге и информации, необходимойдля принятия соответствующих решений. Обсуждение этих шагов, с описаниемнекоторых деталей и примеров, приведено далее.Таблица 1: Основные шаги по подготовке к реинжинирингу системы,содержащей строковые выражения№1ШагВопросыРесурсыРезультатАнализ целей и за-Каковы цели реин-Заказчик.Цели реинжиниринга, для достижениядач.жиниринга?которых необходима обработка встроенного кода.Какие задачи необ-Заказчик.Список задач, при решении которыхходимо решить длянеобходимо обрабатывать строковыедостижения постав-выражения.ленных целей?77№2ШагВопросыРесурсыРезультатПервичный анализСколько в систе-Исходный код си-Количество точек интереса в анализи-системы.ме строковых выра-стемы.руемой системе.На сколько слож-Исходный код си-Количество операторов для каждой точ-ные строковые вы-стемы.ки интереса, участвующих в формиро-жений, требующихобработки?ражения использу-вании соответствующего запроса.ются в системе?3Оценка доступа кНа сколько наличиеСписокзадач,Список задач, решение которых упро-исходной системе вдоступа к реаль-требующихобра-щается при наличии доступа к рабо-реальных условиях.ной системе важ-боткистроковыхтающей системе.
Можно ли их решатьно для решения по-выражений.ставленных задач?зультаты шага 2:Ре-при его отсутствии.наличие динамическиформируемыхвыражений.Какие данные до-Заказчик.ступны на чтение?Данные, доступные для чтения в системе, находящейся в промышленной эксплуатации.КакиеизмененияЗаказчик.возможно вноситьвСписок допустимых модификаций модулей системы.работающуюсистему?4ВыяснениеролиДля чего исполь-Код, документация,Функциональная и архитектурная роливстроенногокодазуется встроенныйзаказчик.встроенного кода: является ли его ис-вобрабатываемойкод?пользование основой архитектуры си-системе.стемы. Список компонент, в которыхиспользуется динамически формируемый код.На сколько активноКод, документация,Количество точек интереса на ком-используется встро-заказчик.поненту/модуль/процедуру, на сколькоенный код?интенсивно выполняется, на сколькопроизводительность данной компоненты критична.78№ШагАнализ5Вопросыпроиз-водительностиивычислительныхНеобходимоРесурсыРезультатлиСписок задач, тре-Список задач, решение которых требу-проводить данныйбующих обработкиет дополнительных накладных расхо-анализ?строковых выраже-дов во время работы системы.
Можноний.ли их решать иными способами.Результаты шага 4.Оценка зависимости производительно-ресурсов.Насколькокри-тичен встроенныйсти компонент, использующих встроен-код?ный код, от производительности встроенного кода. Оценка зависимости производительности системы от производительности этих компонент.Какие существуютЗаказчик, результа-Оценка возможности практически из-возможноститы шага 3.мерить потребление и доступность ре-дляоценки использова-сурсов. Способ измерения и оценки до-ния и доступностиступности и потребления ресурсов.вычислительныхресурсов?Есть6Анализязыковыхособенностей.лизапасЗаказчик.Оценка запаса вычислительных ресур-вычислительныхсов, доступного для использования вресурсов?условиях работы целевой системы.Какие особенностиСписок задач, тре-Список особенностей, потенциальномогут потенциаль-бующих обработкисложных мест, обработка которых мо-нонастроковых выраже-жет потребовать дополнительных за-постав-ний, информация отрат.повлиятьрешениеленных задач?используемых языках и средствах работы со встроенным кодом.ПрисутствуютИсходный код си-Список особенностей, присутствующихлистемы.в обрабатываемой системе, их класси-выделенныеособенностисистеме?вфикация и описание.79№7ШагВыбор подхода.ВопросыРесурсыРезультатТребуется ли изме-Целинение встроенногониринга,кода и сопровожде-задач,ние результатов?обработки строко-реинжи-Требования к результатам трансформа-списокции встроенного кода: на сколько есте-требующихственным для разработчика должен выглядеть результирующий код.вых выражений.Есть ли доступ кРезультаты шага 3,Выявлены возможности по работе с си-системе,работа-список задач, тре-стемой в реальных условиях, упрощаю-ющей в реальныхбующих обработкищие решение поставленных задач.условиях?строковых выражений.Доступны ли до-Результаты шага 5.Установлено наличие или отсутствиеполнительныевозможности использовать дополни-вычислительныетельные вычислительные ресурсы дляресурсы?динамической обработки встроенногокода.КаковатребуемаяСписок задач, тре-Сравнение точности при решении по-точность при реше-бующих обработкиставленных задач с использованием ди-нии поставленныхстроковых выраже-намического и статического анализа изадач?ний.её соотнесение с требуемой.Результаты шага 6.Список особенностей обрабатываемойКакиеестьбенностивосооб-системы, влияющих на выбор подхода.рабатываемойсистеме, влияющиена выбор подхода?Есть ли задачи, на-Список задач, тре-Список задач, требующих строго опре-кладывающие огра-бующих обработкиделённого подхода к решению.ничения на выборстроковых выраже-подхода?ний.80№ШагВыбор инструмен-8та для обработкивстроенного кода.ВопросыРесурсыРезультатТребуется ли струк-Список задач, тре-Список задач, для решения которыхтурное представле-бующих обработкитребуется структурное представлениение встроенного ко-строковых выраже-встроенного кода.да?ний.КакобрабатыватьсложныеРезультаты шага 6.случаиДополнительные ограничения и требования, соблюдение которых необходимоиспользованиядля обработки сложных случаев, при-встроенного кода?сутствующих в системе, и их реализуемость в рамках подходов и инструментов.КакойподходРезультаты шага 7.Преимущества и недостатки подходов впредпочтительнее:контексте решаемых задач и ограниче-динамический илиний и их соотнесение с возможностямистатический?инструментов.КакаяточностьЦели, список за-Оценка требуемой точности при реше-придач, требующих об-нии поставленных задач и её сравнениепостав-работки строковыхс возможностями подходов и инстру-выражений, заказ-ментов.необходимарешенииленных задач?чик.Рассмотрим представленные в таблице 1 шаги более подробно.1.