Što je rezanje programa?

U softverskim aplikacijama, rezanje programa je metoda identificiranja temeljnih elemenata softverskog programa i nježnog izdvajanja iz kompliciranijeg koda koji omogućuje funkcioniranje programa. Ovo je posebno važno za napore softverskog inženjerstva, jer omogućuje softverskom inženjeru da pronađe put kroz komplicirane nizove koda kako bi pristupio izvornom kodu koji zapravo pokreće aplikaciju. Mogućnost izdvajanja ovih potprograma i pregleda izvornog koda omogućuje identificiranje širokog raspona potencijalnih bugova i na taj način učiniti softver učinkovitijim.

Nije neobično da je kod namjerno kompliciran. Jedan od glavnih razloga za ovu akciju je taj što kompliciraniji dijelovi koda pomažu u zaštiti izvornog koda od oštećenja virusima i pokušaja hakiranja. Obično će programer dodati mnogo dodatnog koda koji u biti čini potrebnim proći niz dodatnih koraka kako bi se postigao ono čime bi se mogao upravljati izvornim kodom u samo nekoliko koraka. Iako je ovo poželjno stanje iz perspektive zaštite softvera od mogućeg oštećenja, postoje situacije u kojima je potrebno doći do izvornog koda. Tu dolazi u obzir rezanje programa.

Postoje dva osnovna pristupa ili dimenzije rezanju programa. Semantička dimenzija se usredotočuje na elemente kodnog niza koji su neophodni i stoga će biti zadržani. I statičke i dinamičke funkcije identificiraju se i čuvaju korištenjem specifičnih metoda rezanja koje ostavljaju za sobom bitne elemente, ali uklanjaju veći dio koda umetnutog kao dio procesa maskiranja. Uz semantičko rezanje programa, inženjer ima priličnu diskreciju u odlučivanju što, ako uopće ima, od dodatnog koda zapravo ostaje.

Sintaktičko rezanje programa ne pruža inženjeru istu količinu opcija. Ovim pristupom uklanja se sve što nije bitno za osnovnu funkciju koda. Ako se utvrdi da niz ne služi pravoj svrsi i da nema nikakav utjecaj na semantiku od interesa koja se nalazi u kodu, on ide. Ovaj pristup pomaže u očuvanju izvorne sintakse programa bez ikakvih dodatnih ukrasa.

Druga i sve češća upotreba sintaktičkog rezanja programa poznata je kao amorfno rezanje programa. S ovim pristupom, cilj je omogućiti da slice nastavi raditi s bilo kojom sintaktičkom funkcijom koja pomaže u održavanju semantičkih ograničenja koja inženjer želi sačuvati u kodu.