<P> 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 . </P> <P> 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 . </P> <P> 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 . </P> <P> 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 . By basing designs on cross-cutting concerns, software engineering benefits can include modularity and simplified maintenance . </P>

Choose two common cross-cutting concerns in application architecture