Everyone who has worked with Aspect oriented programs, that are complex enough, would understand the nightmare that they can cause! it's very easy to lose track of what aspect get applied when and in which order ! so a natural approach to deal with such programs is to use modeling techniques.
normally any behavior can be modeled in programs as a sequence diagram. so in OO, we model a certain behavior using such a diagram , but in case of Aspect weaving , it would become more complicated . as the behaviour might change if there is a point cut at any location through out the execution. so it would be ideal to describe such aspects , by class diagrams for thier structure . and by point cuts and advices for thier behavior. then we can use a "model transformation" to take this building block and apply it on a graph. to produce the sequence diagram that represent the actual execution with the aspect weaved in .