Domanda

Quello che di conversione / riscrittura di successo hai fatto di software sono stati coinvolti con? Ciò che là dove le lingue e il quadro coinvolti nel processo? Quanto grande è stato il software in questione? Infine ciò che è la parte superiore di uno o due cosa hai imparato da essere coinvolti con il processo.

Questo è legato a questa domanda

È stato utile?

Soluzione

Io vado per "molto astruso" qui:

  • porting di un simulatore di 8080 scritto in FORTRAN 77 da un DECsystem-10 di funzionamento TOPS-10 a un IBM 4381 mainframe esecuzione VM / CMS.

Altri suggerimenti

Ho riscritto 20.000 linee di Perl per usare "use strict" in ogni file. Ho dovuto aggiungere "mio" in tutto il mondo è stato necessario e ho dovuto correggere i bug che sono stati scoperti durante il processo.

La cosa più importante che ho imparato dal fare questo è: "Ci vuole sempre più di quanto si pensi".

Ho dovuto farlo fare tutto in una volta durante la notte in modo che gli altri programmatori non sarebbero scrivere nuovo, il codice non fissato allo stesso tempo. Ho pensato che sarebbe andare in fretta, ma non lo feci, e mi è stato ancora incisione su esso alle 6 del mattino del mattino successivo.

ho capito completo e controllato prima di chiunque altro ha iniziato a lavorare però!

ho riscritto una grande applicazione java web ad una domanda ASP.Net per una società immobiliare per vari motivi.

La cosa più importante che ho imparato è che, non importa quanto banale la funzione del sistema originale aveva, se non è nel secondo sistema, il cliente pensa la riscrittura è un fallimento. gestione delle aspettative è tutto quando si scrive il nuovo sistema.

Questo è il motivo più grande riscritture sono così difficili:. Sembra così facile per il cliente ( "Proprio ri-fare quello che ho già e aggiungere un paio di cose")

Il più cool per me, credo, era il porto di MAME per l'iPod . E 'stata una grande esperienza di apprendimento con hardware embedded, e ho avuto modo di lavorare con un sacco di grandi persone. Sito ufficiale .

sto facendo una riscrittura di un sistema di managment Inhouse progetto per un modello più standard MVC. La sua nello stack LAMP (PHP) e io sono vicino al primo traguardo.

Le cose che ho imparato da quel momento è quanto sia semplice il programma si sente all'inizio e ho cercato di non aggiungere complessità fino a quando ho dovuto.

Esempio è che ho programmato tutte le funzionalità prima (come se fossi un utente amministratore) e poi, quando cioè risolto, aggiungere la complessità di avere restrizioni (livelli utente etc)

ho portato / ridisegnato / riscritto un 30.000-line programma MS-DOS C ++ in una simile lunghezza ma molto più pieno di funzionalità e utilizzabile programma Java Swing.

Ho imparato a non prendere un altro lavoro che coinvolge C ++ o Java.

ho portato un Powerbuilder un'applicazione client-server, un paio di centinaia di schermi vale la pena, in un app ASP.NET (C #).

A causa di problemi di prestazioni e manutenibilità, ho avuto rispetto all'anno precedente spostato una tonnellata di SQL incorporato di script Powerbuilder e in stored procedure.

Anche se questo sarebbe fare un sacco di sussultare, avendo un sacco di logica di business nel database, significa l'applicazione Powerbuilder era relativamente "leggero" e quando abbiamo costruito il front-end .Net, si potrebbe sfruttare la SQL codebase e hanno un sacco di funzionalità già costruito e testato.

Non dico io consiglierei di costruire applicazioni in quel modo, ma certamente funzionato a nostro vantaggio in questo caso.

Abbiamo avuto uno strumento di generazione di codice nella nostra struttura dell'applicazione, che è stato utilizzato per leggere i file di dati basati su testo, a circa 20 altre applicazioni fatto uso di esso.

Abbiamo voluto fare uso di file di dati XML invece di file basati su testo strutturato. Il codice originale era abbastanza obsoleto e difficile da mantenere. Abbiamo sostituito questo strumento da una combinazione di script XSLT e una biblioteca di utilità. Per la libreria di utilità si potrebbe fare uso di un codice nel vecchio strumento.

Il risultato è stato che tutte le 20 applicazioni potrebbero ora fare uso sia il formato di file di testo basato obsoleti o il nuovo formato basato su XML. Abbiamo anche consegnato uno strumento di conversione generazione che trasforma i file di dati vecchi di nuovi file di dati XML.

Dopo aver portato fuori uno o due release abbiamo deciso che non saremo più supportiamo il vecchio formato basato su testo e tutti sono in grado di convertire i propri dati in formato XML.

abbiamo difficilmente hanno a che fare conversioni manuali,

Convertito l'applicazione principale azienda di pre-standard C ++ lo standard C ++. Abbiamo avuto un multimilionario vendita subordinato farlo funzionare su AIX, e dopo aver guardato l'abbiamo deciso che la conversione allo standard C ++ sarebbe stato semplice come la conversione in C tradizionale di IBM ++.

Non so il numero di linee, ma il codice sorgente di corsi a centinaia di megabyte.

Abbiamo usato gli strumenti standard Unix per fare questo, tra cui vi e compilatori assortiti.

Ci sono voluti un paio di mesi. La maggior parte delle correzioni erano quelli semplici, catturati dal compilatore e quasi meccanicamente fissi. Alcuni di loro erano molto più complicato.

Credo che la mia asporto principale era: Non si ottiene troppo terribilmente intelligente con il codice in un linguaggio che non è stato ancora standardizzato, o rischia di avere le cose cambiano in modi inaspettati. Abbiamo dovuto fare un sacco di scavare in alcuni degli adattamenti ingegnosi / abusi di C ++ torrenti.

Dieci anni fa sono riuscito una squadra che ha convertito un sistema CAD da DOS a Windows. La versione DOS utilizzato librerie birra fatta in casa per il disegno grafico, la versione di Windows utilizzata MFC. Il software è stato di circa 70.000 righe di codice C al momento della conversione. La cosa più importante che abbiamo imparato nel processo è il potere di astrazione. Tutte le routine non portatili specifiche del dispositivo sono stati isolati in alcuni file. Era quindi relativamente facile da sostituire le chiamate alla libreria DOS che richiama accedendo direttamente frame buffer con le chiamate API Windows. Analogamente, per ingresso abbiamo appena sostituito il ciclo degli eventi che controllato per eventi di tastiera e mouse, con il ciclo degli eventi di Windows corrispondente. Abbiamo continuato la nostra politica di isolare il codice non portabile (questa volta di Windows) dal resto del sistema, ma non abbiamo ancora trovato questa particolarmente utile. Forse un giorno ci porta il sistema a Mac OS X ed essere di nuovo grato.

Diversi. Ma ho citato uno.

E 'stato uno strumento di modellazione delle prestazioni. Parte delphi 1, parte Turbo Pascal. Aveva bisogno di una riscrittura altrimenti non sarebbe sopravvissuto. Così abbiamo iniziato come una squadra di 2, ma solo mi sopravvissuti fino alla fine. Ed ero pronto prima della scadenza; -).

Molte cose che abbiamo fatto:

  • Lo rendono multimodello. L'originale aveva un sacco di variabili globali. Li ho tutti rimossi e multi modello è stato facile adattarsi.
  • messaggi di errore estese. Fare clic su un messaggio e ottenere l'aiuto.
  • Molti grafici e diagrammi. Tutto cliccabile di drill-down.
  • Simulazione. Modificare i parametri nel corso del tempo e vedere quanto tempo la configurazione corrente è stato sufficiente.

Abbiamo davvero fatto questo uno pulito e questo ha pagato di nuovo pesantemente alla fine. Tale una grande esperienza di apprendimento.

Re-scritto un sistema per una società che elabora le fatture di legge - il sistema originale era una mostruosità VB che non aveva idea di buoni principi OO - tutto è stato mescolato insieme. L'HTML ha fatto SQL e SQL scritto HTML. Una gran parte di esso è stata un motore di regole personalizzate che utilizza qualcosa come XML per le regole.

Due squadre hanno fatto la ri-scrittura, che è durato circa 9 mesi. Una squadra ha fatto il front-end web e il flusso di lavoro di back-end, mentre l'altra squadra (che ero) ri-scritto il motore delle regole. Il nuovo sistema è stato scritto in C #, ed è stato fatto test-primo. L'aggiunta di nuove regole per il sistema quando ci hanno fatto era sporco semplice, ed era tutto verificabile. Lungo la strada che abbiamo fatto le cose come trasformare l'azienda da VSS a SVN, implementare l'integrazione continua, automatizzare la distribuzione, e insegnare agli altri sviluppatori come fare TDD e altre pratiche Scrum / XP.

aspettative Gestione è stato fondamentale attraverso il progetto. Avere un cliente che era esperto sul software è stato molto utile.

Avere un mix di grandi dimensioni (end-to-end) test insieme a test di unità e di integrazione globale aiutato tonnellate.

Convertito vBulletin che è scritto in PHP in C # / Asp.NET. Sono abbastanza familiarità con entrambe le lingue, ma PHP è il mani verso il basso il vincitore per la costruzione di quel software. Il più grande dolore nella parte posteriore è stata la necessità di fare un C # equivalente di eval di PHP () per chiamare i modelli.

E 'stata la mia prima sfida nel cercare di fare una conversione. Ho imparato che ho bisogno di più esperienza con C # e che scrivere da zero è solo il percorso più facile a volte.

Ho convertito un dinamico accumulo processo completamente scritto in Perl per un C # / soluzione Net utilizzando un flusso di lavoro-motore di un collega aveva sviluppato. (Che era ancora in fase beta - così ho dovuto fare alcuni affinamenti). Che mi ha dato la possibilità di vedere sottacqua per aggiungere fail-safe e fail-over funzionalità al processo di compilazione.

Prima di chiedere - senza -. Microsoft workflow-fondazione non poteva essere utilizzato in quanto non è possibile modificare dinamicamente un processo durante il suo tempo di esecuzione

Quello che ho imparato:

  • ad odiare il Perl-sviluppatore
  • processo di ottimizzazione utilizzando un wf-motore
  • fail-safe e fail-over strategie
  • alcune modifiche C #;)

Alla fine è coperto circa 5k - 6K (compreso il wf-engine) origine LoC da 3 200 LoC Perl-files. Ma è stato divertente - e di gran lunga migliore, alla fine;)

La conversione di codice C teoricamente portatile in codice C teoricamente portabile su architetture per supportare una modifica hardware che salva i dollari società X per unità.

La dimensione varia - questo è un bisogno comune, e ho fatto piccoli e grandi progetti

.

ho imparato a scrivere più codice C portabile. L'eleganza è grande, ma quando si tratta fino ad esso il compilatore si prende cura di prestazioni, e il codice dovrebbe essere il più semplice e portabile possibile.

Porting una simulazione scritto in Fortran 77 (nonostante sia stata scritta negli anni '90) a C / Java perché l'originale ha lavorato solo su piccoli insiemi di dati. Ho imparato ad amare o-grande dopo aver più volte di spiegare perché semplicemente spostando l'intera tabella dei dati in memoria all'inizio del programma non aveva intenzione di scalare.

Migrazione del software Stealth B-2 Bomber missione da JOVIAL a C. 100% completamente automatizzato conversione. Scherzi a parte!

lezione principale:. usando strumenti di conversione automatizzati configurabili è una grande vittoria

DMS Software Reengineering Toolkit .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top