Русская Википедия:Аспектно-ориентированная разработка программного обеспечения

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Нет источников Аспектно-ориентированная разработка программного обеспечения — Шаблон:Нет АИ 2. АОРПО позволяет реализовать отдельно различные проблемы и автоматически объединять их в работоспособные системы.

Шаблон:Нет АИ 2

Аспектно-ориентированная разработка программного обеспечения сосредотачивается на идентификации, спецификации и представлении сквозных проблем и их преобразование в отдельные модули а также их автоматизированную сборку в рабочую системуШаблон:Нет АИ.

Обзор

Суть аспектно-ориентированной разработки

Шаблон:Нет АИ 2

Квантификация и забывчивость

Самое известное определение природы АОРПО принадлежит Филмену и Фридману, которые характеризовали АОРПО в виде записи аспектно-ориентированность = квантификация + забывчивость.[1]

Забывчивость обозначает, что программа нет знает, какие аспекты изменяют её. Квантификация обозначает, что аспекты могут влиять на многие части в программы.

Вместо термина забывчивость часто используется понятие невторгаемости. Термин невторгаемость обозначает то, что аспекты могут добавить поведение к программе, не внося изменения в саму программу, но при этом не предполагает, что программа ничего не знают об аспектах.

Определение Филмена ориентации аспекта часто считают слишком ограниченным.[2] Многие аспектно-ориентированные подходы используют аннотации, чтобы явно указать расположение мест, где аспекты определяют поведение. Эти подходы требуют ручного контроля и модификации других модулей в системе и поэтому являются вторгающимися. Кроме того АОРПО не обязательно требует квантификации. Аспекты могут использоваться, чтобы изолировать функции, реализация которых была бы иначе перепутана с другими функциями. Такие аспекты не обязательно используют квантификацию во многих точках системы.Шаблон:Нет АИ

Поэтому особенности аспектно-ориентированной разработки лучше характеризуются модульным принципом реализации сквозных проблем, абстракциями аспектно-ориентированных языков, которые позволяют использовать модульность, и аспектно-ориентированными операторамиШаблон:Нет АИ.

Понятия и терминология

Тела совета

Шаблон:Нет АИ 2

Кроме того существуют более общие способы описать упорядочивание тел совета с помощью графиков частичного порядка.[3].

Пример

Файл:FigureEditor.jpg
Рисунок 1 — Редактор рисунка в UML
Файл:AOFigureEditor.jpg
Рисунок 2 — Аспектно-ориентированный редактор рисунка в UML

На рисунке 1 показан типичный пример сквозной проблемы в графическом редакторе, взятый от литературы по АОРПОШаблон:Нет АИ. В нём показан абстрактный класс Shape, который может быть перемещен. Каждый раз, когда он перемещен, дисплей должен быть обновлен. Так же на рисунке 1 так же показаны два подкласса Shape: Line и Point, которые реализуют его функциональность. Проблема обновления дисплея рассеяна в реализации обоих подклассов. На рисунке 2 показана аспектно-ориентированная реализация той же самой системы, где функциональность обновления дисплея находится в отдельном аспекте.

Дескриптор среза move на рисунке 2 перехватывает выполнение методов moveBy подклассов Shape и вызывает обновления дисплея после того как их выполнение закончится. В результате проблема становится отдельным модулем, что облегчает развитие и поддержку системы.Шаблон:Нет АИ

Аспектно-ориентированное программирование (АОП)

Шаблон:Main

АОП включает методы программирования и инструменты, которые поддерживают модульность проблем на уровне исходного кода.

Так же как и любой другой язык программирования, аспектно-ориентированный язык обычно состоит из двух частей: спецификация языка и реализация. Следовательно, есть две соответствующих области применения: поддержка разработчиков языка и поддержка разработчиков приложений.

Поддержка разработчиков приложений

Аспектно-ориентированный подход обеспечивает реализацию проблем и способы, как составить эти независимо реализованные проблемы. Но поскольку основным руководством для разработчиков приложений является спецификация такого языка, то не гарантируется, что разработчик приложений сделает высококачественные аспектно-ориентированные программы. Основные области использования:

  • основные концепции аспектно-ориентированного программирования
  • программирование на аспектно-ориентированных языках
  • составление программных компонентов, написанных на любом языке с помощью аспектно-ориентированных методов композиции
  • среды аспектно-ориентированного программирования

Поддержка разработчиков языка

Области использования при поддержке построения аспектных языков:

  • построение языков для определенных областей и/или платформ
  • перенос принципов реализации аспектно-ориентированных сред выполнения, в том числе:
    • интерпретаторов
    • компиляторов
    • виртуальных машин

Использование

  • 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

Ссылки

Шаблон:Software Engineering

  1. 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)
  2. 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.
  3. 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
  4. Шаблон:Cite web