Modo efficace per stimare la rimozione del codice guasto?

3

Ho lavorato in un'applicazione con circa 100k LOC e fondamentalmente abbiamo rielaborato le funzionalità per conformarci a una nuova architettura basata su un nuovo stack tecnologico. Questo lavoro è quasi finito ma abbiamo dovuto conservare il vecchio codice perché dovevamo garantire un ambiente stabile in caso di bug critici nel nuovo.

Questo ha portato a una situazione in cui abbiamo un sacco di codice morto che si mescola con un sacco di codice funzionante, rendendo così difficile stimare quanto tempo ci sarebbe voluto per rimuovere questo codice morto.

Questo codebase in particolare è molto problematico in quanto non ha test di unità / integrazione diverso da quello generato nel processo di rielaborazione delle caratteristiche che abbiamo migrato alla nuova architettura e inoltre penso che una buona parte del nuovo codice sia intrecciato con il codice morto (mediante chiamate statiche, utilizzando le eccezioni generate in precedenza).

Quale sarebbe un buon punto di partenza per stimare quanto tempo occorrerebbe per rimuovere il codice in modo sicuro?

    
posta ElderMael 23.12.2013 - 18:33
fonte

3 risposte

3

Ogni progetto sarà diverso, quindi non esiste un modo efficace per stimare il tempo necessario per rimuovere il codice morto. È necessario mantenere il vecchio codice suona come se non avessi un sistema di controllo del codice sorgente di qualità che ti consenta di diramarti.

In ogni caso: strumenti come SonarQube possono aiutare a identificare un codice morto, ma non troveranno cose come una classe che non viene mai usata. Vorrei suggerire di affrontare una parte del codice a mano con l'aiuto di SonarQube e sviluppare stime man mano che procedete. Se lavori per il 20% delle classi e ci vogliono 2 settimane, puoi stimare altre 8 settimane in più per fare il resto.

Inoltre, avere una sorta di test automatizzato ti aiuterà a evitare di trovare codice che è stato erroneamente cancellato più velocemente.

    
risposta data 23.12.2013 - 18:52
fonte
6

Quanto vale la tua azienda?

No, sul serio. Quanto?

Perché Knight Capital non è riuscito a pratica buona pulizia con i loro sistemi. E questo ha portato a un problema tecnico che si è concluso con la loro acquisizione a prezzi di firesale.

O il codice è morto o non lo è. Se è morto, allora liberatene. Se non lo è, devi sapere che cosa sta chiamando il codice e apportare le modifiche necessarie in modo da poter eliminare il vecchio codice.

Se non sai per certo che è morto, o profila il tuo codice o fallo lanciare errori odiosi e impossibili da perdere quando vengono colpiti quei percorsi di codice che si presumono essere morti.

La stima del tempo / costo per tale rimozione dipende dal modo in cui il codice è ben strutturato. Se il nuovo codice è ben isolato dal vecchio codice, allora dovrebbe essere un costo minimo da cambiare. Se non hai isolato il tuo codice, è difficile prevedere quanto siano ingarbugliate le cose. Più è aggrovigliato, maggiori sono i costi e il tempo.

    
risposta data 23.12.2013 - 18:56
fonte
0

Che cosa succede se si utilizza una ricerca e sostituzione globale immessa nel costruttore di ogni classe:

PrintToMyLogFile(this.className);

Esegui i tuoi test di livello più alto inclusi test manuali. Quindi elimina tutti i file che non sono nel tuo file di registro.

Questo ovviamente spezzerà alcune cose ma puoi aggiustarle mentre vai avanti. Questo assicurerà che sarai in grado di rimuovere tutte le classi che non vengono utilizzate.

In realtà questo probabilmente non è un ottimo modo per farlo e probabilmente ha più problemi che non ho ancora considerato.

    
risposta data 24.01.2014 - 19:28
fonte

Leggi altre domande sui tag