Межсекторальная озабоченность - Cross-cutting concern
В аспектно-ориентированная разработка программного обеспечения, сквозные проблемы находятся аспекты из программа которые влияют на другие обеспокоенность.Эти проблемы часто нельзя полностью устранить. разложенный от остальной системы как при разработке, так и при реализации, и может привести к рассеяние (дублирование кода ), запутывание (существенные зависимости между системами) или и то, и другое.
Например, если написать заявление для обработки медицинские записи, индексация таких записей основная проблема, пока протоколирование история изменений в базе данных записей, или в базе данных пользователей, или в системе аутентификации будет представлять собой сквозную проблему, поскольку они взаимодействуют с большим количеством частей программы.
Фон
Межсекторальные проблемы - это части программы, которые полагаются или должны влиять на многие другие части системы. Они составляют основу для развития аспекты.[1] Такие сквозные проблемы не вполне укладываются в объектно-ориентированного программирования или же процедурное программирование.[2]
Общие проблемы могут нести прямую ответственность за запутывание, или системные взаимозависимости в пределах программа. Потому что процедурные и функциональный язык конструкции полностью состоят из вызова процедур, нет семантики, посредством которой две цели (возможность, которая должна быть реализована, и связанная с ней сквозная проблема) могут быть решены одновременно.[3] В результате код, решающий сквозную проблему, должен быть разбросанныйили дублируются в различных связанных местоположениях, что приводит к потере модульность.[2]
Аспектно-ориентированное программирование целится на инкапсулировать сквозные проблемы в аспекты сохранить модульность. Это позволяет полностью изолировать и повторно использовать код для решения сквозной проблемы.[4] Основывая проекты на сквозных проблемах, программная инженерия преимущества могут включать модульность и упрощенное обслуживание.[5]
Примеры
Примеры проблем, которые иметь тенденцию к сквозным относятся:
- Бизнес правила
- Кеширование
- Мобильность кода
- Проверка достоверности данных
- Зависит от домена оптимизации
- Обнаружение и исправление ошибок
- Интернационализация и локализация который включает Языковая локализация
- Информационная безопасность
- логирование
- Управление памятью
- Мониторинг
- Упорство
- Особенности продукта
- Ограничения в реальном времени
- Синхронизация
- Обработка транзакции
- Контекстно-зависимая помощь
Смотрите также
- Разделение проблем
- Аспектно-ориентированное программирование
- Рефакторинг кода (реструктуризация программного обеспечения)
- Нормализация базы данных (минимизировать ненужные репликации данных)
- Множественное наследование
- Микросервисы
- Ортогонализация (математическая нормализация)
Рекомендации
- ^ Kiczales et. al 2002, п. 4
- ^ а б Kiczales et al. 1997 г., п. 1
- ^ Kiczales et al. 1997 г., п. 6
- ^ Kiczales et al. 1997 г., п. 2
- ^ Ли, Кришнамурти и Фислер, 2002 г., п. 1
Библиография
- Кичалес, Грегор; Лэмпинг, Джон; Мендекар, Анураг; Маэда, Джон; Лопес, Кристина; Лонтье, Жан-Марк; Ирвин (1997). «Аспектно-ориентированное программирование». Труды 11-й Европейской конференции по объектно-ориентированному программированию (ECOOP 1997): 220–242.CS1 maint: ref = harv (связь)
- Патент США 6467086, Kiczales et. al, "Аспектно-ориентированное программирование ", выданный 15.10.2002 г.
- Ли, Гарри; Кришнамурти, Шрирам; Фислер, Кэти (2002). «Проверка сквозных функций как открытых систем». Примечания по разработке программного обеспечения ACM SIGSOFT. 27 (6): 89–98. CiteSeerX 10.1.1.8.9445. Дои:10.1145/605466.605481.CS1 maint: ref = harv (связь)
- Парнас, Дэвид Л. (декабрь 1972 г.). «О критериях разложения систем на модули». Коммуникации ACM. 15 (12): 1053–1058. CiteSeerX 10.1.1.90.8963. Дои:10.1145/361598.361623.
- Тарр, Пери; Ошер, Гарольд; Харрисон, Уильям; Саттон, Стэнли М., младший (1999). N степеней разделения: многомерное разделение проблем. Материалы 21-й Международной конференции по программной инженерии. Лос-Анджелес, Калифорния, США: Пресса IEEE Computer Society. С. 107–119. CiteSeerX 10.1.1.89.1641. Дои:10.1109 / ICSE.1999.841000. ISBN 978-1581130744.
дальнейшее чтение
- Ладдад, Р. (2003): AspectJ в действии, Практическое аспектно-ориентированное программирование, Manning Publications Co.
внешняя ссылка
- AOSD.net's глоссарий аспектно ориентированный условия (через Интернет-архив 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-interceptors