Здравствуйте,при покупке печатной формы сертификата,будут ли выданы обе печатные сторны? |
Прикладные и теоретические методы программирования
5.1.5. Аспектно-ориентированное программирование
Аспектно-ориентированное программирование (АОП) [5.15-5.17] - это парадигма построения гибких к изменению ПС путем добавления новых аспектов (функций), обеспечивающих безопасность, взаимодействие компонентов с другой средой, также синхронизацию одновременного доступа частей ПС к данным и вызов новых общесистемных средств.
Аспектом может быть ПИК, фрагмент программы, реализующий концепцию взаимодействия компонентов в среде, защиту данных и др. ПС, которая создается из ПИК, объектов, небольших методов и аспектов, дополняется необходимыми фрагментами взаимодействия, синхронизации, защиты и т.п. путем встраивания их в точки компонентов ПС, где они необходимы. В результате встроенные фрагменты дополняют компоненты новым содержательным аспектом и тем самым значительно усложняют процесс вычислений.
Практическая реализация аспектов, размещенных в разных частях элементов ПС, обеспечивается механизмом перекрестных ссылок и точками соединения, через которые осуществляется связь с аспектным фрагментом для получения определенной дополнительной функции.
В основе АОП лежит метод разбиения задач ПрО на ряд функциональных компонентов, определения необходимости применения разного рода дополнительных аспектов и установления точек расположения аспектов в отдельных компонентах, где это требуется. Эти работы выполняются на этапах ЖЦ процесса разработки, способствуют реализации ПС с ориентацией на взаимодействие компонентов или их синхронизацию. Такой подход известен при проведении отладки программ, когда фрагменты отладочных программ встраиваются в отдельные точки исходной программы для выдачи промежуточных результатов. Когда отладка завершается успешно, эти участки удаляются. В случае аспектов - их программные фрагменты остаются в программе.
Создание конечного продукта ПС в АОП выполняется по технологии, соответствующей разработке компонентных систем, с той особенностью, что используемые аспекты определяют особые условия выполнения компонентов в среде взаимодействия. Аспекты можно рассматривать как выполнение разных ролей взаимодействующими лицами, что приближает аспект к роли программного агента, выполняющего дополнительные функции при определении архитектуры системы и повышение качества компонентов.
Для использования аспектов при выработке проектных решений используется механизм фильтрации входных сообщений, с помощью которых проводится изменение параметров и имен текстов аспектов в конкретно заданном компоненте системы. Код компонента становится "нечистым", когда он пересечен аспектами, и при композиции с другими компонентами общие средства (вызов процедур, RPC, RMI, IDL и др.) становятся недостаточными. Это так как аспекты требуют декларативного сцепления описаний и связано с тем, что фрагменты находятся или берутся из различных объектов. Один из механизмов композиции компонентов и аспектов - фильтр композиции, который обновляет аспекты без изменения функциональных возможностей. Фактически фильтрация касается входных и выходных параметров сообщений, которые переопределяют соответствующие имена объектов. Иными словами, фильтры делегируют внутренним частям компонентов параметры, переадресовывая ранее установленные ссылки, проверяют и размещают в буфере сообщений, локализуют ограничения и готовят компонент для выполнения.
В ОО-программах могут быть методы, выполняющие дополнительно некоторые расчеты с обращением на другие методы внешнего уровня. Деметр сформулировал закон [5.17], согласно которому длинные последовательности мелких методов не должны выполняться. В результате создается код алгоритма с именами классов, не задействованных в расчетных операциях, а также дополнительный класс, который расширяет код этими расчетами.
С точки зрения моделирования, аспекты можно рассматривать как каркасы декомпозиции системы, в которых отдельные аспекты пересекают ряд многократно используемых ПИК (рис. 5.8).
Разным аспектам проектируемой системы могут отвечать и разные парадигмы программирования: объектно-ориентированные, структурные и др. Они по отношению к проектируемой ПрО образуют мультипарадигмную концепцию обработки, такую как синхронизация, взаимодействие, обработка ошибок и др. со значительными доработками процессов их реализации. Кроме того, этот механизм позволяет устанавливать аспектные связи с другими предметными областями в терминах родственных областей. Языки АОП позволяют описывать аспекты для разных ПрО. В процессе компиляции пересекаемые аспекты объединяются, оптимизируются, генерируются [5.16] и выполняются в динамике.
Существенной особенностью АОП является построение модели, которая пересекает структуру другой модели, для которой первая модель является аспектом. Так как аспект связан с моделью, то ее можно перестроить так, чтобы аспект стал, например, модулем и выполнял функцию посредника, реализуя шаблоны взаимодействия. Один из недостатков - пересечение отдельных компонентов аспектами может привести к понижению эффективности их выполнения.
Переплетение аспектов с компонентами проявиться на последующих этапах процесса разработки и поэтому требуется минимизация количества сцеплений между аспектами и компонентами через ссылки в вариантах использования, сопоставление с шаблоном или блоком кода, в котором установлены перекрестные ссылки.
В ходе анализа ПрО и построении ее характеристической модели устанавливается связь с дополнительными аспектами, что приводит к статическому или "жесткому" связыванию компонентов и аспектов модели, учету этого случая при компиляции.
Аспекты с точки зрения моделирования можно рассматривать как каркасы декомпозиции системы с многократным использованием. АОП становится мультипарадигмовой концепцией, сущность которой состоит в том, что разным аспектам проектируемой ПС, должны отвечать разные парадигмы программирования. Каждая из парадигм относительно реализации разных аспектов ПС (синхронизации, внедрения, обработки ошибок и др.) требует их усовершенствования и обобщения для каждой новой ПрО.
В АОП используется модель модульных расширений в рамках метамодельного программирования, которая обеспечивает оперативное использование новых механизмов композиции отдельных частей ПС или их семейств с учетом предметно-ориентированных возможностей языков (например, SQL) и каркасов, которые поддерживают аспекты. Технология разработки прикладной системы с использованием АОП включает общие этапы (рис. 5.9):
- Декомпозиция функциональных задач с условием многоразового применения модулей и выделенных аспектов, т.е. свойств их выполнения (параллельно, синхронно, безопасно и т.д.).
- Анализ языков спецификации аспектов и определение конкретных аспектов для обеспечения взаимодействия, синхронизации и др. задач ПрО.
- Определение точек встраивания аспектов в компоненты и формирование ссылок и связей с другими элементами.
- Разработка фильтров и описание связей аспектов с функциональными компонентами, выделенными в ПрО, отображение фильтров в модели EJB на стороне сервера и управление данными с обеспечением безопасности, защиты доступа к некоторым данным.
- Определение механизмов композиции (вызовов процедур, методов, сцеплений) функциональных модулей многоразового применения и аспектов в точках их соединения, как фрагментов свойств управления выполнением этих модулей, или ссылок из этих точек на другие модули.
- Создание объектной или компонентной модели, дополнение ее входными и выходными фильтрами сообщений, посылающих объектам ссылки, задания на выполнение методов или аспектов.
- Анализ библиотеки расширений для выбора некоторых функциональных модулей, необходимых для реализации задач ПрО.
- Компиляция, совместная отладка модулей и аспектов, после чего композиция их в готовый программный продукт.
В процессе создания ПС с применением аспектов используются ІР-библиотека расширений, активные библиотеки, Smalltalk и ЯП, расширенные средства описания аспектов [5.17].
ІР-библиотека содержит функции компиляторов, средства оптимизации, редактирования, отображения и др. Например, библиотека матриц для вычисления выражений с массивами, предоставляющая память и др., получила название библиотеки генерирующего типа.
Иной вид библиотек АОП - активные библиотеки, которые содержат не только базовый код реализации понятий ПрО, но и целевой код обеспечения оптимизации, адаптации, визуализации и редактирования. Активные библиотеки пополняются средствами и инструментами интеллектуализации агентов, с помощью которых обеспечивается разработка специализированных агентов для реализации конкретных задач ПрО.