V programskih aplikacijah je rezanje programov metoda za identifikacijo osrednjih elementov programskega programa in njihovo nežno ekstrahiranje iz bolj zapletene kode, ki omogoča, da program deluje. To je še posebej pomembno za prizadevanja programskega inženiringa, saj omogoča programskemu inženirju, da najde pot skozi zapletene nize kode, da bi dostopal do izvorne kode, ki dejansko poganja aplikacijo. Zmožnost ekstrahiranja teh podprogramov in ogled izvorne kode omogoča identifikacijo širokega spektra potencialnih napak in s tem učinkovitejše delovanje programske opreme.
Ni nenavadno, da je koda namerno zapletena. Eden od glavnih razlogov za to dejanje je, da bolj zapleteni deli kode pomagajo zaščititi izvorno kodo pred okvaro z virusi in poskusi vdora. Običajno bo programer dodal veliko dodatne kode, zaradi katere je v bistvu potrebno opraviti številne dodatne korake, da bi dosegli tisto, kar bi lahko upravljala izvorna koda z le nekaj koraki. Čeprav je to zaželeno stanje z vidika zaščite programske opreme pred morebitno korupcijo, obstajajo situacije, ko je treba priti do izvorne kode. Tu pride v poštev rezanje programov.
Obstajata dva osnovna pristopa ali razsežnosti za rezanje programov. Semantična dimenzija se osredotoča na elemente kodnega niza, ki so potrebni in bodo tako ohranjeni. Tako statične kot dinamične funkcije so identificirane in ohranjene z uporabo posebnih metod rezanja, ki pustijo za seboj bistvene elemente, vendar odstranijo velik del kode, vstavljene kot del postopka maskiranja. Pri semantičnem rezanju programov ima inženir precej diskrecijske pravice pri odločanju, kaj od dodatne kode dejansko ostane, če sploh kaj.
Sintaktično rezanje programov inženirju ne zagotavlja enake količine možnosti. S tem pristopom se odstrani vse, kar ni bistveno za osnovno funkcijo kode. Če se ugotovi, da niz ne služi pravemu namenu in nima nobenega vpliva na semantiko zanimanja, ki jo najdemo v kodi, gre. Ta pristop pomaga ohraniti izvirno sintakso programa brez dodatnih dodatkov.
Druga in vse pogostejša uporaba sintaktičnega programskega rezanja je znana kot amorfno rezanje programa. S tem pristopom je cilj omogočiti, da rezina še naprej deluje s katero koli sintaktično funkcijo, ki pomaga ohranjati semantične omejitve, ki jih želi inženir ohraniti v kodi.