Un pezzo di software è un mosaico di sforzi vecchi e non documentati. Non ci sono commenti, nessuna documentazione e il codice è peloso - coinvolge script di shell Unix che controllano i file fittizi e quindi chiamano istruzioni SQL che chiamano le procedure del database che modificano i dati.
Gli sviluppatori originali se ne sono andati e otteniamo un solido 2 nel Test di Joel ma posso aumentarlo almeno 4 - yay ...
Il codice è ragionevolmente privo di errori, ma dobbiamo costantemente aggiungere nuove funzionalità che sono altamente soggette a errori a causa dello stato del codice, quindi le scadenze scendono e gli sforzi aumentano.
Vogliamo riscrivere questo software per ridurre gli sforzi di manutenzione e sviluppo. Come parte della riscrittura, introdurremo specifiche, commenti, casi di test - tutte le cose che attualmente non avere. Sarà comunque un po 'complesso in seguito, ma non più del necessario.
Questo non è un GRANDE riscrittura perché siamo non passare a lingue o quadri; avremo ancora bisogno di script di shell (ma meno) e di procedure di database (ma meno). Le implicazioni sono anche abbastanza semplici perché controlliamo i siti di installazione e possiamo sostituire completamente il vecchio codice con il nuovo codice con un semplice clic.
So che una riscrittura non è mai buona , ma penso che questi siano argomenti contrari ragionevoli. Tuttavia, la mia preoccupazione è il tipico pericolo di introdurre nuovi bug invece di quelli vecchi e anche il pericolo di non implementare certi dettagli perché nessuno sa nemmeno che esistono o sono necessari.
Come posso affrontare questa riscrittura in modo efficiente?