Аспектно-орієнтоване програмування, АОП (англ. aspect-oriented programming, AOP) — парадигма програмування, яка дозволяє виокремити перехресну (наскрізну) функціональність (cross-cutting concern).
Мета створення
Сучасні програмні системи часто вирішують величезну кількість надскладних завдань, що потребують хороших інженерних навичок від їхніх розробників та надійності інструментальних засобів розробки. При зростанні складності таких систем зростає і програмний код, розробнику стає все важче охопити всі деталі реалізації системи. При підтримці великих програмних засобів зростає час знаходження та виправлення помилки, ускладнюється додавання нових характеристик, оскільки стає все важче визначити наскільки зміни вплинуть на систему, чи не внесуть додаткових помилок та дефектів. Для вирішення таких завдань застосовують різноманітні інженерні засоби, як от багатофункціональні середовища розробки, шаблони проектування, готові програмні каркаси тощо.
Часто згадуваним недоліком об’єктно-орієнтованого підходу є неможливість локалізації наскрізної функціональності в одному класі. Як приклад такої функціональності часто називають необхідність ведення журналів подій, керування винятковими ситуаціями, перевірку прав доступу. Код, що відповідає за дану функціональність, часто розкиданий по різних класах. Це, з одного боку, не дозволяє сконцентрувати увагу на основній бізнес-логіці класу і ускладнює читання коду. З іншого боку, ускладнюється внесення змін у методи роботи наскрізної функціональності, що не завжди можна виправити правильним використанням інтерфейсів чи шаблонів проектування. Наразі аспектно-орієнтований підхід часто використовують для реалізації вищенаведених прикладів, проте, як зауважують деякі автори, на цьому сфера застосування аспектно-орієнтованого підходу не обмежуються, оскільки він може бути використаний для проектування будь-яких систем, що містять наскрізну функціональність.
В результаті наявності зайвої перехресної функціональності розроблюваний модуль містить заплутаний код, що задовольняє різні програмні вимоги. Негативні властивості такого коду:
- Розкиданий код. Оскільки наскрізна функціональність зачіпає багато модулів системи, то й виклики цієї функціональності будуть розкидані по всій системі. Наприклад, якщо програма містить засоби моніторингу продуктивності роботи з базою даних, то й виклики цієї функціональності будуть розміщені всюди, де потрібно працювати з базою даних. Наявність розкиданого коду має негативний вплив на проектування та реалізацію системи;
- Важкість відслідковування призначення модуля, оскільки він містить одночасно функціональність для задоволення різних вимог;
- Складність або неможливість повторного використання модуля у програмах з іншою наскрізною функціональністю;
- Велика ймовірність помилок. Наявність коду для реалізації функціональності різного роду в одному модулі може призвести до того, що жодне із завдань не отримає достатньої уваги розробника;
- Важкість супроводу. Якщо з'являється необхідність у зміні наскрізною функціональності, така зміна зачіпає багато модулів системи, що в результаті може призвести до проблем сумісності.
Для вирішення завдання локалізації наскрізної функціональності була розроблена методологія аспектно-орієнтованого програмування (АОП). Основні ідеї АОП були сформульовані ідеологом методології Г. Кінжалесом. Він також розробив найпопулярнішу надбудову мови програмування Java для роботи з аспектами – AspectJ.
Основні поняття
До основних понять аспектно-орієнованого програмування належать:
- Аспект (англ. aspect) — модуль або клас, який реалізує наскрізну функціональність. Аспект змінює поведінку іншого коду, застосовуючи поради в точках з'єднання, визначених деяким зрізом;
- Порада (англ. advice) — додаткова логіка, код, який повинен бути викликаний з точки з'єднання. Порада може бути виконана до, після або замість точки з'єднання;
- Ціль (англ. target) — об'єкт, до якого будуть застосовуватися поради;
- Точка з'єднання (англ. join point) — точка в виконуваній програмі (виклик методу, створення об'єкта, звернення до змінної), де слід застосувати пораду;
- Зріз (англ. pointcut) — набір точок з'єднання. Зріз визначає, чи підходить дана точка з'єднання до заданої поради;
- Впровадження (англ. introduction) — зміна структури класу та/або зміна ієрархії успадкування для додавання функціональності аспекту в чужорідний код;
- Переплетення (англ. weaving) — зв'язування об'єктів з відповідними аспектами (можливе на етапі компіляції, завантаження або виконання програми).
Переваги використання
Аспектно-орієнтований підхід розглядає програмну систему як набір модулів, кожен з яких виражає особливість функціонування системи. При проектуванні системи розробник вибирає модулі так, щоб кожен із них реалізовував певну функціональну вимогу. Натомість в рамках об'єктно-орієнтованого підходу реалізація деяких вимог до програми часто не може бути локалізована в окремому модулі, в результаті чого код, що відображає такі функціональні завдання, буде знаходитись у різних модулях (наприклад, код ведення журналу подій).
Як підтверджують дослідження, аспектно-орієнтований підхід зменшує складність розроблюваного коду. Традиційною характеристикою розміру програм є кількість рядків вихідного коду. Наприклад, однією з таких метрик є оцінки Холстеда. Основу цієї метрики складають чотири вимірювані характеристики програми:
- Число унікальних операторів програми;
- Число унікальних операндів програми;
- Загальне число операторів в програмі;
- Загальне число операндів в програмі.
Друга найінформативніша група оцінок складності програм — метрики складності потоку управління програм. Як правило, за допомогою цих оцінок оперують або щільністю керівних переходів усередині програм, або взаємозв'язками цих переходів.
В результаті проведених досліджень на основі розробки системи авторизації з використанням аспектно-орієнтованого підходу встановлено, що метрики коду в цілому на 10–40% нижче ніж в ООП реалізації, що позитивним чином впливає на систему, оскільки на кожну метрику (ресурс) буде витрачено менше часу.
Способи застосування
Використання аспектно-орієнтованого підходу не вимагає повної відмови від об’єктно-орієнтованої реалізації, оскільки його можна впроваджувати лише частково. Більше того, такий підхід ефективно доповнює об'єктно-орієнтований код. Як показують дослідження аспектно-орієнтованих програм, близько 2% їх коду пов'язана з специфічними механізмами мови аспектно-орієнтованого програмування (наприклад, AspectJ); 12% - з базовими механізмами; 86% є об'єктно-орієнтованим.
Саме тому існують роботи по вдосконаленню програмних каркасів (англ. frameworks) за допомогою технології аспектів. Об'єктно-орієнтований програмний каркас містить компоненти, що становлять ядро функціонування, та компоненти, що містять додаткову функціональність. При використанні фреймворку стандартна функціональність розширюється за допомогою наслідування. Застосування аспектно-орієнтованого підходу дозволяє, з одного боку, розділити на окремі модулі наскрізну функціональність ядра, з іншого боку — легко додавати функціональність використовуючи аспекти ядра.
Ефективно можна застосовувати аспектно-орієнтоване програмування для оптимізації шаблонів проектування. Першою значною перевагою є здатність локалізувати код шаблону проектування в одному аспекті або парі тісно пов'язаних аспектів (на відміну від мови Java, де код шаблону може бути розкиданим по багатьом класам). Можливість бачити весь код в одному місці має ряд суттєвих переваг:
- Читачі коду можуть легше зрозуміти шаблон, якщо він весь знаходиться в одному місці;
- Розробники можуть використати зрозумілі назви для опису аспекту, що дозволить іншим розробникам легше зрозуміти шаблон;
- Якщо виникла необхідність змінити реалізацію шаблону, це можна зробити в одному місці, замість того, щоб шукати реалізацію по всій системі.
Дослідження використання аспектно-орієнтованого підходу проводилися в різних галузях. Наприклад, при розробці мобільних Java-ігор можна оптимізувати керування ігровим екраном, створення ігрових персонажів, завантаження і відображення малюнків тощо. Крім того, за допомогою точок з'єднання можна впроваджувати необов'язкову функціональність, наприклад відображення фонових зображень лише на пристроях певного типу.
Запропоновані методи застосування аспектно-орієнтованого підходу для розробки багатоагентних систем, де агент – автономна програмна одиниця, що при виконанні завдання реагує на навколишнє середовище та спілкується з іншими програмами-агентами (наприклад, програми купівля товарів в Інтернеті). В даному випадку аспекти можна застосувати для проектування кількох платформ комунікації агентів, додаткових можливостей навчання, різних ролей та протоколів взаємодії.
Недоліки
Є кілька причин, що стримують розробників від активного застосування технології аспектно-орієнтованого програмування (хоча ці недоліки спростовуються в деяких роботах):
- Недостатня розвиненість мовних засобів та конструкцій, що дозволяють запрограмувати аспекти;
- Необхідність розробки найкращих компіляторів для оптимізації аспектного коду;
- Відсутність достатньо розвинутих засобів підтвердження ефективності використання даного підходу в кожному конкретному випадку;
- Певні складнощі відлагодження та тестування розроблених програм.
Проте найважливішим стримувальним фактором є необхідність формування своєрідного мислення для проектування систем в термінах наскрізної функціональності. Тому аспектно-орієнтований підхід не здобув значного поширення, проте є перспективною технологією для вивчення.
- Зворотна сумісність — всі Java-програми повинні успішно виконуватися на AspectJ;
- Сумісність платформи — всі AspectJ-програми повинні запускатися на стандартній віртуальній машині;
- Сумісність засобів розробки — включає середовище розробки, засоби документування і проектування;
- Сумісність програмування — програмування на AspectJ повинне справляти враження розширення мови Java.
Засоби розробки
Для практичного впровадження аспектно-орієнтованого підходу використовуються різні інструментальні засоби, одним з яких є розширення мови Java під назвою AspectJ, що дозволяє впровадити аспектну функціональність в розроблювані Java-проекти за допомогою розширення синтаксису або анотацій. При створенні AspectJ перед її властивостями ставилися наступні вимоги:
- Зворотна сумісність — всі Java-програми повинні успішно виконуватися на AspectJ;
- Сумісність платформи – всі AspectJ-програми повинні запускатися на стандартній віртуальній машині;
- Сумісність засобів розробки — включає середовище розробки, засоби документування і проектування;
- Сумісність програмування — програмування на AspectJ повинне справляти враження розширення мови Java.
Крім цього, існують й інші Java-фреймворки для роботи з аспектами, порівняльна характеристика яких наводиться у таблиці:
Feature/issue | AspectJ | AspectWerkz | JBoss AOP | Spring | dynaaop |
---|---|---|---|---|---|
Weaving time | Compile/load-time | Compile/load-time | Compile/load/run | Runtime | Runtime |
Transparency | Transparent | Transparent | Choice | Factory | Factory |
Per-instance aspects | No | No | Yes | Yes | Yes |
Constructor, field, throw, and cflow interception | All | All | Some | Some | None |
Annotations | No | Yes | Yes | Yes | No |
Standalone | Yes | Yes | Yes | No | Yes |
AOP Alliance | No | No | No | Yes | Yes |
Affiliation | IBM | BEA | JBoss | Spring | ? |
Примітки
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.37.4987&rep=rep1&type=pdf
- . Архів оригіналу за 22 листопада 2011. Процитовано 17 жовтня 2011.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - (PDF). Архів оригіналу (PDF) за 6 лютого 2012. Процитовано 17 жовтня 2011.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - (PDF). Архів оригіналу (PDF) за 6 лютого 2012. Процитовано 17 жовтня 2011.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - (PDF). Архів оригіналу (PDF) за 20 січня 2010. Процитовано 17 жовтня 2011.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 6 березня 2016. Процитовано 17 жовтня 2011.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 4 березня 2016. Процитовано 17 жовтня 2011.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.91.9134&rep=rep1&type=pdf
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.66.1702&rep=rep1&type=pdf
- . Архів оригіналу за 16 серпня 2011. Процитовано 17 жовтня 2011.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 8 листопада 2016. Процитовано 17 жовтня 2011.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 30 вересня 2007. Процитовано 22 квітня 2007.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title ()
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Aspektno oriyentovane programuvannya AOP angl aspect oriented programming AOP paradigma programuvannya yaka dozvolyaye viokremiti perehresnu naskriznu funkcionalnist cross cutting concern Meta stvorennyaSuchasni programni sistemi chasto virishuyut velicheznu kilkist nadskladnih zavdan sho potrebuyut horoshih inzhenernih navichok vid yihnih rozrobnikiv ta nadijnosti instrumentalnih zasobiv rozrobki Pri zrostanni skladnosti takih sistem zrostaye i programnij kod rozrobniku staye vse vazhche ohopiti vsi detali realizaciyi sistemi Pri pidtrimci velikih programnih zasobiv zrostaye chas znahodzhennya ta vipravlennya pomilki uskladnyuyetsya dodavannya novih harakteristik oskilki staye vse vazhche viznachiti naskilki zmini vplinut na sistemu chi ne vnesut dodatkovih pomilok ta defektiv Dlya virishennya takih zavdan zastosovuyut riznomanitni inzhenerni zasobi yak ot bagatofunkcionalni seredovisha rozrobki shabloni proektuvannya gotovi programni karkasi tosho Chasto zgaduvanim nedolikom ob yektno oriyentovanogo pidhodu ye nemozhlivist lokalizaciyi naskriznoyi funkcionalnosti v odnomu klasi Yak priklad takoyi funkcionalnosti chasto nazivayut neobhidnist vedennya zhurnaliv podij keruvannya vinyatkovimi situaciyami perevirku prav dostupu Kod sho vidpovidaye za danu funkcionalnist chasto rozkidanij po riznih klasah Ce z odnogo boku ne dozvolyaye skoncentruvati uvagu na osnovnij biznes logici klasu i uskladnyuye chitannya kodu Z inshogo boku uskladnyuyetsya vnesennya zmin u metodi roboti naskriznoyi funkcionalnosti sho ne zavzhdi mozhna vipraviti pravilnim vikoristannyam interfejsiv chi shabloniv proektuvannya Narazi aspektno oriyentovanij pidhid chasto vikoristovuyut dlya realizaciyi vishenavedenih prikladiv prote yak zauvazhuyut deyaki avtori na comu sfera zastosuvannya aspektno oriyentovanogo pidhodu ne obmezhuyutsya oskilki vin mozhe buti vikoristanij dlya proektuvannya bud yakih sistem sho mistyat naskriznu funkcionalnist V rezultati nayavnosti zajvoyi perehresnoyi funkcionalnosti rozroblyuvanij modul mistit zaplutanij kod sho zadovolnyaye rizni programni vimogi Negativni vlastivosti takogo kodu Rozkidanij kod Oskilki naskrizna funkcionalnist zachipaye bagato moduliv sistemi to j vikliki ciyeyi funkcionalnosti budut rozkidani po vsij sistemi Napriklad yaksho programa mistit zasobi monitoringu produktivnosti roboti z bazoyu danih to j vikliki ciyeyi funkcionalnosti budut rozmisheni vsyudi de potribno pracyuvati z bazoyu danih Nayavnist rozkidanogo kodu maye negativnij vpliv na proektuvannya ta realizaciyu sistemi Vazhkist vidslidkovuvannya priznachennya modulya oskilki vin mistit odnochasno funkcionalnist dlya zadovolennya riznih vimog Skladnist abo nemozhlivist povtornogo vikoristannya modulya u programah z inshoyu naskriznoyu funkcionalnistyu Velika jmovirnist pomilok Nayavnist kodu dlya realizaciyi funkcionalnosti riznogo rodu v odnomu moduli mozhe prizvesti do togo sho zhodne iz zavdan ne otrimaye dostatnoyi uvagi rozrobnika Vazhkist suprovodu Yaksho z yavlyayetsya neobhidnist u zmini naskriznoyu funkcionalnosti taka zmina zachipaye bagato moduliv sistemi sho v rezultati mozhe prizvesti do problem sumisnosti Dlya virishennya zavdannya lokalizaciyi naskriznoyi funkcionalnosti bula rozroblena metodologiya aspektno oriyentovanogo programuvannya AOP Osnovni ideyi AOP buli sformulovani ideologom metodologiyi G Kinzhalesom Vin takozh rozrobiv najpopulyarnishu nadbudovu movi programuvannya Java dlya roboti z aspektami AspectJ Osnovni ponyattyaDo osnovnih ponyat aspektno oriyenovanogo programuvannya nalezhat Aspekt angl aspect modul abo klas yakij realizuye naskriznu funkcionalnist Aspekt zminyuye povedinku inshogo kodu zastosovuyuchi poradi v tochkah z yednannya viznachenih deyakim zrizom Porada angl advice dodatkova logika kod yakij povinen buti viklikanij z tochki z yednannya Porada mozhe buti vikonana do pislya abo zamist tochki z yednannya Cil angl target ob yekt do yakogo budut zastosovuvatisya poradi Tochka z yednannya angl join point tochka v vikonuvanij programi viklik metodu stvorennya ob yekta zvernennya do zminnoyi de slid zastosuvati poradu Zriz angl pointcut nabir tochok z yednannya Zriz viznachaye chi pidhodit dana tochka z yednannya do zadanoyi poradi Vprovadzhennya angl introduction zmina strukturi klasu ta abo zmina iyerarhiyi uspadkuvannya dlya dodavannya funkcionalnosti aspektu v chuzhoridnij kod Perepletennya angl weaving zv yazuvannya ob yektiv z vidpovidnimi aspektami mozhlive na etapi kompilyaciyi zavantazhennya abo vikonannya programi Perevagi vikoristannyaAspektno oriyentovanij pidhid rozglyadaye programnu sistemu yak nabir moduliv kozhen z yakih virazhaye osoblivist funkcionuvannya sistemi Pri proektuvanni sistemi rozrobnik vibiraye moduli tak shob kozhen iz nih realizovuvav pevnu funkcionalnu vimogu Natomist v ramkah ob yektno oriyentovanogo pidhodu realizaciya deyakih vimog do programi chasto ne mozhe buti lokalizovana v okremomu moduli v rezultati chogo kod sho vidobrazhaye taki funkcionalni zavdannya bude znahoditis u riznih modulyah napriklad kod vedennya zhurnalu podij Yak pidtverdzhuyut doslidzhennya aspektno oriyentovanij pidhid zmenshuye skladnist rozroblyuvanogo kodu Tradicijnoyu harakteristikoyu rozmiru program ye kilkist ryadkiv vihidnogo kodu Napriklad odniyeyu z takih metrik ye ocinki Holsteda Osnovu ciyeyi metriki skladayut chotiri vimiryuvani harakteristiki programi Chislo unikalnih operatoriv programi Chislo unikalnih operandiv programi Zagalne chislo operatoriv v programi Zagalne chislo operandiv v programi Druga najinformativnisha grupa ocinok skladnosti program metriki skladnosti potoku upravlinnya program Yak pravilo za dopomogoyu cih ocinok operuyut abo shilnistyu kerivnih perehodiv useredini program abo vzayemozv yazkami cih perehodiv V rezultati provedenih doslidzhen na osnovi rozrobki sistemi avtorizaciyi z vikoristannyam aspektno oriyentovanogo pidhodu vstanovleno sho metriki kodu v cilomu na 10 40 nizhche nizh v OOP realizaciyi sho pozitivnim chinom vplivaye na sistemu oskilki na kozhnu metriku resurs bude vitracheno menshe chasu Sposobi zastosuvannyaVikoristannya aspektno oriyentovanogo pidhodu ne vimagaye povnoyi vidmovi vid ob yektno oriyentovanoyi realizaciyi oskilki jogo mozhna vprovadzhuvati lishe chastkovo Bilshe togo takij pidhid efektivno dopovnyuye ob yektno oriyentovanij kod Yak pokazuyut doslidzhennya aspektno oriyentovanih program blizko 2 yih kodu pov yazana z specifichnimi mehanizmami movi aspektno oriyentovanogo programuvannya napriklad AspectJ 12 z bazovimi mehanizmami 86 ye ob yektno oriyentovanim Same tomu isnuyut roboti po vdoskonalennyu programnih karkasiv angl frameworks za dopomogoyu tehnologiyi aspektiv Ob yektno oriyentovanij programnij karkas mistit komponenti sho stanovlyat yadro funkcionuvannya ta komponenti sho mistyat dodatkovu funkcionalnist Pri vikoristanni frejmvorku standartna funkcionalnist rozshiryuyetsya za dopomogoyu nasliduvannya Zastosuvannya aspektno oriyentovanogo pidhodu dozvolyaye z odnogo boku rozdiliti na okremi moduli naskriznu funkcionalnist yadra z inshogo boku legko dodavati funkcionalnist vikoristovuyuchi aspekti yadra Efektivno mozhna zastosovuvati aspektno oriyentovane programuvannya dlya optimizaciyi shabloniv proektuvannya Pershoyu znachnoyu perevagoyu ye zdatnist lokalizuvati kod shablonu proektuvannya v odnomu aspekti abo pari tisno pov yazanih aspektiv na vidminu vid movi Java de kod shablonu mozhe buti rozkidanim po bagatom klasam Mozhlivist bachiti ves kod v odnomu misci maye ryad suttyevih perevag Chitachi kodu mozhut legshe zrozumiti shablon yaksho vin ves znahoditsya v odnomu misci Rozrobniki mozhut vikoristati zrozumili nazvi dlya opisu aspektu sho dozvolit inshim rozrobnikam legshe zrozumiti shablon Yaksho vinikla neobhidnist zminiti realizaciyu shablonu ce mozhna zrobiti v odnomu misci zamist togo shob shukati realizaciyu po vsij sistemi Doslidzhennya vikoristannya aspektno oriyentovanogo pidhodu provodilisya v riznih galuzyah Napriklad pri rozrobci mobilnih Java igor mozhna optimizuvati keruvannya igrovim ekranom stvorennya igrovih personazhiv zavantazhennya i vidobrazhennya malyunkiv tosho Krim togo za dopomogoyu tochok z yednannya mozhna vprovadzhuvati neobov yazkovu funkcionalnist napriklad vidobrazhennya fonovih zobrazhen lishe na pristroyah pevnogo tipu Zaproponovani metodi zastosuvannya aspektno oriyentovanogo pidhodu dlya rozrobki bagatoagentnih sistem de agent avtonomna programna odinicya sho pri vikonanni zavdannya reaguye na navkolishnye seredovishe ta spilkuyetsya z inshimi programami agentami napriklad programi kupivlya tovariv v Interneti V danomu vipadku aspekti mozhna zastosuvati dlya proektuvannya kilkoh platform komunikaciyi agentiv dodatkovih mozhlivostej navchannya riznih rolej ta protokoliv vzayemodiyi NedolikiYe kilka prichin sho strimuyut rozrobnikiv vid aktivnogo zastosuvannya tehnologiyi aspektno oriyentovanogo programuvannya hocha ci nedoliki sprostovuyutsya v deyakih robotah Nedostatnya rozvinenist movnih zasobiv ta konstrukcij sho dozvolyayut zaprogramuvati aspekti Neobhidnist rozrobki najkrashih kompilyatoriv dlya optimizaciyi aspektnogo kodu Vidsutnist dostatno rozvinutih zasobiv pidtverdzhennya efektivnosti vikoristannya danogo pidhodu v kozhnomu konkretnomu vipadku Pevni skladnoshi vidlagodzhennya ta testuvannya rozroblenih program Prote najvazhlivishim strimuvalnim faktorom ye neobhidnist formuvannya svoyeridnogo mislennya dlya proektuvannya sistem v terminah naskriznoyi funkcionalnosti Tomu aspektno oriyentovanij pidhid ne zdobuv znachnogo poshirennya prote ye perspektivnoyu tehnologiyeyu dlya vivchennya Zvorotna sumisnist vsi Java programi povinni uspishno vikonuvatisya na AspectJ Sumisnist platformi vsi AspectJ programi povinni zapuskatisya na standartnij virtualnij mashini Sumisnist zasobiv rozrobki vklyuchaye seredovishe rozrobki zasobi dokumentuvannya i proektuvannya Sumisnist programuvannya programuvannya na AspectJ povinne spravlyati vrazhennya rozshirennya movi Java Zasobi rozrobkiDlya praktichnogo vprovadzhennya aspektno oriyentovanogo pidhodu vikoristovuyutsya rizni instrumentalni zasobi odnim z yakih ye rozshirennya movi Java pid nazvoyu AspectJ sho dozvolyaye vprovaditi aspektnu funkcionalnist v rozroblyuvani Java proekti za dopomogoyu rozshirennya sintaksisu abo anotacij Pri stvorenni AspectJ pered yiyi vlastivostyami stavilisya nastupni vimogi Zvorotna sumisnist vsi Java programi povinni uspishno vikonuvatisya na AspectJ Sumisnist platformi vsi AspectJ programi povinni zapuskatisya na standartnij virtualnij mashini Sumisnist zasobiv rozrobki vklyuchaye seredovishe rozrobki zasobi dokumentuvannya i proektuvannya Sumisnist programuvannya programuvannya na AspectJ povinne spravlyati vrazhennya rozshirennya movi Java Krim cogo isnuyut j inshi Java frejmvorki dlya roboti z aspektami porivnyalna harakteristika yakih navoditsya u tablici Feature issue AspectJ AspectWerkz JBoss AOP Spring dynaaopWeaving time Compile load time Compile load time Compile load run Runtime RuntimeTransparency Transparent Transparent Choice Factory FactoryPer instance aspects No No Yes Yes YesConstructor field throw and cflow interception All All Some Some NoneAnnotations No Yes Yes Yes NoStandalone Yes Yes Yes No YesAOP Alliance No No No Yes YesAffiliation IBM BEA JBoss Spring Primitkihttp citeseerx ist psu edu viewdoc download doi 10 1 1 37 4987 amp rep rep1 amp type pdf Arhiv originalu za 22 listopada 2011 Procitovano 17 zhovtnya 2011 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya PDF Arhiv originalu PDF za 6 lyutogo 2012 Procitovano 17 zhovtnya 2011 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya PDF Arhiv originalu PDF za 6 lyutogo 2012 Procitovano 17 zhovtnya 2011 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya PDF Arhiv originalu PDF za 20 sichnya 2010 Procitovano 17 zhovtnya 2011 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 6 bereznya 2016 Procitovano 17 zhovtnya 2011 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 4 bereznya 2016 Procitovano 17 zhovtnya 2011 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya http citeseerx ist psu edu viewdoc download doi 10 1 1 91 9134 amp rep rep1 amp type pdf http citeseerx ist psu edu viewdoc download doi 10 1 1 66 1702 amp rep rep1 amp type pdf Arhiv originalu za 16 serpnya 2011 Procitovano 17 zhovtnya 2011 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 8 listopada 2016 Procitovano 17 zhovtnya 2011 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 30 veresnya 2007 Procitovano 22 kvitnya 2007 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi