Cross-cutting concern

A cross-cutting concern is an aspect of a system’s design that affects multiple components, layers, or services, rather than being localized to one part of the codebase. Non-functional requirements – performance, security, availability, and the like – are the classic example: satisfying one typically means touching many parts of the system at once.