Концепция аспектно-ориентированной разработки программного обеспечения
В аспектно-ориентированной разработке программного обеспечения сквозные проблемы — это аспекты программы , которые влияют на несколько модулей , без возможности инкапсуляции в каком-либо из них. Эти проблемы часто не могут быть чисто разложены из остальной части системы как в дизайне, так и в реализации, и могут привести либо к разбросу ( дублированию кода ), либо к запутыванию (значительным зависимостям между системами), либо к тому и другому.
Например, если вы пишете приложение для обработки медицинских записей , то индексация таких записей является основной задачей, в то время как регистрация истории изменений в базе данных записей или базе данных пользователей или системе аутентификации будет сквозной задачей, поскольку они взаимодействуют с большим количеством частей программы.
Фон
Сквозные проблемы — это части программы, которые зависят от или должны влиять на многие другие части системы. Они формируют основу для разработки аспектов . [ 1] Такие сквозные проблемы не вписываются чисто в объектно-ориентированное программирование или процедурное программирование . [2]
Сквозные проблемы могут быть напрямую ответственны за запутывание или системные взаимозависимости внутри программы . Поскольку процедурные и функциональные языковые конструкции полностью состоят из вызова процедур, не существует семантики, посредством которой две цели (возможность быть реализованной и связанная с ней сквозная проблема) могут быть решены одновременно. [3] В результате код, решающий сквозную проблему, должен быть разбросан или дублирован по различным связанным местам, что приводит к потере модульности . [2]
Аспектно-ориентированное программирование направлено на инкапсуляцию сквозных проблем в аспекты для сохранения модульности. Это позволяет обеспечить чистую изоляцию и повторное использование кода, решающего сквозную проблему. [4] Основывая проекты на сквозных проблемах, преимущества программной инженерии могут включать модульность и упрощенное обслуживание. [5]
Примеры
Примеры проблем, которые, как правило, носят сквозной характер, включают:
Смотрите также
Ссылки
- ^ Кичалес и др. 2002, стр. 4
- ^ аб Кичалес и др. 1997, с. 1
- ^ Кичалес и др. 1997, стр. 6
- ^ Кичалес и др. 1997, стр. 2
- ^ Ли, Кришнамурти и Фислер 2002, стр. 1
Библиография
- Кицалес, Грегор; Лэмпинг, Джон; Мендхекар, Анураг; Маеда, Джон; Лопес, Кристина; Лонгтье, Жан-Марк; Ирвин (1997). «Аспектно-ориентированное программирование». Труды 11-й Европейской конференции по объектно-ориентированному программированию (ECOOP 1997) : 220–242.
- Патент США 6467086, Кизалес и др., « Аспектно-ориентированное программирование », выдан 15 октября 2002 г.
- Ли, Гарри; Кришнамурти, Шрирам; Фислер, Кати (2002). «Проверка сквозных функций как открытых систем». ACM SIGSOFT Software Engineering Notes . 27 (6): 89–98. CiteSeerX 10.1.1.8.9445 . doi :10.1145/605466.605481. S2CID 52835673.
- Парнас, Дэвид Л. (декабрь 1972 г.). «О критериях, используемых при разложении систем на модули». Сообщения ACM . 15 (12): 1053–1058. CiteSeerX 10.1.1.90.8963 . doi :10.1145/361598.361623. S2CID 53856438.
- Tarr, Peri; Ossher, Harold; Harrison, William; Sutton, Stanley M. Jr. (1999). "N степеней разделения: многомерное разделение интересов". Труды Международной конференции по программной инженерии 1999 г. (IEEE Cat. No.99CB37002) . Лос-Анджелес, Калифорния, США: IEEE Computer Society Press . стр. 107–119. CiteSeerX 10.1.1.89.1641 . doi :10.1109/ICSE.1999.841000. ISBN 978-1-58113-074-4.
Дальнейшее чтение
- Лэддад, Р. (2003): AspectJ в действии, практическое аспектно-ориентированное программирование, Manning Publications Co.
Внешние ссылки
- Глоссарий аспектно-ориентированных терминов AOSD.net (через Internet Archive Wayback Machine; AOSD.net стал Modularity).
- AspectJ [1], аспектно-ориентированное расширение языка программирования Java
- Бергманс, Л., М. Аксит (2001): Составление множественных концепций с использованием композиционных фильтров, https://web.archive.org/web/20170909131212/http://trese.cs.utwente.nl/ (24 июля 2004 г.)
- Берг, К. ван ден, Конехеро, Дж. и Читчян, Р. (2005). AOSD Ontology 1.0 — Публичная онтология аспектной ориентации. AOSD Europe Network of Excellence, http://eprints.eemcs.utwente.nl/10220/01/BergConChi2005.pdf
- Вот пример обработки сквозной проблемы: https://web.archive.org/web/20161220151503/https://www.captechconsulting.com/blogs/a-persistence-pattern-using-threadlocal-and-ejb-interceptors