 Aspect-oriented programming allows modularizing cross-cutting concerns in a single module, an aspect.Aspects can modify existing classes, but most commonly they provide 'advice' that runs before, after, or around
existing functionality.All calls to a specific function can be traced using an aspect, rather than inserting 'cerr' or print statements in many places