Автор: Пользователь скрыл имя, 28 Февраля 2012 в 10:45, курсовая работа
Аспектно-ориентированное программирование (АОП) - это новая развивающаяся концепция, призванная сократить время, стоимость и сложность разработки программного обеспечения (ПО). Известно, что в жизненном цикле ПО 70% всего времени отводится на сопровождение и внесение изменений в готовый программный код. Кроме того, фактом является положение, утверждающее, что большинство необходимых программных продуктов уже реализовано, протестировано и внедрено.
Введение 3
Глава 1. Аспектно – ориентированное программирование 4
1.1 Введение в АОП 4
1.2 Основные концепции АОП 7
1.3 AspectJ как одна из реализаций АОП 11
1.4 Другие реализации АОП 21
Глава 2. Перспективы развития аспектно – ориентированного программирования 23
2.1 Преимущества и недостатки использования АОП 23
2.2 Эволюция развития АОП 27
Заключение 29
Список литературы 30
Преимущества использования АОП.
АОП помогает избежать проблем, вызванных запутанным и рассредоточенным кодом. Ниже представлены дополнительные преимущества, предоставляемые АОП:
Улучшение декомпозиции системы на отдельные модули. АОП позволяет инкапсулировать функциональность, которая не может быть представлена в виде отдельной процедуры или компонента. АОП позволяет реализовать каждое требование отдельно с минимальным связыванием. В результате получается модуль, содержащий данное требование к системе без лишних внешних зависимостей, даже если это требование – сквозная функциональность. При такой реализации модули содержат минимальное количество дублирующегося кода.
Упрощение сопровождения программной системы и внесения в нее изменении. Так как могут существовать модули, на которые могут воздействовать аспекты, становится достаточно легко добавлять новую функциональность путем создания новых аспектов. Более того, если в систему добавляется новый модуль, то существующие аспекты начинают воздействовать и на него без дополнительных усилий. При использовании АОП системный архитектор может отложить решения, касающиеся потенциально возможных требований, поскольку впоследствии эти решения смогут быть реализованы как отдельные аспекты, что не затронет существующую функциональность.
Появление возможностей повторного использования кода, реализующего сквозную функциональность. Следует из того, что при использовании АОП сквозная функциональность может быть реализована в виде аспектов и в виде слабосвязанных модулей.
Технология вынесения сквозной функциональности в отдельные аспектные модули стала важным эволюционным шагом в развитии таких концепций, как абстракция и повторное использование программного кода. Идеи абстракции и повторного использования кода занимают одно из центральных мест в программировании.
Абстрагирование — это метод обобщения, с помощью которого разработчики могут решать различные проблемы. Затем можно использовать имеющиеся готовые решения полученных типовых проблем в качестве строительных блоков, из которых разработчики получают решения, пригодные для реализации различных проектов.
Повторное использование не менее важно для разработки ПО. В процессе эволюции методологий разработки ПО было придумано несколько методов повторного использования кода и концепций разработки ПО:
Раньше других появился метод повторного использования, основанный на технологии "скопируй и вставь", или, проще говоря, на вставке в новые программы фрагментов ранее созданных программ. Данный подход является абсолютно неэффективным, кроме того, он не дает никаких сколько-нибудь заметных качественных преимуществ с точки зрения абстракции кода.
Более гибкий метод повторного использования состоит в повторном использовании алгоритмов. В соответствии с этим методом, разработчик может использовать любой однажды разработанный алгоритм.
Функциональное повторное использование программного кода и повторное использование структур данных позволяют обеспечить непосредственное повторное использование абстракции кода.
Двумя расширениями концепции повторного использования кода являются библиотеки функций и API. Они предоставляют разработчику полный пакет функциональности без необходимости копирования программного кода из приложения в приложение.
Показатель степени повторного использования очень сильно зависит от эффективности применения того или иного метода на практике.
Можно сказать, что слабосвязанная реализация сквозной функциональности — это ключ к реальному повторному использованию кода. АОП позволяет получить менее связанную реализацию, чем ООП. При использовании этой парадигмы программирования должно тратиться меньше времени на сопровождение и внесение изменений в готовый программный код.
АОП не является заменой существующих технологий. Наоборот, так же, как процедурное программирование используется в объектно-ориентированном программировании (ООП) для реализации поведения объектов, АОП использует существующие подходы для реализации своих модулей — аспектов, то есть исполняет роль расширения, позволяющего обеспечить модуляризацию сквозной функциональности. В зависимости от технологии и языка программирования, соответствующая реализация АОП будет обладать различными возможностями.
Недостатки аспектного подхода.
В настоящий момент аспектно-ориентированный подход обладает рядом недостатков:
Не полностью проработана методология АОП-разработки программ. В данный момент законченные и оттестированные компиляторы имеются только для нескольких языков, что ограничивает применение данной технологии. С другой стороны, реализация концепций АОП только на уровне языковых расширений представляется неполной и неэффективной. Более перспективным стоит считать проникновение самих базовых идей АОП и использование их на различных уровнях средств разработки — языков (С++, Pascal), платформ (.NET, Java), и технологий (COM, CORBA и т.д.), по аналогии с уже традиционным использованием ООП.
Недостаточно качественная реализация расширений языков. В настоящее время существующие реализации АОП-расширений для различных языков и платформ различаются по своим возможностям, но можно выделить общие черты: каждая реализация АОП должна предоставить механизм описания логики сквозной функциональности и механизм описания точек программы, в которых данная логика будет применяться. Однако каждая реализация по-своему определяет виды точек связывания, в которых можно применить аспект, а также решает вопрос их описания, что затрудняет понимание и использование общих принципов АОП.
Недостаточно проработан механизм привязки аспектов к компонентам. В распространенных в настоящее время АОП-реализациях точки связывания описываются в терминах программных конструкций — классов, методов, полей класса. При этом получается тесная связь между аспектом и компонентом, к которому он применяется. Логика привязки аспекта к данной точке кода выражена неявно и целиком определяется программной конструкцией, в терминах которой построено описание. Тесная связь между аспектом и компонентом делает аспект зависимым от компонента, при этом нарушается одна из основных идей АОП — независимость компонентов от применяемых к ним аспектов.
Не полностью исследованы случаи, когда аспекты удобно и целесообразно было бы применить.
2.2 Эволюция развития АОП
Если проследить эволюцию программирования от машинного кода к процедурным языкам типа Algol и Pascal и дальше к объектно-ориентированным языкам наподобие Smalltalk и Java, то можно увидеть, что ее лейтмотивом было стремление помочь архитекторам и программистам в структурировании сложных систем.
Ведь системы слишком велики, чтобы думать о них на микроуровне. АОП по существу – очередной этап в развитии механизмов структурирования. Сегодня понятно, что объекты не заменяют процедуры, а являются только способом создания механизма структурирования более высокого уровня. И аспекты тоже не заменяют объекты; они лишь предоставляют еще одну разновидность структурирования.
В настоящий момент проводятся исследования в области АОП и аспектной декомпозиции, призванные оценить применимость этих технологий при создании информационных систем и подсистем различного типа, а также развитие теории АОП, находящейся на данный момент на начальной стадии развития, с использованием математических методов.
В качестве дальнейших исследований можно рассматривать работу по формализации подхода, а также работу по доказательству корректности программ, разработанных при помощи АОП. Также одним из перспективных исследований в этой области на данный момент считается изучение событийной модели АОП и применимость этой модели для построения операционных систем.
Аспектный подход предоставляет новые возможности по интеграции новых требований в программную систему по сравнению с традиционным объектно-ориентированным подходом. Если возникают новые требования на этапе поддержки системы, то такие требования легко интегрируются без потери модульности и модификации кода компонентов, что очень актуально на данном этапе разработки.
По метрикам второй группы (уровень языковых средств) на всех этапах жизненного цикла программы можно утверждать о положительном эффекте от применения аспектной декомпозиции.
Итак, возможность применения аспектного подхода показана для задач самого разного характера. Приведенные примеры позволяют отметить основное достоинство аспектно-ориентированного подхода: улучшение модульности программной системы и вытекающие из него следствия:
выражение в явной форме структуры "сквозной функциональности";
упрощение сопровождения и внесения изменений;
появление новых возможностей повторного использования кода.
Необходимо отметить, что АОП не рассматривается как замена сложившимся парадигмам программирования, а исполняет роль расширения, позволяющего обеспечить модуляризацию сквозной функциональности.
В настоящее время АОП — единственная методология, позволяющая справиться со сложностью, присущей очень большим системам.
Заключение
В данной курсовой работе были рассмотрены достоинства аспектно-ориентированного программирования и применение AspectJ, как одной из реализаций АОП, на практике.
Итак, АОП при правильном использовании может следующее:
Уменьшить объем кода системы (следовательно, снизить вероятность программных ошибок);
Улучшить дизайн системы с точки зрения реализации сквозной функциональности, улучшить модульность;
Упростить код системы, благодаря локализации кода, не относящегося к основной функциональности;
Упростить тестирования системы (можно тестировать различные аспекты отдельно, а только потом вплетённые в систему);
Улучшить управляемость кода, как следствие простота эволюции и сопровождения;
Увеличить количество повторно используемых модулей благодаря слабой связности подсистем.
С другой стороны не правильное применение АОП может привести к следующим последствиям:
Затруднения в ходе отладки (Какой из аспектов выполняется сейчас?);
Трудности с пониманием концепции зачастую приводят к грубым ошибкам в дизайне аспектов;
Новая технология всегда риск.
Список литературы
1. Е.А. Журавлев, В.А. Кирьянчиков. О возможности динамической интеграции аспектов в аспектно-ориентированном программировании.Изв. СПбГЭТУ (ЛЭТИ) Сер. Информатика, управление и компьютерные технологии. 2002. Вып. 3.
2. Е. А. Журавлев, В. Н. Павлов. Об одном подходе к реализации Аспектно-ориентированного программирования. Изв. СПбГЭТУ (ЛЭТИ) Сер. Информатика, управление и компьютерные технологии. 2003
3. Статья Валентина Павлова http://www.javable.com/
2
Информация о работе Перспективы развития аспектно-ориентированного программирования