Model-driven development: a metamodeling foundation | Synapse