Executable UML: A Foundation for Model-Driven Architecture