Strategie di migrazione per deprecare il linguaggio di scripting interno

8

Abbiamo un linguaggio di scripting che usiamo internamente per molte cose. È iniziato come una semplice dichiarazione di valutazione affinché le etichette dinamiche diventassero un linguaggio completo di Turing usato in modo pervasivo in tutto il nostro sistema.

Il problema è che non è mai stato progettato per questo e mostra. L'ambiente di sviluppo è anemico, gli script prodotti non sono testabili e fino ad oggi non esiste una definizione formale della lingua.

Un sentimento crescente tra gli utenti della lingua sembra aver fatto il suo lavoro ed è ora di lasciarlo andare, ma ci troviamo di fronte a una difficile sfida per migrare la base di codice esistente a qualsiasi nuova soluzione possa essere concepita. Questo argomento è usato contro l'idea di migrare.

Hai mai affrontato una situazione simile? e se sì quali strategie hai usato per fermare l'uso del vecchio e promuovere il nuovo?

Un'ultima cosa (grazie Morons ) è che molti di questi script non sono documentati e il loro scopo originale è perso anche se sono ancora in uso. Gli script sono anche usati nei siti dei clienti per personalizzare il sistema, quindi abbiamo letteralmente migliaia di questi script una gran parte dei quali non è sotto il controllo del codice sorgente o qualsiasi meccanismo di versionamento per quella materia.

Risposta accettata.

È una scelta difficile. Tutte le risposte erano buone e un buon consiglio, anche se penso che il migliore risieda in qualche modo in un ibrido tra Moron e Oliver.

Ho finito per accettare Oliver perché è la risposta che ha le migliori possibilità di essere accettata più in alto (ha! politica!). Il confezionamento del vecchio ambiente di scripting in un'istruzione richiamabile che può essere integrata nel nuovo ambiente fornirebbe un percorso di aggiornamento rapido e semplice.

Una volta terminato, possiamo controllare una migliore creazione di nuovi script visualizzando avvisi o non consentendo la modifica di vecchi script da parte di tutti o creati costringendoli ad andare con la nuova lingua.

Grazie a tutti per il vostro contributo!

    
posta Newtopian 08.12.2011 - 04:26
fonte

3 risposte

5

Un altro approccio sarebbe quello di trasferire il tempo di esecuzione degli script nel nuovo linguaggio di scelta degli script e fornire i modi per eseguire gli script legacy nella nuova lingua.

LegacyRuntime.execute (script stringa);

Essere in grado di combinare codice vecchio e nuovo dovrebbe facilitare la transizione.

    
risposta data 08.12.2011 - 09:56
fonte
11

Il fatto che tu abbia a che fare con un linguaggio di scripting personalizzato è irrilevante. Stai migrando un set di script da una lingua all'altra.

Ci sono 2 strategie di base:

1) Prendete un grande sforzo per convertire tutti gli script in anticipo (come un progetto)

2) Poiché è necessario apportare modifiche a particolari script, riscriverli nella nuova lingua. Dopo un po 'di tempo, quando rimangono solo pochi script nella lingua originale, procedi con un progetto per terminarli. *

In entrambi i casi devi impostare una regola dura e veloce: No Il nuovo codice è scritto nella lingua precedente.

* Puoi anche impostare una regola su quanto ti è permesso di modificare prima di dover riscrivere il tutto, ma è probabile che venga abusato come un buco di loop.

    
risposta data 08.12.2011 - 04:34
fonte
5

Ho avuto una tale esperienza.

Il mio approccio era di decodificare l'implementazione del linguaggio, derivando una specifica più o meno formale per la sua sintassi e semantica (immagina di decostruire un BNF da un parser scritto a mano in Fortran77, con diverse migliaia di le chiavi). Poi ho implementato un compilatore per questo linguaggio, traducendolo in un codice Lua idiomatico (anche conservando la maggior parte dei commenti).

Puoi scegliere qualsiasi linguaggio di scripting popolare adatto o implementare il tuo DSL meglio progettato. Il compilatore può essere utilizzato come livello di traduzione trasparente (mantenendo intatti gli script legacy) o per riscrivere gli script per una migliore ulteriore manutenzione.

    
risposta data 08.12.2011 - 11:26
fonte

Leggi altre domande sui tag