автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Реализация подсистемы применения аспектов в системе Aspect.NET

кандидата физико-математических наук
Григорьев, Дмитрий Алексеевич
город
Санкт-Петербург
год
2009
специальность ВАК РФ
05.13.11
цена
450 рублей
Диссертация по информатике, вычислительной технике и управлению на тему «Реализация подсистемы применения аспектов в системе Aspect.NET»

Автореферат диссертации по теме "Реализация подсистемы применения аспектов в системе Aspect.NET"

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

На правах рукописи 0034848 1Ы

Григорьев Дмитрий Алексеевич

Реализация подсистемы применения аспектов в системе Aspect.NET

05.13.11 - Математическое и программное обеспечение вычислительных комплексов и компьютерных сетей

2 6 НОЯ 2009

АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата физико-математических наук

Санкт-Петербург -

2009

003484818

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

Научный руководитель доктор технических наук, профессор

САФОНОВ Владимир Олегович

Официальные оппоненты доктор технических наук, профессор

ЛИСС Александр Рудольфович (Санкт-Петербургский государственный электротехнический университет) кандидат физико-математических наук, доцент КОЗНОВ Дмитрий Владимирович (Санкт-Петербургский государственный университет)

Ведущая организация - Санкт-Петербургский Государственный Политехнический Университет

Защита состоится «17» декабря 2009 года в 16.ЗО часов на заседании совета Д 212.232.51 по защите докторских и кандидатских диссертаций при Санкт-Петербургском государственном университете по адресу: 198504. Санкт-Петербург. Старый Петергоф. Университетский пр., д.28, математико-механический факультет, ауд. 405.

С диссертацией можно ознакомиться в Научной библиотеке им. М.Горького Санкт-Петербургского государственного университета по адресу: 199034, Санкт-Петербург, Университетская наб., д.7/9.

Автореферат разослан « НОХ^РХ 2009 г.

Ученый секретарь диссертационного совета, доктор физико-математических наук,

профессор Даугавет И.К.

1. ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

1.1 Актуальность работы. Рассматриваемое в работе аспектно-ориентированное программирование (АОП) является одним из наиболее перспективных направлений в развитии технологий программирования. Новизна и актуальность АОП в том, что данный подход предлагает простые и надежные методы разработки и модификации для сквозной функциональности (cross-cutting concerns) программных систем: проверки свойств безопасности (security checks), реализации протоколирования (logging) и т.д. Подобная функциональность обычно рассредоточена по коду программы, поэтому ее трудно сопровождать, отлаживать и тестировать. АОП обеспечивает компактное описание сквозной функциональности в виде особого рода модулей - аспектов, - применение которых (внедрение - weaving) в целевых программах осуществляется в соответствии с правилами, заданными в спецификации аспекта. Еще одной важной особенностью АОП является то, что данная технология может дополнить существующие подходы к разработке ПО, в частности, объектно-ориентированный подход.

В настоящее время АОП активно развивается, проделывая непростой путь от исследовательских разработок до практического применения в реальных проектах. Однако, спустя более 10 лет после своего появления, технология АОП все еще недостаточно популярна среди разработчиков программного обеспечения. Большинство инструментов для работы с АОП ориентированы на платформу Java, что существенно ограничивает их гибкость и применимость.

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

1.2 Цели и задачи диссертационной работы. Данная диссертационная работа выполнена в контексте разработки технологии Aspect.NET. Целью работы является реализация в технологии Aspect.NET следующих возможностей:

• расширенного метаязыка для спецификации аспектов;

• подсистемы применения аспектов (weaver);

• метода интеграции подсистемы применения аспектов с Aspect.NET Framework (GUI).

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

- исследование истории развития АОП, анализ текущего состояния на момент выполнения исследования, а также путей и возможностей дальнейшего развития АОП;

- обоснование необходимости применения АОП для платформы Microsoft.NET;

- изучение и усовершенствование предложенной научным руководителем архитектуры системы Aspect.NET, в частности, средств спецификации аспектов и подсистемы применения аспектов;

- реализация архитектуры в рамках исследовательского программного продукта Aspect.NET.

1.3 Предметом исследовании является проектирование и реализация подсистемы применения аспектов в системе Aspect.NET.

1.4 Методы исследования. В диссертации используются теоретический аппарат объектно-ориентированного и аспектно-ориентированного программирования.

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

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

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

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

1.6 Научные результаты. В диссертации разработаны методы реализации языка спецификации аспектов в АОП для платформы Microsoft.NET, проанализированы и обоснованы преимущества предложенных методов. Основными результатами диссертации являются:

- оригинальная методика сравнения реализаций языков АОП;

- обоснование расширения метаязыка АОП Aspect.NET.ML;

- метод интеграции подсистемы АОП в среду Microsoft.NET;

- модель программного продукта на основе АОП в рамках платформы Microsoft.NET;

- спроектированная и реализованная подсистема применения аспектов в системе Aspect.NET.

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

1. Набор методов разработки и использования систем АОП, которые могут быть интегрированы в среду Microsoft.NET.

2. Обоснование эффективности использования Aspect.NET для разработки программных продуктов на платформе Microsoft.NET.

3. Архитектура подсистемы применения аспектов.

4. Описание метаязыка спецификации аспектов.

1.8 Практическая значимость работы

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

1.9 Апробация работы. Основные результаты и выводы диссертации докладывались на следующих научных конференциях: «.NET Technologies 2006» (г. Пльзень, Чехия), «Технологии Microsoft в теории и практике программирования» (Санкт-Петербургский Политехнический университет, 2006, 2007 и 2008 гг. ), международная конференция ШЕЕ, посвященная 110-летию изобретения радио (Санкт-Петербург, 2006). Результаты работы также неоднократно докладывались на семинарах кафедры информатики и лаборатории Java-технологии математико-механического факультета СПбГУ. По материалам диссертации опубликовано 7 печатных работ [1-7].

Система Aspect.NET, ключевым компонентом которой является разработанная подсистема применения аспектов, используется для решения исследовательских задач разработки программного обеспечения, а также для обучения современным технологиям программирования в университетах. Позитивный опыт и результаты внедрения подтверждаются многочисленными положительными отзывами пользователей системы. Наши разработки в сфере АОП активно используются коллегами из университета Fortaleza (Бразилия), Миланского университета (Италия), Арабской Академии ИТ (Египет) и ряда других университетов.

2. СОДЕРЖАНИЕ РАБОТЫ

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

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

Дается краткий исторический очерк исследований, посвященных теме диссертации. На основе исследований развития АОП дается определение аспекта - основной единицы, на которой базируется аспектно-ориентированный подход.

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

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

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

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

• статическое применение аспектов на стадии посткомпиляции (AspectJ, PostSharp, Aspect.NET);

• перехват потока управления с помощью прокси-объектов на уровне СОМ (Spring.NET, AspectDNG);

• трансформация потока управления во время загрузки сборки (Weave.NET). Также предложена классификация по способу определения аспектов:

• метаязык (AspectJ, Compose*, Aspect.NET);

• конфигурационные XML-файлы (Spring.NET, Weave.NET);

• аннотирование пользовательскими атрибутами (PostSharp, AspectDNG,

Aspect.NET).

В соответствии с предложенной классификацией сформулировано общее состояние текущего развития АОП-инструментов для платформы .NET.

Определены основные понятия аспектно-ориентированного подхода: точка внедрения аспекта (JoinPoint), как строго определяемая точка выполнения программы для применения действий аспекта и набор (срез) точек внедрения удовлетворяющих заданному условию (Pointcut). Рассмотрен набор инструкций языка AspectJ. Выявлена разница между языковыми группами аспектных и неаспектных подсистем АОП. Рассмотрены основные способы внедрения аспектов и производительность программных продуктов, разработанных с применением АОП.

Рассмотрены методы интеграции языка АОП в среду Microsoft.NET на примере Aspect.NET. Система Aspect.NET выбрана как наиболее подходящая для реализации целей и задач, определенных в научной работе. Подробно рассмотрены теоретические основы и архитектура Aspect.NET.

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

Проанализированы положительные стороны использования системы Aspect.NET на конкретном примере кода аспекта:

1 aspect BankManagement {

% instead %call *BankAccount.withdraw(float) && args(..) % action

public static float WithdrawWrapper(float amount) {

BankAccount acc = (BankAccount) % TargetObject; if (isLicenceValid(TargetMemberlnfo.Name)) return acc.withdraw(amount);

Console.WriteLine

("Withdraw operation is not allowed"); return acc.Balance;

}

}

Данное действие аспекта (action) определяет метод, вызов которого будет вставлен вместо каждого вызова целевого метода withdraw. Внутри действия происходит проверка прав на выполнение операции withdraw и вызывается исходная операция с тем же набором параметров, если авторизация прошла успешно.

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

Также рассмотрена авторская разработка технологии подсистемы применения аспектов (weaver), задача которой заключается в интеграции аспекта в конечный код на стороне клиента, что обеспечит дальнейшую популяризацию программы Aspect.NET. Таким образом, приведен и описан пример внедрения аспекта и его реализация.

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

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

сфере разработки ПО, которые развивают системы АОП и активно внедряют их при создании собственных программных продуктов.

Описана функциональность Aspect.NET, обладающая следующими преимуществами при своем использовании:

• использование привычной среды разработки (система Aspect.NET реализована как надстройка над средой разработки ПО Microsoft Visual Studio);

• отсутствие необходимости изучать новый язык, так как существует возможность описывать аспекты на одном из языков платформы .NET (в текущей версии - на С#);

• фильтрация точек внедрения аспекта и навигация к ним;

• возможность исследовать структуру итоговой программы с внедренными аспектами.

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

3. ОСНОВНЫЕ РЕЗУЛЬТАТЫ И ВЫВОДЫ

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

В ходе выполнения работы достигнуты следующие результаты.

1. Проведена классификация систем АОП, анализ их развития и использования в рамках платформы Microsoft.NET.

2. Разработана спецификация метаязыка определений аспектов.

3. Разработан и реализован алгоритм применения аспектов на уровне исполняемых сборок .NET.

4. Разработан метод пользовательского управления и контроля за точками применения действий аспектов.

Все полученные результаты являются новыми.

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

По сравнению с определением аспектов с помощью XML-файлов (Spring.NET, Weave.NET), описание на предложенном в работе метаязыке позволяет не отделять спецификацию аспекта от его реализации и объединить реализацию аспекта и его спецификацию в одном модуле. Дополнительное использование пользовательских атрибутов .NET позволяет реализовать АОП-функциональность с помощью стандартных языков платформы .NET и ее инструментов PostSharp, AspectDNG. Однако это требует лишнего «инструментовочного» кода в исходных текстах, который затрудняет восприятие достаточно сложных правил применения. Макроязыки AspecU, Compose* решают эти проблемы, однако их недостатками является как то, что эти макроязыки реализованы на уровне исходного текста и ограничены лишь одним языком программирования (AspectJ), так и необходимость создавать отдельную среду разработки (Compose*). В системе Aspect.NET описание аспекта на метаязыке конвертируется в пользовательские атрибуты, что дает возможность наглядно описывать сложные правила применения аспекта, избежать зависимости от конкретного языка и работать с существующим инструментарием разработки ПО для платформы .NET. Кроме того, Aspect .NET ML дает действию аспекта доступ к контексту потока в точке выполнения, поддержка которого отсутствует в аналогичных АОП-системах, основанных на пользовательских атрибутах.

Приложения, полученные в результате применения аспектов при посткомпиляции MSIL-сборок (PostSharp, Aspect.NET), обладают более высокой производительностью, чем те, которые получаются вставкой действий во время выполнения программы (Spring.NET, AspectDNG) или во время начальной загрузки сборки (Weave.NET). С учетом того, что во время выполнения необходимо

постоянно выполнять проверку условий для определения точки выполнения, а также ограниченности доступа к окружающему контексту с помощью технологии СОМ-перехвата, применимость основанных на ней АОП-систем ограничена. В случае применения аспектов на стадии загрузки сборки проблемы аналогичны, за исключением того, что большая часть накладных расходов переносится на момент запуска приложения. По сравнению с компилятором AspectJ, подсистеме применения аспектов Aspect.NET не требуются исходные тексты проекта. Если мы знаем организацию целевой системы на уровне вызовов API (например, из документации, из функциональной спецификации или из декомпилированного кода), то для применения аспектов необходимы лишь сборка приложения и соответствующего аспекта, сборка целевого приложения, а также, собственно, подсистема применения аспектов. PostSharp также применяет аспекты на уровне MSüL-сборок, однако в отличие от Aspect.NET вставляет в них сервисный код, который замедляет итоговое приложение и вносит в него дополнительные зависимости. Более того, результат применения Aspect.NET в ряде случаев быстрее вставки аналогичной функциональности «вручную». Во-первых, при применении аспектов используются специальные MSIL-инструкции, которые недоступны на уровне исходного текста (напр. ldtoken). Во-вторых, итоговые .NET-сборки создаются с помощью среды построения компиляторов MS Phoenix, в которую встроен ряд оптимизаций.

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

Aspect.NET, невозможно отфильтровать обнаруженные точки применения аспектов.

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

4. СПИСОК ПУБЛИКАЦИЙ ПО ТЕМЕ ДИССЕРТАЦИИ

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

2. Григорьев Д.А., Грачев М.К., Масленников А.И., Сафонов В.О. Адаптация методологии АОП для практического применения на платформе Microsoft.NET. // Тезисы докладов конкурса-конференции «Технологии Microsoft в теории и практике программирования». СПб.: изд-во СПбГПУ, 2007.

3. Григорьев Д.А., Грачев М.К., Масленников А.И., Сафонов В.О. Адаптация методологии АОП для применения к задачам протоколирования на платформе Microsoft.NET. // Тезисы докладов конкурса-конференции «Технологии Microsoft в теории и практике программирования». СПб.: изд-во СПбГПУ, 2008.

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

5. Grigoriev D., Safonov V. О. Aspect.NET: aspect-oriented programming for Microsoft.NET in practice. // NET Developer's Journal. 2005. №7. P. 28-33.

6. Grigoriev D., Safonov V. O. Aspect.NET - an aspect-oriented programming tool for Microsoft.NET. // Proceedings of the 110th Anniversary of Radio Invention; St. Petersburg; 2006. P. 11-21.

7. Grigoriev D. et al. Aspect.NET - aspect-oriented toolkit for Microsoft.NET based on Phoenix and Whidbey. // Knoop J, Skala V, editors. .NET Technologies 2006. University of West Bohemia. Campus Bory. Full papers proceedings; Pilsen, Czech Republic; 2006. P. 19-34.

Подписано в печать 05.11.2009 г. Формат 60x84 1/16. Бумага офсетная. Печать офсетная. Усл. печ. л. 1,0. Тираж 100 экз. Заказ № 1375.

Отпечатано в ООО «Издательство "ЛЕМА"»

199004, Россия, Санкт-Петербург, В.О., Средний пр., д.24, тел./факс: 323-67-74 e-mail: izdjema@mail.ru http://www.lemaprint.ru

Оглавление автор диссертации — кандидата физико-математических наук Григорьев, Дмитрий Алексеевич

Введение.

Глава 1. Введение в аспектно-ориентированное программирование (АОГ[). К)

1.1 История создания АОП.

1.2 Понятие АОП.

Глава 2. Существующие аспектно-ориентированные технологии.

2.1. Существующие технологии внедрения (применения) аспектов.

2.2 Методология и область применения АОГ1.

2.3 Альтернативные АОП технологии.

Глава 3. Реализации АОП.

3.1 Классификация методов применения аспектов.

3.2 Технология разработки AOll-программ в системе Aspect.NET. для платформы Microsoft .NET.

3.3 Реализация подсистемы применения аспектов в Aspect.NET.

Глава 4. Основные принципы реализации подсистемы внедрения аспектов и использования системы Aspect.NET.

Глава 5. Развитие технологии Aspect.NET.

Введение 2009 год, диссертация по информатике, вычислительной технике и управлению, Григорьев, Дмитрий Алексеевич

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

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

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

Принципы АОП формировались задолго до их современной реализации. Так, профессор Ростовского университета A.J1. Фуксман еще в 1979 году издал книгу «Технологические аспекты создания программных систем», в которой рассматривались вопросы создания инструментального языка программирования, обеспечивающего технологию наименьших затрат при производстве программного обеспечения. АЛ. Фуксманом [11] был предложен подход к разработке программ под названием "технология рассредоточенных действий", сокращенно — РД-технология (другое название, использованное автором подхода, - технология верти кал ьного слоения), по своей сути близкий к АОП. Согласно данной технологии, исходная система является композицией вертикальных слоев (срезов) - совокупности рассредоточенных действий, фрагментов кода, реализующих некоторую расширяющую функцию. При этом процесс разработки и модификации программы представляет собой последовательность операций добавления или изменения расширяющих функций.

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

1) Избежать проблем с затратами лишнего времени на тес тирование и сборку конечного кода.

2) Улучшить общий дизайн системы.

3) Сократить производственные расходы на внесение необходимых изменений и дополнений в исходный код программы.

Приведенные краткие изложения сути подходов АОП и РД-технологии, предложенной Фуксманом наводят на мысль об их сходстве. Кроме того, в названии монографии Фуксмана [И] присутствует слово аспект. С сожалением можно отметить, что РД-технология не получила широкого распространения и выхода на коммерческий рынок, но она заняла должное iviecTO пионерской идеи в истории отечественного и мирового программирования. И ее можно по праву считать прародителем АОП.

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

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

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

Целью работы является реализация в технологии аспектно-ориентированного программирования для Microsoft.NET - Aspecl.NET [10, 42, 43, 44], предложенной научным руководителем, проф. В.О. Сафоновым, следующих возможностей:

• расширенного метаязыка для спецификации аспектов;

• подсистемы применения аспектов (weaver);

• метода интеграции подсистемы применения аспектов с Aspect.NET Framework (GUI).

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

- изучение и усовершенствование предложенной В.О. Сафоновым архитектуры системы Aspect.NET, в частности, средств спецификации аспектов и подсистемы применения аспектов;

- реализация данной архитектуры в рамках исследовательского программного продукта Aspect.NET.

Работа состоит из пяти глав, введения и заключения.

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

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

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

АОП. На примерах поясняются языковые конструкции и особенное i и языков АОП.

В третьей главе представлен более практический подход к методам подсистем АОП. Рассматриваются принципы аспектного подхода к программированию с помощью языков АОП.

Предложена классификация определения аспектов, сформулировано общее состояние текущего развития АОП-инструментов для платформы .NET.

Определены основные понятия аспектно-ориентированного подхода: точка внедрения аспекта (JoinPoint), как строго определяемая точка выполнения программы для применения действий аспекта, и набор (срез) точек внедрения удовлетворяющих заданному условию (Pointcut). Рассмотрен набор инструкций языка AspectJ. Выявлена разница между языковыми группами аспектньтх и не аспсктных подсистем АОП. Представлены основные способы внедрения аспектов. Проанализирована производительность программных продуктов, разработанных с применением АОП.

Рассмотрены методы интеграции языка АОП в среду Microsolt.NET на примере Aspect.NET. Система Aspect.NET выбрана как наиболее подходящая для реализации целей и задач, определенных в данной работе. Подробно рассмотрены теоретические основы и архитектура Aspect.NET.

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

Описана усовершенствованная технология Aspect.NET, как пример того, насколько могут быть расширены возможности моделей АОП.

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

Также описаны принципы внедрения языка АОП в среду Microsoft.NET, представлены положительные стороны такой интеграции. Основные полученные результаты:

- предложена методика сравнения реализаций языков АОП;

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

- предложена технология разработки сквозной функциональности и внедрения аспектов в целевую программу;

- разработана модель программного продукта на основе АОП в рамках платформы Microsoft.NET;

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

Следующие компоненты системы Aspect.NET были реализованы коллективом аспирантов СПбГУ под научным руководством проф. В.О. Сафонова;

- инсталлятор и графический интерфейс (подсистема Aspect.NET Framework) - Михаил Грачев;

- конвертор из Aspect.NET ML в пользовательские атрибуты .NET -Александр Масленников;

- 1рафичсский интерфейс AspectRotor, совместимый с SSCLI [80] -Руслан Муханов.

Таким образом, в данной работе рассмотрен принципиально новый подход к программированию. Детально описано аспектно-ориентированное программирование (aspect-oriented programming) как технология разработки сквозной функциональности (cross-cutting concern) в виде специализированных модулей - аспектов (aspects), с целью его последующего внедрения (weaving) в программу путем активизации фрагментов кода аспекта (действий) в выделенных в целевой программе точках присоединения (или внедрения) - join points.

Заключение диссертация на тему "Реализация подсистемы применения аспектов в системе Aspect.NET"

Заключение

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

На сегодняшний день в нескольких странах ведутся научные исследования по вопросам АОП, строятся системы и совершенствуются методики его использования и практического применения. Разработанную группой специалистов, под руководством проф. В.О. Сафонова, систему Aspect.NET активно используют зарубежные коллеги и единомышленники из университета Fortaleza (Бразилия) — работы Marcelo Barros [14, 15], в которых описаны принципы работы Aspect.NET, изложенные также в данной работе; научная работа Alessandro Rippamonti из Миланского университета, в которой приводится пример использования Aspect.NET в качестве инструмента протокола связи системы поддержки; это исследование Mohamed Zaatar из Арабской Академии (Египет), использовавшего Aspect.NET для своего исследования на соискание степени в области науки и технологий на морском транспорте.

Весьма важна разработка методов формальной спецификации аспектов и их формальной верификации, которая в настоящий момент далека от своего решения. Тем не менее, возможности Aspect.NET в рамках Visual Studio также нашли своих первых пользователей.

В ходе выполнения работы достигнуты следующие результаты:

1. Проведена классификация систем АОП, анализ их развития и использования в рамках платформы Microsoft.NET.

2. Разработана спецификация метаязыка определений аспектов.

3. Разработан и реализован алгоритм применения аспектов на уровне исполняемых сборок .NET.

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

- исследовано развитие технологии АОП;

- проанализировано состояние развития АОП на момент исследования, определены пути и возможности его дальнейшего развития;

- обоснована необходимость применения АОП для платформы Microsoft.NET;

- изучена и усовершенствована предложенная научным руководителем архитектура системы Aspect.NET как примера реализации технологии АОП, в частности, расширен метаязык спецификации аспектов Aspect.NET.ML и разработана архитектура подсистемы применения аспектов;

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

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

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

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

Практической (программной) частью данной работы является разработка программной подсистемы, которая реализует применение аспектов в системе Aspect.NET (weaver). Подсистема интегрирована в исходный код исследовательского программного продукта Aspect.NET. В качестве среды ее реализации использована Microsoft Visual Studio.NET 2008, как наиболее благоприятная среда реализации АОП.

Выделены перспективы развития АОП в рамках среды Aspect.NET, а также возможные улучшения компоновщика Aspect.NET.

По теме диссертации опубликованы работы [2-5, 24-25].

Библиография Григорьев, Дмитрий Алексеевич, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей

1. Буч Г., Объектно-ориентированный анализ и проектирование. -СПб: Невский диалект, 1999.

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

3. Кознов Д.В., Романовский К.Ю. DocLine: метод разработки документации семейств программных продуктов.//Программрование, 2008, №4. С.1-13.

4. Майерс Г. Надежность программного обеспечения. М.: Мир, 1980.

5. Павлов В. Аспектно-ориентированное программирование —М., 2004.

6. Пышкин Е.В. Основные концепции и механизмы объектно-ориентированного программирования- М., 2005.

7. Сафонов В.О. Aspect.NET инструмент аспектно-ориентированного программирования для разработки надежных и безопасных программ. -Компьютерные инструменты в образовании, 2007, № 5.

8. Фуксман A.JI. Технологические аспекты создания программных систем. — М.: Статистика, 1979.

9. A. de Roo, М. Hendriks, W. Havinga, P. D'urr, L. Compose*: a Language- and Platform-Independent Aspect Compiler for Composition Filters.

10. Aksit M., Bergmans L., Vural S. An Object-Oriented Language-Database Integration Model: The Composition-Filters Approach. — In: Proceedings of the ECOOP'92 Conference, LNCS 615, Springer-Verlag, 1992.

11. Barros, Marcelo В. AOP Programagao Orientada a Aspectos com .NET. Revista Mundo .NET, 2008

12. Barros, Marcelo B. AOP Aspect Oriented Programming with .NET. Mundo .NET Magazine, 2008.

13. Blackstock. M. Aspect Weaving with C# and .NET. 2000.

14. Czarnecki Krzysztof, Eisenecker Ulrich. Generative Programming: Methods, Tools, and Applications, Addison-Wesley, Paperback, Published June 2000.

15. Czarnecki K. Generative Programming: Principles and Techniques of Software Engineering Based on Automated Configuration and Fragment-Based Component Models. PhD thesis, Technische Universitat Ilmenau, Germany, 1998.

16. Dijkstra E. Programming Considered as a Human Activity. Classics in Software Engineering. New York, Yourdon Press, 1979.

17. Eaddy Mark, Cyment Allan, Pierre van de Laar, Schmied Fabian, and Wolfgang Schult. Whitepapper: The value of Improving the Separation of Concerns // Technical Report CUCS-07. Columbia University, New York, USA, January 2007.

18. Eick, S.G., J.L. Steffen, and E.E. Sumner, Seesoft A Tool For Visualizing Line Oriented Software Statistics. IEEE Transactions on Software Engineering, 1992. 18(11).

19. Gamma E., Helm R., Johnson R., Vlissides J., Methods of object-oriented design. Design patterns. — Piter publishers, St. Petersburg, 2001 (Russian translation).

20. Grigoriev D., Safonov V. O. Aspect.NET: aspect-oriented programming for Microsoft.NET in practice // NET Developer's Journal. 2005. №7. P. 28-33.

21. Grigoriev D., Safonov V. O. Aspect.NET an aspect-oriented programming tool for Microsoft.NET. // In: 110th Anniversary of Radio Invention; St. Petersburg; 2005, P. 11-21.

22. Grigoriev D.A. Aspect.NET — aspect-oriented toolkit for Microsoft.NET based on Phoenix and Whidbey. // .NET Technologies 2006. University of West Bohemia Campus Bory. May 29 June 1, 2006. Full Papers Proceedings, Pilsen, Czech Republic, 2006.

23. Flannemann, J., Kichales, G. Overcoming the Prevalent Decomposition in Legacy Code. Proceedings of Workshop on Advanced Separation of Concerns, International Conference on Software Engineering (May 2001, Toronto, Canada).

24. Flannemann J., Kiczales G. Design pattern implementations in Java and AspectJ. In: OOPSLA 02, New York, USA, November 2002. P. 161 — 173.

25. Jacobson Ivar, 2004. Aspect-Oriented Software Development With Use Cases (Addison-Wesley Object Technology Series). With Pan-Wei Ng. Addison-Wesley.

26. Jendrik Johannes, Roland Samlaus, and Mirko Seifert. Round-Trip Support for Invasive Software Composition Systems. Technische Universit.at Dresden, Computer Science Department, N.othnitzer Str. 46, 01187 Dresden, Germany.

27. Kapur Deepak, Musser David R, Stepanov Alexander A. Tecton, A language of manipulating Generic Objects. 1981.

28. Kiczales G., Lamping J., Mendhekar A., etc. Aspect-oriented programming.- In: Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Finland, Springer-Verlag LNCS 1241. June 1997.

29. Kiczales G., Lamping J., Mendhekar A., etc. Aspect-oriented programming. Published in proceedings of the European Conference on Object-Oriented Programming (ECOOP). Finland, Springer-Verlag LNCS 1241. June 1997.

30. Kiselev I. Aspect-Oriented Programming with AspectJ. Indianapolis, IN, USA: SAMS Publishing, 2002.

31. Lafferty D., Cahill V. Language Independent Aspect Oriented Programming. Proceedings of OOPSLA. March, 2003.

32. Lieberherr K. Component Enhancement: An Adaptive Reusability Mechanism for Groups of Collaborating Classes. In: Information Processing'92, 12th World Computer Congress, Madrid, Spain, J. van Leeuwen (Ed.), Elsevier, 1992, pp. 179-185.

33. Lippert M., Videira Lopes. A Study on Exception Detection and Handling Using Aspect-Oriented Programming. Xerox PARC Technical Report P9910229 CSL-99-1, Dec. 99/.

34. Masuhara, J., Kichales, G. Modeling Crosscutting in Aspect-Oriented Mechanisms. Proceedings of ECOOP'2003/.

35. Meyer В., Applying Design by Contract, Prentice Hall, 1992.

36. Richter, J. Programming for Microsoft.NET Framework. Microsoft Press, 2002.

37. Stan Jarzabek, Paul Bassett, Hongyu Zhang and Weishan Zhang. XVCL: XML-based Variant Configuration Language// http://xml.coverpages.org/JarzabekREO 1 .pdf.

38. Stepanov Alexander A., Kershenbaum Aaron, and Musser David R.: Higher Order Programming. March 5, 1987.

39. Safonov V.O. Using Aspect-Oriented Programming for Trustworthy Software Development. John Wiley & Sons, 2008.

40. Safonov V.O. Aspect.NET: a new approach to aspect-oriented programming. .NET Developer's Journal, 2003, # 4.

41. Safonov V.O. Aspect.NET: concepts and architecture. .NET Developer's Journal, 2004, # 10.

42. Simony Ch. The Death of Computer Languages, The Birth of Intentional Programming, Microsoft Research, 1995.

43. Stelting S., Maassen O. Applying Java patterns. -Williams publishers, St. Petersburg, 2002 (Russian translation).

44. Shukla, D., Fill, S. and Sells, D. Aspect-Oriented Programming Enables Better Code Encapsulation and Reuse. MSDN Magazine, March 2002.

45. Zhuravlev E., Kiryanchikov V. On the opportunity of dynamic aspects integration in aspect-oriented programming. — Proc. of Electro-Technical University, Informatics, control and computing technologies, 2002, vol, 3, pp. 81 — 86 (in Russian).

46. Aspect-Oriented Programming with AJDT, Andy Clement, Adrian Colyer, Mik Kersten http://www.comp.lancs.ac.uk/computing/users/chitchya/AAOS2003/Assets/cle mascolyerkersten.pdf/.

47. AOP.NET Web page. Avaliable at http://sourceforge.net/projects/aopnet/

48. AOP goes .NET Community Site. Avaliable at http://janus.cs.utwente.nl:8000/twiki/bin/view/AOSDNET/CharacterizationOfE xi sting Approaches.

49. AJDE for Jbuilder Web page. Avaliable at http://aspecti4ibuildr.sourceforge.net.

50. AspectWerkz. Available at http://aspectwerkz.copehaus.org/.

51. Aspect-oriented software development Web site. Avaliable at www.aosd.net.

52. AspectDNG Web page. Avaliable at http://sourceforge.net/projects/aspectdng/.

53. Aspect.NET Web page. Avaliable at http://www.msdnaa.net/curriculum/?id=6219.

54. Boss AOP Web site. Available at http://labs.jboss.com/portal/jbossaop.

55. CaesarJ Web site. Available at http://www.caesarj.org/.

56. Compose* Web site. Avaliable at http://composestar.sf.net/.

57. Eclipse AspectJ Development Tools project Web page. Avaliable at http://www.eclipse.org/ajdt.

58. Eclipse.org Main Web page. Avaliable at http://www.eclipse.org.

59. EOS Web page. Avaliable at http://www.cs.virginia.edu/~eos.

60. Homepage of the Subject-Oriented Programming Project, IBM Thomas

61. J. Watson Research Center, YorktownHeights, New York, Web page. Avaliable at http://www.research.ibm.com/sop/.

62. Laddad, R. (2002). I want my AOP part 1. Avaliable at http^/www.iavaworld.com/iavaw'orld/iw-Ol -2002/jw-0118-aspect.html.

63. Microsoft Phoenix Web page. Avaliable at http://research.microsoft.com/phoenix.

64. PostSharp Web page. Avaliable at http://gael.fraiteur.net/postsharp.aspx.

65. Rational Software Corporation Web page. Avaliable at www.rational.com.

66. RAIL Web page. Avaliable at http://rail.dei.uc.pt.

67. The LOOM .NET Project Web page. Avaliable at http://www.dcl.hpi.uni-potsdam.de/research/loom/.

68. The R# project. Web site. Avaliable at http://rsdn.ru/projects/rsharp/article/rshaфmag.xml.

69. The AspectJ Programming Guide, 1998-2002, Xerox Corporation.

70. Wicca Web page. Avaliable at http://wwwl.cs.columbia.edu/~eaddy/wicca/.

71. Web site of AspectWerkz project: http://aspectwerkz.codehaus.org/.

72. Web site of AOP project: http://sourceforge.net/projects.

73. Web site of JBoss project: http://www.jboss.org/products/aop.

74. Web site of Spring project: http://www.springframework.org/about.

75. Web site of Weave.NET project: http://www.dsg.cs.tcd.ie/sites/Weave.NET

76. Wikipedia page of SSCLI project: http://cn.wikipedia.org/wiki/Shared Source Common Language Infrastructure

77. XVCL. Web site, http://fxvcl.sourceforge.net/

78. Web site of Spring.NET project: http://www.springframework.net/.