Hvad er programskæring?
I softwareapplikationer er programopskæring en metode til at identificere kerneelementerne i et softwareprogram og forsigtigt udtrække dem fra den mere komplicerede kode, der giver programmet mulighed for at fungere. Processen med programopskæring er især vigtig for software engineering indsats, da det giver softwareingeniøren mulighed for at finde vejen gennem komplicerede strenge af kode for at få adgang til den kildekode, der faktisk driver applikationen. At være i stand til at udpakke disse underprogrammer og se kildekoden gør det muligt at identificere en lang række potentielle bugs og dermed gøre softwaren kørt med mere effektivitet.
Det er ikke usædvanligt, at kode med vilje er kompliceret. En af de vigtigste årsager til denne handling er, at de mere komplicerede dele af koden hjælper med at beskytte kildekoden mod korruption af vira og hackingforsøg. Normalt vil en programmerer tilføje en masse ekstra kode, der væsentligt gør det nødvendigt at gennemgå et antal ekstra trin for at udføre, hvad der kunne styres af kildekoden med kun et par trin. Selvom dette er en ønskelig tilstand fra perspektivet at beskytte softwaren mod mulig korruption, er der situationer, hvor der er behov for at komme til kildekoden. Det er her programudskæring kommer i spil.
Der er to grundlæggende tilgange eller dimensioner til programafskæring. Den semantiske dimension fokuserer på elementerne i kodestrengen, der er nødvendige, og som således vil blive bevaret. Både statiske og dynamiske funktioner identificeres og bevares ved hjælp af specifikke opskæringsmetoder, der efterlader de væsentlige elementer, men fjerner meget af koden, der er indsat som en del af maskeringsprocessen. Med semantisk programskæring har ingeniøren en god skønsmæssig skøn ved at beslutte, hvad, hvis nogen, af den ekstra kode, der faktisk er tilbage.
Syntaktisk programskæring giver ikke ingeniøren den samme mængde muligheder. Med denne tilgang fjernes alt, hvad der ikke er væsentligt for kodenes kernefunktion. Hvis det konstateres, at en streng ikke tjener noget reelt formål og ikke har nogen indflydelse på semantikken af interesse, der findes i koden, går den. Denne tilgang hjælper med at bevare programmets originale syntaks uden ekstra dikkedarer.
En anden og stadig mere almindelig anvendelse af syntaktisk programskæring kendes som amorf programskæring. Med denne tilgang er målet at gøre det muligt for skiven at fortsætte med at arbejde med enhver syntaktisk funktion, der hjælper med at opretholde de semantiske begrænsninger, som ingeniøren ønsker at bevare i koden.