A Framework for Software Architecture Refactoring using Model Transformations and Semantic Annotations