Vad är programskivning?
I programapplikationer är programskivning en metod för att identifiera kärnelementen i ett program och försiktigt extrahera dem från den mer komplicerade koden som gör att programmet kan fungera. Processen med skivning av program är särskilt viktig för programvarutekniska ansträngningar, eftersom det gör det möjligt för programvaruingenjören att hitta vägen genom komplicerade kodsträngar för att komma åt källkoden som faktiskt driver applikationen. Att kunna extrahera dessa underprogram och visa källkoden gör det möjligt att identifiera ett brett utbud av potentiella buggar och därmed göra programvaran mer effektiv.
Det är inte ovanligt att kod är avsiktligt komplicerad. En av de främsta orsakerna till denna åtgärd är att de mer komplicerade delarna av koden hjälper till att skydda källkoden från korruption av virus och hackingförsök. Vanligtvis lägger en programmerare till en hel del extra kod som i huvudsak gör det nödvändigt att gå igenom ett antal extra steg för att utföra vad som kan hanteras av källkoden med bara några få steg. Även om detta är ett önskvärt tillstånd ur perspektivet att skydda programvaran från möjlig korruption, finns det situationer där det finns behov av att komma till källkoden. Det är där programskivning spelar in.
Det finns två grundläggande metoder eller dimensioner för att skära in program. Den semantiska dimensionen fokuserar på elementen i kodsträngen som är nödvändiga och därmed kommer att behållas. Både statiska och dynamiska funktioner identifieras och bevaras genom att använda specifika metoder för skivning som lämnar efter sig de väsentliga elementen men tar bort mycket av koden som införts som en del av maskeringsprocessen. Med semantisk programskivning har ingenjören en hel del diskretion när det gäller att bestämma vad, om någon, av den extra koden som faktiskt återstår.
Syntaktisk programskivning ger ingenjören samma mängd alternativ. Med detta tillvägagångssätt tas allt som inte är nödvändigt för kärnans funktion i koden bort. Om en sträng visar sig inte tjäna något verkligt syfte och inte har någon inverkan på semantiken av intresse som finns i koden, går den. Detta tillvägagångssätt hjälper till att bevara programmets ursprungliga syntax utan extra krusiduller.
En andra och allt vanligare användning av syntaktisk programskivning kallas amorf programskivning. Med detta tillvägagångssätt är målet att göra det möjligt för segmentet att fortsätta arbeta med alla syntaktiska funktioner som hjälper till att upprätthålla de semantiska begränsningarna som ingenjören vill bevara i koden.