Mikä on ohjelmaleikkaus?

Ohjelmistosovelluksissa ohjelman leikkaaminen on tapa tunnistaa ohjelmiston ydinosat ja poimia ne varovasti monimutkaisemmasta koodista, joka mahdollistaa ohjelman toiminnan. Tämä on erityisen tärkeää ohjelmistosuunnittelupyrkimyksille, koska sen avulla ohjelmistosuunnittelija voi löytää tien monimutkaisten merkkijonojen läpi päästäkseen sovellusta tosiasiallisesti ohjaavaan lähdekoodiin. Mahdollisuus poimia nämä aliohjelmat ja tarkastella lähdekoodia mahdollistaa monenlaisten mahdollisten virheiden tunnistamisen ja siten ohjelmiston käytön tehokkaammin.

Ei ole epätavallista, että koodi on tarkoituksellisesti monimutkainen. Yksi tärkeimmistä syistä tähän toimintaan on, että koodin monimutkaisemmat osat auttavat suojaamaan lähdekoodia virusten ja hakkerointiyritysten aiheuttamalta korruptiolta. Yleensä ohjelmoija lisää paljon ylimääräistä koodia, mikä olennaisesti edellyttää useiden lisävaiheiden suorittamista, jotta lähdekoodilla hallittavissa olevat asiat voidaan suorittaa vain muutamalla askeleella. Vaikka tämä on toivottava tila ohjelmiston suojaamiseksi mahdolliselta korruptiolta, on tilanteita, joissa lähdekoodiin on päästävä. Sieltä tulee ohjelman leikkaaminen.

Viipaloinnin ohjelmoinnissa on kaksi perusmenetelmää tai ulottuvuutta. Semanttinen ulottuvuus keskittyy koodimerkkijonon elementteihin, jotka ovat välttämättömiä ja siten säilytetään. Sekä staattiset että dynaamiset toiminnot tunnistetaan ja säilytetään käyttämällä erityisiä leikkausmenetelmiä, jotka jättävät olennaiset elementit taakse, mutta poistavat suuren osan peiteprosessin aikana lisätystä koodista. Semanttisen ohjelman viipaloinnin avulla insinöörillä on melko paljon harkintavaltaa päättää, mitä ylimääräistä koodia on jäljellä.

Syntaktinen ohjelman leikkaaminen ei tarjoa insinöörille yhtä paljon vaihtoehtoja. Tällä lähestymistavalla kaikki, mikä ei ole välttämätöntä koodin ydintoiminnalle, poistetaan. Jos merkkijonon ei havaita palvelevan todellista tarkoitusta eikä sillä ole vaikutusta koodin kiinnostavaan semantiikkaan, se menee. Tämä lähestymistapa auttaa säilyttämään ohjelman alkuperäisen syntaksin ilman ylimääräisiä röyhkeitä.

Toinen ja yhä yleisempi syntaktisen ohjelman viipaloinnin käyttö tunnetaan amorfisena ohjelmaleikkauksena. Tällä lähestymistavalla tavoitteena on, että siivu voi jatkaa työskentelyään minkä tahansa syntaktisen funktion kanssa, joka auttaa ylläpitämään semanttiset rajoitukset, jotka insinööri haluaa säilyttää koodissa.