Диссертация (1148251), страница 2
Текст из файла (страница 2)
Исходный код такой системы обладает высокойсвязанностью, его сложно декомпозировать и сопровождать.АОП предлагает решение данной проблемы — выделение “сквознойфункциональности” в один модуль, аспект [125]. По своей сути, реализация“сквозной функциональности” состоит в том, чтобы выполнить некие действия вопределенных точках целевой программы или же расширить существующиеклассыновымиметодамииполями.Всетакиедействия(advices)инкапсулируются в аспекте и снабжены описанием своих точек внедрения(joinpoints). Кроме того, чтобы влиять на поведение целевой программы, действияаспекта имеют доступ к контексту своих точек внедрения, например, к ссылкам наобъекты, окружающим данную точку.
Всё это сокращает размер исходного кода,облегчает тестирование как аспекта, так и бизнес-логики [103].Актуальность темы исследования обусловлена необходимостью повышениякачества, производительности и сопровождаемости облачных веб-приложений.Всё большее количество сервисов, которыми пользуются рядовые пользователи,переносится в облака, и принципы АОП могут сильно облегчить сопровождение инаписание этих сервисов.Актуальнойявляетсязадачавыявлениясквозныхфункциональныхпотребностей, общих для большинства веб-приложений, для дальнейшей ихреализации в виде библиотек аспектов. И следующая из неё задача разработкиэтих библиотек для использования их при решении практических задач.Ещё одной актуальной задачей является разработка и реализациябиблиотек,позволяющихулучшитьтакиехарактеристикикачествакаксопровождаемость, производительность, связность, объем кода веб-приложений.А улучшение любой из этих характеристик в свою очередь ведет к удешевлениюпроцесса разработки за счет уменьшения человеко-часов.Степень разработанности темы исследования.
Для АОП разработкипрограмм применяется множество инструментов, самыми популярными изкоторых являются AspectJ [68] и PostSharp [80] (по данным Google Trends [38]).6Однако проведенный в процессе написания работы анализ предметнойобласти показал, что популярность АОП-инструментов уступает альтернативнымтехнологиям повышения качества программного обеспечения, таким как,например, рефакторинг и IoC-контейнеры. Существенной проблемой приизменении поведения программы с помощью современных АОП-инструментовявляется отсутствие бесшовной интеграции аспектов и целевого исходного кодасистемы.
Термин “бесшовная интеграция” применительно к аспектам и целевомукоду можно сформулировать следующим образом: это такое расширениефункциональности целевого кода, при котором не требуется вносить изменения вцелевой проект, включая его код, файлы настроек и свойства проекта. Прибесшовной интеграции в этом смысле у пользователя должна быть возможностьотдельно компилировать, запускать и тестировать аспектную и целевую сборки,без необходимости иметь их исходный код. Данное определение отличается от“бесшовности” применения ряда АОП-инструментов (PostSharp, FuseJ [94] и др.),когда целевой код не зависит от аспектов, однако они тесно интегрированы в егопроект, что препятствует тестированию бизнес-логики и затрудняет возможныйотказ от применяемого АОП-инструмента.В то время как пользователи AspectJ для Java-платформы имеютвозможность создавать свои аспекты и правила внедрения в одном модуле ивнедрять их в целевые сборки на бинарном уровне, то на платформе .NETсуществуетнесколькоАОП-инструментов,которыепозволяютбесшовновнедрять аспекты, например, проекты SheepAspect [90] и AOP.NET [11].
Оба этипроекта позволяют хранить определения аспектов вместе с правилами ихвнедрения и вставлять их в целевую сборку на этапе пост-компиляции, однако ниодин из них не вышел из стадии альфа-версии и их развитие приостановлено.В качестве примера современного инструмента АОП, обеспечивающегобесшовное применение аспектов, в работе описывается и анализируется системаAspect.NET — среда аспектно-ориентированной разработки программ дляплатформы Microsoft.NET, разработанный в лаборатории Java-технологии7математико-механического факультета СПбГУ под научным руководствомпрофессора В.
О. Сафонова.Впервые вопросы применения Aspect.NET к разработке веб-приложенийисследовал в 2010 г. Нгуен В. Д., аспирант кафедры “Информатики” математикомеханического факультета СПбГУ. Результатом его работы [123] сталабиблиотека с универсальными аспектами для безопасности, криптографии ирасширения пользовательского Web-интерфейса приложений на базе ASP.NET.Проведенные им оценки производительности результирующей сборки послеприменения Aspect.NET показали, что накладные расходы на вызовы действийаспектов минимальны и соразмерны со вставкой их в исходный код вручную.Объектомисследованияявляютсяинфраструктура,программныекомпоненты и сервисы платформы облачных вычислений Microsoft Azure, а такжемодели, методы и алгоритмы применения аспектов на базе инструментаAspect.NET.Предметом исследования является возможность повышения качестваисходного кода облачных веб-приложений с помощью АОП-рефакторинга.
Крометого, исследуется процесс разработки, реализации и применения универсальныхаспектов,предназначенныхдлябесшовногорасширенияоблачныхвеб-приложений, в том числе с использованием стороннего фреймворка MicrosoftEnterprise Library Integration Pack.Большинство разработчиков используют Microsoft Visual Studio (VS) дляразработки облачных веб-приложений Microsoft Azure. Так как Aspect.NET — этоконсольное приложение, которое лишь сливает целевую и аспектную сборки, тоего необходимо первоначально адаптировать для пост-компиляции аспектов в VS,публикации результирующей сборки в облаке, а также реализовать возможностьотладки в облаке примененных аспектов.
Кроме того, аспекты веб-приложениймогут сохранять свои настройки в конфигурационном файле целевого проектаweb.config. Соответственно требуется разработать технологию раздельногохранения настроек аспектов и целевого приложения, а затем их слияния передкомпоновкой аспектов. Такой подход позволяет разрабатывать аспекты в8отдельном проекте VS, исключая необходимость какой-либо модификациицелевого проекта.
Следовательно, становится возможным бесшовно расширятьлюбое ASP.NET веб-приложение функциональностью аспектов, предложенных врамках AzureLibrary. Отметим, что данная технология соответствует общемутренду развития средств построения облачных веб-приложений на платформеMicrosoft Azure, когда пользователи на специальном веб-портале выбираютшаблон приложения, конфигурируют его в веб-интерфейсе и публикуют в облаке.Разработанная автором технология позволяет расширять функциональностьподобных приложений, не требуя от конечного пользователя изменять их код.Целью данной работы является повышение с помощью АОП качества ипроизводительности, а также улучшение сопровождаемости облачных вебприложений на платформе Microsoft Azure.Достижение поставленной цели осуществляется решением следующих задач.1.
Разработатьоблачныеиреализоватьвеб-приложениябиблиотекуаспектов,следующимирасширяющуювидамисквознойфункциональности: перенаправление протоколирования в хранилищеотладочной информации Microsoft Azure, кэширование информации,получаемой из SQL Azure, обработка исключений.2. Предложить методику, позволяющую перехватывать обратные вызовыметодов от инфраструктуры Microsoft Azure, не затрагивая при этомцелевой код.3. Найти способ публикации в облаке АОП-программ, разработанныхс помощью Aspect.NET, а также обеспечить возможность их отладкив Microsoft Visual Studio.4. Разработатьметодбесшовногорасширенияфункциональностиоблачных веб-приложений с помощью библиотеки Microsoft EnterpriseLibrary и Aspect.NET.5. Разработать методику аспектно-ориентированного рефакторинга дляулучшения метрик исходного кода веб-приложения с помощью системыAspect.NET.9Цель и задачи диссертации соответствуют области исследований паспортаспециальности05.13.11«Математическоеипрограммноеобеспечениевычислительных машин, комплексов и компьютерных сетей» – пункту 1 (модели,методы и алгоритмы проектирования и анализа программ и программных систем,их эквивалентных преобразований, верификации и тестирования), пункту 2(языки программирования и системы программирования, семантика программ),пункту 3 (модели, методы, алгоритмы, языки и программные инструменты дляорганизации взаимодействия программ и программных систем) и пункту 9(модели, методы, алгоритмы и программная инфраструктура для организацииглобально распределенной обработки данных).Методология и методы исследования.