Инструменты аспектно-ориентированного программирования облачных веб-приложений в Microsoft Azure: разработка и реализация в системе Aspect.NET тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат наук Григорьева Анастасия Викторовна

  • Григорьева Анастасия Викторовна
  • кандидат науккандидат наук
  • 2016, ФГБОУ ВО «Санкт-Петербургский государственный университет»
  • Специальность ВАК РФ05.13.11
  • Количество страниц 150
Григорьева Анастасия Викторовна. Инструменты аспектно-ориентированного программирования облачных веб-приложений в Microsoft Azure: разработка и реализация в системе Aspect.NET: дис. кандидат наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. ФГБОУ ВО «Санкт-Петербургский государственный университет». 2016. 150 с.

Оглавление диссертации кандидат наук Григорьева Анастасия Викторовна

ВВЕДЕНИЕ

ГЛАВА 1. ТЕХНОЛОГИИ ОБЛАЧНЫХ ПРИЛОЖЕНИЙ

1. 1 Основные понятия и характеристики облачных приложений

1.2 История развития облачных технологий (Amazon AWS и Microsoft Azure)

1.3 Основные компоненты и сервисы облачных платформ Amazon AWS и Microsoft Azure

1.4 Google App Engine

1.5 Red Hat OpenShift

1.6 Выводы по главе

ГЛАВА 2. АСПЕКТНО-ОРИЕНТИРОВАННЫЕ ТЕХНОЛОГИИ

2.1 Аспектно-ориентированное программирование для платформы Java с AspectJ

2.2 Бесшовное аспектно-ориентированное программирование веб-сервисов в FuseJ

2.3 Применение контейнера управления зависимостями Microsoft Unity для АОП на платформе .NET

2.4 Статическое применение аспектов в PostSharp на платформе .NET

2.5 Aspect.NET

2.6 Выводы по главе

ГЛАВА 3. ПРИМЕНЕНИЕ И АДАПТАЦИЯ ASPECT.NET ДЛЯ РАЗРАБОТКИ ОБЛАЧНЫХ ВЕБ-ПРИЛОЖЕНИЙ В MICROSOFT AZURE

3.1 Принципы реализации облачных веб-приложений на платформе Microsoft Azure с помощью Aspect.NET

3.2 Реализация совместимости Aspect.NET с Microsoft Visual Studio

3.3 Замещение аспектом целевого класса для перехвата событий

3.4 Внедрение в конфигурационный файл веб-приложения настроек аспектов

3.5 Выводы по главе

ГЛАВА 4. РЕАЛИЗАЦИЯ БИБЛИОТЕКИ АСПЕКТОВ ДЛЯ ОБЛАЧНЫХ ВЕБ-ПРИЛОЖЕНИЙ

4.1 Перенаправление диагностической информации в Azure Diagnostics Storage

4.2 Определение в аспекте стратегии реакции на исключения

4.3 Кэширование в аспекте результатов операций, сессии и ответа сервера

4.4 Аспект для аутентификации на базе форм

4.5 Выводы по главе

ГЛАВА 5. АСПЕКТНО-ОРИЕНТИРОВАННЫЙ РЕФАКТОРИНГ ОБЛАЧНЫХ ВЕБ-ПРИЛОЖЕНИЙ

5.1 Применимость АОП-рефакторинга для веб-приложений на платформе Microsoft Azure

5.2 Локализация в аспекте объектов службы

5.3 Перенос вызовов объектов службы в аспектный производный класс

5.4 Привязка действий аспекта к вызовам методов базового класса

5.5 Выделение управляющих службой элементов в .ascx компонент аспекта

5.6 Управление аспектом через "пустые" private свойства в целевом коде

5.7 Демонстрация АОП-рефакторинга в приложениях N2CMS и Orchard

5.8 Выводы по главе

ГЛАВА 6. БЕСШОВНОЕ РАСШИРЕНИЕ ОБЛАЧНЫХ ВЕБ-ПРИЛОЖЕНИЙ С ПОМОЩЬЮ

MICROSOFT ENTERPRISE LIBRARY INTEGRATION PACK

6.1 Применимость Microsoft EL для реализации сквозной функциональности

6.2 Logging Application Block

6.3 Autoscaling Application Block

6.4 Transient Fault Handling Application Block

6.5 Выводы по главе

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

СПИСОК ИЛЛЮСТРАЦИЙ

СПИСОК ТАБЛИЦ

СПИСОК ЛИСТИНГОВ

ПРИЛОЖЕНИЕ A. АКТЫ О ВНЕДРЕНИИ

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Инструменты аспектно-ориентированного программирования облачных веб-приложений в Microsoft Azure: разработка и реализация в системе Aspect.NET»

Введение

Актуальность темы исследования. В работе рассматриваются два перспективных направления в области развития информационных технологий: облачные вычисления и аспектно-ориентированное программирование (АОП) [11]. Базой для объединения этих двух разработок стала платформа для облачных вычислений Microsoft Azure, предоставляющая весь спектр моделей облачных вычислений от "инфраструктура как сервис" (IaaS) до "программа как сервис" (SaaS).

Перспективность облачных приложений не вызывает сомнений. В настоящее время почти любая крупная компания предлагает свои облачные продукты от хранения личных файлов (Dropbox) и до офисных процессоров (Microsoft Office 360), от программной библиотеки распознавания образов (ABBYY Cloud OCR SDK) и до целых сред разработки (Microsoft Visual Studio Online).

Неотъемлемой характеристикой облачных приложений является их доступность через Интернет в виде веб-приложений. Как известно [109], любой программный продукт обладает определенными атрибутами качества, которые не относятся напрямую к функциональным требованиям, но влияют на поведение системы. К таким атрибутам качества относятся различные требования безопасности, производительность, сопровождаемость, мониторинг и пр. Объектно-ориентированная методология программирования (ООП) существенно облегчает разработку функциональных требований и бизнес-логики, позволяя идентифицировать в предметной области объекты, выстраивать их иерархию и распределять между ними обязанности. В свою очередь, реализация некоторых атрибутов качества образует "сквозную функциональность" (cross-cutting concerns), которая горизонтально рассредоточена по иерархиям объектов предметной области, т.е. множество объектов вовлечены в реализацию этого требования, например, кэширования. Использование ООП в этом случае приводит к необходимости решать одну и ту же задачу отдельно для каждого

уровня абстракции архитектуры. Исходный код такой системы обладает высокой связанностью, его сложно декомпозировать и сопровождать.

АОП предлагает решение данной проблемы — выделение "сквозной функциональности" в один модуль, аспект [125]. По своей сути, реализация "сквозной функциональности" состоит в том, чтобы выполнить некие действия в определенных точках целевой программы или же расширить существующие классы новыми методами и полями. Все такие действия (advices) инкапсулируются в аспекте и снабжены описанием своих точек внедрения (joinpoints). Кроме того, чтобы влиять на поведение целевой программы, действия аспекта имеют доступ к контексту своих точек внедрения, например, к ссылкам на объекты, окружающим данную точку. Всё это сокращает размер исходного кода, облегчает тестирование как аспекта, так и бизнес-логики [103].

Актуальность темы исследования обусловлена необходимостью повышения качества, производительности и сопровождаемости облачных веб-приложений. Всё большее количество сервисов, которыми пользуются рядовые пользователи, переносится в облака, и принципы АОП могут сильно облегчить сопровождение и написание этих сервисов.

Актуальной является задача выявления сквозных функциональных потребностей, общих для большинства веб-приложений, для дальнейшей их реализации в виде библиотек аспектов. И следующая из неё задача разработки этих библиотек для использования их при решении практических задач.

Ещё одной актуальной задачей является разработка и реализация библиотек, позволяющих улучшить такие характеристики качества как сопровождаемость, производительность, связность, объем кода веб-приложений. А улучшение любой из этих характеристик в свою очередь ведет к удешевлению процесса разработки за счет уменьшения человеко-часов.

Степень разработанности темы исследования. Для АОП разработки программ применяется множество инструментов, самыми популярными из которых являются AspectJ [68] и PostSharp [80] (по данным Google Trends [38]).

Однако проведенный в процессе написания работы анализ предметной области показал, что популярность АОП-инструментов уступает альтернативным технологиям повышения качества программного обеспечения, таким как, например, рефакторинг и IoC-контейнеры. Существенной проблемой при изменении поведения программы с помощью современных АОП-инструментов является отсутствие бесшовной интеграции аспектов и целевого исходного кода системы. Термин "бесшовная интеграция" применительно к аспектам и целевому коду можно сформулировать следующим образом: это такое расширение функциональности целевого кода, при котором не требуется вносить изменения в целевой проект, включая его код, файлы настроек и свойства проекта. При бесшовной интеграции в этом смысле у пользователя должна быть возможность отдельно компилировать, запускать и тестировать аспектную и целевую сборки, без необходимости иметь их исходный код. Данное определение отличается от "бесшовности" применения ряда АОП-инструментов (PostSharp, FuseJ [94] и др.), когда целевой код не зависит от аспектов, однако они тесно интегрированы в его проект, что препятствует тестированию бизнес-логики и затрудняет возможный отказ от применяемого АОП-инструмента.

В то время как пользователи AspectJ для Java-платформы имеют возможность создавать свои аспекты и правила внедрения в одном модуле и внедрять их в целевые сборки на бинарном уровне, то на платформе .NET существует несколько АОП-инструментов, которые позволяют бесшовно внедрять аспекты, например, проекты SheepAspect [90] и AOP.NET [11]. Оба эти проекта позволяют хранить определения аспектов вместе с правилами их внедрения и вставлять их в целевую сборку на этапе пост-компиляции, однако ни один из них не вышел из стадии альфа-версии и их развитие приостановлено.

В качестве примера современного инструмента АОП, обеспечивающего бесшовное применение аспектов, в работе описывается и анализируется система Aspect.NET — среда аспектно-ориентированной разработки программ для платформы Microsoft.NET, разработанный в лаборатории Java-технологии

математико-механического факультета СПбГУ под научным руководством профессора В. О. Сафонова.

Впервые вопросы применения Aspect.NET к разработке веб-приложений исследовал в 2010 г. Нгуен В. Д., аспирант кафедры "Информатики" математико-механического факультета СПбГУ. Результатом его работы [123] стала библиотека с универсальными аспектами для безопасности, криптографии и расширения пользовательского Web-интерфейса приложений на базе ASP.NET. Проведенные им оценки производительности результирующей сборки после применения Aspect.NET показали, что накладные расходы на вызовы действий аспектов минимальны и соразмерны со вставкой их в исходный код вручную.

Объектом исследования являются инфраструктура, программные компоненты и сервисы платформы облачных вычислений Microsoft Azure, а также модели, методы и алгоритмы применения аспектов на базе инструмента Aspect.NET.

Предметом исследования является возможность повышения качества исходного кода облачных веб-приложений с помощью АОП-рефакторинга. Кроме того, исследуется процесс разработки, реализации и применения универсальных аспектов, предназначенных для бесшовного расширения облачных веб-приложений, в том числе с использованием стороннего фреймворка Microsoft Enterprise Library Integration Pack.

Большинство разработчиков используют Microsoft Visual Studio (VS) для разработки облачных веб-приложений Microsoft Azure. Так как Aspect.NET — это консольное приложение, которое лишь сливает целевую и аспектную сборки, то его необходимо первоначально адаптировать для пост-компиляции аспектов в VS, публикации результирующей сборки в облаке, а также реализовать возможность отладки в облаке примененных аспектов. Кроме того, аспекты веб-приложений могут сохранять свои настройки в конфигурационном файле целевого проекта web.config. Соответственно требуется разработать технологию раздельного хранения настроек аспектов и целевого приложения, а затем их слияния перед компоновкой аспектов. Такой подход позволяет разрабатывать аспекты в

отдельном проекте VS, исключая необходимость какой-либо модификации целевого проекта. Следовательно, становится возможным бесшовно расширять любое ASP.NET веб-приложение функциональностью аспектов, предложенных в рамках AzureLibrary. Отметим, что данная технология соответствует общему тренду развития средств построения облачных веб-приложений на платформе Microsoft Azure, когда пользователи на специальном веб-портале выбирают шаблон приложения, конфигурируют его в веб-интерфейсе и публикуют в облаке. Разработанная автором технология позволяет расширять функциональность подобных приложений, не требуя от конечного пользователя изменять их код.

Целью данной работы является повышение с помощью АОП качества и производительности, а также улучшение сопровождаемости облачных веб-приложений на платформе Microsoft Azure.

Достижение поставленной цели осуществляется решением следующих задач.

1. Разработать и реализовать библиотеку аспектов, расширяющую облачные веб-приложения следующими видами сквозной функциональности: перенаправление протоколирования в хранилище отладочной информации Microsoft Azure, кэширование информации, получаемой из SQL Azure, обработка исключений.

2. Предложить методику, позволяющую перехватывать обратные вызовы методов от инфраструктуры Microsoft Azure, не затрагивая при этом целевой код.

3. Найти способ публикации в облаке АОП-программ, разработанных с помощью Aspect.NET, а также обеспечить возможность их отладки в Microsoft Visual Studio.

4. Разработать метод бесшовного расширения функциональности облачных веб-приложений с помощью библиотеки Microsoft Enterprise Library и Aspect.NET.

5. Разработать методику аспектно-ориентированного рефакторинга для улучшения метрик исходного кода веб-приложения с помощью системы Aspect.NET.

Цель и задачи диссертации соответствуют области исследований паспорта специальности 05.13.11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» - пункту 1 (модели, методы и алгоритмы проектирования и анализа программ и программных систем, их эквивалентных преобразований, верификации и тестирования), пункту 2 (языки программирования и системы программирования, семантика программ), пункту 3 (модели, методы, алгоритмы, языки и программные инструменты для организации взаимодействия программ и программных систем) и пункту 9 (модели, методы, алгоритмы и программная инфраструктура для организации глобально распределенной обработки данных).

Методология и методы исследования. В исследовании комбинировались два вида методологии. Первый, типичный для диссертационного исследования: обобщение, анализ и синтез теоретического и практического материала и второй, специфичный для темы исследования и задач практического программирования облачных веб-приложений на платформе Microsoft Azure.

1. Сквозная функциональность из библиотеки Microsoft Enterprise Library (которая реализует в виде функциональных блоков практические методы решения наиболее актуальных задач в разработке программного обеспечения).

2. Методы низкоуровневого программирования MSIL-сборок для расширения возможностей Aspect.NET.

3. Метод программирования интерпретатора cmd.exe для описания событий пред- и пост-компиляции Microsoft Visual Studio.

4. Методики аспектно-ориентированного программирования и рефакторинга.

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

Обоснованность полученных результатов обеспечивается:

1) корректным применением теории объектно-ориентированного и аспектно-ориентированного программирования;

2) результатами сравнительного анализа разработанных методов с аналогичными подходами к АОП;

3) результатом улучшения метрики интегрированной оценки качества исходного кода целевого приложения после проведения АОП-рефакторинга;

4) позитивным опытом внедрения и эксплуатации ПО, разработанного с применением предложенных методов.

Научная новизна диссертации заключается в том, что разработанная технология бесшовного расширения функциональности облачных веб-приложений на платформе Microsoft Azure с помощью подсистемы применения аспектов Aspect.NET предложена впервые. Разработанная автором библиотека аспектов AzureLibrary впервые позволила расширить функциональность облачных веб-приложений, не затрагивая их исходный код, конфигурационные файлы или настройки проекта.

Кроме того, разработанная в ходе исследования методика интеграции сквозной функциональности отличается от ранее созданных методик использования АОП своей бесшовностью применения. Это позволяет получать веб-приложения с высокой производительностью, которые легко сопровождать, и они не будут привязаны к конкретному АОП-инструменту, как это имеет место в альтернативных методиках АОП-программирования для платформы Microsoft.NET.

Таким образом, в данной работе рассмотрен принципиально новый подход к разработке облачных веб-приложений на платформе Microsoft Azure. Его преимуществами перед существующими технологиями являются: бесшовное добавление функциональности к веб-приложениям, высокая производительность, улучшение качества исходного кода и возможность использования существующих сторонних библиотек для реализации сквозной функциональности.

Теоретическая и практическая значимость работы. В рамках диссертационного исследования разработана методика для бесшовного расширения функциональности облачных веб-приложений на платформе Microsoft Azure с помощью АОП-инструмента Aspect.NET. Предложенный способ интеграции Aspect.NET в среду программирования Microsoft Visual Studio повышает удобство создания аспектов для платформы Microsoft.NET. Разработанный набор АОП-рефакторингов облачных ASP.NET веб-приложений демонстрирует повышение качества исходного кода целевого приложения за счет принципа "разделяй и властвуй". Продемонстрированный в диссертации метод использования в аспектах стороннего решения Microsoft Enterprise Library Integration Pack дает возможность применять существующие библиотеки, компоненты и веб-сервисы для реализации сквозной функциональности, упрощая сами аспекты.

Практическая ценность заключается в реализации предложенных модификаций в Aspect.NET, создании библиотеки аспектов AzureLibrary и примеров её применения. Также разработаны примеры, иллюстрирующие эффективность предложенного набора АОП-рефакторингов.

Так, коэффициент сопровождаемости кода целевых приложений, подвергнутых АОП-рефакторингу улучшился на 3-25%. В проекте с Orchard CMS АОП-рефакторинг с помощью 6 аспектов повысил коэффициент сопровождаемости целевых классов на 5-12%. Таким образом, доказан существенный технический эффект использования предложенных алгоритмов и методов при написании и сопровождении программных продуктов. Сведения о практическом использовании полученных автором диссертации научных результатов приведены в актах о внедрении программных принципов и библиотек, разработанных в рамках исследования.

Положения, выносимые на защиту

1. Разработана и реализована библиотека аспектов AzureLibrary для расширения облачных веб-приложений следующими видами функциональности: перенаправление протоколирования в хранилище отладочной информации

Microsoft Azure, кэширование в распределенном облачном кэше информации, получаемой из SQL Azure, и обработки исключений. Применение AzureLibrary и Aspect.NET приводит к добавлению новой функциональности без какой-либо модификации целевого проекта.

2. Предложена методика "замещающего" аспектного наследника, который позволяет перехватывать обратные вызовы методов от инфраструктуры Microsoft Azure, поддерживающая возможность бесшовного применения аспектов в Aspect.NET. Также предложено раздельное хранение целевой и аспектной конфигурации, для этого разработан алгоритм по их слиянию при компиляции аспектного проекта. Данные предложения реализованы в программном комплексе Aspect.NET.

3. Найден способ интеграции компоновщика аспектов Aspect.NET в Microsoft Visual Studio для обеспечения возможности публикации, а также локальной и удаленной отладки в облаке Azure АОП-программ.

4. Разработан метод бесшовной интеграции сквозной функциональности библиотеки Microsoft Enterprise Library Integration Pack for Azure в целевое приложение на примере аспектов логгирования (Logging Application Block), автоматического масштабирования облачного приложения (Autoscaling Application Block), реакции на исключительные ситуации (Transient Fault Handling). Это позволило расширить функциональность облачных приложений с помощью указанной библиотеки. Данные аспекты также реализованы автором в рамках библиотеки AzureLibrary.

5. Разработана и протестирована методика улучшения индекса сопровождаемости (Maintanability Index) целевых классов с помощью проведения их АОП-рефакторинга. Спроектирован набор из 5 аспектно-ориентированных рефакторингов на основе Aspect.NET для классов облачных веб-приложений. Проведенные эксперименты над типичными веб-приложениями (N2CMS и Orchard CMS) показали улучшение индекса сопровождаемости целевых классов на значения от 2 до 25%.

Кроме этого в диссертации сформулированы рекомендации по применению результатов работы в индустрии и научных исследованиях, заключающиеся в необходимости учитывать следующие ограничения.

1. В следствии того, что аспекты являются статическими классами, в многопоточных приложениях имеет смысл маркировать все разделяемые данные аспекта атрибутом [ThreadStatic].

2. Целевые методы должны обладать аргументами или результатом, типы которых не являются дженериками (generics), так как Aspect.NET не имеет возможности их перехвата.

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

4. Целевые приложения должны быть разработаны в среде Microsoft Visual Studio на языке C# или Visual Basic.

Также в диссертации определены перспективы дальнейшей разработки тематики, основными из которых являются адаптация предложенных методик для таких сред разработки на платформе .NET, как MonoDevelop и Unity3D. Кроме этого, в целях повышения стабильности системы необходимо исследовать процесс тестирования как аспектов, так и результирующей сборки в целом. Все полученные результаты являются новыми. Апробация результатов

Основные результаты и выводы диссертационной работы докладывались и обсуждались на следующих научных конференциях и семинарах: 1) конференция "Технологии Microsoft в теории и практике программирования", 2011, СПбГПУ, Санкт-Петербург; 2) вторая межвузовская научная конференция по проблемам информатики "СПИСОК-2011", 2011, СПбГУ, Санкт-Петербург; 3) всероссийская научная конференция по проблемам информатики "СПИСОК-2012", 2012, СПбГУ, Санкт-Петербург; 4) конференция "Технологии Microsoft в теории

и практике программирования", 2012, СПбГПУ, Санкт-Петербург;

5) межвузовский конкурс-конференция "Технологии Microsoft в теории и практике программирования", 2013, СПбГПУ, Санкт-Петербург;

6) межвузовская научная конференция по проблемам информатики "СПИСОК-2013", 2013, СПбГУ, Санкт-Петербург; 7) всероссийская научная конференция по проблемам информатики "СПИСОК-2014", 2014, СПбГУ, Санкт-Петербург; 8) international conference on numerical analysis and applied mathematics 2014 (ICNAAM-2014), 2014, Rhodes, Greece; 9) всероссийская научная конференция по проблемам информатики "СПИС0К-2016", 2016, СПбГУ, Санкт-Петербург.

Публикации автора по теме диссертации

Результаты исследований отражены в работах 1-10. В статье 2 соискателю принадлежат рассуждения о применимости АОП к разработке облачных программ и реализация набора аспектов. Соавторам в этой статье принадлежит описание пользовательских требований и особенностей реализации геолокационной системы в облаке. В публикациях 3-10 соискателю принадлежат формулировки, рассуждения, описания и реализация в комплексе программ Aspect.NET метода бесшовной интеграции аспектов с Microsoft Enterpise Library Integration Pack, разработка и реализация набора АОП-рефакторингов, а также библиотеки аспектов AzureLibrary со сквозной функциональностью. Соавторам принадлежит общая постановка задачи, модификация компоновщика аспектов и методы проверки достоверности полученных результатов. Статьи 1, 2 и 3 опубликованы в журналах, входящих в перечень ведущих рецензируемых научных журналов и изданий, в которых должны быть опубликованы основные научные результаты диссертаций на соискание ученых степеней доктора и кандидата наук, утвержденный решением Президиума Высшей аттестационной комиссии Минобрнауки России.

Все выносимые на защиту результаты получены лично автором. Программные реализации выполнены автором.

Структура и краткий план последующих глав диссертации.

Определения ключевых понятий вводятся в диссертации в следующей форме: понятие выделено полужирным курсивом, после тире приведено его определение. Краткая форма или аббревиатура (если есть) заключена в круглые скобки.

Для некоторых значимых терминов в скобках указано их наименование на английском языке, принятое в англоязычной литературе.

Во введении обосновывается актуальность работы, формулируются цели, задачи, объект и предмет диссертационного исследования, показана научная новизна и практическая ценность полученных результатов. Приводится структура диссертации.

В первой главе приведены основные понятия облачных технологий, описаны их виды и характеристики. Затем дается краткая история развития и предпосылки возникновения облачных вычислений, подробно рассмотрены типичные сценарии их использования и преимущества. На протяжении всей главы делается сравнительный анализ облачных технологий от разных поставщиков. Для ряда поставщиков рассмотрены предлагаемые ими облачные сервисы и линейка оборудования. При изложении особенностей Microsoft Azure делается акцент на принципы разработки облачных веб-приложений.

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

для уменьшения затрат при их эксплуатации в облаке, а бесшовная интеграция позволяет проводить АОП-рефакторинг и расширение функциональности без модификации целевого проекта. На основе анализа существующих АОП-инструментов для платформ Java и .NET, сделан аргументированный выбор в пользу Aspect.NET, который позволяет разрабатывать аспекты для облачных веб-приложений и удовлетворяет всем озвученным критериям.

В третьей главе исследована возможность применения Aspect.NET для реализации облачных приложений на платформе Microsoft Azure. Показана необходимость и осуществлена интеграция Aspect.NET со средой разработки Microsoft Visual Studio через события пред- и пост-компиляции. Также описана реализация в Aspect.NET возможности удаленной отладки результирующих приложений на облачных серверах. Далее в главе проанализирована типичная сквозная функциональность облачных веб-приложений на базе ASP.NET MVC и реализовано расширение функциональных возможностей Aspect.NET для поддержки её выделения в аспекты, а именно:

1) перехват целевых методов обратного вызова, которые вызываются платформой с помощью автоматической замены целевого класса его аспектным наследником;

2) автоматическое слияние конфигурационных XML-файлов аспектного и целевых проектов при компиляции, что позволило сократить количество настроек в целевом проекте до минимального количества, необходимого для бизнес-логики.

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

В пятой главе рассмотрены основы аспектно-ориентированного рефакторинга облачных веб-приложений. Дано описание методики проведения АОП-рефакторинга облачных ASP.NET MVC приложений с помощью

Aspect.NET. Данная техника позволяет разделить исходный проект на два проекта (с бизнес-логикой и аспектами), что, согласно принципу "разделяй и властвуй", уменьшает общую сложность разработки ПО. Сформулирован набор рефакторингов (название, мотивация, решение, практический пример) и продемонстрировано улучшение метрик качества исходного кода облачных веб-приложений.

В шестой главе приводится обзор функциональных блоков библиотеки Microsoft Enterprise Library Integration Pack for Azure и предложена методика их бесшовной интеграции в целевое облачное приложение на примере аспектов протоколирования, автоматического масштабирования облачного приложения, реакции на исключительные ситуации. Данные аспекты также реализованы в рамках библиотеки AzureLibary.

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Список литературы диссертационного исследования кандидат наук Григорьева Анастасия Викторовна, 2016 год

Список литературы

1. lcloud, home page [Electronic resource], — URL: https://1cloud.ru/product/panel-upravleniya (online; accessed: 2016-05-20).

2. Ahmadi, R. Aspect Oriented Programming Using C# and PostSharp [Electronic resource]//MSDN magazine. — 2014. — С. 10 URL: http://www.codeproject.com/Articles/337564/Aspect-Oriented-Programming-Using-Csharp-and-PostS (online; accessed: 2016-05-20).

3. Alves, P. Avoiding code pitfalls in aspect-oriented programming [Text] /Alves P., Figueiredo E., Ferrari F. //Programming Languages. - Springer International Publishing, 2014. - P. 31-46.

4. Amazon EC2 Container Service, home page [Electronic resource]. — URL: http://aws.amazon.com/ru/ecs (online; accessed: 2016-05-20).

5. Amazon EC2 User Guide, home page [Electronic resource]. — URL: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html (online; accessed: 2016-05-20).

6. Amazon Elastic MapReduce, home page [Electronic resource]. -- URL: http://aws.amazon.com/ru/elasticmapreduce (online; accessed: 2016-05-20).

7. Amazon S3, home page [Электронный ресурс]. — URL: http://aws.amazon.com/ru/s3 (дата обращения 2016-05-20).

8. Amazon SES, home page [Электронный ресурс]. — URL: http://aws.amazon.com/ru/ses (дата обращения 2016-05-20).

9. Amazon WorkSpaces, home page [Electronic resource]. — URL: http://aws.amazon.com/ru/workspaces (online; accessed: 2016-05-20).

10. Amazon.com //Wikipedia: the free encyclopedia [Electronic resource]. — URL: https://en.wikipedia.org/wiki/Amazon.com (online; accessed: 2016-05-20).

11. AOP.NET home page [Electronic resource]. — URL: http://sourceforge.net/projects/aopnet (online; accessed: 2016-05-20).

12. Apache Hadoop, home page [Electronic resource]. — URL: http://hadoop.apache.org/ (online; accessed: 2016-05-20).

13. Archie Hendryx Hendryx. Cloudy Concepts: IaaS, PaaS, SaaS, MaaS, CaaS & XaaS// Zdnet magazine. — October 30, 2011. [Electronic resource]. — URL: http://zdnet.com/article/cloudy-concepts-iaas-paas-saas-maas-caas-xaas (online; accessed: 2016-05-20).

14. Arrington, M. HP, Yahoo, Intel Launch Cloud Computing Test Bed universities// techcrunch. July 29, 2008. [Electronic resource]. — URL:

http://techcmnch.com/2008/07/29/hp-yahoo-intel-announce-cloud-computing-research-initiative (online; accessed: 2016-05-20).

15. Aspect Oriented Programming and Interceptor design pattern with Unity 2, [Electronic resource]. — URL:

https://hmadrigal.wordpress.com/2010/12/25/aspect-oriented-programming-and-interceptor-design-pattern-with-unity-2/ (online; accessed: 2016-05-20).

16. Baharestani, D. Mastering Ninject for Dependency Injection [Text] / Daniel Baharestani. - Packt Publishing Ltd, 2013. - P. 142. - ISBN: 1782166203.

17. Bolle, M. Automated Usage Tracing and Analysis: a comparison with web survey [Text] /Bolle M., Backlund E. //Chalmers University of Technology University of Gothenburg Department of Computer Science and Engineering, Sweden, 2013. - P. 119.

18. Bopuri, H. Aspect Oriented Programming Through C# .NET [Text] /Bopuri H., Salman R. // International Journal of Software Engineering (IJSE). - CSC Journals, Kuala Lumpur Malaysia. - 2013. - Т.4., №. 1. - P. 23-32.

19. Boucher, Jr, R. Мониторинг облачных служб [Электронный ресурс]. — URL: https://azure.microsoft.com/ru-ru/documentation/articles/cloud-services-how-to-monitor/ (дата обращения 2016-05-20).

20. Chitchyan, R. A Survey of Analysis and Design Approaches [Text] /R. Chitchyan, [et al.] // AOSD-Europe Report D11. - 2005. - P. 8.

21. Cortana Intelligence Suite, home page [Electronic resource]. — URL: https://www.microsoft.com/en-us/server-cloud/cortana-intelligence-suite/Overview.aspx (online; accessed: 2016-05-20).

22. Costa, P. NaaS: Network-as-a-Service in the Cloud. / Paolo Costa, Matteo Migliavacca, Peter Pietzuch, Alexander L. Wolf [Electronic resource]. — URL: http://research.microsoft.com/pubs/198841/costa12naas.pdf (online; accessed: 2016-05-20).

23. DaaS (Desktop as a Service) // Словари и энциклопедии на Академике. [Электронный ресурс]. -- URL:

http://dic.academic.ru/dic.nsf/ruwiki/1267342 (дата обращения 02.04.2016).

24. Danielson, S. How to Use In-Role Cache for Azure Cache [Electronic resource]. — URL: https://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-in-role (online; accessed: 2016-05-20).

25. Di Mattia, S. Microsoft Azure Cloud Services Part 2: Anatomy of a Cloud Service [Electronic resource]// JustAzure. — 30 Jun 2014. — URL: http://justazure.com/microsoft-azure-cloud-services-part-2-anatomy-cloud-service (online; accessed: 2016-05-20).

26. DiagnosticMonitor Class, home page [Electronic resource]. — URL: https://msdn.microsoft.com/en-

us/library/microsoft.windowsazure.diagnostics.diagnosticmonitor.aspx (online; accessed: 2016-05-20).

27. Disaster Recovery as a Service // RapidScale. Managed Disaster Recovery as a Service for Business, home page [Electronic resource]. — URL: http://disasterrecoveryasaservice.info/ (online; accessed: 2016-05-20).

28. Dykstra, T. ASP .NET Web Deployment using Visual Studio [Electronic resource]. — URL: http://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/web-config-transformations (online; accessed: 2016-05-20).

29. EC2Instances.info, home page [Electronic resource]. — URL: http://www.ec2instances.info (online; accessed: 2016-05-20).

30. Esposito, D. CUTTING EDGE: Aspect-Oriented Programming, Interception and Unity 2.0 [Electronic resource]//MSDN magazine. — 2010. — P. 10.— URL: https://msdn.microsoft.com/en-us/magazine/gg490353.aspx (online; accessed: 2016-05-20).

31. Everything you need to deliver great mobile apps, home page [Electronic resource]. — URL: https://www.xamarin.com (online; accessed: 2016-05-20).

32. Freeman, S. Mock Roles, not Objects [Text] / Freeman S., Mackinnon T. ,Pryce N., Walnes J. // In Companion to the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), 2004. — P. 236-246.

33. Fultz, J. Performance-Based Scaling in Windows Azure [Electronic resource] // MSDN,— 11.2010. — URL: http://msdn.microsoft.com/en-us/magazine/gg232759.aspx (online; accessed: 2016-05-20).

34. FxCop 10.0, home page [Electronic resource]. — URL: https://www.microsoft.com/en-us/download/details.aspx?id=6544 (online; accessed: 2016-05-20).

35. Garcia, A. Modularizing design patterns with aspects: a quantitative study [Text] /Garcia A. [et al.] // Transactions on Aspect-Oriented Software Development I. - Heidelberg: Springer Berlin Heidelberg, 2006. - P. 36-74.

36. Google Compute Engine home page [Electronic resource]. — URL: https://cloud.google.com/compute (online; accessed: 2016-05-20).

37. Google Compute Storage, home page [Electronic resource]. -- URL: https://cloud.google.com/storage (online; accessed: 2016-05-20).

38. Google Trends, home page [Electronic resource]. -- URL: https://www.google.ru/trends (online; accessed: 2016-05-20).

39. GQL Reference, home page [Electronic resource]. — URL: https://cloud.google.com/appengine/docs/python/datastore/gqlreference (online; accessed: 2016-05-20).

40. Gross, G. Google, IBM promote 'cloud' computing at universities //Networkworld magazine. — October 8, 2007. [Electronic resource]. — URL: http://www.networkworld.com/article/2286663/data-center/google--ibm-promote--cloud--computing-at-universities.html (online; accessed: 2016-05-20).

41. Groves, M. D. AOP in. NET [Text] /Matthew D. Groves. — Manning Publ., 2013. — P. 296. — ISBN-13: 978-1617291142.

42. Groves, M. D. AOP in. NET [Text] /Matthew D. Groves. — Manning Publ., 2013. — P. 296. — ISBN-13: 978-1617291142.

43. Hanenberg, S. Refactoring of aspect-oriented software [Text] /Hanenberg S., Oberschulte C., Unland R. //4th Annual International Conference on Object-Oriented and Internet-based Technologies, Concepts, and Applications for a Networked World (Net. ObjectDays). - 2003. - P. 19-35.

44. Hannemann, J. Aspect-oriented refactoring: Classification and challenges [Text] / Jan Hannemann // Workshop on Linking Aspect Technology and Evolution (LATE'06). 5th International Conference on Aspect-Oriented Software Development (AOSD'06). - 2006. —P. 5.

45. Hilsdale, E. Advice weaving in AspectJ [Text] /Hilsdale E., Hugunin J. //Proceedings of the 3rd international conference on Aspect-oriented software development. - ACM, 2004. - P. 26-35.

46. Howard, R. Provider Model Design Pattern and Specification, Part [Electronic resource]. — URL: https://msdn.microsoft.com/en-us/library/ms972319.aspx (online; accessed: 2016-05-20).

47. Hunt, A. Pragmatic Unit Testing in C# with NUnit [Text] /A Hunt, D Thomas. — The Pragmatic Bookshelf. — Raleigh, 2004. — P. 176.— ISBN: 9780974514024.

48. INotifyPropertyChanged — интерфейс, [Электронный ресурс]. — URL: https://msdn.microsoft.com/ru-

ru/library/system.componentmodel.inotifypropertychanged%28v=vs. 110%29.as px (дата обращения 2016-05-20).

49. Interceptor pattern //Wikipedia: the free encyclopedia. [Electronic resource]. -URL: https://en.wikipedia.org/wiki/Interceptor_pattern (online; accessed: 201605-20).

50. Internet Information Services (IIS) 7.5 Express, home page [Electronic resource]. — URL: https://www.microsoft.com/ru-RU/download/details.aspx?id=1038 (online; accessed: 2016-05-20).

51. Iwamoto, M. Refactoring aspect-oriented programs [Text] /Iwamoto M., Zhao J. //4th AOSD Modeling With UML Workshop, UML. — 2003. —P. 18.

52. JHotDraw, home page [Electronic resource]. — URL: https://sourceforge.net/projects/jhotdraw/ (online; accessed: 2016-05-20).

53. Kiczales, G. An Overview of AspectJ [Text] / G. Kiczales, J.Lamping, A. Mendhekar, C. Maeda, C. Lopes, J. M. Loingtier, and J. Irwin //Proc. 13th European Conference on Object-Oriented Programming, LNCS, SpringerVerlag, June 2000. — Vol.1241. —P. 220-242.

54. Laddad R. Aspect oriented refactoring [Text] / Ramnivas Laddad. - Addison-Wesley Professional, 2006. - P. 352. - ISBN: 0321304721.

55. Laddad, R. Aspectj in action: enterprise AOP with spring applications [Text] /Ramnivas Laddad. - Manning Publications, 2009. - P. 550. - ISBN 978-1933988-05-4.

56. Machine Learning. Powerful cloud based analytics, now part of Cortana Analytics Suite, home page [Electronic resource]. — URL: https://azure.microsoft.com/en-us/services/machine-learning (online; accessed: 2016-05-20).

57. Machiraju, S. Hardening Azure Applications [Text] / Suren Machiraju, Suraj Gaurav. — Apress, 2015. — P. 208. —ISBN: 978-1484209233.

58. MapReduce, home page [Electronic resource]. — URL: http://hadoop.apache.org/docs/r1.0.4/mapred_tutorial.html (online; accessed: 2016-05-20).

59. Martin, R. C. Agile software development: principles, patterns, and practices [Text] / R. Martin. — Prentice Hall, 2002. — P. 529. — ISBN-10: 0135974445.

60. Meet, W. The platform for cognitive business, home page [Electronic resource]. — URL: http://www.ibm.com/smarterplanet/us/en/ibmwatson/ (online; accessed: 2016-05-20).

61. Mell, P., Grance, T. The NIST Definition of Cloud Computing // Recommendations of the National Institute of Standards and Technolog. September 2011. [Electronic resource]. — URL: http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf (online; accessed: 2016-05-20).

62. Microsoft Azure, home page [Electronic resource]. — URL: https://azure.microsoft.com/ru-ru/support/legal/sla/ (online; accessed: 2016-0520).

63. Microsoft Enterprise Library 5.0 Integration Pack for Windows Azure, home page [Electronic resource]. -- URL:

http://entlib.codeplex.com/wikipage?title=EntLib5Azure (online; accessed: 2016-05-20).

64. Microsoft Enterprise Library, home page [Electronic resource]. — URL: http://msdn.microsoft.com/en-us/library/ff648951.aspx (online; accessed: 201605-20).

65. Microsoft Phoenix, home page [Electronic resource]. — URL: http://research.microsoft.com/en-us/collaboration/focus/cs/phoenix.aspx (online; accessed: 2016-05-20).

66. Microsoft.com, Specification [Electronic resource]. — URL: https://azure.microsoft.com/ru-ru/documentation/articles/storage-introduction (online; accessed: 2016-05-20).

67. Mikhajlov, L. A study of the fragile base class problem [Text] /Mikhajlov L., Sekerinski E. //ECOOP'98—Object-Oriented Programming. — Heidelberg: Springer Berlin Heidelberg, 1998. — P. 355-382.

68. Miles, R. AspectJ Cookbook. /Russell Miles.— Cambridge, USA: O'Reilly, 2004. — P. 354. — ISBN: 0-596-00654-3.

69. Mono.Cecil, home page [Electronic resource]. — URL: http://www.mono-project.com/docs/tools+libraries/libraries/Mono.Cecil (online; accessed: 201605-20).

70. Monteiro, M. P. Towards a catalog of aspect-oriented refactorings [Text] /Monteiro M. P., Fernandes J. M. // Proceedings of the 4th international conference on Aspect-oriented software development. - ACM, 2005. - P. 111122.

71. Morgan, C. Microsoft .NET Apps on OpenShift — Wait, what? [Electronic resource]// blog.openshift.com, March 5, 2014. — URL: https://blog.openshift.com/microsoft-dot-net-on-openshift (online; accessed: 2016-05-20).

72. Mortensen, M. Aspect-oriented refactoring of legacy applications: An evaluation [Text] /Mortensen M., Ghosh S., Bieman J. //Software Engineering, IEEE Transactions on. - 2012. - T. 38., №. 1. - P. 118-140.

73. Nash, P. Introducing Preemptible VMs, a new class of compute available at 70% off standard pricing //GoogleCloudPlatformBlog magazine. — May 18, 2015. [Electronic resource]. -- URL:

http://googlecloudplatform.blogspot.ru/2015/05/Introducing-Preemptible-VMs-a-new-class-of-compute-available-at-70-off-standard-pricing.html (online; accessed: 2016-05-20).

74. Norma, A. Is Cloud computing promising for your organization? //Computing Now magazine. — October 25, 2015. [Electronic resource]. — URL: http://cloudcomputing.ieee.org/ (online; accessed: 2016-05-20).

75. Nottingham, C. Sizes for virtual machines [Electronic resource] //Microsoft.com. — July 2015. — URL: https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-size-specs (online; accessed: 201605-20).

76. OData, home page [Electronic resource]. -- URL: http://www.odata.org(online; accessed: 2016-05-20).

77. OpenShift, home page [Electronic resource]. -- URL: https://www.openshift.org (online; accessed: 2016-05-20).

78. PaaS Provider Comparison Guide: Google App Engine, home page [Electronic resource]. — URL: http://www.tomsitpro.com/articles/google-app-engine-paas-cloud-computing-web-application,2-598.html (online; accessed: 2016-0520).

79. PostSharp Toolkits, home page [Electronic resource]. — URL: https://github.com/sharpcrafters/PostSharp-Toolkits/wiki (online; accessed: 2016-05-20).

80. PostSharp, home page [Electronic resource]. — URL: http://postsharp.net (online; accessed: 2016-05-20).

81. Rasche, A. Self-adaptive multithreaded applications: a case for dynamic aspect weaving [Text] / Rasche A., Schult W., Polze A. //Proceedings of the 4th workshop on Reflective and adaptive middleware systems. - ACM, 2005. - P. 10.

82. Rashid, A. Aspect-oriented database systems [Text] / A. Rashid. — Springer, 2004. — P. 176. —ISBN: 3-540-00948-5.

83. Rashid, A. Aspect-oriented software development in practice: tales from AOSD-Europe [Text] / Rashid A. // Computer. - 2010. - T. 43. - №. 2. - P. 19-26.

84. Red Hat solutions, home page [Electronic resource]. -- URL: http://www.enterpriseti.com/#!redhatshowcase/cdj6 (online; accessed: 2016-0520).

85. Refactored N2CMS, home page [Electronic resource]. — URL: https://github.com/nikita239/Aspect (online; accessed: 2016-05-20).

86. Refactored Orchard CMS, home page [Electronic resource]. — URL: https://github.com/nikita239/Orchard (online; accessed: 2016-05-20).

87. Safonov, V. O. Aspect.NET: concepts and architecture [Text] / V. O. Safonov //.NET Developer's Journal. - 2004. - T. 10. - P. 44-48.

88. Safonov, V. O. Configure and refactor cloud applications with Enterprise Library Integration Pack for Microsoft Azure using Aspect.NET [Text] / V. O. Safonov, D. A. Grigoriev, A. N. Safonova, A. V. Grigorieva // Proceedings of the international conference on numerical analysis and applied mathematics 2014 (ICNAAM-2014). — 2015. — Vol. 1648, — P. 310011(1-6).

89. Safonov, V. O. Using aspect-oriented programming for trustworthy software development [Text] / Safonov V.O. — John Wiley & Sons, 2008. — T. 5. — P. 338. — ISBN: 978-0-470-13817-5

90. SheepAspect home page [Electronic resource]. — URL: http://sheepaspect.codeplex.com (online; accessed: 2016-05-20).

91. Smith, S. By the Numbers: 108 Amazing Amazon Statistics (Year-End 2015) [Electronic resource] // DMR. — December 28, 2015. — URL: http://expandedramblings.com/index.php/amazon-statistics (online; accessed: 2016-05-20).

92. Spring.NET Reference Documentation [Electronic resource]. — URL: http://www.springframework.net/doc-latest/reference/pdf/spring-net-reference.pdf (online; accessed: 2016-05-20).

93. SQL Server on Linux, home page [Electronic resource]. — URL: https://www.microso^.com/en/server-cloud/sql-server-on-linux.aspx(online; accessed: 2016-05-20).

94. Suvee, D. et al. Evaluating FuseJ as a web service composition language [Electronic resource] //Web Services, 2005. ECOWS 2005. Third IEEE European Conference on. — IEEE, 2005. — C. 11. URL: http://soft.vub.ac.be/~njonchee/publications/ECOWS2005.pdf (online; accessed: 2016-05-20).

95. Szyperski, C. Components and web services [Text] /C. Szyperski //Software Development. - 2001. - T. 9., №. 8. - P. 57-60.

96. The AspectJ Programming Guide, [Electronic resource]. — URL: http://www.eclipse.org/aspectj/doc/released/progguide/index.html (online; accessed: 2016-05-20).

97. The Official Hosted ElasticSearch & Kibana Offering on AWS, home page [Electronic resource]. — URL: https://www.elastic.co/found (online; accessed: 2016-05-20).

98. Ubuntu on Windows — The Ubuntu Userspace for Windows Developers , home page [Electronic resource]. -- URL:

http: //blog.dustinkirkland. com/2016/03/ubuntu-on-windows. html (online; accessed: 2016-05-20).

99. Unity Interception Techniques, [Electronic resource]. — URL: https://msdn.microsoft.com/en-us/library/ff660861%28v=pandp.20%29.aspx (online; accessed: 2016-05-20).

100. Using BitTorrent with Amazon S3, home page [Electronic resource]. — URL: http://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html (online; accessed: 2016-05-20).

101. Van Deursen, A. A systematic aspect-oriented refactoring and testing strategy, and its application to jhotdraw [Text] /Van Deursen A., Marin M., Moonen L. //arXiv: cs/0503015. - 2005. - P. 25.

102. Visual Studio Online,home page [Electronic resource]. — URL: https://www.visualstudio.com/features/application-development-vs#Scenario2_1 (online; accessed: 2016-05-20).

103. Vlachou, A. Test-Driven Development for Aspect-Oriented Programming [Text] /Vlachou A., Sargeant J. // University of Manchester. - 2014. - P. 30.

104. Wang C. Autofac based extended design of risk early-warning system of dairy products safety [Text] /Wang C., Zhou A. //Journal of the Hebei Academy of Sciences. - 2013. - Т. 1. - P. 2.

105. Wen, W. Research And Implementation Of AOP Technology In. NET Framework [Text] /Wen W., Zhang S. //Enterprise Systems Conference (ES), 2014. - IEEE, 2014. - P. 97-101.

106. Windows Azure Training Course: Caching Data with Windows Azure Caching, home page [Electronic resource]. — URL: http://msdn.microsoft.com/en-us/gg457898 (online; accessed: 2016-05-20).

107. Woo, E. John McCarthy dies at 84; the father of artificial intelligence [Text] /Elaine Woo //Los Angeles Times. — 2011.— P. 2.

108. Аспектно-ориентированное программирование, home page [Электроннй ресурс]. — URL:

http: //www. ammanu. edu.j o/wiki1 /ru/articles/а/с/п/Аспектно-ориентированное_программирование.Ы:т1 (дата обращения 2016-05-20).

109. Басс, Л. Архитектура программного обеспечения на практике [Текст] / Л. Басс, П. Клементс, Р. Кацман. — СПб.: Питер, 2006. — С. 575. — ISBN: 5469-00494-5.

110. Волков, Н.В. Использование аспектно-ориентированного подхода для рефакторинга проекта N2CMS при помощи Aspect.NET // Материалы межвузовского конкурса-конференции студентов, аспирантов и молодых учёных "Современные технологии в теории и практике программирования". — 2016. — С. 61-62.

111. Гамма, Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования [Текст] / Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. — СПб.: Питер, 2001. — С.366. — ISBN: 978-5-459-01720-5.

112. Григорьев, Д. А. Реализация и практическое применение аспектно-ориентированной среды программирования для Microsoft .NET [Текст] / Григорьев Д.А. //Научно-технические ведомости, СПбГПУ. — 2009. — № 3. — С. 225-232.

113. Григорьева, А. В. Аспектно-ориентированный рефакторинг облачных приложений MS Azure с помощью системы Aspect.NET [Текст] / Григорьева А.В. // Компьютерные инструменты в образовании. — СПб.: АНО "КИО", 2012. — № 1. —С. 21-30.

114. Григорьева, А. В. Бесшовная интеграция аспектов в облачные приложения на примере библиотеки Enterprise Library Integration Pack for Windows Azure и Aspect.NET [Текст] / Григорьева, А.В., Григорьев, Д.А., Сафонов,

B.О. // Компьютерные инструменты в образовании.— СПб.: Изд-во АНО "КИО", 2012.— № 4. — С. 3-15.

115. Григорьева, А. В. Реализация механизма доступа к динамическому контексту в точках применения аспектов для системы Aspect.NET, альтернативы 1оС-контейнерам [Текст] / Григорьева А.В., Григорьев Д.А., Сафонов В.О. // СПИСОК-2014: Материалы всероссийской научной конференции по проблемам информатики. — СПб. : Изд-во ВВМ, 2014. —

C. 142-147.

116. Григорьева, А.В. Применение системы Aspect.NET для облачных приложений на платформе Microsoft Windows Azure [Текст] /

А. В. Григорьева, В. О. Сафонов, Д. А. Григорьев // СПИСОК-2011: Материалы 2-й межвузовской научной конференции по проблемам информатики. — 2011. — С. 107-111.

117. Григорьева, А.В. Применение элементов аспектно-ориентированного подхода ASPECT.NET при разработке геолокационной системы управления ресурсами для облачной платформы Microsoft Windows Azure [Текст] /Григорьева А.В., Васильев В.А., Сафонов В.О. // Научно-Технические Ведомости Санкт-Петербургского Государственного Политехнического Университета. — 2012. — № 4. — С. 98-102.

118. Значения метрик кода, home page [Электронный ресурс]. — URL: https://msdn.microsoft.com/ru-m/library/bb385914.aspx (дата обращения 2016-05-20).

119. Клементьев, И., Устинов, В. Введение в облачные вычисления. Лекция 4: Основы облачных вычислений // Интуит [Электоронный ресурс]. -- URL: http://www.intuit.ru/studies/courses/673/529/lecture/11917?page=2 (дата обращения 2016-05-20).

120. Майерс, Т. Использование табличного хранилища из .NET [Электронный ресурс] // Microsoft.com. — 7 января 2016. — URL:

https://azure.microsoft.com/ru-ru/documentation/articles/storage-dotnet-how-to-use-tables (дата обращения 2016-05-20).

121. Мартин, Р. Принципы, паттерны и методики гибкой разработки на языке C# [Текст]/ Роберт С. Мартин, Мика Мартин — Спб.: Символ-Плюс, 2011.

— С. 768.— ISBN: 978-5-93286-197-4.

122. Михайлова, А. И. Аспектно-ориентированный рефакторинг CMS Orchard с помощью Aspect.NET [Текст]/Михайлова А. И. // СПИСОК-2014. Материалы Всероссийской научной конференции по проблемам информатики. 23-25 апреля 2014 г. Санкт-Петербург — Санкт-Петербург,

— 2014. — P. 139-141.

123. Нгуен, В. Д. Разработка инструментов поддержки аспектно-ориентированного Web-программирования в системе Aspect.NET [Текст] : дис. ... канд. физ.-мат. наук : 05.13.11 / Нгуен Ван Доан; Санкт-Петербургский государственный университет, 2012. — С. 125.

124. Нейгард, М. Release it! Проектирование и дизайн ПО для тех, кому не всё равно [Текст] /Майкл Нейгард. — СПб.: Питер, 2016. — С. 320.— ISBN: 978-5-496-01611-7.

125. Сафонов, В.О. Аспектно-ориентированное программирование: учеб. Пособие [Текст] / Владимир Олегович Сафонов. — СПб.: Изд-во С.-Петерб. ун-та, 2011. — С. 104. — ISBN 978-5-288-05188.

126. Сафонов, В.О. Платформа облачных вычислений Microsoft Windows Azure [Текст] / Владимир Олегович Сафонов. — М.: ИНТУИТ.РУ. БИНОМ. Лаборатория знаний, 2013. — С. 240.— ISBN: 978-5-9963-1223-8.

127. Сафонов, В.О. Развитие платформы облачных вычислений Microsoft Windows Azure [Текст] / Владимир Олегович Сафонов. — М.: ИНТУИТ.РУ. БИНОМ. Лаборатория знаний, 2013. — С. 304. — ISBN: 9785-9556-0138-0.

128. Симан, М. Внедрение зависимостей в .NET [Текст] / М. Симан. — Спб.: Питер, 2014. —С. 464. —ISBN: 978-5-496-00657-6.

129. Фаулер, М. Рефакторинг. Улучшение существующего кода [Текст] /Мартин Фаулер, Кент Бек, Джон Брант, Уильям Апдайк, Дон Робертс, Эрих Гамма. —СПб. : Символ-Плюс, 2008. — С. 432.— ISBN: 5-93286-0456.

130. Фримен, А. ASP.NET MVC 5 с примерами на C# 5.0 для профессионалов [Текст] / А. Фримен. — Вильямс, 2015. — С. 736. —ISBN: 978-5-84591867-3.

131. Хогг, Д. Организация одновременного доступа к данным в облачном хранилище Microsoft Azure Storage [Электронный ресурс] //habrahabr. — 12.2014. — URL: http://habrahabr.ru/company/microsoft/blog/243629 (дата обращения 2016-05-20).

132. Эспозито, Д. Аспектно-ориентированное программирование, перехват и Unity 2.0 [Электронный ресурс] // MSDN журнал. — 12.2010. — URL: http://msdn.microsoft.com/ru-ru/magazine/gg490353.aspx (дата обращения 2016-05-20).

Список иллюстраций

Рисунок 1. Классы ООП приложения.........................................................................48

Рисунок 2. Дублирование функциональности...........................................................48

Рисунок 3. Локализация логики...................................................................................49

Рисунок 4. Схема работы компоновщика аспектов...................................................51

Рисунок 5.Компоновка аспектов при статическом внедрении.................................52

Рисунок 6. Перехват целевых методов в Unity..........................................................63

Рисунок 7. Улучшение метрики Maintainability Index после АОП-рефакторинга Orchard CMS..........................................................................................................118

Список таблиц

Таблица 1. Инструменты АОП для различных языков программирования...........49

Таблица 2. Индексы сопровождаемости до АОП-рефакторинга...........................117

Таблица 3. Индексы сопровождаемости после АОП-рефакторинга.....................117

Список листингов

Листинг 1. Рабочая роль и очередь сообщений.........................................................35

Листинг 2. Внесение веб-ролью изменений в конфигурацию IIS-сервера.............36

Листинг 3. Класс «Точка»............................................................................................54

Листинг 4. Класс «Тень»..............................................................................................54

Листинг 5. Аспект, связывающий точку и её тень....................................................55

Листинг 6. Интерфейсы веб-сервисов......................................................................... 58

Листинг 7. Реализация BookingService.......................................................................58

Листинг 8. «Коннектор» для Booking.........................................................................58

Листинг 9. Интерфейс Discount и класс, реализующий его......................................59

Листинг 10. «Коннектор», управляющий вызовом целевого метода......................59

Листинг 11. Интерфейс IProxy.....................................................................................61

Листинг 12. Контейнер для IProxy..............................................................................62

Листинг 13. Сопоставление интерфейсу IProxy ссылки на объект класса Proxy ... 62

Листинг 14. Класс «Перехватчик»...............................................................................63

Листинг 15. Сопоставление перехватчика и целевого метода.................................64

Листинг 16. XML-конфигурирование аспектов в PostSharp.....................................67

Листинг 17. Аспект для поддержки транзакционности целевого метода...............67

Листинг 18. Аспект для протоколирования................................................................68

Листинг 19. Применение аспекта в PostSharp............................................................68

Листинг 20. Работа компоновщика с аргументами целевого метода ...................... 73

Листинг 21. Класс BankAccount...................................................................................74

Листинг 22. Проверка прав с помощью аспекта........................................................74

Листинг 23. Аспект, подписанный на вызовы методов логирования......................79

Листинг 24. Файл msdia90.manifest.............................................................................82

Листинг 25. CMD-скрипт для интеграции аспекта и целевой сборки.....................83

Листинг 26. Обработчик щелчка мыши по кнопке страницы..................................85

Листинг 27. Аспектный класс-наследник...................................................................85

Листинг 28. Аспектный web.config.............................................................................88

Листинг 29. web.config целевого проекта...................................................................89

Листинг 30. Результирующий web.config...................................................................89

Листинг 31. Алгоритм слияния файлов web.config...................................................91

Листинг 32. Добавление в коллекцию слушателей...................................................94

Листинг 33. Аспект для работы с отладочной информацией...................................95

Листинг 34. Регистрация слушателя в конфигурационном файле аспекта............96

Листинг 35. Аспект для реализации паттерна "Предохранитель"...........................97

Листинг 36. Кэширование, выделенное в аспект ....................................................... 99

Листинг 37. Изменения в web.config аспектного проекта......................................100

Листинг 38. Включение аспектом сохранения сеанса в 1п-Яо1е кэше...................101

Листинг 39. Аспект для кэширования кйр-ответа сервера.....................................101

Листинг 40. Изменения в web.config аспектного проекта для кэширования Шр-

ответа сервера........................................................................................................101

Листинг 41. Включение аутентификации на базе форм в ASP.NET.....................103

Листинг 42. Возможный вариант страницы Login.aspx..........................................104

Листинг 43. Класс ProductsRepository.......................................................................109

Листинг 44. Класс РгоёиСзКероБ^огу после АОП-рефакторинга.........................109

Листинг 45. Класс _Default до рефакторинга..........................................................110

Листинг 46. Класс _Default после АОП-рефакторинга..........................................110

Листинг 47. Класс WebRole до рефакторинга.........................................................111

Листинг 48. Класс WebRole после АОП-рефакторинга.........................................112

Листинг 49. Замещающий наследник для Та^еЮопйюПег....................................113

Листинг 50. Класс для вывода количества запущенных экземпляров веб-роли .. 114 Листинг 51. Класс для вывода количества запущенных экземпляров веб-роли

после АОП-рефакторинга....................................................................................115

Листинг 52. Исходный код протоколирования действий.......................................123

Листинг 53. Протоколирование, вынесеное в аспект..............................................123

Листинг 54. Исходный код поведения при различных уровнях нагрузки............124

Листинг 55. Код изменения поведения при различных уровнях нагрузки,

вынесеный в аспект...............................................................................................125

Листинг 56. Исходный код обработки исключений при связи с БД.....................126

Листинг 57. Переопределение в аспекте метода запуска приложения

АррНса1:юп.Кип()...................................................................................................127

Листинг 58. Замещающий аспектный наследник для обработки исключений .... 127

Приложение A. Акты о внедрении

Ниже приводятся копии актов о внедрении результатов диссертационного исследования.

ул. Габричевского, д. 5, корп. 1, Москва, 125367 телефон: (495) 789-45-49, факс: (495)789-45-36 E-mait: mail@diapac.ru ооо «диапак» WEB www.diapac.ru

АКТ О ВНЕДРЕНИИ

результатов диссертационного исследования Григорьевой A.B. на тему «Применение асиектно-ориентированного подхода и системы Aspect.NET для разработки облачных веб-приложений в Microsoft Azure»

Комиссия в составе:

- Шемякин В.В. - генеральный директор, к.ф-м.н. (председатель)

- Петерсен Т.Б. - начальник отдела исследований и сопровождения проектов, к.т.н.

- Самохвалов А.Б. - ведущий прикладной программист, к.т.н.

составила настоящий акт в том, что результаты диссертационной работы «Применение ас-пектно-ориентированного подхода и системы Aspect.NET для разработки облачных веб-приложений в Microsoft Azure», представленной на соискание ученой степени кандидата технических наук, использованы в разработке продуктов компании «Диапак»,

Разработанные Григорьевой А.В. аспекты библиотеки AzureLibrary на основе АОП-системы Aspect.NET были использованы для интеграции функциональности Microsoft Enterprise Library в проекты программно-аппаратных комплексов и технологий обработки регистрируемых многоканальными системами постоянного мониторинга состояния технологического оборудования нефтеперерабатывающих предприятий.

Применение данной библиотеки позволило снизить стоимость разработки на 5% за счет уменьшения количества арендованных виртуальных машин.

(Шемякин В.В.)

(Петерсен Т.Б.)

(Самохвалов А.Б.)

ПАНАТЕСТ

ОБОРУДОВАНИЕ И МАТЕРИАЛЫ ДЛЯ НЕРАЗРУШАЮЩЕГО КОНТРОЛЯ

Исх.: 030

Дата: 05.02.2016

Акт

о внедрении результатов диссертационного исследования Григорьевой A.B.

на тему «Применение аспектно-ориентированного подхода и системы Aspect.NET для разработки облачных веб-приложений в Microsoft Azure» на соискание ученой степени кандидата технических наук

Программный комплекс имитационного моделирования «Локализация источников акустической эмиссии (Scorpion)», разработанный в Санкт-Петербургском государственном университете Григорьевой A.B., был введен в эксплуатацию в ООО «ПАНАТЕСТ» в апреле 2015 г. Комплекс используется для расширения возможностей применения стандартного ПО систем акустико-эмиссионного (АЭ) контроля AMSY-5 и AMSY-6 при определении оптимальных схем организации неразрушающего контроля крупногабаритного технологического оборудования методом АЭ, а также при анализе данных, зарегистрированных во время обследования.

Комплекс позволяет осуществлять корректное моделирование поверхностей сложной конфигурации совокупностью плоских поверхностей. Моделирование производится для участков поверхности сосуда, где число элементов, задающих поверхность - 900-1000 кластеров, размер кластеров от 10x10 см.

В рамках полученной модели комплекс применяется при решении локационных задач по регистрации источников эмиссии, с ускорением данного процесса на 25-40% по сравнению со стандартными алгоритмами. При этом повышается точность определения местоположения потенциальных дефектов: погрешность в определении координат источников снижается на 15-45% в зависимости от условий расположения источника в материале конструкции.

Уменьшение размеров кластеров, связанное с повышением требований к точности локализации источников, требует больших вычислительных мощностей. Они обеспечиваются за счет использования облачной технологии для интенсивных вычислений Microsoft Azure HDInsight. В данном программном комплексе были внедрены и использованы аспекты библиотеки "AzureLibrary" на основе АОП-системы Aspect.NET для сбора статистики, кэширования результатов и различных стратегий обработки исключений. Применение данной библиотеки сократило трудоемкость разработки «Scorpion» за счет использования готовых аспектов.

С использованием многоканальных систем AMSY-5 и AMSY-6, поставленного нашей компанией в ООО КИНЕФ и дополненных комплексом Scorpion, специалистами предприятия были подготовлены и успешно проведены испытания на 32 сосудах давления (6 реакторов, 7 ректификационных колонн, 12 емкостей, 5 корпусов теплообменников, 2 сепаратора). На каждом из них рассмотрены от 3 до 12 комбинаций размещения датчиков, получено попяд^ЩЗШ схем вероятностной локализации дефектов. На калибровочных эксперий^и^Гт^^^гь работы программного комплекса составила 96%.

Генеральный директор ООО «ПАНАТЕСТ»

Официальный представитель Vallen Sys'

В.А. Головичер

Исх. 030 от 05.02.2016 Стр. 1 из !

111024, Москва, ул. Авиамоторная, 12, офис 405 +7 (495) 587-82-98 +7 (495) 789-37-48 www.panatest.ruwww.va1ienae.ru mail@panate$t.Tu

Официальный представитель Vallen Systeme GmbH

vollen

ООО КОНСТАНТА

Почтовый адрес: Россия, 198095, г. Санкт-Петербург, а/я 42

ИНН 7805666639, КПП 780501001 р/с 40702810500000027063

%

SGS

к/с 30101810000000000852, БИК 044030852 в АО Банк "ПСКБ" г. Санкт-Петербург ОКПО 27449627

Юр. адрес: Российская Федерации, 198097, г. Санкт-Петербург, ул. Маршала Говорова, д. 29, литер О

E-mail: office® cons tan ta ru Web: www.constanta.ru тел./ф : (812) 372-29-03, (-04)

От .2016 г. гГ. f¿ №/1-16

На № б/н

от б/д

£

АКТ

о внедрении результатов

кандидатской диссертационной работы Григорьевой A.B. на тему «ПРИМЕНЕНИЕ АСПЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА И СИСТЕМЫ ASPECT.NET ДЛЯ

РАЗРАБОТКИ ОБЛАЧНЫХ ВЕБ-ПРИЛОЖЕНИЙ В MICROSOFT AZURE»,

представленной на соискание ученой степени кандидата технических наук

Результаты, полученные в работе, были использованы при разработке программных продуктов ООО «КОНСТАНТА».

В результате применеиия методик Григорьевой A.B. и библиотеки AzureLibrary, удалось расширить возможности программ, сопровождающих систему контроля качества защитных покрытий труб в поточном производстве. А именно: с помощью аспектов добавлено протоколирование результатов контроля и возникающих проблем, а затем их долговременное хранение на стороне Microsoft Azure.

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

В ходе эксплуатации подтверждено, что;

- существовавшая ранее функциональность ПО не нарушена;

- стабильность ПО после вмешательства не вызывает нареканий;

- новая функция (протоколирование) исполняется корректно.

С сентября 2015 года системы контроля качества с указанной модификацией были предоставлены в пользование трём предриятиям. За время эксплуатации в области функции протоколирования не поступило ни одного сообщения об ошибке со стороны конечных пользователей.

Использование указанных методик позволило сократить затраты на модификацию существующего программного кода. Методика была признана удовлет§9ри^йь1у(Й для полноценного внедрения е£ в процесс разработки ПО. •>

'7>

Генеральный директор ООО «КОНСТАНТА», ^

Подпись Сясько В.А. заверяю Инспектор OK ^п

. Сясько

льева Л. А.

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