Аспектно-ориентированная разработка программного обеспечения - Aspect-oriented software development

В вычисление, аспектно-ориентированная разработка программного обеспечения (AOSD) - это технология разработки программного обеспечения который стремится к новой модульности программные системы для того, чтобы изолировать второстепенные или вспомогательные функции от основной программы бизнес-логика. AOSD позволяет несколько заботы выражаться отдельно и автоматически объединяться в рабочие системы.

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

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

История

Аспектно-ориентированная разработка программного обеспечения описывает ряд подходов к модульности и композиции программного обеспечения, включая, в порядке публикации, отражение и протоколы метаобъектов, Составные фильтры,[1] разработан в Университет Твенте в Нидерландах, Предметно-ориентированное программирование[2] (позже расширен как Многомерное разделение проблем )[3] в IBM, Функционально-ориентированное программирование[4] в Техасском университете в Остине, Адаптивное программирование[5] в Северо-Восточный университет, США и Аспектно-ориентированное программирование (АОП)[6] в Исследовательский центр Пало-Альто. Период, термин аспектно-ориентированный был представлен Грегор Кичалес и его команда в Исследовательский центр Пало-Альто кто также первым разработал явную концепцию АОП и язык АОП под названием AspectJ который получил широкое признание и популярность в сообществе разработчиков Java.

В настоящее время несколько аспектно-ориентированные языки программирования доступны для множества языков и платформ.

Как только объектно-ориентированного программирования привели к развитию большого класса объектно-ориентированные методологии разработки АОП поощряет зарождающийся набор технологий разработки программного обеспечения, включая методологии работы с аспектами, методы моделирования (часто основанные на идеях Единый язык моделирования, UML) и технологии тестирования для оценки эффективности аспектных подходов. AOSD теперь относится к широкому спектру методов разработки программного обеспечения, которые поддерживают модуляризацию сквозные проблемы в программной системе, от разработка требований к управление бизнес-процессами, анализ и дизайн, архитектура, методы программирования и реализации, тестирование и обслуживание программного обеспечения техники.

Аспектно-ориентированная разработка программного обеспечения постоянно набирает популярность и является предметом ежегодной конференции - Международной конференции по аспектно-ориентированной разработке программного обеспечения, которая впервые проводится в 2002 году в Энсхеде, Нидерланды. AOSD - это быстро развивающаяся область. Это популярная тема Программная инженерия исследования, особенно в Европе, где исследовательская деятельность по AOSD координируется Европейская сеть передового опыта по аспектно-ориентированной разработке программного обеспечения (AOSD-Europe), финансируется Европейской комиссией.

Мотивация

Общие проблемы

Рисунок 3 - Схема архитектуры UML для телекоммуникационного компонента

В мотивация для аспектно-ориентированного программирования подходы проистекают из проблем, вызванных разбросом и запутыванием кода. Целью Аспектно-ориентированной разработки программного обеспечения является предоставление систематических средств для модуляции сквозных проблем.

Реализация заботы разбросанный если его код распределен по нескольким модулям. Проблема влияет на реализацию нескольких модулей. Его реализация не является модульной.

Реализация озабоченности есть запутанный если его код перемешан с кодом, реализующим другие задачи. Модуль, в котором происходит запутывание, не связан.

Рассеивание и запутывание часто идут рука об руку, хотя это разные концепции.

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

Пример 1: Вход в Apache Tomcat

Загрузка классов в Tomcat - это модульная задача по отношению к декомпозиции системы. Его реализация содержится в небольшом количестве классов и не связана с реализацией других задач.

Ведение журнала в Tomcat - это комплексная проблема. Его реализация распространяется на многие классы и пакеты и смешивается с реализацией многих других задач.

Пример 2: Согласование компонентов

На рисунке 3 представлена ​​диаграмма архитектуры UML телекоммуникационного компонента. Каждый прямоугольник соответствует процессу, который взаимодействует с другими процессами через соединители.

Примеры сквозных проблем

Увидеть Общая проблема # Примеры.

Проблемы, вызванные рассыпанием и запутыванием

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

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

Развитие системы

Модуль - это прежде всего единица самостоятельной разработки. Его можно реализовать в значительной степени независимо от других модулей. Модульность достигается за счет определения четко определенных интерфейсов между сегментами системы.[7]

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

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

Наконец, проблемы, не разделенные на модули, трудно тестировать изолированно. Зависимости проблемы от поведения других модулей явно не объявляются. Следовательно, реализация модульного теста для таких проблем требует знания о реализации многих модулей в системе.

Обслуживание и развитие системы

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

Обзор

Природа аспектно-ориентированности

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

Количественная оценка и забвение

Наиболее известное определение природы АОСД принадлежит Филману и Фридману, которые охарактеризовали АОСД с помощью уравнения аспектная ориентация = количественная оценка + забвение.[8]

АОП можно понимать как стремление делать количественные утверждения о поведении программ и иметь эти количественные оценки над программами, написанными невнимательными программистами.[8]

АОП - это желание сделать операторы вида: в программе P всякий раз, когда возникает условие C, выполнять действие A над программой P.[8]

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

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

Определение аспектной ориентации, данное Филманом, часто считается слишком ограничительным.[9] Многие аспектно-ориентированные подходы используют аннотации для явного объявления мест в системе, где аспекты вводят поведение. Эти подходы требуют ручного осмотра и модификации других модулей в системе и поэтому являются инвазивными. Более того, ориентация на аспекты не обязательно требует количественной оценки. Аспекты можно использовать для изоляции функций, реализация которых в противном случае была бы связана с другими функциями. Такие аспекты не обязательно используют количественную оценку в нескольких местах в системе.

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

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

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

Модель точки соединения

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

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

Динамическая интерпретация точек соединения позволяет предоставлять информацию времени выполнения, такую ​​как вызывающий или вызываемый метод, из точки соединения в сопоставление Pointcut. В настоящее время существуют различные модели точек соединения, и еще больше они находятся в стадии разработки. Они сильно зависят от основного языка программирования и языка AO.

Примеры точек соединения:

  • выполнение метода
  • вызов метода
  • доступ для чтения и записи полей
  • выполнение обработчика исключений
  • статическая и динамическая инициализация

Точка соединения вызова метода охватывает действия объекта, получающего вызов метода. Он включает в себя все действия, составляющие вызов метода, начиная с оценки всех аргументов и заканчивая возвратом.

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

На рисунке 6 показаны возможные точки соединения при выполнении небольшой объектно-ориентированной программы. Выделенные точки соединения включают выполнение метода moveBy (число, число) на Линия объект, вызовы методов moveBy (число, число) на Точка объекты в контексте Линия объект, выполнение этих методов в контексте Точка объекты и вызовы и выполнение setX (число) и setY (число) методы.

Обозначения Pointcut

Количественная оценка точек соединения выражается на уровне языка.. Эта количественная оценка может быть неявной в структуре языка или может быть выражена с помощью конструкции, подобной запросу, которая называется pointcut. Pointcut определяются как предикат синтаксического дерева программы и определяют интерфейс, который ограничивает то, какие элементы базовой программы отображаются в pointcut. Pointcut выбирает определенные точки соединения и значения в этих точках. Синтаксическая формулировка pointcut варьируется от подхода к подходу, но pointcut часто может быть составлен из других pointcut с использованием логических операторов AND, OR и NOT. Выражения Pointcut могут кратко фиксировать широкий спектр интересующих событий с использованием подстановочных знаков. Например, в AspectJ синтаксис, перемещение pointcut

Pointcut шаг: вызов(общественный * Рисунок.* (..))

выбирает каждый вызов общедоступных методов Figure.

Указатели cflow определяют точки соединения в зависимости от того, встречаются ли они в динамическом контексте других точек соединения. Например, в синтаксисе AspectJ cflow (перемещение ()) выбирает каждую точку соединения, которая возникает в динамическом контексте точек соединения, выбранных перемещением pointcut.

Pointcuts можно разделить на две категории:

  • Родственные pointcut, такие как call pointcut, соответствуют одному типу точки соединения с помощью подписи.
  • Неподходящие pointcut, такие как cflow pointcut, соответствуют всем видам точек соединения, используя множество свойств.

Консультационные органы

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

  • по достижении точки соединения, прежде чем выполнение продолжится с базовым
  • после базовой семантики для точки соединения. Когда точка соединения соответствует выполнению метода, совет может быть выполнен после того, как метод вернул или после создания исключения.
  • по достижении точки соединения с явным контролем над выполнением базовой семантики. Around advice может изменять поток управления программы.

Также были предоставлены более общие способы описания упорядочения тел советов в терминах графов частичного порядка.[10]

Когда выполнение точки соединения удовлетворяет выражению pointcut, выполняется базовый код и код рекомендации, связанный с точкой соединения. Совет может взаимодействовать с остальной системой через экземпляр точки соединения, содержащий отражающую информацию о контексте события, вызвавшего совет, например аргументы вызова метода или целевой экземпляр вызова.

Межтиповые объявления

Объявления типов позволяют программисту изменять статическую структуру программы, такую ​​как члены классов и иерархия классов. Могут быть вставлены новые члены, а классы могут быть перемещены вниз по иерархии классов.

Аспекты

Аспект - это модуль, который инкапсулирует проблему. Аспект состоит из точек, советов и межтиповых объявлений. В некоторых подходах аспект также может содержать классы и методы.

Аспект плетения

Плетение аспектов - это механизм композиции, который координирует аспекты с другими модулями системы. Это выполняется специализированным компилятором, называемым аспект ткач.

пример

Рисунок 6 - Редактор рисунков в UML
Рисунок 7 - Аспектно-ориентированный редактор фигур в UML

На рисунке 6 показан классический пример пересечения в примере редактора рисунков, взятом из литературы AOSD.[нужна цитата ] В примере описывается абстрактный класс Shape, который можно перемещать в редакторе. Каждый раз, когда фигура перемещается, необходимо обновлять отображение. На рисунке 6 также изображены два подкласса Shape, Line и Point, которые реализуют функциональность Shape. Проблема обновления отображения разбросана по реализации обоих подклассов. На рисунке 7 представлена ​​аспектно-ориентированная реализация той же системы, в которой аспект инкапсулирует функциональность обновления дисплея.

Дескриптор перемещения pointcut на рисунке 7[нужна цитата ] фиксирует все исполнения методов moveBy подкласса Shape и вызывает функцию обновления дисплея после продолжения выполнения. Концерн построен по модульному принципу, что упрощает его развитие и поддержку.

Аспектно-ориентированная разработка требований

Аспектно-ориентированный разработка требований (также называемые «Ранние аспекты») фокусируется на идентификации, спецификации и представлении свойств пересечения на требование уровень. Примеры таких свойств включают безопасность, мобильность, доступность и в реальном времени ограничения. Пересекающиеся свойства - это требования, сценарии использования или функции, которые имеют широкое влияние на другие требования или архитектура компоненты.

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

Конкретные области передового опыта в знаменателе анализа требований АО:

  • сам аспектно-ориентированный процесс требований,
  • нотации аспектно-ориентированных требований,
  • поддержка инструментальных средств аспектно-ориентированных требований,
  • принятие и интеграция аспектно-ориентированного проектирования требований, и
  • оценка / оценка аспектно-ориентированных требований.

Аспектно-ориентированное управление бизнес-процессами (AOBPM)

Снижение сложности - важный вопрос в области управления бизнес-процессами (BPM). Один из источников сложности кроется в множестве проблем, которые решает бизнес-процесс, таких как безопасность и конфиденциальность. В идеале эти проблемы следует определять отдельно от бизнес-процессов, поскольку они обычно охватывают несколько процессов и могут быть изменены на общем организационном уровне, а не на уровне конкретного процесса. Однако существующие системы управления бизнес-процессами не поддерживают такого рода моделирование.

Аспектно-ориентированное управление бизнес-процессами (AOBPM) пытается поддерживать разделение сквозных проблем от основных бизнес-проблем. Он определяет набор требований и формальную модель. Эта модель разработана с использованием Цветные сети Петри (CPN).

Подход реализован как услуга в YAWL на основе Сервис-Ориентированная Архитектура.

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

Результат оценки подходов AOBPM

Аспектно-ориентированная системная архитектура

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

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

  • сам процесс аспектно-ориентированной архитектуры,
  • нотации аспектно-ориентированной архитектуры,
  • поддержка инструментальных средств аспектно-ориентированной архитектуры,
  • принятие и интеграция аспектно-ориентированной архитектуры, и
  • оценка аспектно-ориентированной архитектуры.

Аспектно-ориентированное моделирование и дизайн

Аспектно-ориентированное проектирование преследует те же цели, что и любая деятельность по проектированию программного обеспечения, т.е. характеризует и определяет поведение и структуру программной системы. Его уникальный вклад в разработку программного обеспечения заключается в том, что проблемы, которые неизбежно разрознены и связаны с более традиционными подходами, могут быть разделены на модули. Обычно такой подход включает в себя и процесс, и язык. Процесс принимает в качестве входных требований и создает модель проекта. Созданная модель проекта представляет отдельные проблемы и их взаимосвязи. Язык предоставляет конструкции, которые могут описывать элементы, которые должны быть представлены в проекте, и отношения, которые могут существовать между этими элементами. В частности, предусмотрены конструкции для поддержки модуляризации проблем и спецификации состава проблем с учетом конфликтов. Кроме того, дизайн каждого отдельного модульного концерна сравнивается со стандартным дизайном программного обеспечения.

Вот конкретные области передового опыта:

  • сам процесс аспектно-ориентированного проектирования,
  • обозначения аспектно-ориентированного дизайна,
  • поддержка инструментов аспектно-ориентированного дизайна,
  • принятие и интеграция аспектно-ориентированного дизайна, а также
  • оценка / оценка аспектно-ориентированного дизайна.

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

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

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

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

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

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

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

Превосходство в создании аспектно-ориентированных языков включает следующие области:

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

Поддержка формального метода для аспектно-ориентированной ориентации

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

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

Каждый из вышеперечисленных подходов можно использовать для:

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

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

Аспектно-ориентированное промежуточное ПО

ПО промежуточного слоя и AOSD сильно дополняют друг друга. В целом области передового опыта включают:

  • поддержка разработчика приложения, которая включает
    • ключевые концепции аспектной поддержки промежуточного программного обеспечения,
    • аспектно-ориентированная разработка программного обеспечения с использованием определенного промежуточного программного обеспечения, включая модель аспектного программирования, модель развертывания аспектов, инфраструктуру платформы и службы промежуточного программного обеспечения, и
  • Разработка семейства продуктов (методы, архитектуры, техники) в распределен и окружающие вычисления, и
  • поддержка разработчика промежуточного программного обеспечения в отношении
    • промежуточное ПО хост-инфраструктуры,
    • промежуточное ПО распространения,
    • общие сервисы промежуточного программного обеспечения и
    • сервисы промежуточного программного обеспечения для конкретных доменов.

Принятие

  • IBM Сервер приложений WebSphere (WAS) - это сервер приложений Java, поддерживающий Java EE и веб-службы. Websphere распространяется в соответствии с редакциями, поддерживающими различные функции. Websphere использует AspectJ для внутренних целей, чтобы изолировать функции разных редакций.
  • Сервер приложений JBoss (JBoss AS) - это бесплатный сервер Java-приложений с открытым исходным кодом, поддерживающий Java EE. Ядро JBoss AS интегрировано с аспектно-ориентированным языком программирования JBoss AOP.[11] Сервер приложений использует JBoss AOP для развертывания таких сервисов, как безопасность и управление транзакциями.
  • Oracle TopLink представляет собой структуру объектно-реляционной персистентности Java, интегрированную с сервером приложений Spring. TopLink обеспечивает высокий уровень прозрачности постоянства с помощью Spring AOP.
  • SAP
  • Sun Microsystems использует AspectJ для оптимизации разработки мобильных приложений для платформы Java ME. Аспекты используются для упрощения разработки мобильных приложений для развертывания на разных платформах операторов и в различных интерфейсах сообщества мобильных игр.
  • Сименс Soarian - это система управления медицинской информацией, которая поддерживает беспрепятственный доступ к медицинским картам пациентов и определение рабочих процессов для организаций-поставщиков медицинских услуг. Soarian использует AspectJ для интеграции сквозных функций, таких как отслеживание, аудит и мониторинг производительности, в контексте гибкого процесса разработки.
  • Motorola wi4 - это система сотовой инфраструктуры, которая обеспечивает поддержку стандарта беспроводной широкополосной связи WiMAX. Управляющее программное обеспечение wi4 разработано с использованием аспектно-ориентированного расширения стандарта UML 2.0 под названием WEAVR. WEAVR используется во время разработки для отладки и тестирования.
  • ASML - поставщик систем литографии для полупроводниковой промышленности. ASML использует аспектно-ориентированное расширение C, называемое Mirjam, для модульного разделения задач трассировки и профилирования.
  • Glassbox - это агент устранения неполадок для приложений Java, который автоматически диагностирует типичные проблемы. Инспектор Glassbox отслеживает активность виртуальной машины Java с помощью AspectJ.
  • .NET 3.5 поддерживает концепции, ориентированные на аспекты, через контейнер Unity.

Сноски

  1. ^ Bosch, J .; М. Аксит (1992). Программирование в реальном времени на основе композиционных фильтров. Ванкувер: оценка объектно-ориентированной технологии в системах реального времени: прошлое, настоящее и будущее (семинар ACM OOPSLA'92).
  2. ^ Харрисон, Уильям; Гарольд Ошер (сентябрь 1993 г.). «Предметно-ориентированное программирование - критика чистых объектов». Труды конференции 1993 г. по системам, языкам и приложениям объектно-ориентированного программирования.
  3. ^ Ошер, Гарольд; Пери Тарр; Уильям Харрисон; Стэнли Саттон (май 1999 г.). «N-степеней разделения: многомерное разделение проблем». Труды Международной конференции по программной инженерии 1999 г.. Дои:10.1145/302405.302457.
  4. ^ Баторий, Дон С .; В. Сингхал; Дж. Томас; С. Дасари; Б. Герачи; М. Сиркин (сентябрь 1994 г.). "Модель генераторов программных систем GenVoca". Программное обеспечение IEEE. 11 (5): 89–94. Дои:10.1109/52.311067.
  5. ^ Либерхер, К. (1996). Адаптивное объектно-ориентированное программное обеспечение: метод Деметры с шаблонами распространения. Издательская компания PWS.
  6. ^ Кичалес, Грегор; Джон Лэмпинг; Анураг Мендхекар; Крис Маэда; Кристина Лопес; Жан-Марк Луантье; Джон Ирвин (1997). «Аспектно-ориентированное программирование». Труды Европейской конференции по объектно-ориентированному программированию. 1241: 220–242.
  7. ^ Парнас, Д. (1972): О критериях, которые должны использоваться при разложении систем на модули, в: Сообщения ACM, декабрь 1972, Vol. 15, № 12, 1053-1058
  8. ^ а б c Филман, Р. и Д. Фридман. «Аспектно-ориентированное программирование - это количественная оценка и забвение». Труды семинара по расширенному разделению проблем, совместно с OOPSLA’00 (2000)
  9. ^ Рашид, А. и А. Морейра. «Модели предметной области НЕ свободны от аспектов». Труды 9-й Международной конференции по модельно-управляемым языкам и системам (Models06). Генуя, Италия. LNCS 4199. Springer-Verlag (2006): 155-169.
  10. ^ Уильям Харрисон, Гарольд Ошер, Пери Тарр. Общая композиция программных артефактов, Proceedings of Software Composition Workshop 2006, март 2006 г., Springer-Verlag, LNCS 4089, страницы 194-210
  11. ^ "Глава 8. JBoss AOP". Красная Шапка. 2010.

Рекомендации

внешняя ссылка