Аспектно-ориентированное программирование | это... Что такое Аспектно-ориентированное программирование? (original) (raw)


Шаблон: Просмотр • парадигма программирования, основанная на идее разделения функциональности для улучшения разбиения программы на модули.

Методология АОП была предложена группой инженеров исследовательского центра Xerox PARC под руководством Грегора Кичалеса (Gregor Kiczales). Ими же было разработано аспектно-ориентированное расширение для языка Java, получившее название AspectJ — (2001 год).

Обоснование

Существующие парадигмы программирования — процедурное, модульное, объектно-ориентированное программирование (ООП) и предметно-ориентированное проектирование — предоставляют определённые способы для разделения и выделения функциональности: функции, модули, классы, но некоторую функциональность с помощью предложенных методов невозможно выделить в отдельные сущности. Такую функциональность называют сквозной (от англ. scattered разбросанный или англ. tangled переплетённый), так как её реализация распределена по различным модулям программы. Сквозная функциональность приводит к рассредоточенному и запутанному коду, сложному для понимания и сопровождения.

Ведение лога и обработка ошибок — типичные примеры сквозной функциональности. Другие примеры: трассировка; авторизация и проверка прав доступа; контрактное программирование (в частности, проверка пред- и постусловий). Для программы, написанной в парадигме ООП, любая функциональность, по которой не была проведена декомпозиция, является сквозной.

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

Основные концепции

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

Основные понятия АОП:

Реализации

Для .NET: PostSharp Aspect.NET LOOM.NET Puzzle.NAspect AspectDNG Aspect# Encase Compose* Seasar.NET DotSpect (.SPECT) Как часть функциональности The Spring.NET Framework Для Object Pascal: MeAOP Infra Для Java: AspectJ AspectWerkz (Now merged with AspectJ) Byte Code Engineering Library CaesarJ Dynaop JAC Jakarta Hivemind Javassist Home Page JAsCo JAML JBoss AOP Object Teams PROSE Reflex The AspectBench Compiler for AspectJ (abc) Как часть функциональности The Spring Framework Seasar The JMangler Project InjectJ Для JavaScript: AOP плагин для библиотеки jQuery Ajaxpect AOP Fun with JavaScript (замещено проектом Ajaxpect) DojoDojo Toolkit Aspectes Для C/C++: AspectC++ The XWeaver Project FeatureC++ Для Lua: AspectLua Для Python: Aspyct Lightweight Python AOP Logilab’s aspect module Python/Transwarp AOP Tutorial PEAK Pythius PyPy Для Ruby: AspectR Aquarium Для ActionScript 2/3: Fling AIoC Для PHP: Go! AOP PHP Seasar.PHP AOP API for PHP GAP: Generic Aspects for PHP paspect Для Perl: The Aspect Module Для Common Lisp: AspectL Для Cocoa: AspectCocoa Для XML: AspectXML Для Squeak Smalltalk AspectS Для ColdFusion: ColdSpring Для Flash ActionScript 2.0 as2lib

Примечания

  1. Мифы и реальности АОП (рус.). IBM. Архивировано из первоисточника 5 февраля 2012. Проверено 27 октября 2010.

Ссылки

Литература

Просмотр этого шаблона Разработка программного обеспечения
Известныедеятели Кент БекГради БучФред Брукс • Barry Boehm • Уорд КаннингемОле-Йохан Даль • Том Демарко • Эдсгер Вибе ДейкстраДональд КнутМартин ФаулерЧарльз Энтони Ричард Хоар • Watts Humphrey • Майкл Джексон • Ивар Якобсон • Craig Larman • James Martin • Мейер Бертран • Дэвид Парнас • Winston W. Royce • James Rumbaugh • Никлаус ВиртЭдвард ЙорданСтив Макконнелл
Процесс Анализ требованийПроектированиеПрограммированиеТестированиеВнедрениеСопровождениеФормальные методыСтадии разработки
Концепции Моделирование данных • Архитектура ПОФункциональная спецификация • Язык моделирования • ПарадигмаМетодологияПроцесс разработкиКачество • Обеспечение качества • Структурный анализ)
Направления Программирование (Аспектно-ориентированноеОбъектно-ориентированноеПроблемно-ориентированное) • ОнтологияСервис-ориентированная архитектураОценка затрат на разработку
Моделиразработки AgileCleanroomCASEИтеративная разработкаRUPOpenUPRADScrumMSFСпиральнаяКаскаднаяXPV-ModelDual Vee ModelDSDM
Другие модели CMMCMMIДанных • Function model • IDEFИнформационная • Metamodeling • Object model • View model • UML
Прочее Информатика • Инженерия (Компьютерная • Организационная) • История разработки ПО • Документирование • Управление (КонфигурационноеПроектамиПрограммамикачеством) • ЭргономикаСистемотехникаОбратная разработкаВерсии

Категория:

Wikimedia Foundation.2010.

Полезное

Смотреть что такое "Аспектно-ориентированное программирование" в других словарях: