Migracija kode je premikanje programske kode iz enega sistema v drugega. Obstajajo tri različne ravni migracije kode z naraščajočo zapletenostjo, stroški in tveganjem. Enostavna migracija vključuje prehod z jezika na novejšo različico. Druga, bolj zapletena stopnja migracije vključuje prehod na drug programski jezik. Selitev na povsem novo platformo ali operacijski sistem je najbolj zapletena vrsta migracije.
Prva vrsta migracije kode je preprosto premikanje iz ene različice jezika v novejšo, a skladenjsko drugačno različico. To je najlažja od migracijskih poti, saj se osnovna struktura in večina programskih konstrukcij običajno ne spremeni. V mnogih primerih bi stara koda dejansko delovala, vendar je mogoče nove in izboljšane rutine ali modularizacijo izboljšati s preoblikovanjem kode, da bo ustrezala naravi novega jezika. Zato bi selitev kode vodila do večje učinkovitosti pri izvajanju.
Druga stopnja migracije kode bi bila selitev v popolnoma drug programski jezik. To je lahko posledica prenosa v nov sistem programske opreme ali implementacije drugega sistema za upravljanje relacijske baze podatkov (RDMS). Ta vrsta migracije pogosto zahteva, da se programerji naučijo povsem novega jezika, ali pa se pripeljejo novi programerji, ki pomagajo pri migraciji. V tem primeru je treba celoten program na novo napisati od začetka. Čeprav je verjetno, da večina konstrukcij obstaja v obeh jezikih, je natančna sintaksa običajno popolnoma drugačna.
Najbolj zapleten primer migracije kode je selitev na popolnoma novo platformo in/ali operacijski sistem (OS). To ne spremeni samo programskega jezika, ampak tudi strojno kodo za jezikom. Medtem ko večina sodobnih programskih jezikov ščiti programerja pred to nizko stopnjo kode, je poznavanje operacijskega sistema in njegovega delovanja bistveno za izdelavo kode, ki je učinkovita in se izvaja po pričakovanjih.
Ne glede na vrsto migracije mora biti pristop enak. Ekipa za migracijo ali programer mora vsak modul, funkcijo in podrutino razdeliti na njihov namen in diagram poteka programa. To je obratni inženiring prvotnega življenjskega cikla razvoja programske opreme (SDLC). Ko so ti moduli in funkcije začrtani na visoki ravni, jih je mogoče ponovno napisati in preizkusiti na ločen način v novem jeziku. Kot vsak napreden projekt računalniškega programiranja sta pravilno načrtovanje in dokumentacija ključ do uspešne migracije kode.