Che cos’è l’affettatura del programma?

Nelle applicazioni software, lo slicing del programma è un metodo per identificare gli elementi principali di un programma software ed estrarli delicatamente dal codice più complicato che consente al programma di funzionare. Ciò è particolarmente importante per gli sforzi di ingegneria del software, in quanto consente all’ingegnere del software di trovare la strada attraverso complicate stringhe di codice per accedere al codice sorgente che effettivamente guida l’applicazione. Essere in grado di estrarre questi sottoprogrammi e visualizzare il codice sorgente rende possibile identificare una vasta gamma di potenziali bug e quindi far funzionare il software con maggiore efficienza.

Non è insolito che il codice sia intenzionalmente complicato. Uno dei motivi principali di questa azione è che le parti più complicate del codice aiutano a proteggere il codice sorgente dalla corruzione di virus e tentativi di hacking. Di solito, un programmatore aggiunge una grande quantità di codice extra che essenzialmente rende necessario eseguire una serie di passaggi aggiuntivi per realizzare ciò che potrebbe essere gestito dal codice sorgente con solo pochi passaggi. Sebbene questo sia uno stato desiderabile dal punto di vista della protezione del software da possibili danneggiamenti, ci sono situazioni in cui è necessario accedere al codice sorgente. È qui che entra in gioco lo slicing del programma.

Esistono due approcci o dimensioni di base per programmare lo slicing. La dimensione semantica si concentra sugli elementi della stringa di codice che sono necessari e quindi verranno mantenuti. Sia le funzioni statiche che quelle dinamiche sono identificate e preservate facendo uso di specifici metodi di slicing che lasciano gli elementi essenziali ma rimuovono gran parte del codice inserito come parte del processo di mascheramento. Con lo slicing semantico del programma, l’ingegnere ha una discreta discrezionalità nel decidere cosa, se del caso, del codice extra rimane effettivamente.

Lo slicing del programma sintattico non fornisce all’ingegnere la stessa quantità di opzioni. Con questo approccio, viene rimosso tutto ciò che non è essenziale per la funzione principale del codice. Se si scopre che una stringa non ha uno scopo reale e non ha alcun impatto sulla semantica di interesse trovata nel codice, va. Questo approccio aiuta a preservare la sintassi originale del programma senza ulteriori fronzoli.

Un secondo uso sempre più comune dello slicing sintattico del programma è noto come slicing amorfo del programma. Con questo approccio, l’obiettivo è consentire alla slice di continuare a lavorare con qualsiasi funzione sintattica che aiuti a mantenere i vincoli semantici che l’ingegnere desidera preservare nel codice.