Fine-grained software evolution using UML activity and class models