Koodi migratsioon on programmeerimiskoodi liikumine ühest süsteemist teise. Koodi migratsioonil on kolm erinevat taset, mille keerukus, kulud ja riskid suurenevad. Lihtne migratsioon hõlmab üleminekut keelest uuemale versioonile. Teine, keerulisem migratsioonitase hõlmab üleminekut teisele programmeerimiskeelele. Täiesti uuele platvormile või operatsioonisüsteemile üleminek on kõige keerulisem migratsioonitüüp.
Esimest tüüpi koodi migreerimine on lihtne liikumine ühelt keeleversioonilt uuemale, kuid süntaktiliselt erinevale versioonile. See on migratsioonimarsruutidest kõige lihtsam, kuna põhistruktuur ja suur osa programmeerimiskonstruktsioonidest tavaliselt ei muutu. Paljudel juhtudel vana kood tegelikult töötaks, kuid uusi ja täiustatud rutiine või modulariseerimist saab täiustada, kui kood uue keele olemusega ümber töötada. Seetõttu tooks koodi migreerimine kaasa täitmise tõhususe.
Koodi migratsiooni teine tase oleks üleminek täiesti erinevale programmeerimiskeelele. Selle põhjuseks võib olla uude tarkvarasüsteemi teisaldamine või erineva relatsioonilise andmebaasi haldussüsteemi (RDMS) rakendamine. Seda tüüpi migratsioon nõuab sageli, et programmeerijad õpiksid täiesti uue keele või kaasataks uued programmeerijad, kes migratsiooni abistavad. Sel juhul tuleb kogu programm maast madalast ümber kirjutada. Kuigi enamik konstruktsioone eksisteerib tõenäoliselt mõlemas keeles, on täpne süntaks tavaliselt täiesti erinev.
Koodi migreerimise kõige keerulisem näide on üleminek täiesti uuele platvormile ja/või operatsioonisüsteemile (OS). See ei muuda mitte ainult programmeerimiskeelt, vaid ka keele taga olevat masinkoodi. Kuigi enamik kaasaegseid programmeerimiskeeli kaitsevad programmeerijat selle madala taseme koodi eest, on OS-i ja selle toimimise tundmine tõhusa ja ootuspäraselt töötava koodi loomiseks hädavajalik.
Olenemata rände tüübist peaks lähenemine olema sama. Migratsioonimeeskond või programmeerija peaks jagama iga mooduli, funktsiooni ja alamrutiini eesmärgi järgi ja programmi vooskeemi. See on algse tarkvaraarenduse elutsükli (SDLC) pöördprojekteerimine. Kui need moodulid ja funktsioonid on nende kõrgetasemelise eesmärgi jaoks kaardistatud, saab neid uues keeles lahterdatud viisil ümber kirjutada ja testida. Nagu iga täiustatud arvutiprogrammeerimisprojekt, on korrektne planeerimine ja dokumentatsioon eduka koodi migratsiooni võti.