an approach for testing pointcut descriptors in aspectj .
design patterns : elements of reusable object - oriented software .