Caratteristiche e Differenza tra Software Reengineering e Forward Engineering

Caratteristiche e Differenza tra Software Reengineering e Forward Engineering

Software Reengineering

Il Software Reengineering è il processo di modifica di un software Legacy importante per l’organizzione, atto a migliorare le prestazioni e la struttura di esso, e a produrre nuova documentazione del software per rendere il codice più comprensibile, semplificando così le future manutenzioni.
Il costo della manutenzione del software Legacy aumenta proporzionalmente con l’avanzare del tempo, e la creazione di nuovo software ad hoc che vada a sostituire il Legacy molto spesso risulta avere costi proibitivi per l’organizzazione.

Il Software Reengineering dunque è senz’altro utile per aumentare la qualità, l’utilità, e il periodo di vita del software Legacy.

Caratteristiche e Differenza tra Software Reengineering e Forward Engineering

Software Reengineering vs Forward Engineering

Con il termine Forward Engineering si intende la creazione di una nuova applicazione che sostituisca quella Legacy esistente.
La grande differenza tra i due processi risulta nelle specifiche iniziali del sistema. Invece di partire con nuove specifiche, nel Software Reengineering è il sistema Legacy a fungere come specifica per il processo. L’attività fondamentale in questo caso consisterà principalmente nel comprendere il funzionamento del codice del Legacy e a modificarlo. Viceversa nel Forward Engineering il punto di partenza del processo sono le specifiche richieste: il lavoro poi consisterà nella progettazione e implementazione di nuovo codice.

Il Software Reengineering ha due grandi vantaggi rispetto alla radicale decisione di sviluppare una nuova applicazione:

  1. Riduzione dei Rischi. Esiste un alto rischio associato allo sviluppo di nuovo codice per una grande applicazione importante ed essenziale per l’organizzazione. Possono essere fatti errori nelle specifiche della nuova applicazione, errori nello sviluppo, bug difficilmente rintracciabili ecc.
  2. Riduzione dei Costi. Come già detto, dal lato economico risulta molto conveniente il Reengineering dell’ applicazione rispetto alla creazione di una nuova. Dalle statistiche fatte, i costi di Reengineering risultano essere stimati inferiori a un quarto di quelli sostenuti per il Forward Engineering.

Fasi processo di Reengineering

Fasi del Processo di Reengineering in informatica

Le fasi principali del processo di Reengineering schematizzato in precedenza sono le seguenti e verranno successivamente trattate:

  1. Traduzione del codice: Il codice sorgente del programma viene tradotto da un vecchio linguaggio di programmazione a una nuova versione dello stesso linguaggio, oppure ad un linguaggio di programmazione più moderno.
  2. Reverse Engineering: Il programma viene analizzato in profondità per ottenere utili informazioni finalizzate alla redazione di una documentazione della sua organizzazione e del suo funzionamento.
  3. Miglioramento della struttura del programma: Le strutture di controllo del programma vengo migliorate per aumentarne la leggibilità e facilitarne il riuso.
  4. Modularizzazione del programma: Le parti di codice relative alla stessa funzionalità vengono raggruppate e riorganizzate in modo da eliminare ridondanze dove possibile.
  5. Reingegnerizzaione dei dati: I dati già acquisiti dall’applicazione vengono reingegnerizzati e trasformati per essere elaborati rispecchiando le nuove strutture dati del software reingegnerizzato.

Queste fasi elencate non sono ovviamente tutte necessarie per il processo di Reengineering. Per esempio se si fa uso di tool ad hoc, il Reverse Engineering viene spesso svolto automaticamente, oppure la Reingegnerizzazione dei dati deve essere svolta solo quando le strutture dati del programma vengono cambiate.

Tuttavia la Ristrutturazione del programma è sempre fondamentale.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: www.vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *