Software engineers are always looking for ways to improve modularity in software. Doing so makes software easier to develop and maintain and improves its overall quality. Recently, aspect-oriented programming emerged as a new modularity technique that aims to cleanly separate the implementation of crosscutting concerns (requirements and design elements that affect multiple modules). AOP is an evolutionary step that improves the implementation's comprehensibility and simplifies incorporating new requirements as well as changes to existing ones. This systematic approach promises direct mapping of requirements and design intentions to the implementation. Such a mapping lets you trace the reasoning behind a piece of code's existence. Efficiently implementing crosscutting concerns also has an important indirect benefit: it frees resources to concentrate on the quality of the core implementation. All these factors work together to improve software quality.