Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Основні елементи парадигми АОП

Сучасна концепція АОП була запропонована в 1997 р. групою розробників з Xerox PARC на чолі з Г.Кикзалесом для реалізації властивостей програмних систем, які відображають той або інший не функціональний аспект їх роботи, і не можуть бути явно організовані у вигляді процедури, наприклад:

– реакція на помилки (їх оброблення і видача діагностичних повідомлень),

– забезпечення доступу до пам'яті (динамічне замовлення-звільнення),

– синхронізація паралельно діючих об'єктів тощо,

тобто дій, які зазвичай «розсіваються» по всіх елементах системи, «перетинаючи» (cross-cutting) структуру системи, вплітаючись в код і заплутуючи його.

Аспект – це точка зору, з якої можна розглянути яке-небудь поняття, процес, перспективу. Задача аспектно-орієнтованого розроблення ПС полягає в тому, щоб виділити наскрізну функціональність і винести її за межі бізнес-логіки програмних застосувань. В результаті отримують наочну бізнес-логіку в основних класах ПС і акуратно розфасовану наскрізну функціональність зовні базової моделі – у просторі аспектів. Компоненти зв’язуються з аспектами в ході компіляції.

Таким чином, АОП пропонує різні методи і методики розбиття задач (concern crosscutting) на ряд функціональних компонентів, а також аспектів, які «перетинають» функціональні компоненти, і передбачає їх композицію з метою отримання реалізації систем. Причому, механізми композиції забезпечують не просто виклик процедур, а вільне і декларативне зчеплення між частковими описами компонентів і аспектів.

АОП парадигма фіксує модель вбудовування аспекту в систему (JPM, від Join Point Model), яка включає такі найважливіші елементи парадигми:

1. Точка приєднання (Join point) – однозначно визначуване місце в програмному об’єкті, в якому виконується виклик метода, ініціація класу, доступ до поля класу тощо. Це місце, де перетинаються компонент та аспект.

2. Зріз (PointCuts)– набір Точок приєднання, що задовольняє заданому правилу (правило стосується завдання об’єктів, які становлять інтерес за певним аспектом за певної події. Замість правила може бути простий перелік точок). У Зрізі визначається, де і коли може бути застосована функціональність даного аспекту.

3. Фрагмент вставки, рекомендація (Advice) – набір «рекомендованих» інструкцій мови програмування, які треба інтегрувати в усі Точки приєднання, вказані у заданому Зрізі. Це код функціональності об’єктів, який спрацьовуватиме при настанні певної події, тобто те, що буде виконано для об’єктів, вказаних у Зрізі. Найбільш популярними стандартними подіями в мовах АОП є події Before (перед), After (після), Around (навколо, до і після виклику методу).

4. Аспект (aspect) – пара: правило, яке задає Зріз, і Фрагмент вставки, що підлягає вставці в точки цього Зрізу. Аспект являє собою мовну концепцію, схожу з класом, але більш високого рівня абстракції. Аспекти можуть охоплювати багато класів і використовувати Точки приєднання для реалізації регулярних дій, пов'язаних з безпекою, обробленням помилок тощо.

5. Оголошення (Inter-type declaration)– формалізоване правило зміни структури класу (відкриті класи або суміші (mixins)). Декларації забезпечують оголошення додаткових членів існуючих типів.

Разом pointcuts, advice і оголошення inter-type дозволяють АОП-мовам явно виразити процеси, що перетинаються. Оголошення аспекту може містити ці три типи членів на додаток до звичайних полів і методів мови програмування. Аспект представляє модуль добре скомпонованої пересічної структури. Реалізація цих механізмів відрізняється в різних АОП-інструментах, але в основі кожного підходу лежить механізм доступу, створення, іменування й абстрагування точок приєднання.

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

Реалізація за стосунків, які включають компоненти і аспекти, забезпечується наступним:

компонентною мовою, за допомогою якої створюються компоненти,

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

компонувальником (weaver) аспектів для комбінування мов і інтеграції компонентів і аспектів застосування. Компонування (сплетення аспектів) в систему може здійснюватися під час виконання (runtime weaving) або під час компіляції (compile time weaving) та завантаження класів.

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

Для ефективної реалізації аспектів в різних контекстах їх застосування розроблені бібліотеки розширень мов програмування для певних ПрО. Вони включають окремі функції компіляторів, засобів оптимізації, редагування, візуалізації понять, перебудови компонентів компіляторів під нове мовне розширення, засоби програмування на основі шаблонів тощо. Бібліотеки з такими можливостями отримали назву бібліотек генерувального типу. Приклад – бібліотека матриць, яка надає засоби для обчислення виразів з масивами. Програмування з використанням таких бібліотек належить до розряду стилів узагальненого (родового) програмування (generic programming).

 

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".


Читайте також:

  1. II. Основні закономірності ходу і розгалуження судин великого і малого кіл кровообігу
  2. II. Основні засоби
  3. II.3. Основні способи і прийоми досягнення адекватності
  4. Адвокатура в Україні: основні завдання і функції
  5. Адміністративне правопорушення як підстава юридичної відповідальності: ознаки і елементи.
  6. Азот, фосфор, біогенні елементи та їх сполуки, органічні речовини
  7. Альтернативні парадигми організаційного процесу
  8. Амортизація основних засобів, основні методи амортизації
  9. Артеріальний пульс, основні параметри
  10. Базові елементи управління проектом
  11. Банківська система та її основні функції
  12. Біоелементи.




Переглядів: 842

<== попередня сторінка | наступна сторінка ==>
Парадигма аспектно-орієнтованого програмування | Підтримка АОП впродовж життєвого циклу ПС

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.02 сек.