As a software developer, one of my principal objectives is to deliver the highest quality software possible. Unfortunately, as a human being, my abilities are also my limitations, and I always make mistakes of one kind or another. To remedy this, I use tools to help ameliorate as many of my limitations as possible. One of rny concerns is to understand how using a particular tool affects my ability to meet objectives. How does it help with the various software development tasks? What does it Cost me to use a particular tool? Do the benefits outweigh the costs? If so, what degree is the benefit? If not, then the tool is of little use. There must be a significant benefit gain to justify using a tool. The essence of aspect-oriented programming is that crosscutting concerns are factored into distinct abstractions (that is, aspects) that are solely responsible for a particular crosscutting concern. This raises the system's modularity and increases cohesion of the abstractions that are primary concerns. Researchers and software developers must understand and address the various significant weaknesses before AOP's benefits can be realized.