Аспектно-ориентированная разработка программного обеспечения
Содержание |
Что такое AOSD ?
Аспектно-ориентированная разработка программного обеспечения (AOSD, Aspect-Oriented Software Development) — относительно новая парадигма разработки бизнес-приложений. Основа данного подхода — аспект. Это точка зрения, с которой может быть рассмотрено какое-либо понятие, процесс, перспектива. Суть аспектно-ориентированного подхода — в идентификации общности программного кода в рамках каких-либо аспектов и вынесение выделенных процедур за пределы основной бизнес-логики. Процесс аспектной ориентации и разработки программного обеспечения может включать моделирование, дизайн, программирование, обратный инжиниринг, реинжиниринг. Аспектно-ориентированная разработка ПО включает приложения, компоненты, базы данных. Взаимодействие и интеграция с прочими парадигмами осуществляется посредством фреймворков, генераторов, языков программирования и языков описания архитектуры (ADL).
Основы аспектно-ориентированного подхода
Аспектно-ориентированное программирование позволяет выделить сквозную функциональность в отдельные декларации — аспекты. Можно определить функциональность для строго заданных точек выполнения программы JoinPoints (вызов метода, инициация класса, доступ к полю класса и т. д.). В языках, поддерживающих АОП, чаще используются назначения для множества точек — Pointcut. Функциональность в точках определяет программный код, который принято вежливо называть Advice (AspectJ). Таким образом, в пространстве аспектов описывается сквозная функциональность для определенного множества компонентов системы. В самих компонентах представлена лишь бизнес-логика, которую они призваны реализовать. В ходе компиляции программы компоненты связываются с аспектами (Weave).
Что бы лучше понять базисы АОП давайте, вернемся к примеру с выделением аспекта мониторинга производительности. Нам требуется снять показания таймера на входе и на выходе всех методов классов Model, Document, Record, Dispatcher. Итак, мы имеем аспект Logging. Нам потребуется завести к нему Pointcut с перечислением всех требуемых функций. В большинстве языков программирования, поддерживающих АОП для охвата сразу всех методов класса можно использовать специальную маску. Теперь можно описать для этого Pointcut. Создаем Advice на входе в методы из списка Pointcut (Before) и на выходе из них (After). Advice для событий Before, After, Around — наиболее популярны в языках, поддерживающих АОП, но порой доступны и другие события.
Итак, по результатам данного примера можно отметить для себя по поводу базисных деклараций АОП следующие:
- Aspect — определение, некоторого набора сквозной функциональности, нацеленной на конкретную задачу;
- Pointcut — код применимости аспекта. Отвечает на вопросы где и когда может быть применена функциональность данного аспекта (См. Pic 3)
- Advice — код функциональности объекта. Непосредственно код функциональности для заданных событий. Другими словами, это то, что будет выполнено для объектов, указанных в Pointcut.
Реализации
* Для C#/VB.NET:
|
* Для Lua:
|