Model-Driven Software Migration: A Methodology