Аспектно-ориентированное программирование: сквозные задачи и проблемы их реализации.
Cross-cutting concern
Аспектно-ориентированное программирование: что такое сквозные задачи? Избегайте дублирования кода и запутанных зависимостей. Разработка, архитектура ПО.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
В аспектно-ориентированном программировании сквозные задачи — это аспекты программы, влияющие на несколько модулей, которые невозможно локализовать в каком-либо одном из них. Эти задачи часто нельзя чётко отделить от остальной системы как на этапе проектирования, так и на этапе реализации, что может приводить к разбросанности (дублированию кода), переплетению (значительным зависимостям между модулями) или и тому, и другому. Например, при разработке приложения для работы с медицинскими записями, индексация этих записей является основной задачей, а ведение журнала изменений в базе данных записей или базе данных пользователей, или система аутентификации, будут сквозными задачами, поскольку они взаимодействуют с многими частями программы.
In aspect oriented software development, cross cutting concerns are aspects of a program that affect several modules, without the possibility of being encapsulated in any of them. These concerns often cannot be cleanly decomposed from the rest of the system in both the design and implementation, and can result in either scattering (code duplication), tangling (significant dependencies between systems), or both. For instance, if writing an application for handling medical records, the indexing of such records is a core concern, while logging a history of changes to the record database or user database, or an authentication system, would be cross cutting concerns since they interact with more parts of the program.
Предыстория
Пересекающиеся вопросы – это части программы, которые зависят от многих других частей системы или должны на них влиять. Они являются основой для разработки аспектов. Такие вопросы не укладываются в объектно-ориентированное или процедурное программирование. Пересекающиеся вопросы могут напрямую приводить к запутанности или системной взаимозависимости внутри программы. Поскольку процедурные и функциональные языковые конструкции состоят исключительно из вызовов процедур, отсутствует семантика, позволяющая одновременно решать две задачи (возможность реализации и связанный с ней пересекающийся вопрос). В результате код, решающий пересекающийся вопрос, должен быть разбросан или продублирован по различным связанным местам, что приводит к потере модульности. При проектировании с учетом пересекающихся вопросов, программная инженерия может получить преимущества в виде модульности и упрощенного обслуживания.
Cross cutting concerns are parts of a program that rely on or must affect many other parts of the system. They form the basis for the development of aspects. Such cross cutting concerns do not fit cleanly into object oriented programming or procedural programming. Cross cutting concerns can be directly responsible for tangling, or system inter dependencies, within a program. Because procedural and functional language constructs consist entirely of procedure calling, there is no semantic through which two goals (the capability to be implemented and the related cross cutting concern) can be addressed simultaneously. As a result, the code addressing the cross cutting concern must be scattered, or duplicated, across the various related locations, resulting in a loss of modularity. By basing designs on cross cutting concerns, software engineering benefits can include modularity and simplified maintenance.