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

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

Сучасна концепція АОП була запропонована в 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).