Tarkvararakendustes on programmi viilutamine meetod tarkvaraprogrammi põhielementide tuvastamiseks ja nende õrnaks eraldamiseks keerulisemast koodist, mis võimaldab programmil töötada. See on eriti oluline tarkvaratehniliste jõupingutuste jaoks, kuna see võimaldab tarkvarainseneril leida tee läbi keeruliste koodijadade, et pääseda juurde lähtekoodile, mis rakendust tegelikult juhib. Nende alamprogrammide ekstraktimise ja lähtekoodi vaatamise võimalus võimaldab tuvastada paljusid võimalikke vigu ja seeläbi muuta tarkvara tõhusamaks.
Pole ebatavaline, et kood on tahtlikult keeruline. Selle toimingu üks peamisi põhjuseid on see, et koodi keerulisemad osad aitavad kaitsta lähtekoodi viiruste ja häkkimiskatsete tekitatud rikkumiste eest. Tavaliselt lisab programmeerija palju lisakoodi, mis teeb sisuliselt vajalikuks läbida mitmeid täiendavaid samme, et saavutada seda, mida saab lähtekoodiga hallata vaid mõne sammuga. Kuigi see on tarkvara võimaliku korruptsiooni eest kaitsmise seisukohast soovitav, on olukordi, kus on vaja jõuda lähtekoodini. Siin tuleb mängu programmide lõikamine.
Programmeerimiseks on kaks peamist lähenemisviisi või dimensiooni. Semantiline mõõde keskendub koodistringi elementidele, mis on vajalikud ja seega säilivad. Nii staatilised kui ka dünaamilised funktsioonid tuvastatakse ja säilitatakse, kasutades spetsiifilisi viilutamismeetodeid, mis jätavad maha olulised elemendid, kuid eemaldavad suure osa maskeerimisprotsessi osana sisestatud koodist. Programmi semantilise tükeldamise korral on inseneril piisavalt vabadust otsustada, mis lisakoodist tegelikult alles jääb, kui üldse.
Süntaktiline programmi viilutamine ei anna insenerile sama palju võimalusi. Selle lähenemisviisiga eemaldatakse kõik, mis pole koodi põhifunktsiooni jaoks oluline. Kui leitakse, et stringil pole tegelikku eesmärki ja see ei mõjuta koodis leiduvat huvipakkuvat semantikat, siis see läheb. See lähenemine aitab säilitada programmi algse süntaksi ilma täiendavate viperusteta.
Teine ja üha levinum süntaktilise programmi viilutamise kasutusala on tuntud kui amorfne programmide viilutamine. Selle lähenemisviisi eesmärk on võimaldada lõigul jätkata tööd mis tahes süntaktilise funktsiooniga, mis aitab säilitada semantilisi piiranguid, mida insener soovib koodis säilitada.