Dynamic matching and weaving semantics for executable UML models