Ingegneria inversa

Da Wikipedia, l'enciclopedia libera.

L'ingegneria inversa (spesso si usa il termine retroingegneria) consiste nell'analisi dettagliata del funzionamento di un oggetto (dispositivo, componente elettrico, meccanismo, software, ecc.) al fine di costruire un nuovo dispositivo o programma che abbia un funzionamento analogo, magari migliorando od aumentando l'efficienza dello stesso, senza in realtà copiare niente dall'originale; inoltre, può tentare di realizzare un secondo oggetto in grado di interfacciarsi con il primo[1].

Processo classico[modifica | modifica wikitesto]

In molti casi il processo produttivo di un oggetto inizia con la creazione manuale di una scultura realizzata da un artista o da un designer con materiali come legno, creta o speciali plastiche. Il prototipo viene modellato in modo tale da conferirgli specifiche caratteristiche funzionali ed estetiche; spesso, però, viene poi cambiato durante il ciclo produttivo. Specialmente nel caso di superfici a geometria libera i cambiamenti alle parti originali del progetto sono molto difficili da effettuare e, spesso, non possono essere neppure analizzati o descritti in rapporto al disegno originale. Appare chiara, quindi, l'utilità di una tecnica finalizzata alla creazione, in modo automatico ed in tempi brevi, del modello CAD dell'oggetto fisico da realizzare. Il compito dell'ingegneria inversa è proprio quello di soddisfare questa esigenza. Partendo da un prototipo, o da un oggetto che si vuole ricostruire, o da parti specifiche delle quali si vogliono effettuare particolari analisi si ricava, mediante il processo di reverse engineering, il relativo modello CAD. Questo viene utilizzato per effettuare agevolmente la modifica di parti esistenti, lo sviluppo di nuove parti, l'analisi dimensionale e dare il via al processo produttivo (CAM process).

Significato e scopi della reingegnerizzazione inversa:

  1. digitalizzazione della superficie
  2. editing e filtraggio dei dati di misura
  3. segmentazione e creazione dei modelli matematici
  4. creazione dei modelli CAD

Processo in informatica[modifica | modifica wikitesto]

È il processo di analisi di un sistema software esistente per creare una sua rappresentazione ad alto livello di astrazione.

In senso stretto l'attività di ingegneria inversa consiste nella comprensione del funzionamento e della realizzazione di un dispositivo fisico o virtuale al fine di produrre il nuovo dispositivo, mentre il termine reingegnerizzazione comprende entrambe le attività, ovvero quella di analisi e quella di ridisegno.

In particolare, per affrontare seriamente il reversing nell'ambito dei software sono essenziali conoscenze di assembly, programmazione e logica.

In genere le pratiche di reversing vengono utilizzate quando una softwarehouse mantiene un codice proprietario per i suoi prodotti. A quel punto il reverser analizza i programmi e cerca di capirne il funzionamento senza avere a disposizione un sorgente. Alternativamente, il reversing viene applicato come forma di hacking, per permettere a dispositivi o a software di fare qualcosa per cui non sono stati progettati (come ultimamente sta succedendo con i lettori Mp3)[2].

Spesso il reversing invece entra in gioco con i videogame, per crearne delle varianti multiplayer e modificate (non necessariamente crackate) per rendere l'esperienza di gioco più divertente; così infatti sono nati moltissimi delle versioni multiplayer di famosi videogame single player come GTA.

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.

Reverse engineering in architettura[modifica | modifica wikitesto]

In questi ultimi anni alcuni architetti di fama internazionale, come Frank Owen Gehry, si avvalgono di questa tecnica per poter progettare al meglio le loro architetture. Queste opere sono costituite principalmente da superfici libere, di difficile gestione da parte di programmi CAD tradizionali. Infatti la progettazione di tali edifici comincia da un modello tridimensionale reale, come un plastico o addirittura una vera e propria scultura che poi verrà scansionata con uno scanner 3D per digitalizzare tali forme e poi gestiti da software di modellazione 3D. Questa procedura è afferente al mondo CAE (Computer Aided Engineering), che attraverso sofisticati sistemi di scansione, permette di acquisire i dati di superficie di topologie anche complesse di prototipi artigianali e di restituirli sotto forma di modelli di superfici all'interno dell'ambiente di lavoro digitale. Particolarmente usata nel mondo informatico della Motion Capture.

Note[modifica | modifica wikitesto]

  1. ^ Cos'è il reverse engineering?
  2. ^ Che differenza esiste tra Cracking e Reverse Engineering

Bibliografia[modifica | modifica wikitesto]

  • C.K. Song and S.W. Kim, Reverse Engineering: Autonomus Digitization of Free-Formed Surfaces on a CNC Coordinate Measuring Machine. Int. J. Mach. Tools Manufact, Vol. 37 (7), 1041-1051, 1997.
  • Bruce Lindsey, Gehry digitale, Resistenza materiale/Costruzione digitale, Universale di architettura n.108 a cura di A. Saggio, Testo & Immagine, Torino, 2002.
  • Francesco De Luca, Marco Nardini, “Dietro le quinte. Tecniche d’avanguardia nella progettazione contemporanea.”, Universale di architettura 135 a cura di A. Saggio, Testo & Immagine

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]