Reingegnerizzazione
Da Wikipedia, l'enciclopedia libera.
La reingegnerizzazione o ingegneria inversa (spesso si usa il termine inglese reverse engineering) è il processo di prendere qualcosa (un dispositivo, un componente elettrico, un programma software, ecc.) e analizzarne in dettaglio il funzionamento, solitamente con l'intenzione di costruire un nuovo dispositivo o programma che faccia la stessa cosa senza in realtà copiare niente dall'originale; ovvero realizzare un secondo dispositivo, componente o programma in grado di interfacciarsi con il primo.
Il reverse engineering viene fatto comunemente per evitare di violare i diritti d'autore sulla funzionalità desiderata, e può venire usato per cercare di eludere un brevetto, sebbene ciò sia un po' rischioso: i brevetti si applicano alle funzionalità, non a loro specifiche implementazioni.
Il reverse engineering viene usato spesso dalle forze armate al fine di copiare la tecnologia di altre nazioni, spesso in congiunzione a operazioni di intelligence. È stato ampiamente usato durante la Seconda Guerra Mondiale e la Guerra Fredda.
Il reverse engineering di sistemi software o hardware con scopi di interoperabilità, per esempio al fine di supportare formati di file o periferiche hardware non documentati, è prevalentemente ritenuto essere legale, sebbene i detentori spesso facciano valere aggressivamente i loro brevetti. Tuttavia, poiché nell'Unione Europea non è passata la legge per i brevetti software, vige la legge del diritto penale informatico locale. Nel caso specifico italiano, la reingegnerizzazione a scopo di interoperabilità con altri sistemi (e solo a questo scopo) è un atto pienamente lecito ai sensi dell'art. 64 della legge 633 del 22 Aprile 1941, come modificata dall'art. 5 del D. Lgs. 518/1992, sia in senso "leggero" (qualora egli compia tali atti durante operazioni di caricamento, visualizzazione, esecuzione, trasmissione o memorizzazione del programma che egli ha il diritto di eseguire) che in senso di decompilazione vera e propria, ma solo al fine di permettere l'interoperabilità del software con altri programmi. L'accezione di software è estesa per analogia a concetti informatici quali il formato di un file o la struttura interna di un protocollo.
Altri scopi del reverse engineering comprendono il security auditing, la rimozione di protezione da copia ("Cracking"), l'aggiramento di restrizioni d'accesso spesso presenti in prodotti di elettronica di consumo, la pura curiosità, e la personalizzazione di sistemi embedded.