Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мазур Курсова.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
465.41 Кб
Скачать

Зміст

Вступ

Об'єктно­-орієнтоване програмування (ООП) було представлене як технологія, що сприяє процесу проектування ПО, оскільки об'єктна модель краще вписується в реальну наочну область і може бути представленна наочно. Але виявлено безліч проблем в реалізації систем, де ООП не достатньо для чіткої фіксації важливих архітектурних рішень програми. Існують деякі проблеми, для яких не підходять ні об'єктно­орієнтовані (ООП) ні процедурно­орієнтовані мови програмування (ПІП).

Аспектно­-орієнтоване програмування (АОП) дозволяє чітко виразити код, залучений в аспект, включаючи відповідну ізоляцію, композицію, і повторне використання. Не дивлячись на те, що АОП і є новою ідеєю, існують інші системи, що мають схожі властивості.

Аспектно-орієнтоване програмування (АОП) є однією з концепцій програмування, яка є подальшим розвитком процедурного і об'єктно-орієнтованого програмування (ООП). Дана методологія покликана понизити час, вартість і складність розробки сучасного ПО, в якому, як прищепило, можна виділити певні частини, або аспекти, що відповідають за ту або іншу функціональність, реалізація якої розосереджена за кодом програми, але складається з схожих шматків коду.  По оцінках фахівців, близько 70% часу в проектах витрачається на супровід і внесення змін в готовий програмний код. Тому достатньо важливою в найближчій перспективі стає роль АОП і подібних трансформаційних підходів. Порівняно нова технологія вже набула досить широкого поширення показавши свою ефективність на тестових застосуваннях, проте місце цього підходу в індустрії ПО по ряду об'єктивних причин все ще не визначено.

Істотна межа програмної системи — рівень складності: один розробник практично не в змозі охопити всі деталі системи, причому складність властива більшості сучасних програмних систем. Дана складність неминуча: з нею можна справитися, але позбавитися від неї не можна. Складність програмних систем обумовлена  чотирма основними причинами: складністю реальної наочної області, з якої виходить замовлення на розробку; трудністю управління процесом розробки; необхідністю забезпечити достатню гнучкість програми; незадовільними способами опису поведінки великих дискретних систем.

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

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

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

Поява нових парадигм програмування завжди була цікавою темою, оскільки кожна нова методологія розробки програмного забезпечення дозволяла вирішувати проблеми, що є посилками для її появи, і значно просувала науку Computer Science і індустрію ПО в цілому. Ускладнення програмних систем — як глобальна проблема вимагає постійної уваги і вивчення, тому поява АОП представляється широким полем для досліджень з подальшим їх практичним застосуванням.

1.Роботи в області аспектно-орієнтованого програмування

Основні ідеї АОП були сформульовані найбільш явній формі в одній з ранніх статей ідеологом методології Грегором Кикжалесом (Gregor Kiczales). На сервері підтримки і розвитку АОП можна отримати актуальну інформацію про розвиток даної методології, а також дізнатися про події і конференція тих, що проходять з цієї тематики. Хороший огляд по АОП представлений в дисертації .

АОП — методологія, в основі якої лежать ідеї, що зустрічаються в області технології програмування вже достатньо давно. Це суб'єктний-орієнтоване програмування (subject-oriented programming) , композиційні фільтри (composition filters), адаптивне програмування (adaptive programming). АОП тісно пов'язано з ментальним програмуванням (intentional programming), концепції якого викладені в роботі Чарльза Саймоні. Іншою близькою ідеологією є те, що так зване породжує, або трансформаційне, програмування (generative programming, transformational programming) .

У [2] автори пропонують коротке введення в проблематику АОП, представлені ключові поняття АОП і розглянуті способи інтеграції аспектів, у тому числі і на етапі виконання програми. У [3] наголошуються переваги АОП-підходу,  недоліки існуючих реалізацій опису точок скріплення аспектів і функціональних модулів. Запропонована модифікація моделі ASPECTJ для завдання точок скріплення аспектів.

У статті [21] автор дає основні поняття АОП, вводить термін крізна функціональність, а також надає короткий опис мови ASPECTJ. 

Оскільки всі приклади розроблялися з використанням найбільш популярної реалізації ASPECTJ, то основна література, що вивчається по реалізаціях АОП, — це література що стосується цієї мови.  Керівництво користувача  [17] є основним документом, що описує дане розширення мови Java. У [4] автор детально розглядає мову ASPECTJ, ця книга використовувалася як альтернативне джерело інформації. Крім того, з джерела [22] можна отримати інформацію про всі підтримувані на даний момент розширення мов і інші інструменти підтримуючих АОП. Наприклад, в статті [19] описаний зв'язок між АОП і .NET

У класичній праці [6] описуються прості і витончені рішення типових завдань, що виникають в об'єктно-орієнтованому проектуванні. Автори висловлюють принципи використання шаблонів проектування і приводять їх каталог. У [7] описані ефективні методи застосування всіх типів шаблонів проектування стосовно платформи Java. У [5] і [13] автори показують застосовність аспектного підходу для реалізації протоколу взаємодії об'єктів при реалізації шаблонів проектування. У цих роботах вони розглядають поліпшення в термінах модульної, підвищення ступеня повторного використання і покращуваного сприйняття початкового коду   класів учасників шаблонів з каталога [6].

У [11] дається поняття "Контрактного проектування" (Design by Contract) — техніка сприяючою створенню надійного об'єктно-орієнтованого програмного забезпечення. У [12] розглядаються загальні підходи при обробці помилок на етапі розробки ПО, даються поради по використанню АОП і робляться виводи про застосовність нового підходу на даному етапі життєвого циклу.