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

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

Автореферат диссертации по теме "Разработка и реализация инструментария аспектно-ориентированного программирования для академической версии .NET"

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

0046

6255

На правах рукописи

Муханов Руслан Салаватович

Разработка si реализация инструментария асиектно-ориеитировашшго программирования для академической версии .NET

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

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

- 9 ЛЕК 2010

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

004616255

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

Научный руководитель

доктор технических наук, профессор САФОНОВ Владимир Олегович

Официальные оппоненты

доктор технических наук, профессор ЛИСС Александр Рудольфович (ОАО "Концерн "Океанприбор")

кандидат физико-математических наук, ШАЛЫМОВ Дмитрий Сергеевич (Санкт-Петербургский государственный университет)

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

Защита состоится «

'20 /¿З-ода в /573(5);

асов на заседании

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

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

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

Даугавет И.К.

Общая характеристика работы

Актуальность проблемы. На сегодняшний день наиболее распространена методология объектно-ориентированного

программирования (ООП). Несмотря на эффективность подхода ООП, в настоящее время существуют проблемы, для решения которых необходимы новые методологии. В современном мире промышленное производство программного обеспечения достигло таких масштабов и такой сложности, что с каждым днем все труднее и дороже обходятся его разработка, поддержка, отладка, добавление новой функциональности, документирование, расширение и развитие. Причем сложность присуща большинству современных программных систем, и она обусловлена четырьмя основными причинами: сложностью реальной предметной области, из которой исходит заказ на разработку; сложностью управления процессом разработки; необходимостью обеспечить достаточную гибкость программы; неудовлетворительными способами описания поведения больших дискретных систем [6].

Как ранее, в 1980-х - 1990-х гг., на смену процедурному подходу пришло объектно-ориентированное программирование (ООП), так и сейчас на смену объектно-ориентированной концепции постепенно приходят новые парадигмы, среди которых — рассматриваемое в работе аспектно-ориентированное программирование (АОП). АОП является развитием процедурного и объектно-ориентированного

программирования. Данная методология призвана снизить время, стоимость и сложность разработки современного программного обеспечения (ПО). Следует отметить, что концепция АОП не заменяет подход ООП, а органично дополняет его [17]. Появление новых методологий всегда способствовало развитию науки и индустрии программного обеспечения, так как любая новая концепция, любой новый подход — это решение проблем, являющихся предпосылками для ее

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

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

Примерами сквозной функциональности может служить протоколирование (logging), добавление новых конструкций в некоторый язык программирования (например, параметризованных типов (generics) в язык С# 1.0), обработка ошибок, реализация подсистемы безопасности. Рассмотрим более подробно пример с добавлением какой-либо новой конструкции в реализуемый некоторым компилятором язык программирования. Все фазы компиляции - лексический анализ, синтаксический анализ, семантический анализ, оптимизацию, генерацию кода — необходимо будет обновить, чтобы добавить новую конструкцию. Это означает, что, помимо новой совокупности модулей, которые будут реализованы в компиляторе, в уже существующий код потребуется внести изменения - будут добавлены новые фрагменты, такие как определения данных, различные вызовы функций, методов и т.д.

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

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

Реализация подобной сквозной функциональности без использования методологии АОП приведет к непонятному, рассредоточенному и запутанному коду, в котором абсолютно не связанные функциональности будут реализованы в одном модуле, повысит вероятность появления ошибок и некорректной работы системы в целом, что увеличит время и расходы на разработку. По оценкам специалистов i [15], около 70% времени в проектах тратится на сопровождение и внесение изменений в готовый программный код. Поэтому важность методологии АОП и подобных трансформационных подходов в ближайшей перспективе очевидна. Профессор Э. Дейкстра в своей работе [13] утверждал: «Способ управления сложными системами был известен еще в древности - divide et impera (разделяй и властвуй)». АОП предлагает сквозную функциональность выделять в специализированные модули - аспекты и реализовывать отдельно от бизнес-логики (рис. 1).

IBilDBI|lHÍ=>DDDnonflBHI

Рис. 1. Суть подхода АОП.

J

Цели и задачи диссертационной работы. Данная диссертационная работа выполнена в рамках проекта, поддержанного программой Microsoft Research, по разработке и реализации инструментария аспектно-. ориентированного программирования Aspect.NET для академической версии Microsoft .NET - платформы Shared Source Common Language Infrastructure (SSCLI) / Rotor 2.0, распространяемой Microsoft на условиях 1 лицензии Microsoft Shared Source. В настоящее время, в силу ряда проанализированных в диссертации причин, до проведения исследований данной диссертационной работы отсутствовали инструменты АОП-разработки для академической платформы SSCLI/Rotor, несмотря на

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

Основные цели диссертационной работы:

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

2. Разработка и теоретическое обоснование методов реализации инструментария аспектно-ориентированного программирования с учетом специфики целевой платформы - академической версии .NET (SSCLI/Rotor)

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

Основные результаты. В диссертационной работе получены следующие основные результаты:

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

2. Разработаны и теоретически обоснованы методы реализации инструментария аспектно-ориентированного программирования с учетом специфики целевой платформы - академической версии .NET (SSCLI/Rotor) • •

3. Разработан и реализован программный инструментарий AspectRotor на основе разработанных методов

Научная новизна. Все основные научные результаты диссертационной работы являются новыми. Новизна результатов

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

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

Инструментарий аспектно-ориентированного программирования, разработанный соискателем, позволяет использовать АОП при разработках для академической версии .NET — платформы SSCLI/Rotor, способствует более широкому распространению АОП, не ограничиваясь лишь платформами Java и (коммерческой) Microsofl.NET. Таким образом, это позволит сделать еще один шаг для накопления индустрией ПО опыта в создании программных систем с использованием методологии АОП, что, безусловно, будет усиливать ее дальнейшее развитие и активное применение.

Апробация работы. Доклады по теме диссертационной работы дважды заняли 1-е место на межвузовском конкурсе-конференции студентов, аспирантов и молодых ученых Северо-Запада «Технологии Microsoft в теории и практике программирования» в 2008 и 2010 годах.

Основные результаты и выводы диссертационной работы докладывались на следующих научных конференциях и семинарах:

1. Межвузовский конкурс-конференция студентов, аспирантов и молодых ученых Северо-Запада «Технологии Microsoft в

теории и практике программирования». Россия, Санкт-Петербург, СПбГПУ, 2010

2. Всероссийская конференция с элементами научной школы для молодежи «Проведение научных исследований в области обработки, хранения, передачи и защиты информации». Россия, Ульяновск, УлГТУ, 2009

3. Международная научная конференция «Космос, астрономия и программирование» [Лавровские чтения] [К 85-летию со дня рождения чл.-корр. РАН С.С. Лаврова]. Россия, Санкт-Петербург, СПбГУ, 2008

4. Межвузовский конкурс-конференция студентов, аспирантов и молодых ученых Северо-Запада «Технологии Microsoft в теории и практике программирования». Россия, Санкт-Петербург, СПбГПУ, 2008

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

Публикации. Основные результаты диссертации опубликованы в работах [1-5]. В работах [1, 4, 5] Сафонову В.О. принадлежат общие постановки задач, а Муханову P.C. - разработка и реализация методов и принципов решения данных задач, разработка примеров и программного комплекса. В работе [3] соискателю принадлежит описание основных принципов при разработке первой версии инструментария аспектно-ориентированного программирования для академической версии .NET. В публикации [5] соискателю принадлежит описание особенностей реализации и методов применения библиотеки QT при разработке инструментария. В статье [2] соискателем описывается разработанный комплекс методов реализации инструментария аспектно-ориентированного программирования с учетом специфики целевой платформы -академической версии .NET (SSCLI/Rotor). В публикации [4] соискатель

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

Структура и объем диссертации. Диссертационная работа состоит из введения, трех глав, заключения, списка литературы. Работа содержит 110 страниц, 9 рисунков, 1 таблицу, список литературы из 102 наименований.

Содержание работы

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

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

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

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

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

В заключение анализируются широко известные во всем мире труды профессора Грегора Кикжалеса (Gregor Kiczales) и даются определения базовых понятий парадигмы АОП: точка внедрения (join point), правила внедрения (weaving rules), срез (набор) точек внедрения (pointcut), внедрение (weaving), аспект и сквозная функциональность (cross-cutting concerns).

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

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

В третьей главе подробно рассмотрены концепция и основные принципы разработки и реализации инструментария аспектно-ориентированного программирования для академической версии .NET. Показаны архитектура инструментария и принцип взаимодействия с пользователем (рис. 2-4).

AspectRotor

SSCLI/Rotor

___ ( S=iü££» Л

■с# Л с>)

Код Конвертор Библиотека

Аспекта ^ мета-языка ^ аспекта у

Л

с#, ¡>* . Компилятор А

Код програглгль^ Программа V )

Компоновщик

1

Выходная программа^

V

Phoenix API

Рис. 2. Архитектура инструментария AspectRotor 11

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

Рис. 3. Инструментарий AspectRotor

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

Также рассмотрены технологии, использованные при разработке и реализации данного инструментария (Phoenix RDK, SSCLI/Rotor, QT SDK, Aspect.NET) и особенности их применения.

12

'WtraAjter. WJWC ЯП< TOii 5&f ¡9rt4 {oawfc.Wrtetiniii):}

ЪасШ

»ÄAc 5МЙС vwi З^ИЛ. ft

¡¡агПЫ>1;>

Рис. 4. Инструментарий Лчрес1Кои>г В заключении подводятся итоги и делаются выводы по диссертационной работе, формулируются основные результаты, полученные в ходе работы, подчеркивается их научная новизна, теоретическая ценность и практическая значимость.

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

Статьи в журналах, рекомендованных ВАК:

[1]. Муханов P.C., Сафонов В.О. Реализация и практическое применение системы Aspect.NET для академической версии .NET // СПб.: Научно-технические ведомости, СПбГПУ. 2010. № 4. С. 174-179 Другие публикации:

[2]. Муханов P.C. Разработка и реализация системы Aspect.NET для академической версии .NET // Всероссийская конференция с элементами научной школы для молодежи «Проведение научных исследований в области обработки, хранения, передачи и защиты

информации». - Россия, Ульяновск, изд-во УлГТУ, 2009, Сборник научных трудов, т.З, С. 384-392

[3]. Муханов P.C. AspectRotor - разработка и реализация версии Aspect.NET для среды SSCLI/Rotor // Материалы Международной научной конференции «Космос, астрономия и программирование» [Лавровские чтения] [К 85-летию со дня рождения чл.-корр. РАН С.С. Лаврова]. - СПб.: изд-во СПбГУ, 2008. С. 290-291

[4]. Муханов P.C., Сафонов В.О. Реализация и практическое применение системы Aspect.NET для академической версии .NET // Материалы межвузовского конкурса-конференции студентов, аспирантов и молодых ученых Северо-Запада «Технологии Microsoft в теории и практике программирования». —СПб.: изд-во СПбГПУ, 2010. С.51

[5]. Муханов P.C., Сафонов В.О. AspectRotor - разработка и реализация версии Aspect.NET для среды SSCLI/ROTOR с использованием библиотеки QT // Материалы межвузовского конкурса-конференции студентов, аспирантов и молодых ученых Северо-Запада «Технологии Microsoft в теории и практике программирования». — СПб.: изд-во СПбГПУ, 2008. С. 150-151

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

[6]. Буч Г. Объектно-ориентированный анализ и проектирование. Издательство Бином, Невский диалект, Санкт-Петербург, 1999

[7]. Горбунов-Посадов М.М. Как растет программа. — Препринт Института прикладной математики им. М.В. Келдыша РАН, 2000, № 50. — 16 с. — http://www.keldysh.ru/softness/grow.htm

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

[9]. Сафонов В.О. Современные технологии разработки надежных и безопасных программ (Trustworthy Computing). - Компьютерные инструменты в образовании, 2008, № 6, С. 25-33.

[10]. Сафонов В.О. Практическое руководство по системе аспектно-ориентированного программирования Aspect.NET. Часть 1. -Компьютерные инструменты в образовании, 2008, № 3, С. 20-33.

[11]. Сафонов В.О. Практическое руководство по системе аспектно-ориснтировааного программирования Aspect.NET. Часть 2. -Компьютерные инструменты в образовании, 2008, № 4, С. 12-20.

[12]. Фуксман А.Л. Технологические аспекты создания программных систем. М.: Статистика, 1979

[13]. Dijkstra Е. Programming Considered as a Human Activity. Classics in Software Engineering. New York, Yourdon Press, 1979.

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

[15]. Rational Software Corporation Web site. Available at www.rational.com

[16]. Safonov V.O. Using aspect-oriented programming for trustworthy software development. Wiley Interscience. John Wiley & Sons, 2008, p. 338

[17]. Safonov V.O., Grigoriev D.A. Aspect.NET - an aspect-oriented programming tool for Microsofit.NET. In: Proceedings of IEEE Regional Conference 2005, St. Petersburg, 2005

[18]. Safonov V.O. Aspect.NET: concepts and architecture. .NET Developer's Journal. October 2004

[19]. Safonov V.O. Aspect.NET - A New Approach to Aspect-Oriented Programming. .NET Developer's Journal.April 2003

Полли-.,?г.'0 к печати 03.lJ.Jft Фо{вег. 60 /.84 1/16 , Бумага офсеш^п. Гарнитура Тайме. Печать цифро&ая. 11еч, д. I 0. Тираж 100 экз. Заказ 4965. Отпечатано в Отделе оперативной полиграфии Химического факультета СПбГУ 198504, Санкт-Петербург, Старый Петергоф, Университетский пр., 26 Тел.: (812) 428-40-43,428-69-19

Оглавление автор диссертации — кандидата физико-математических наук Муханов, Руслан Салаватович

Введение.

Глава 1. Понятие и история развития аспектно-ориентированного программирования (АОП).

Глава 2. Обзор существующих технологий АОП.

2.1. Подходы по внедрению аспектов в целевое приложение.

2.2. Потенциальные ошибки при проектировании АОП-инструментов.

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

2.4. Обзор АОП-инструментов для платформы .NET.

2.5. Обзор инструментов для платформы Java.

2.6. Краткий обзор других инструментов.

2.7. АОП и гибкие (agile) процессы разработки ПО.

Глава 3. Инструментарий Aspect.NET для академической версии .NET.

3.1. Концепция и идея системы.

3.2. Технологии, на которых построен инструментарий.

3.2.1. Phoenix RDK.

3.2.2. Shared Source Common Language Infrastructure (SSCLI)/Rotor.

3.2.3. Особенности применения инструментария QT SDK.

3.3. Практическое применение.

3.4. Эффективность и производительность разработки программ.

3.4.1. Детали реализации на уровне MSIL.

Введение 2010 год, диссертация по информатике, вычислительной технике и управлению, Муханов, Руслан Салаватович

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

Как ранее, в 1980-х - 1990-х гг., на смену процедурному подходу пришло объектно-ориентированное программирование (ООП), так и сейчас на смену объектно-ориентированной концепции постепенно приходят новые парадигмы, среди которых - рассматриваемое в работе аспектно-ориентированное программирование (АОП). АОП является развитием процедурного и объектно-ориентированного программирования. Данная методология призвана снизить время, стоимость и сложность разработки современного программного обеспечения (ПО). Следует отметить, что концепция АОП не заменяет подход ООП, а органично дополняет его [9, 14]. Появление новых методологий всегда способствовало развитию науки и индустрии программного обеспечения, так как любая новая концепция, любой новый подход - это решение проблем, являющихся предпосылками для ее появления. Сложность программных систем - на сегодняшний день ключевая проблема всей индустрии. Поэтому любая новая методология для решения этой задачи, в том числе АОП, является актуальным направлением научных исследований.

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

Примерами сквозной функциональности может служить протоколирование (logging), добавление новых конструкций в некоторый язык программирования (например, параметризованных типов (generics) в язык С# 1.0), обработка ошибок, реализация подсистемы безопасности. Рассмотрим более подробно пример с добавлением какой-либо новой конструкции в реализуемый некоторым компилятором язык программирования. Все фазы компиляции - лексический анализ, синтаксический анализ, семантический анализ, оптимизацию, генерацию кода - необходимо будет обновить, чтобы добавить новую конструкцию. Это означает, что, помимо новой совокупности модулей, которые будут реализованы в компиляторе, в уже существующий код потребуется внести изменения - будут добавлены новые фрагменты, такие как определения данных, различные вызовы функций, методов и т.д.

Практически в любой современной программной системе (например, связанной с финансовыми операциями) требуется работа с базами данных, обеспечение безопасного доступа и т.д. В этом случае функциональность ведения журнала событий, целостности транзакций, авторизации, безопасности, производительности и т.д. является сквозной, т.е. пронизывает всю систему [Рис. 1].

Рис. 1. Практически любая современная система реализована примерно подобным образом

Реализация подобной сквозной функциональности без использования методологии АОП приведет к непонятному, рассредоточенному и запутанному коду, в котором абсолютно не связанные функциональности будут реализованы в одном модуле, повысит вероятность появления ошибок и некорректной работы системы в целом, что увеличит время и расходы на разработку. По оценкам специалистов [99], около 70% времени в проектах тратится на сопровождение и внесение изменений в готовый программный код. Поэтому важность методологии АОП и подобных трансформационных подходов в ближайшей перспективе очевидна. Профессор Э. Дейкстра в своей работе [97] утверждал: «Способ управления сложными системами был известен еще в древности — divide et impera (разделяй и властвуй)». АОП предлагает сквозную функциональность выделять в специализированные модули - аспекты и реализовывать отдельно от бизнес-логики [Рис.2].

Ill

Рис. 2. Суть подхода АОП.

Данная диссертационная работа выполнена в рамках проекта, поддержанного программой Microsoft Research [93], по разработке и реализации инструментария аспектно-ориентированного программирования Aspect.NET для академической версии Microsoft .NET - платформы Shared Source Common Language Infrastructure (SSCLI) / Rotor 2.0, распространяемой Microsoft на условиях лицензии Microsoft Shared Source. В настоящее время, в силу ряда проанализированных в диссертации причин, до проведения исследований данной диссертационной работы отсутствовали инструменты АОП-разработки для академической платформы SSCLI/Rotor, несмотря на растущую популярность АОП-подхода к разработке ПО. Разработанная в диссертации система AspectRotor является первым инструментом АОП для академической версии .NET.

Основные цели диссертационной работы:

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

2. Разработка и теоретическое обоснование методов реализации инструментария аспектно-ориентированного программирования с учетом специфики целевой платформы — академической версии .NET (SSCLI/Rotor)

3. Разработка и реализация программного инструмента AspectRotor на основе разработанных методов га düH|

С>

Диссертационная работа состоит из введения, трех глав, заключения, списка литературы. Работа содержит 110 страниц, 9 рисунков, 1 таблицу, список литературы из 102 наименований.

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

Основные результаты диссертации опубликованы в работах [1-5]. В работах [1, 4, 5] Сафонову В.О. принадлежат общие постановки задач, а Муханову P.C. - разработка и реализация методов и принципов решения данных задач, разработка примеров и программного комплекса. В работе [3] соискателю принадлежит описание основных принципов при разработке первой версии инструментария аспектно-ориентированного программирования для академической версии .NET. В публикации [5] соискателю принадлежит описание особенностей реализации и методов применения библиотеки QT при разработке инструментария. В статье [2] соискателем описывается разработанный комплекс методов реализации инструментария аспектно-ориентированного программирования с учетом специфики целевой платформы - академической версии .NET (SSCLI/Rotor). В публикации [4] соискатель описывает вторую версию инструментария аспектно-ориентированного программирования, а также приводит ряд наглядных примеров использования аспектов. В работе [1] соискателю принадлежит описание механизмов практического применения второй версии инструментария аспектно-ориентированного программирования с рассмотрением разработанных аспектов. Работа [1] опубликована в журнале из списка ВАК.

Заключение

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

Инструментарий аспектно-ориентированного программирования, разработанный Р. Мухановым, позволил впервые предложить использование АОП при разработках для академической версии .NET - платформы SSCLI/Rotor, способствует более широкому использованию и распространению АОП, не ограничиваясь лишь платформами Java и (коммерческой) Microsoft.NET. Таким образом, это позволит сделать еще один шаг для накопления индустрией ПО опыта в создании программных систем с использованием методологии АОП, что, безусловно, будет усиливать ее дальнейшее развитие и активное применение.

В диссертационной работе получены следующие основные результаты:

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

2. Разработаны и теоретически обоснованы методы реализации инструментария аспектно-ориентированного программирования с учетом специфики целевой платформы - академической версии .NET (SSCLI/Rotor)

3. Разработан и реализован программный инструмент АвресЖл^ог на основе разработанных методов

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

Работа дважды заняла 1-е место на межвузовском конкурсе-конференции студентов, аспирантов и молодых ученых Северо-Запада «Технологии Microsoft в теории и практике программирования» в 2008 и 2010 годах.

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

1.. Муханов P.C., Сафонов В.О. Реализация и практическое применение системы Aspect.NET для академической версии .NET // СПб.: Научно-технические ведомости, СПбГПУ. 2010. № 4. С. 174-179

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

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

4. Горбунов-Посадов М.М. Как растет программа. — Препринт Института прикладной математики им. М.В. Келдыша РАН, 2000, № 50. — 16 с.http://www.keldysh.rn/softness/grow.htm

5. Vladimir О. Safonov. "Using aspect-oriented programming for trustworthy software development". Wiley Interscience. John Wiley & Sons, 2008,p. 338

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

7. Сафонов В.О. Современные технологии разработки надежных и безопасных программ (Trustworthy Computing). Компьютерные инструменты в образовании, 2008, № 6, С. 25-33.

8. Сафонов В.О. Практическое руководство по системе аспектно-ориентированного программирования Aspect.NET. Часть 1. Компьютерные инструменты в образовании, 2008, № 3, С. 20-33.

9. Сафонов В.О. Практическое руководство по системе аспектно-ориентированного программирования Aspect.NET. Часть 2. Компьютерные инструменты в образовании, 2008, № 4, С. 12-20.

10. Vladimir О. Safonov and Dmitry A.Grigoriev. "Aspect.NET an aspect-oriented programming tool for Microsoft.NET." In: Proceedings of IEEE Regional Conference 2005, St. Petersburg, 2005

11. Vladimir O. Safonov. "Aspect.NET: concepts and architecture." .NET Developer's Journal. October 2004

12. Vladimir O. Safonov. "Aspect.NET A New Approach to Aspect-Oriented Programming." .NET Developer's Journal.April 200317. http://www.research.microsofit.com/phoenix/ сайт, посвященный Phoenix Academic Program

13. Документация no QT SDK компании Nokia. http://doc.qt.nokia.com/19. http://research.microsoft.com/sscli/ Shared Source Common Language Infrastructure/Rotor 2.020. http://aosd.net/ Aspect-Oriented Software Development Community & Conference

14. Dijkstra EW. Notes on structured programming. EWD 249. August 1969.

15. Wirth N. Program development by stepwise refinement. Communications of the ACM 1971; 14 (4): 221 227.

16. Laddad R. Aspect! in action. Practical aspect oriented programming. Manning Publications, Greenwich, CT, 2003.

17. Laddad R. Aspect! in action. Enterprise AOP with Spring Applications. Manning Publications, Greenwich, CT, September, 2009.

18. Personal page of Ramnivas Laddad. Available at http://ramnivas.com

19. AspecU. Available at http://www.aspectj.org

20. Apache Ant. Available at http://ant.apache.org .

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

22. AspectJ development tools (AJDT) Web site. Available at http://eclipse.org/ajdt.

23. Dijkstra EW. On the role of scientific thought. EWD 447.1974. Available at http://www.cs.utexas.edu/users/EWD/ewd04xx/EWD447.PDF .

24. Reflector. Available at http://www.red-gate.com/products/reflector/

25. Manifesto for Agile software development. Available at http://www.agilemanifesto.org/

26. Extreme Programming Web pages. Available at http://www.extremeprogramming.org

27. Rising L, Janoff NS. The scrum software development process for small teams. IEEE Software , 2000;(4): 2-8.

28. Hirotaka Takeuchi, Ikujiro Nonaka. The New Product Development Game. Harvard Business Review. 1986.

29. Wikipedia article on Scrum. Available at http://ru.wikipedia.org/wiki/Scrum

30. Howard M, LeBlanc DC. Writing Secure Code, 2nd ed. Microsoft Press, Redmond, WA, 2002.

31. Wikipedia article on test-driven development. Available at http://en.wikipedia.org/wiki/Test-drivendevelopment

32. Wikipedia article on debugging. Available at http://en.wikipedia.org/wiki/Debugging

33. Webster B. Pitfalls of Object-Oriented Development. M&T Books, New York, 1995

34. Wikipedia article on Simula language. Available at http://en.wikipedia.org/wiki/Simula

35. Wikipedia article on aspect-oriented programming. Available at http://en.wikipedia.org/wiki/Aspect-oriented programming

36. Wikipedia article on Grep utility. Available at http://en.wikipedia.org/wiki/Grep

37. Wikipedia article on dead code. Available at http://en.wikipedia.org/wiki/Deadcode

38. Wikipedia article on Design by contract. Available at http://en.wikipedia.org/wiki/Designby contract

39. Wikipedia article on XML. Available at http://en.wikipedia.org/wiki/XML

40. Extensible Markup Language (XML). Available at http://www.w3 .org/XML/

41. Wikipedia article on API (Application Programming Interface). Available at http://en.wikipedia.org/wiki/Applicationprogramminginterface

42. Common Language Runtime (CLR). Available at http://msdn.microsoft.com/en-us/library/8bs2ecf4.aspx

43. LOOM.NET Web pages. Available at http://www.rapier-loom.net

44. AspectDNG Web pages. Available at http://sourceforge.net/proiects/aspectdng/

45. Aspect# Web pages. Available at http://www.castleproiect.org/aspectsharp/

46. PostSharp Web pages. Available at http://www.postsharp.org/

47. DotSpect Web pages. Available at http://dotspect.tigris.org/

48. Encase Web pages. Available at http://theagiledeveloper.com/articles/Encase.aspx

49. Compose* Web pages. Available at http://composestar.sourceforge.net/

50. Weave.NET. Available at http://www.dsg.cs.tcd.ie/dynamic/7category id=-26

51. Seasar.NET Web pages. Available at http://www.seasar.org/en/dotnet/

52. Spring.NET Framework Web pages. Available at http ://www. springframework.net/

53. Puzzle.NET NAspect Web pages. Available at http://www.puzz! eframework.com/forum/forum. aspx?Forum:=24

54. Wicca and Phx.Morph Web site. Available at http://www.cs.columbia.edu/~eaddy/wicca

55. Mono. Available at http://www.mono-proiect.com

56. Wikipedia article on Factory method pattern. Available at http://en.wikipedia.org/wiki/Factory method pattern

57. Wikipedia article on MS1L (Microsoft Intermediate Language). Available at http://en.wikipcdia.org/wiki/Common Intermediate Language

58. Standard ECMA-335. Common Language Infrastructure (CL1). Available at http://www.ecma-international.org/publications/standards/Ecma-335.htm

59. XML Path Language (XPath). Availabe at http://www.w3 .org/TR/xpath/

60. Wikipedia article on XPath (XML Path Language). Available at http://en.wikipedia.org/wiki/XPath

61. Microsoft Managed Debugger (mdbg) Web pages. Available at http://msdn.microsoft.com/msdntv/episode.aspx7xmHepisodes/en/20060302clris/ manifest.xml

62. Wikipedia article on IDE (Integrated development environment). Available at http://en.wikipedia.org/wiki/Integrated development environment

63. Wikipedia article on refactoring. Available at http://en.wikipedia.org/wiki/Code refactoring

64. Wikipedia article on web-services. Available at http://en.wikipedia.org/wiki/Websei-vice

65. Wikipedia article on unit testing. Available at http://en.wikipedia.org/wiki/Unit testing

66. Eclipse. Available at http://www.eclipse.org/

67. Wikipedia article on Eclipse. Available at http://en.wikipedia.org/wiki/Eclipse %28software%29

68. JBoss AOP Web site. Available at http://labs.iboss.com/portal/ibossaop

69. Seasar Web site. Available at http://en.wikipedia.org/wiki/Seasar

70. Caesar J Web site. Available at http://www.caesarj.org/

71. JAC Web site. Available at http://jac,ob}ectweb.org/

72. Dynaop Web site. Available at http://dynaop.dev.java.net/

73. Javassist Web page. Available at http://www.csg.is.titech.ac.ip/~chiba/iavassist/

74. LogicAJ Web page. Available at http://roots.iai.uni-bonn.de/research/logicaj

75. Reflex Web site, Available at http://www.pleiad.doc.tichile.cl/research/software/reflex

76. JMangler Web site. Available at http://roots.iai.uni-bonn.de/research/jmangler

77. Spring Framework Web site. Available at http://www.springframework.org/

78. JBoss Application Server Web site. Available at http://jboss.org/jbossas/

79. KDE (K Desktop Environment) community portal. Available at http://dot.kde.org/2004/04/12/interview-trolltechs-eirik-eng-and-matthias-ettrich

80. GTK+ Web site. Available at http://gtk.org/

81. Free Software QT Applications Web page. Available at http://qt-apps.org/

82. Adobe Photoshop Album Web page. Available at http://www.adobe.com/support/downloads/detail.jsp?ftpID:=2977

83. Skype Web page. Available at http://www.skvpe.com/

84. Google Earth Web page. Available at http://earth.google.com/

85. Opera Web page. Available at http://www.opera.com/

86. Microsoft Research Web page. Available at http://research.microsoft.com

87. Microsoft .NET Framework Web page. Available at http://www.microsoft.com/net/

88. Microsoft Shared Source Initiative Web page. Available at http://www.microsoft.com/resources/sharedsource/default.mspx

89. Wikipedia article on Shared Source. Available at http://en.wikipedia.org/wiki/Sharedsource

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

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

92. Rational Software Corporation Web site. Available at www.rational.com

93. Павлов В. Аспектно-ориентированное программирование. — M., 2004 http://www.javable.com/columns/aop/workshop/01/

94. Dijkstra EW. Go to statement considered harmful. Communications of the ACM 1968; 11 (3): 147-148

95. Bohm C., Jacopini G. Flow diagrams, Turing machines and languages with only two formation rules. Communications of the ACM 1966; 9 (5).