A test-driven approach for metamodel development