Аспектно-ориентированная разработка программного обеспечения — . АОРПО позволяет реализовать отдельно различные проблемы и автоматически объединять их в работоспособные системы.
Аспектно-ориентированная разработка программного обеспечения сосредотачивается на идентификации, спецификации и представлении сквозных проблем и их преобразование в отдельные модули а также их автоматизированную сборку в рабочую систему.
Обзор
Суть аспектно-ориентированной разработки
Квантификация и забывчивость Самое известное определение природы АОРПО принадлежит Филмену и Фридману, которые характеризовали АОРПО в виде записи аспектно-ориентированность = квантификация + забывчивость.Filman, R. and D. Friedman. «Aspect-oriented programming is quantification and Obliviousness.» Proceedings of the Workshop on Advanced Separation of Concerns, in conjunction with OOPSLA’00 (2000)
Забывчивость обозначает, что программа нет знает, какие аспекты изменяют её. Квантификация обозначает, что аспекты могут влиять на многие части в программы.
Вместо термина забывчивость часто используется понятие невторгаемости. Термин невторгаемость обозначает то, что аспекты могут добавить поведение к программе, не внося изменения в саму программу, но при этом не предполагает, что программа ничего не знают об аспектах.
Определение Филмена ориентации аспекта часто считают слишком ограниченным.Rashid, A and A. Moreira. «Domain Models are NOT Aspect Free.» Proceedings of the 9th Internation Conference on Model-Driven Engineering Languages and Systems (Models06). Genoa, Italy. LNCS 4199. Springer-Verlag (2006): 155—169. Многие аспектно-ориентированные подходы используют аннотации, чтобы явно указать расположение мест, где аспекты определяют поведение. Эти подходы требуют ручного контроля и модификации других модулей в системе и поэтому являются вторгающимися. Кроме того АОРПО не обязательно требует квантификации. Аспекты могут использоваться, чтобы изолировать функции, реализация которых была бы иначе перепутана с другими функциями. Такие аспекты не обязательно используют квантификацию во многих точках системы.
Поэтому особенности аспектно-ориентированной разработки лучше характеризуются модульным принципом реализации сквозных проблем, абстракциями аспектно-ориентированных языков, которые позволяют использовать модульность, и аспектно-ориентированными операторами.
Понятия и терминология Тела совета
Кроме того существуют более общие способы описать упорядочивание тел совета с помощью графиков частичного порядка.William Harrison, Harold Ossher, Peri Tarr. General Composition of Software Artifacts, Proceedings of Software Composition Workshop 2006, March 2006, Springer-Verlag, LNCS 4089, pages 194—210.
Пример
На рисунке 1 показан типичный пример сквозной проблемы в графическом редакторе, взятый от литературы по АОРПО. В нём показан абстрактный класс Shape, который может быть перемещен. Каждый раз, когда он перемещен, дисплей должен быть обновлен. Так же на рисунке 1 так же показаны два подкласса Shape: Line и Point, которые реализуют его функциональность. Проблема обновления дисплея рассеяна в реализации обоих подклассов. На рисунке 2 показана аспектно-ориентированная реализация той же самой системы, где функциональность обновления дисплея находится в отдельном аспекте.
Дескриптор среза move на рисунке 2 перехватывает выполнение методов moveBy подклассов Shape и вызывает обновления дисплея после того как их выполнение закончится. В результате проблема становится отдельным модулем, что облегчает развитие и поддержку системы.
Аспектно-ориентированное программирование (АОП)
АОП включает методы программирования и инструменты, которые поддерживают модульность проблем на уровне исходного кода.
Так же как и любой другой язык программирования, аспектно-ориентированный язык обычно состоит из двух частей: спецификация языка и реализация. Следовательно, есть две соответствующих области применения: поддержка разработчиков языка и поддержка разработчиков приложений.
Поддержка разработчиков приложений
Аспектно-ориентированный подход обеспечивает реализацию проблем и способы, как составить эти независимо реализованные проблемы. Но поскольку основным руководством для разработчиков приложений является спецификация такого языка, то не гарантируется, что разработчик приложений сделает высококачественные аспектно-ориентированные программы. Основные области использования: основные концепции аспектно-ориентированного программирования программирование на аспектно-ориентированных языках составление программных компонентов, написанных на любом языке с помощью аспектно-ориентированных методов композиции среды аспектно-ориентированного программирования
Поддержка разработчиков языка
Области использования при поддержке построения аспектных языков: построение языков для определенных областей и/или платформ перенос принципов реализации аспектно-ориентированных сред выполнения, в том числе: интерпретаторов компиляторов виртуальных машин
Использование JBoss Application Server (JBoss AS) — свободный сервер приложений java с открытым исходным кодом, который поддерживает Java EE. Ядро AS JBoss интегрировано с аспектно-ориентированным языком программирования JBoss. Сервер приложений использует AOP JBoss, чтобы развернуть службы, такие как управление безопасностью и управление транзакциями.
Примечания
Литература Kiczales, G., J. Lamping, A. Mendhekar, C. Maeda, C. Videira Lopes, J.-M. Loingtier, J. Irwin (1997): Aspect-Oriented Programming, in: Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP 1997), Jyvaskyla, Finland, Lecture Notes in Computer Science 1241, Springer-Verlag, 220—242 Murphy, G.C., R.J. Walker, E.L.A. Baniassad, M.P. Robillard, A. Lai, M.A. Kersten (2001): Does Aspect-Oriented Programming Work?, in: Communications of the ACM, October 2001, Vol. 44, No. 10, 75-77 Tarr, P., H. Ossher, W. Harrison, S.M. Sutton Jr. (1999): N Degrees of Separation: Multi- Dimensional Separation of Concerns, in: Proceedings of the 21st International Conference on Software Engineering (ICSE 1999), Los Angeles, California, USA, IEEE Computer Society Press, 107—119
Ссылки Aspect-Oriented Software Development Community and Conference European Network of Excellence on Aspect-Oriented Software Development Early Aspects: Aspect-Oriented Requirements Engineering and Architecture Design The Aspect-Oriented Software Architecture Design Portal Aspect-Oriented Software Engineering at Lancaster Composition Filters Model Demeter and Adaptive Programming IBM subject-oriented programming Aspect-Oriented Software Development Course, Bedir Tekinerdogan, Bilkent University
Категория:Архитектура программного обеспечения