Сквозная проблема
В аспектно-ориентированной разработке программного обеспечения сквозные проблемы — это аспекты программы , которые влияют на несколько модулей без возможности инкапсуляции в какой-либо из них.Эти проблемы часто невозможно четко отделить от остальной части системы как при проектировании, так и при реализации, и они могут привести либо к разбросу ( дублированию кода ), либо к запутанности (значительные зависимости между системами), либо к тому и другому.
Например, при написании приложения для обработки медицинских записей индексация таких записей является основной задачей , а регистрация истории изменений в базе данных записей или базе данных пользователей или системе аутентификации будет сквозной проблемой, поскольку они взаимодействуют. с большим количеством частей программы.
Фон
[ редактировать ]Сквозные проблемы — это части программы, которые зависят от многих других частей системы или должны влиять на них. Они составляют основу для развития аспектов . [1] Такие сквозные проблемы не вполне вписываются в объектно-ориентированное или процедурное программирование . [2]
Сквозные проблемы могут быть прямой причиной запутанности или системных взаимозависимостей внутри программы . Поскольку процедурные и функциональные конструкции языка полностью состоят из вызова процедур, не существует семантики, с помощью которой две цели (возможность реализации и соответствующая сквозная проблема) могут быть решены одновременно. [3] В результате код, решающий сквозную проблему, должен быть разбросан или дублирован в различных связанных местах, что приводит к потере модульности . [2]
Аспектно-ориентированное программирование направлено на инкапсуляцию сквозных проблем в аспекты для сохранения модульности. Это позволяет полностью изолировать и повторно использовать код, решающий сквозную проблему. [4] Если проектирование основано на сквозных задачах, преимущества разработки программного обеспечения могут включать модульность и упрощенное обслуживание. [5]
Примеры
[ редактировать ]Примеры проблем, которые, как правило, носят сквозной характер, включают:
- Бизнес-правила
- Кэширование
- Мобильность кода
- Проверка данных
- для конкретной области Оптимизация
- Переменные среды и другие глобальные параметры конфигурации.
- Обнаружение и исправление ошибок
- Интернационализация и локализация, включая языковую локализацию.
- Информационная безопасность
- Ведение журнала
- Управление памятью
- Мониторинг
- Упорство
- Особенности продукта
- Ограничения реального времени
- Синхронизация
- Обработка транзакций
- Контекстно-зависимая помощь
- Конфиденциальность
- Компьютерная безопасность
См. также
[ редактировать ]- Разделение интересов
- Аспектно-ориентированное программирование
- Рефакторинг кода (программное обеспечение для реструктуризации)
- Нормализация базы данных (минимизация ненужно реплицируемых данных)
- Множественное наследование
- Микросервисы
- Ортогонализация (математическая нормализация)
Ссылки
[ редактировать ]- ^ Кичалес и др. 2002 , с. 4
- ^ Jump up to: а б Кичалес и др. 1997 , с. 1
- ^ Кичалес и др. 1997 , с. 6
- ^ Кичалес и др. 1997 , с. 2
- ^ Ли, Кришнамурти и Фислер 2002 , стр. 1
Библиография
[ редактировать ]- Кичалес, Грегор; Лэмпинг, Джон; Мендекар, Анураг; Маэда, Джон; Лопес, Кристина; Лонгтье, Жан-Марк; Ирвин (1997). «Аспектно-ориентированное программирование». Материалы 11-й Европейской конференции по объектно-ориентированному программированию (ECOOP 1997) : 220–242.
- Патент США 6467086 , Кичалес и др., « Аспектно-ориентированное программирование », выдан 15 октября 2002 г.
- Ли, Гарри; Кришнамурти, Шрирам; Фислер, Кэти (2002). «Проверка сквозных функций как открытых систем». Заметки по разработке программного обеспечения ACM SIGSOFT . 27 (6): 89–98. CiteSeerX 10.1.1.8.9445 . дои : 10.1145/605466.605481 . S2CID 52835673 .
- Парнас, Дэвид Л. (декабрь 1972 г.). «О критериях разложения систем на модули». Коммуникации АКМ . 15 (12): 1053–1058. CiteSeerX 10.1.1.90.8963 . дои : 10.1145/361598.361623 . S2CID 53856438 .
- Тарр, Пери; Осшер, Гарольд; Харрисон, Уильям; Саттон, Стэнли М. младший (1999). «N степеней разделения: многомерное разделение задач». Материалы Международной конференции по программной инженерии 1999 г. (IEEE Cat. No.99CB37002) . Лос-Анджелес, Калифорния, США: Издательство IEEE Computer Society Press . стр. 107–119. CiteSeerX 10.1.1.89.1641 . дои : 10.1109/ICSE.1999.841000 . ISBN 978-1-58113-074-4 .
Дальнейшее чтение
[ редактировать ]- Ладдад, Р. (2003): AspectJ в действии, Практическое аспектно-ориентированное программирование, Manning Publications Co.
Внешние ссылки
[ редактировать ]- терминов AOSD.net Глоссарий аспектно-ориентированных (через Internet Archive Wayback Machine ; AOSD.net стал модульным ).
- AspectJ [1] — аспектно-ориентированное расширение языка программирования Java.
- Бергманс Л., М. Аксит (2001): Составление нескольких задач с использованием композиционных фильтров, https://web.archive.org/web/20170909131212/http://trese.cs.utwente.nl/ (24 июля 2004 г.)
- Берг, К. ван ден, Конеджеро, Дж. и Читчян, Р. (2005). AOSD Ontology 1.0 – Публичная онтология аспектной ориентации. Европейская сеть передового опыта AOSD, 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-перехватчики