Mining static and dynamic crosscutting concerns: a role-based approach