Nonostante la missiva di Joel che le riscritture del software debbano essere evitate sotto pena di morte, è ancora un luogo abbastanza comune . Gran parte del software esistente è buono, ma qua e là, alcune parti di esso sono oscure, quindi per un po 'continui lungo la tua strada.
"Non puoi lucidare una stronza, ma puoi arrotolarla con glitter"
Quindi lo modifichi qua e là in modo casuale - armeggiando intorno ai bordi perché non vuoi scavare nelle viscere. Il tempo passa, il debito tecnico, l'entropia del software - ottieni l'immagine.
Questo, fino a quando qualcuno adatto e avviato dice: "Non di più". Forse la lingua è caduta fuori moda, o è stata superata. Ora, quale dei seguenti (o mix di) può essere usato per aiutare il processo? Ci sono altri metodi? Quali altri fattori ci sono?
EDIT : non sto cercando un elenco di approcci pick-and-mix in continuo aumento - più un kit di strumenti coeso.
Riga per riga
Se il progetto non è troppo grande, potresti essere in grado di esaminare il codice riga per riga per avere un'idea di cosa sta facendo.
Clone funzionale (dev view)
Come sviluppatore della precedente incarnazione, potresti avere una rotazione su quali sono le varie funzioni che hai progettato da lì.
Clone funzionale (visualizzazione utente)
L'utente (o il team di), si riunisce e decide quali funzionalità sono più importanti e quali possono essere parcheggiate fino a una fase successiva o eliminate.
Forensics
Gli strumenti di terze parti vengono utilizzati per estrarre i nomi dei moduli, i nomi dei metodi e le strutture dati.
Analisi del percorso
Il codice è stato aggiunto (o forse il codice di controllo esistente è stato sfruttato) per vedere quali sono le parti più comunemente usate del programma e andare da lì.