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.
[2] Cross-cutting concerns can be directly responsible for tangling, or system inter-dependencies, within a program.
[2] Aspect-oriented programming aims to encapsulate cross-cutting concerns into aspects to retain modularity.
This allows for the clean isolation and reuse of code addressing the cross-cutting concern.
[4] By basing designs on cross-cutting concerns, software engineering benefits can include modularity and simplified maintenance.