Введение

В аспектно-ориентированном программировании сквозные задачи — это аспекты программы, влияющие на несколько модулей, которые невозможно локализовать в каком-либо одном из них. Эти задачи часто нельзя чётко отделить от остальной системы как на этапе проектирования, так и на этапе реализации, что может приводить к разбросанности (дублированию кода), переплетению (значительным зависимостям между модулями) или и тому, и другому. Например, при разработке приложения для работы с медицинскими записями, индексация этих записей является основной задачей, а ведение журнала изменений в базе данных записей или базе данных пользователей, или система аутентификации, будут сквозными задачами, поскольку они взаимодействуют с многими частями программы.

Предыстория

Пересекающиеся вопросы – это части программы, которые зависят от многих других частей системы или должны на них влиять. Они являются основой для разработки аспектов. Такие вопросы не укладываются в объектно-ориентированное или процедурное программирование. Пересекающиеся вопросы могут напрямую приводить к запутанности или системной взаимозависимости внутри программы. Поскольку процедурные и функциональные языковые конструкции состоят исключительно из вызовов процедур, отсутствует семантика, позволяющая одновременно решать две задачи (возможность реализации и связанный с ней пересекающийся вопрос). В результате код, решающий пересекающийся вопрос, должен быть разбросан или продублирован по различным связанным местам, что приводит к потере модульности. При проектировании с учетом пересекающихся вопросов, программная инженерия может получить преимущества в виде модульности и упрощенного обслуживания.