авторефераты диссертаций БЕСПЛАТНАЯ БИБЛИОТЕКА РОССИИ

КОНФЕРЕНЦИИ, КНИГИ, ПОСОБИЯ, НАУЧНЫЕ ИЗДАНИЯ

<< ГЛАВНАЯ
АГРОИНЖЕНЕРИЯ
АСТРОНОМИЯ
БЕЗОПАСНОСТЬ
БИОЛОГИЯ
ЗЕМЛЯ
ИНФОРМАТИКА
ИСКУССТВОВЕДЕНИЕ
ИСТОРИЯ
КУЛЬТУРОЛОГИЯ
МАШИНОСТРОЕНИЕ
МЕДИЦИНА
МЕТАЛЛУРГИЯ
МЕХАНИКА
ПЕДАГОГИКА
ПОЛИТИКА
ПРИБОРОСТРОЕНИЕ
ПРОДОВОЛЬСТВИЕ
ПСИХОЛОГИЯ
РАДИОТЕХНИКА
СЕЛЬСКОЕ ХОЗЯЙСТВО
СОЦИОЛОГИЯ
СТРОИТЕЛЬСТВО
ТЕХНИЧЕСКИЕ НАУКИ
ТРАНСПОРТ
ФАРМАЦЕВТИКА
ФИЗИКА
ФИЗИОЛОГИЯ
ФИЛОЛОГИЯ
ФИЛОСОФИЯ
ХИМИЯ
ЭКОНОМИКА
ЭЛЕКТРОТЕХНИКА
ЭНЕРГЕТИКА
ЮРИСПРУДЕНЦИЯ
ЯЗЫКОЗНАНИЕ
РАЗНОЕ
КОНТАКТЫ


Pages:     | 1 | 2 ||

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ В. О. Сафонов АСПЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Учебное пособие ...»

-- [ Страница 3 ] --

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

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

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

Платформа.NET обеспечивает общие механизмы многоязыкового программирования — общую систему типов (CTS);

общую среду под держки выполнения программ (CLR);

единый промежуточный язык (CIL), в который компилируется исходный код любого языка (напри мер, C# или VB), реализованного для платформы.NET. Цель этих ме ханизмов — обеспечить возможность разработки многоязыковых при ложений, в которых каждый модуль написан на том языке, на котором его реализация оказалась наиболее удобной (либо уже имелась в рас поряжении разработчиков до начала проекта).

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

Рассмотрим принципы нашего подхода к многоязыковому АОП, реализованные в системе Aspect.NET. Другие подходы проанализиро ваны в следующем разделе.

Использование простого по структуре и семантике метаязы ка спецификации аспектов, общего для всех языков их реализации (C##, VB и др.). При нашем подходе аспект состоит из заголовка, дан ных, модулей и действий. Описанная структура описания аспекта зада ется с помощью АОП-аннотаций на метаязыке спецификации аспектов Aspect.NET.ML. Заголовок (%aspect) содержит имя аспекта;

данные (%data) — локальные (приватные) описания, используемые аспектом;

модули (%modules) — процедуры (функции, методы) аспекта;

дейст вия (%action) — часть его модулей, вызовы которых вставляются в целевое приложение в соответствии с правилами (%rules) внедрения аспекта (%before, %after, instead% — перед конструкцией целевого приложения, например, перед вызовом метода, после или вместо него), привязанными к каждому его действию. Данные концепции являются общими и не зависят от языка реализации аспектов. Они применимы к реализации аспекта на любом языке, доступном для платформы.NET, реализация которого отображает типы языка в общую систему типов (CTS) и удовлетворяет стандарту общеязыковой спецификации (CLS).

Cоблюдение последней обеспечивает для платформы.NET совмести мость в едином приложении модулей, код которых реализован на раз ных языках, — например, на языке C# или VB. Более того, предложен ные нами концепции применимы и к реализации аспекта, например, на процедурном языке, хотя, на данный момент, мы пока не имеем прак тического опыта применения АОП для процедурных языков — это планируется в дальнейшем. Код реализации аспекта на любом вы бранном языке, таким образом, «размечается» АОП-аннотациями на метаязыке Aspect.NET.ML, причем таким образом, что если удалить или закомментировать АОП-аннотации, начинающиеся с символа % («забыть об аспектах»), то получится синтаксически правильный код единицы компиляции (класса) на языке реализации аспекта. Примеры приведены ранее в главах 4–7 и далее в данной главе. Отметим, что такой подход принципиально отличается, например, от подхода AspectJ, при котором код классов и аспектов перемешан между собой, и «отключение АОП» путем удаления фрагментов кода неизбежно приведет к ошибкам. Метаязык поддержан и средой разработки Aspect.NET Framework, встроенной в Visual Studio.NET как расшире ние (add-in), в которой пользователю предоставляются соответствую щие новые типы проектов Visual Studio для АОП (например, Aspect.NET.ML module на языке C# или VB). При создании АОП проектов пользователь получает в текстовом редакторе интегрирован ной среды готовый шаблон (pattern) кода, содержащего АОП аннотации частей аспекта на языке Aspect.NET.ML, структура которых не зависит от того, какой язык (C# или VB) выбран для реализации аспекта. Последнее существенно облегчает для пользователя освоение и применение АОП — опытному программисту достаточно несколь ких минут и небольшого примера в качестве образца, чтобы начать разрабатывать аспекты на любом знакомом ему языке. Для сравнения, если бы был применен подход, аналогичный подходу AspectJ, то поль зователю пришлось бы отдельно изучать методы и инструменты реа лизации аспектов на C#, затем — на VB, а также методы их интегра ции друг с другом, если подобная интеграция вообще возможна.

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

В дальнейшем исходные коды реализаций аспектов обрабатыва ются штатными компиляторами.NET, компилирующими их в обыч ную бинарную сборку (assembly). При этом АОП-атрибуты хранятся в сборке вместе с бинарным кодом действий аспекта. Заметим, что би нарное представление аспектной сборки — в виде кода на общем про межуточном языке CIL — также не зависит от исходного языка реали зации аспекта, благодаря многоязыковой природе.NET. Следователь но, для того, чтобы реализовать поддержку какого-либо нового языка реализации аспектов в системе, достаточно, во-первых, реализовать конвертор метаязыка Aspect.NET.ML в определения АОП-атрибутов на новом языке их реализации, во-вторых, добавить поддержку новых типов проектов для определений аспектов на новом языке в среду Aspect.NET Framework. Первоначально, вплоть до 2010 г., все версии Aspect.NET (1.0, 1.1, 2.0, 2.1) содержали только реализацию поддерж ки языка C# (автор — А. Масленников). В 2010 г. студенты дипломники И. Евдаков и А. Саримбеков реализовали поддержку язы ка VB для новой версии Aspect.NET — 2.2, выпущенной в ноябре 2010 г. В ближайшее время планируется также реализация в системе Aspect.NET поддержки языка Managed C++, а также других языков, реализованных для.NET, включая, например, новый язык функцио нального программирования F#. Интересно отметить, что компонов щик (weaver) — компонента Aspect.NET, выполняющая внедрение ко да действий аспекта в целевое приложение, вообще не потребовала никаких изменений в реализации для введения в систему нового языка, так как компоновщик работает в терминах CIL и выполняет внедрение аспектов на бинарном уровне.

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

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

В работе [58] анализируется многоязыковое АОП с других пози ций — объединения различных инструментов АОП, поддерживающих различные языки реализации аспектов, в один инструмент многоязы кового АОП. Такая постановка задачи вынужденна, ввиду широкого использования уже существующих инструментов АОП со своими ме ханизмами реализации аспектов, но решение подобной задачи гораздо сложнее, так как требует разработки дополнительных конверторов из одного представления аспектов в другое, либо разработки «оберток»

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

Для.NET разработан также многоязыковый компоновщик (weaver) аспектов — AspectDNG [59]. Он, как и компоновщик аспектов в нашей системе Aspect.NET, выполняет внедрение аспектов на уровне единого промежуточного кода (CIL), а следовательно, благодаря мно гоязыковой природе.NET, «по определению» является, как и наш компоновщик аспектов, многоязыковым — аспекты могут быть разра ботаны на любом языке. Однако в системе AspectDNG отсутствует интеграция со средой разработки, а также какой-либо аналог единого метаязыка для спецификации аспектов — аспекты могут быть разрабо таны в виде обычных классов на любом языке, с соблюдением опреде ленных соглашений относительно именований, связей и сигнатуры классов и методов.

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

9.3. Возможности и примеры многоязыкового АОП в системе Aspect.NET Для иллюстрации описанных идей и принципов рассмотрим при меры разработки целевых приложений и аспектов на различных язы ков программирования в Aspect.NET 2.2.

1) Разработка целевого приложения и аспекта на языке C# (пример Aspect2 в поставке Aspect.NET 2.2) Рассмотрим простое консольное приложение на языке C#:

using System;

namespace ConsoleApplication { class Program { static void P() { Console.WriteLine("P");

} static void Main(string[] args) { Console.WriteLine("Main");

P();

} } } Вывод данного приложения:

Main P Теперь разработаем аспект протоколирования, вставляющий в це левое приложение дополнительный трассировочный вывод — перед вызовом каждого метода M — вывод Hello M, а после вызова — вывод Bye M (содержащий имя метода):

%aspect Aspect using System;

{ %modules public static void Say (String s) { Console.WriteLine(s);

} %rules %before %call * %action public static void SayHello () { Say ("Hello " + %TargetMemberInfo.Name);

} %after %call * %action public static void SayBye () { Say ("Bye " + %TargetMemberInfo.Name);

} } Для разработки данного аспекта необходимо в среде Visual Studio выбрать тип проекта C# / Aspect.NET ML Module.

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

Аспект вставляет в целевое приложение перед вызовом любого метода (*) вызов действия SayHello(), выполняющего требуемый трас сировочный вывод, после вызова любого метода — вызов аналогично го действия SayBye(). Конструкция языка Aspect.NET.ML %TargetMemberInfo.Name выполняет доступ к контексту точки при соединения — целевому методу — и вычисляет его имя.

Особенности практического применения системы Aspect.NET подробно описаны в главах 4 — 6, поэтому в данной главе мы их опускаем.

Вывод модифицированного целевого приложения (после приме нения аспекта):

Hello WriteLine Main Bye WriteLine Hello P Hello WriteLine P Bye WriteLine Bye P Данный работающий пример доступен в поставке Aspect.NET 2. в поддиректории samples / Aspect2.

2) Разработка аналогичных целевого приложения и аспекта на языке VB (пример Aspect2VB в поставке Aspect.NET 2.2).

Рассмотрим теперь аналогичный пример на языке VB, доступный в поставке Aspect.NET 2.2 в поддиректории samples / Aspect2VB.

Функциональность целевого приложения и аспекта идентичны преды дущему примеру.

Код целевого приложения на языке VB:

Module Module Sub P() Console.WriteLine("P") End Sub Sub Main() Console.WriteLine("Main") P() End Sub End Module Определение аспекта на языках Aspect.NET.ML и VB:

%aspect Aspect Imports System class Aspect %modules %rules %before %call * %action public shared Sub SayHello() Console.WriteLine ("Hello " + %TargetMemberInfo.Name) End Sub %after %call * %action public shared Sub SayBye() Console.WriteLine ("Bye " + %TargetMemberInfo.Name) End Sub End class Отметим, что в определении аспекта используются в точности те же конструкции метаязыка Aspect.NET.ML, хотя, как видно из приве денного листинга кода, реализация аспекта выполнена на другом язы ке — Visual Basic.

3) Разработка целевого приложения на языке C#, а аспекта — на языке VB (пример TestArgsVB в поставке Aspect.NET 2.2) Данный работающий пример доступен в поставке Aspect.NET 2. в поддиректории samples / TestArgsVB.

Код целевого приложения на языке C#:

using System;

namespace TestArgs { class MainClass { static public void Run() { Program.Method1(1, 0.6);

Program.Method2(1, 0.6);

} } class Program { static void Main(string[] args) { Method1(1, 0.6);

Method2(1, 0.6);

MainClass.Run();

Console.WriteLine ("Press Enter to exit");

Console.ReadLine();

} public static void Method (int i, double f) { Console.WriteLine("Hello Method1");

} public static int Method2(int i, double f) { Console.WriteLine("Hello Method2");

return 0;

} } } Вывод данной программы:

Hello Method Hello Method Hello Method Hello Method Press Enter to exit Код реализации на языке Visual Basic аспекта, выполняющего до полнительный трассировочный вывод значений аргументов методов целевого приложения:

%aspect TestArgsAspect Imports System class TestArgsAspect %modules %rules %before %call *Method(int, double) && %args(arg[1]) && %within(*MainClass) %action public shared Sub ActionMethod (ByVal f As float) Console.WriteLine("ActionMethod1: {0}",f) End Sub %before %call *Method(int,..) && %args(arg[0]) && %withincode(*Run) %action public shared Sub ActionMethod (ByVal i As int) Console.WriteLine("ActionMethod2: {0}", i) End Sub %before %call int *Method(..) && %!within(*MainClass) %action public shared Sub ActionMethod (ByVal i As int, ByVal f As float) Console.WriteLine ("ActionMethod3: {0}, {1}",i,f) End Sub End class Вывод модифицированного приложения (после применения ас пекта) :

Hello Method ActionMethod3: 1, 0. Hello Method ActionMethod1: 0. ActionMethod2: Hello Method ActionMethod1: 0. ActionMethod2: Hello Method Press Enter to exit Детали конструкций метаязыка АОП, выполняющих «захват» ар гументов вызовов методов и выдающих информацию о них, описаны в главе 5.

В примере аспекта на языкеVisual Basic АОП-аннотации на языке Aspect.NET.ML выделены жирным шрифтом.

В данной главе описаны принципы и первый опыт разработки многоязыковой версии системы Aspect.NET 2.2 с поддержкой языков C# и VB.

Версия системы Aspect.NET 2.2 свободно доступна для скачива ния на академическом сайте Microsoft.

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

Вопросы к главе 1. Что такое многоязыковое АОП?

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

3. Какие базовые возможности предоставляет платформа.NET для реа лизации многоязыкового АОП?

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

5. Каковы принципы реализации многоязвкового АОП в системе Aspect.NET?

6. На каких языках в настоящее время возможна разработка аспектов в Aspect.NET 2.2?

Упражнения к главе 1. Изучите и пропустите пример TestArgsVB из поставки Aspect.NET 2. и проанализируйте результаты.

2. Разработайте вариант примера Aspect2 с аспектом на языке VB — с целевой программой ConsoleApplication1, написанной на C#, и аспек том, написанным на VB.

3. В чем, по-Вашему, возможны проблемы при применении многоязы кового АОП?

4. Каким условиям (вытекающим из общих принципов многоязыкового программирования в.NET, должен удовлетворять код целевого при ложения (например, на C#) и код аспекта (например, на VB), с точки зрения их совместимости?

ЗАКЛЮЧЕНИЕ В данной книге мы рассмотрели основные концепции АОП, обзор различных подходов к АОП, принципы нашего нового подхода к АОП, реализованного в системе Aspect.NET, основы практического исполь зования Aspect.NET, а также проанализировали несколько актуальных областей, для которых применение АОП наиболее удобно и естествен но, — надежные и безопасные вычисления и контрактное проектиро вание.

Система Aspect.NET в настоящее время используется в 26 странах мира. Мы получили весьма позитивные отзывы о нашей системе. О ней написаны статьи и магистерские диссертации молодых програм мистов других стран, оценивших преимущества Aspect.NET — напри мер из Италии и Бразилии. Пользователи Aspect.NET высказывают пожелания относительно того, чтобы система Aspect.NET выпускалась как программный продукт, и высоко оценивают простоту метаязыка Aspect.NET.ML, удобство GUI, степень интеграции Aspect.NET с Visual Studio, качество документации.

Команда Aspect.NET под руководством автора постоянно работа ет над совершенствованием системы Aspect.NET, ее переносом на но вые платформы (Visual Studio 2010). Мы надеемся, что когда-нибудь, благодаря нашей системе, АОП станет одной из повседневных техно логий, используемых в составе Visual Studio.NET. Система Aspect.NET для этого фактически готова. В этом — одна из наших перспективных целей.

Наша команда работает также над применением Aspect.NET во все новых и новых областях программирования. На недавней конфе ренции молодых ученых в Политехническом университете (Санкт Петербург) «Технологии Microsoft в теории и практике программиро вания» (март 2011) мы представили целый ряд докладов по развитию и применению Aspect.NET. Приведем лишь обзор направлений, в кото рых используется или начинает использоваться Aspect.NET и которые были отражены в докладах: надежные и безопасные вычисления (Д. Фролов), контрактное проектирование (А. Когай), Web-програм мирование и безопасность Web-приложений (Доан Нгуен Ван), разра ботка программных решений на основе Microsoft BizTalk Server и Aspect.NET (Д. Подорожкин — данная работа заняла первое место на конференции), облачные вычисления в системе Microsoft Windows Azure (А. Григорьева, Д. Григорьев).

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

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

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

Наша система постоянно развивается. Запланирована реализация в ближайших версиях целого ряда новых возможностей. Некоторые из них описаны в монографии [1]. Новые идеи об использовании Aspect.NET возникают и реализуются постоянно.

Что касается перспектив АОП и его применения в целом, они представляются нам весьма многообещающими. Для того, чтобы АОП, наконец, стало неотъемлемой частью процесса разработки и сопрово ждения программных систем, необходимо, прежде всего, обеспечить интеграцию инструментов АОП с традиционными интегрированными средами разработки (IDE). Эти принципы в полной мере соблюдаются и развиваются нами в системе Aspect.NET.

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

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

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

Наконец, на наш взгляд, необходимым условием более широкого распространения АОП является его поддержка ведущими коммерче скими фирмами, прежде всего — Microsoft, к чему мы и призываем наших уважаемых коллег из этой корпорации, с которой в течение многих лет мы связаны совместными проектами. Мы готовы к «про дуктизации» Aspect.NET как части продукта Microsoft — Visual Studio.

Желаем дорогим читателям успеха в освоении и использовании АОП и системы Aspect.NET.

Свои отзывы, пожелания, предложения, замечания относительно данной книги и системы Aspect.NET присылайте, пожалуйста, авто ру — научному руководителю и главному архитектору проекта Aspect.NET профессору Владимиру Олеговичу Сафонову (личный Web-сайт: http://www.vladimirsafonov.org) по электронной почте:

vosafonov@gmail.com.

ЛИТЕРАТУРА 1. Safonov V. O. Using aspect-oriented programming for trustwothy software development. Wiley International. John Wiley & Sons, 2008, 352 pp.

2. Сафонов В. О. Введение в Java-технологию. СПб.: Наука, 2002, 187 с.

3. Web-сайт проекта Aspect.NET. http://www.aspectdotnet.org.

4. Сафонов В. О. Архитектуры и модели программ и знаний: учеб. курс.

https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8480&Login=..

(дата публикации: декабрь 2009).

5. Safonov V. O. Aspect.NET — a new approach to aspect-oriented pro gramming //.NET Developers Journal. 2003. No. 4, 36–40.

6. Safonov V. O. Aspect.NET — concepts and architecture //.NET Develop ers Journal. 2004. No. 9, 44–48.

7. Safonov V. O., Grigoriev D. A. Aspect.NET: aspect-oriented programming for Microsoft.NET in practice //.NET Developer’s Journal. 2005. No. 7, 28–33.


8. Safonov V. O., Gratchev M. K., Grigoriev D. A., Maslennikov A. I. As pect.NET — aspect-oriented toolkit for Microsoft.NET based on Phoenix and Whidbey //.NET Technologies 2006 International Conference. Univ. of West Bohemia Campus Bory, May 29 — June 1, 2006, Pilsen, Czech Republic. Full Paper Proceedings, 19–29.

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

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

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

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

13. Safonov V. O. Aspect-Oriented Programming and Aspect.NET as security and privacy tool for Web and 3D Web programming. Chapter 11 // Alan Rea, Ed.

Security in Virtual Worlds, 3D webs and Immersive Environments: Models for De velopment, Interaction and Management. — IGI Global Publishers. 2011, 221–262.

14. Сафонов В. О. Многоязыковое аспектно-ориентированное програм мирование в системе Aspect.NET // Компьютерные инструменты в образова нии. 2010. № 6, 14–22.

15. Нгуен Ван Доан, Сафонов В. О. Применение аспектно-ориентиро ванного подхода и системы Aspect.NET к разработке Web-приложений // Ком пьютерные инструменты в образовании. 2010. № 5.

16. Нгуен Ван Доан, Сафонов В. О. Реализация аспектов безопасности в ASP.NET — приложениях на основе системы Aspect.NET // Компьютерные инструменты в образовании. 2010. № 4, 3–11.

17. Когай А. Р. Применение аспектно-ориентированного программирова ния для поддержки технологии design-by-contract // Компьютерные инструмен ты в образовании. 2010. № 4, 12–20.

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

19. Kiczales G. et al. Aspect-oriented programming. Xerox PARC, 1997.

20. Web-сайт проекта AspectJ. http://www.aspectj.org 21. Фуксман А. Л. Технологические аспекты создания программных сис тем. М.: Статистика, 1979.

22. Web-страницы ежегодной конференции по аспектно-ориентирован ной разработке программ. http://aosd.net/conference/.

23. Русскоязычные Web-страницы и wiki-учебник на тему «Аспектно ориентированное программирование». http://ru.wikipedia.org/wiki/ 24. Павлов В. Анализ вариантов применения аспектно-ориентированного подхода при разработке программных систем. — http://www.javable.com/columns/aop/workshop/01/.

25. Web-сайт проекта JBoss AOP. http://labs.jboss.com/portal/jbossaop.

26. Михеев О. И. Разработка сред пользовательских интерфейсов нового поколения с применением аспектно-ориентированного программирования:

дис. … канд. техн. наук. СПб: Политехнический университет, 2007.

27. Горбунов-Посадов М. М. Расширяемые программы. М.: Полиптих, 1999.

28. Binkley D. et al. Automated refactoring of object-oriented code into as pects // Proceedings of the 21st IEEE International Conference on Volume, Issue, 26–29 Sept. 2005, 27–36.

29. Hannemann J, Kiczales G. Overcoming the prevalent decomposition of legacy code // Proceedings of Workshop on Advanced Separation of Concerns at the International Conference on Software Engineering;

Toronto, Canada, 2001.

30. Сафонов В. О. и др. Интеграция методов инженерии знаний и инже нерии программ. Система управления знаниями Knowledge.NET // Компьютер ные инструменты в образовании. 2005. № 5.

31. Laddad R. AspectJ in action. Practical aspect-oriented programming.

Manning, 2003.

32. AspectJ Development Tools (AJDT) Web site. Available at http://eclipse.org/ajdt.

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

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

35. Dijkstra E. W. On the role of scientific thought. EWD 447;

1974. Available at http://www.cs.utexas.edu/users/EWD/ewd04xx/EWD447.PDF.

36. IBM multi-dimensional separation of concerns. Available at http://www.research.ibm.com/hyperspace/index.htm.

37. HyperJ home Web page. Available at http://www.alphaworks.ibm.

com/tech/hyperj 38. IBM’s subject-oriented programming Web page. Available at http://www.research.ibm.com/sop/.

39. Lieberherr K. Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns. PWS Publishing Company;

1996.

40. Kroha P. Adaptive programming. A presentation of a talk at DATACON’2004 conference. Available at http://www.datakon.cz/datakon04/ d04_it_kroha.pdf.

41. Bergmans L., Aksit M. Composing multiple concerns using composition filters. Available at http://wwwtrese.cs.utwente.nl/.

42. Robillard M., Murphy G. Representing concerns in source code // ACM Transactions Software Engineering and Methodology 1977;


16(1).

43. Simonyi C. Intentional programming — innovation in the legacy age, 1996. Available at http://citeseer.ist.psu.edu/simonyi96intentional.html.

44. Czarnetski K, Eisenecker U. Generative programming: Methods, tools and applications. Addison-Wesley;

2000.

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

46. Elrad T. et al. Discussing aspects of AOP. Communications of the ACM 2001;

44(10): 33–38.

47. Сафонов В. О. Языки и методы программирования в системе «Эль брус». М.: Наука, 1989, 392 с.

48. Web-сайт Phoenix. http://connect.microsoft.com/phoenix.

49. Howard M., LeBlanc D. Writing Secure Code. Microsoft Press, 2002.

50. Howard M., Lipner S. Security Development Lifecycle. Microsoft Press, 2006.

51. Swiderski F., Snyder W. Threat Modeling. Microsoft Press, 2004.

52. Safonov V. O. Trustworthy Compilers. Wiley International. John Wiley & Sons, 2010. 295 p.

53. Сафонов В. О. Основы современных операционных систем. Учебное пособие. М.: ИНТУИТ.РУ. БИНОМ: Лаборатория знаний, 2011. 584 с.

54. Bernstein L., Yuhas C. M. Trustworthy Systems Through Quantitative Software Engineering. Wiley-IEEE Computer Society Press, 2005. 437 p.

55. Sahinoglu M. Trustworthy Computing. Analytical and Quantitative Engi neering Evaluation. Wiley Interscience. John Wiley & Sons, 2007. 320 p.

56. Meyer B. Object-Oriented Software Construction. Prentice Hall, 1997.

P. 1296.

57. Jackson A., Clarke S. SourceWeave.NET: Cross-Language Aspect Oriented Programming // Generative Programming and Component Engineering.

Lecture Notes in Computer Science, 2004, Volume 3286/2004, 369–393.

58. Kojarski S., Lorenz D. H. Identifying Feature Interactions in Multi Language Aspect-Oriented Frameworks // ICSE '07 Proceedings of the 29th interna tional conference on Software Engineering.

59. Web-сайт AspectDNG. http://sourceforge.net/projects/aspectdng/.

СЛОВАРЬ Данный словарь (глоссарий) является кратким словарем англоя зычной и русскоязычной терминологии по аспектно-ориентирован ному программированию. Для каждого термина, определенного в кни ге, даны русский и английский варианты и номер страницы, на кото рой дано определение или пояснение смысла данного термина.

Русский термин Английский термин Стр.

аспект aspect аспектизация aspectizing, aspect mining аспектно-ориентированное aspect-oriented programming программирование безопасность security внедрение, применение (аспекта) weaving внедрение, управляемое пользователем user-controlled weaving компоновщик weaver (подсистема внедрения) конфиденциальность privacy межтиповое объявление inter-type declaration метаязык АОП AOP meta-language многоязыковое АОП multi-language AOP модель внедрения аспектов join points model надежные и безопасные вычисления trustworthy computing надежность reliability разрез pointcut правило внедрения аспекта weaving rule привилегированный аспект privileged aspect разделение функциональностей separation of concerns сквозная функциональность cross-cutting concern совет advice точка присоединения join point целевая программа target application (к которой применяется аспект) ОГЛАВЛЕНИЕ Введение................................................................................................................... Глава 1. Предпосылки и история АОП.............................................................. 1.1. АОП и сквозная функциональность.................................................... 1.2. Типичные классы задач, решаемые АОП............................................ 1.2. АОП и модульное программирование. Предыстория АОП.............. Вопросы к главе 1.................................................................................................... Упражнения к главе 1............................................................................................. Глава 2. Основные концепции АОП................................................................ 2.1. Подходы к концепциям АОП и к его реализации............................ 2.2. Модели использования аспектов (join point models)........................ Вопросы к главе 2.................................................................................................. Упражнения к главе 2........................................................................................... Глава 3. Обзор инструментов АОП.................................................................. 3.1. AspectJ и AspectWerkz........................................................................ 3.2. Другие подходы к АОП и проблеме разделения функцио нальностей..............................................................................

............ Вопросы к главе 3.................................................................................................. Упражнения к главе 3........................................................................................... Глава 4. Принципы и архитектура системы Aspect.NET............................. 4.1. История и принципы Aspect.NET...................................................... 4.5. Архитектура Aspect.NET.................................................................... Вопросы к главе 3.................................................................................................. Упражнения к главе 3........................................................................................... Глава 5. Метаязык спецификации аспектов Aspect.NET.ML...................... 5.1. Синтаксис и семантика Aspect.NET.ML............................................ 5.2. Определение аспекта.......................................................................... 5.3. Правила внедрения аспекта................................................................ 5.4. Захват информации из контекста точки присоединения................. 5.5. Самодокументирование аспектов: AspectDescription....................... 5.6. Использование специализированных атрибутов Aspect.NET непосредственно................................................................................. Вопросы к главе 5.................................................................................................. Упражнения к главе 5........................................................................................... Глава 6. Практическое использование системы Aspect.NET....................... 6.1. Пример целевой программы и определения аспекта....................... 6.2. Опции системы Aspect.NET............................................................... 6.3. Аспекты, входящие в поставку Aspect.NET 2.2................................ 6.4. Требования к окружению для инсталляции и использования Aspect.NET.......................................................................................... Вопросы к главе 6.................................................................................................. Упражнения к главе 6........................................................................................... Глава 7. Использование АОП для надежных и безопасных вычисле ний (trustworthy computing)................................................................ 7.1. Инициатива Trustworthy Computing фирмы Microsoft..................... 7.2. Применение АОП для TWC............................................................... 7.3. Перспективы применения АОП для TWC........................................ Вопросы к главе 7.................................................................................................. Упражнения к главе 7........................................................................................... Глава 8. Применение АОП для контрактного проектирования (Design by Contract).............................................................................. 8.1. Обзор технологии контрактного проектирования............................ 8.2. Применение АОП и контрактного проектирования на основе системы Aspect.NET........................................................................... 8.3. Принципы спецификации контрактов и их реализация в виде аспектов системы Aspect.NET........................................................... Вопросы к главе 8.................................................................................................. Упражнения к главе 8........................................................................................... Глава 9. Многоязыковое АОП........................................................................... 9.1. Роль и принципы реализации многоязыкового АОП....................... 9.2. Другие подходы к многоязыковому АОП......................................... 9.3. Возможности и примеры многоязыкового АОП в системе Aspect.NET.......................................................................................... Вопросы к главе 9.................................................................................................. Упражнения к главе 9........................................................................................... Заключение........................................................................................................... Литература............................................................................................................ Словарь................................................................................................................ Научное издание АСПЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Учебное пособие Печатается без издательского редактирования Художественное оформление Оригинал-макет В. О. Сафонова Подписано в печать 30.03.11. Формат 6084/16.

Бумага офсетная. Печать офсетная.

Усл. печ. л. 6,5. Тираж 400 экз.

Заказ Издательство СПбГУ.

199004, С.-Петербург, В.О., 6-я линия, 11/ Тел. (812) 328-96-17;

факс (812) 328-44- E-mail: editor@unipress.ru www.unipress.ru Типография Издательства СПбГУ 199061, С.-Петербург, Средний пр.,

Pages:     | 1 | 2 ||
 





 
© 2013 www.libed.ru - «Бесплатная библиотека научно-практических конференций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.