Software Architecture Evolution through Dynamic AOP