Главная
Новости
Строительство
Ремонт
Дизайн и интерьер
Полезные советы




07.06.2021


03.06.2021


02.06.2021


31.05.2021


30.05.2021





Яндекс.Метрика





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

16.12.2020

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

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

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

Обзор

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

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

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

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

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

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

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

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

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

Тела совета

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

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

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

Пример

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

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

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

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

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

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

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

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

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

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

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

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

  • JBoss Application Server (JBoss AS) — свободный сервер приложений java с открытым исходным кодом, который поддерживает Java EE. Ядро AS JBoss интегрировано с аспектно-ориентированным языком программирования JBoss. Сервер приложений использует AOP JBoss, чтобы развернуть службы, такие как управление безопасностью и управление транзакциями.