Русская Википедия:Аспектно-ориентированная разработка программного обеспечения
Шаблон:Нет источников Аспектно-ориентированная разработка программного обеспечения — Шаблон:Нет АИ 2. АОРПО позволяет реализовать отдельно различные проблемы и автоматически объединять их в работоспособные системы.
Аспектно-ориентированная разработка программного обеспечения сосредотачивается на идентификации, спецификации и представлении сквозных проблем и их преобразование в отдельные модули а также их автоматизированную сборку в рабочую системуШаблон:Нет АИ.
Обзор
Суть аспектно-ориентированной разработки
Квантификация и забывчивость
Самое известное определение природы АОРПО принадлежит Филмену и Фридману, которые характеризовали АОРПО в виде записи аспектно-ориентированность = квантификация + забывчивость.[1]
Забывчивость обозначает, что программа нет знает, какие аспекты изменяют её. Квантификация обозначает, что аспекты могут влиять на многие части в программы.
Вместо термина забывчивость часто используется понятие невторгаемости. Термин невторгаемость обозначает то, что аспекты могут добавить поведение к программе, не внося изменения в саму программу, но при этом не предполагает, что программа ничего не знают об аспектах.
Определение Филмена ориентации аспекта часто считают слишком ограниченным.[2] Многие аспектно-ориентированные подходы используют аннотации, чтобы явно указать расположение мест, где аспекты определяют поведение. Эти подходы требуют ручного контроля и модификации других модулей в системе и поэтому являются вторгающимися. Кроме того АОРПО не обязательно требует квантификации. Аспекты могут использоваться, чтобы изолировать функции, реализация которых была бы иначе перепутана с другими функциями. Такие аспекты не обязательно используют квантификацию во многих точках системы.Шаблон:Нет АИ
Поэтому особенности аспектно-ориентированной разработки лучше характеризуются модульным принципом реализации сквозных проблем, абстракциями аспектно-ориентированных языков, которые позволяют использовать модульность, и аспектно-ориентированными операторамиШаблон:Нет АИ.
Понятия и терминология
Тела совета
Кроме того существуют более общие способы описать упорядочивание тел совета с помощью графиков частичного порядка.[3].
Пример
На рисунке 1 показан типичный пример сквозной проблемы в графическом редакторе, взятый от литературы по АОРПОШаблон:Нет АИ. В нём показан абстрактный класс Shape, который может быть перемещен. Каждый раз, когда он перемещен, дисплей должен быть обновлен. Так же на рисунке 1 так же показаны два подкласса Shape: Line и Point, которые реализуют его функциональность. Проблема обновления дисплея рассеяна в реализации обоих подклассов. На рисунке 2 показана аспектно-ориентированная реализация той же самой системы, где функциональность обновления дисплея находится в отдельном аспекте.
Дескриптор среза move на рисунке 2 перехватывает выполнение методов moveBy подклассов Shape и вызывает обновления дисплея после того как их выполнение закончится. В результате проблема становится отдельным модулем, что облегчает развитие и поддержку системы.Шаблон:Нет АИ
Аспектно-ориентированное программирование (АОП)
АОП включает методы программирования и инструменты, которые поддерживают модульность проблем на уровне исходного кода.
Так же как и любой другой язык программирования, аспектно-ориентированный язык обычно состоит из двух частей: спецификация языка и реализация. Следовательно, есть две соответствующих области применения: поддержка разработчиков языка и поддержка разработчиков приложений.
Поддержка разработчиков приложений
Аспектно-ориентированный подход обеспечивает реализацию проблем и способы, как составить эти независимо реализованные проблемы. Но поскольку основным руководством для разработчиков приложений является спецификация такого языка, то не гарантируется, что разработчик приложений сделает высококачественные аспектно-ориентированные программы. Основные области использования:
- основные концепции аспектно-ориентированного программирования
- программирование на аспектно-ориентированных языках
- составление программных компонентов, написанных на любом языке с помощью аспектно-ориентированных методов композиции
- среды аспектно-ориентированного программирования
Поддержка разработчиков языка
Области использования при поддержке построения аспектных языков:
- построение языков для определенных областей и/или платформ
- перенос принципов реализации аспектно-ориентированных сред выполнения, в том числе:
- интерпретаторов
- компиляторов
- виртуальных машин
Использование
- JBoss Application Server (JBoss AS) — свободный сервер приложений java с открытым исходным кодом, который поддерживает Java EE. Ядро AS JBoss интегрировано с аспектно-ориентированным языком программирования JBoss. Сервер приложений использует AOP JBoss, чтобы развернуть службы, такие как управление безопасностью и управление транзакциями.[4]
Примечания
Литература
- 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
- ↑ 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
- ↑ Шаблон:Cite web