Migracija koda je kretanje programskog koda s jednog sustava na drugi. Postoje tri različite razine migracije koda s povećanjem složenosti, troškova i rizika. Jednostavna migracija uključuje prelazak s jezika na noviju verziju. Druga, složenija razina migracije uključuje prelazak na drugi programski jezik. Migracija na potpuno novu platformu ili operativni sustav najsloženija je vrsta migracije.
Prva vrsta migracije koda je jednostavno kretanje s jedne verzije jezika na noviju, ali sintaktički drugačiju verziju. Ovo je najlakši put migracije jer se osnovna struktura i većina programskih konstrukcija obično ne mijenja. U mnogim slučajevima stari kod bi zapravo funkcionirao, ali nove i poboljšane rutine ili modularizacija mogu se poboljšati preuređivanjem koda kako bi odgovarao prirodi novog jezika. Stoga bi migracija koda dovela do veće učinkovitosti u izvršenju.
Druga razina migracije koda bila bi migracija na potpuno drugačiji programski jezik. To bi moglo biti uzrokovano prijenosom na novi softverski sustav ili implementacijom drugačijeg sustava upravljanja relacijskim bazama podataka (RDMS). Ova vrsta migracije često zahtijeva da programeri nauče potpuno novi jezik ili da se dovedu novi programeri da pomognu u migraciji. U tom slučaju, cijeli program se mora prepisati iz temelja. Iako većina konstrukcija vjerojatno postoji u oba jezika, precizna sintaksa je obično potpuno drugačija.
Najsloženiji primjer migracije koda je migracija na potpuno novu platformu i/ili operativni sustav (OS). Time se ne mijenja samo programski jezik, već i strojni kod iza jezika. Dok većina modernih programskih jezika štiti programera od ovog koda niske razine, poznavanje OS-a i načina na koji on radi ključno je za proizvodnju koda koji je učinkovit i koji se izvršava prema očekivanjima.
Bez obzira na vrstu migracije, pristup bi trebao biti isti. Tim za migraciju ili programer trebao bi razbiti svaki modul, funkciju i podrutinu u njegovu svrhu i dijagram toka programa. Ovo je obrnuti inženjering izvornog životnog ciklusa razvoja softvera (SDLC). Nakon što se ti moduli i funkcije zacrtaju u njihovoj svrsi na visokoj razini, mogu se ponovno napisati i testirati na podijeljen način na novom jeziku. Kao i svaki napredni projekt računalnog programiranja, ispravno planiranje i dokumentacija ključ su uspješne migracije koda.