Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Підручник КНУ-4кк11.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
16.18 Mб
Скачать

2.5.2. Засоби аоп

В даний час існує декілька реалізацій АОП, найбільш відома з яких розробка центру Xerox PARC – AspectJ ((http://eclipse.org/aspectj/), інструмент, який підтримує АОП в рамках мови Java, надає розширювальні конструкції для цієї мови і вбудовується в такі системи розроблення, як Eclipse (http://eclipse.org/aspectj/), Sun ONE Studio і Borland JBuilder.

Функціонально аналогічними інструментами є: для мови С++ – AspectС++ (http://www.aspectc.org/), для мови JavaScript – AspectJS (http://www.aspectjs.com/), для мови PHP 5 – phpaspect (http://phpaspect.org/), для С# – Eos (http://www.cs.virginia.edu) для фреймворка .NET [3].

Для платформи .NET розроблено Aspect.NET. Розробка виконана в Санкт-Петербургському державному університеті [4].

Інструментами (двигунцями) переплетення коду (weaving) є, наприклад, такі:

XWeaver – інструмент для АОП на C/C++, який може працювати з командного рядка, а також має плагін для Eclipse. Генерує початковий код, який мінімально відрізняється від базового коду. Забезпечений документацією і великою кількістю прикладів програм. Доступний за адресою – http://www.xweaver.org/Xweaver/download.html/. Частина XWeaver – AXDT (http://www.xweaver.org/AXDT/Install.html) – охоплює як Java, так і C/C++.

– PostSharp (http://postsharp.org) – призначений для переплетення коду під час виконання у середовищі Microsoft.NET.

– AspectXML (http://www.aspectxml.org) – це аспектно-орієнтований двигунець переплетення (AXLE, Aspect-Oriented XML Weaving Engine), написаний на XSLT і доступний для застосунків у середовищах Java і .NET.

– MFAOPHP (http://www.mfaop.com) – проста реалізація АОП у PHP, яка не має РНР-препроцесора, але забезпечує переплетення під час виконання. Інструмент у вільному доступі.

– DotSpect (.SPECT) (http://dotspect.tigris.org) – це двигунець переплетення незалежних від мови аспектів під час компіляції у середовищі .NET. Надає мову, подібну AspectJ з додатковими синтаксичними елементами. Підтримується для С# і VB.NET. Надає також IDE для написання і тестування аспектів.

Фреймворками, які підтримують аспектно-орієнтований підхід до програмування і розроблення загалом, є:

– AspectWerkz (http://aspectwerkz.codehaus.org/index.html),

– архітектура JBoss-AOP (http://labs.jboss.com/portal/jbossaop/index.html),

Spring (http://www.springframework.org/), який, на відміну від двох попередніх, забезпечує інтеграцію АОП-реалізації та методології Spring IoC (Inversion of Control container) [5].

Порівняльний аналіз деяких інструментів (AspectJ, AspectWerkz, JBoss AOP та Spring AOP) подано в [6].

Для інтеграції проблемно-орієнтованих аспектних рішень до AspectJ призначений інструмент (і бібліотека) XAspects (http://www.ccs.neu.edu/research/demeter/xaspects/). Доменні аспекти транслюються під час компіляції в загальний початковий код для AspectJ.

Спеціально для середовища Eclipse розроблено AJDT (AspectJ Development Tools for Eclipse) (http://www.ibm.com/developerworks/java/library/j-ajdt/index.html) – інструмент (відкритий проект), призначений для розроблення і виконання застосунків на AspectJ.

Для роботи в середовищі Eclipse призначається також AspectBrowser for Eclipse (http://cseweb.ucsd.edu/users/wgg/Software/AB/). Інструмент пропонує засоби оперування аспектами, позначеними у дереві аспектів (Aspect Tree), а саме: створення і редагування аспектів, поєднання їх у групи, перегляд інформації стосовно лексичного аналізу аспектних програм тощо.

Підходи до моделювання аспектів

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

У [2] подано стислий огляд концепцій моделювання, розроблених у 1998–2002 роках. Переважна більшість дослідників пропонують ґрунтуватися на стандарті UML і застосувати існуючі в ньому механізми розширення графічної нотації сутностей і відношень (стереотипи, обмеження, помічені значення) для опису додаткових концепцій AO-проектування. Окрім робіт, які пропонують готові до практичного застосування графічні нотації, є велика кількість робіт теоретичної спрямованості. Зокрема, робиться спроба формалізувати використання засобів розширень UML для специфікації понять АО-методології. Для цього використовується поняття “профілю” UML – механізму, що дозволяє описати правила використовування засобів розширення мови в деякій предметній області [7, 8].

Комплексним підходом відрізняється робота відомих розробників з IBM В.Харрісона, П.Терра і Г.Оссхера [9], в якій вони розглядають способи, якими інформація про аспекти може бути відображена на різних діаграмах UML.

На теперішній час розробляється інструмент аспектно-орієтованого моделювання A2Eclipse (http://marketplace.eclipse.org/content/aspect-oriented-modeling-a2eclipse), який буде плагіном для Eclipse і підтримуватиме модифікований підхід до моделювання "Use-case Slice".