Domanda

Sì, la temuta parola "M".

Hai una workstation, un controllo del codice sorgente e mezzo milione di righe di codice sorgente che non hai scritto. La documentazione era obsoleta nel momento in cui è stata approvata e pubblicata. Gli sviluppatori originali sono LTAO, al prossimo project / startup / loony bin e non rispondono alla posta elettronica.

Che cosa hai intenzione di fare?

{editor preferito} e Grep ti farà iniziare il tuo spelunking attraverso il fegato gnarling della base di codice ma quali altri strumenti dovrebbero essere nella toolbox degli ingegneri di manutenzione?

Per iniziare il lancio della palla; Non credo di poter vivere senza source-insight per lo spelunking C / C ++. (ESCLUSIONE DI RESPONSABILITÀ: non lavoro per 'em).

È stato utile?

Soluzione

Uno dei migliori strumenti nello spazio .Net è ReSharper . Questo strumento mi ha fatto risparmiare tempo in tutti gli aspetti del ciclo di vita dello sviluppo. Mi hanno anche aiutato a sopravvivere quando mi univo a progetti / soluzioni non documentati.

  • Refactoring del codice
  • Navigazione codice
  • Analisi del codice

queste sono alcune delle molte funzioni che aiutano a svolgere attività che richiedono tempo.

Altri suggerimenti

Proprio come mangiare l'elefante - un boccone alla volta :)

A volte il quadro generale può essere un vero demotivatore e devi scegliere un punto e affrontarlo pezzo per pezzo.

Ovviamente, devi ancora scegliere il bit da cui iniziare ... In genere questo è guidato principalmente dagli utenti / aziende con le modifiche specifiche prioritarie richieste (ieri ...) ma se hai un po 'di flessibilità o tempo di familiarizzazione , le metriche sono spesso utili. Gli strumenti qui variano in base alla tecnologia e al linguaggio, ma strumenti come NDepend e JDepend , qualsiasi metrica integrata (come in Visual Studio Team System o i vari plugin Eclipse disponibili) o uno strumento come Simian per avere un'idea delle dimensioni del problema di copia e incolla.

Speriamo che il numero di unit test e di copertura sia maggiore di zero, quindi un buon primo passo è sempre quello di ottenere tutti i test che puoi eseguire in un ambiente di integrazione continua, come base per aggiungere altri test mentre impari.

E come altri hanno già detto - supponendo che siano disponibili opzioni per la lingua - un buon IDE con navigazione del codice e refactoring automatico è un must (Eclipse, Visual Studio (con o senza ReSharper).

Un paio di libri per migliorare il morale:

Buona fortuna :)

I motori di ricerca del codice possono aiutarti a orientarti all'interno di un'enorme base di fonti.

È possibile trovare un motore di ricerca di codice sorgente sensibile alle lingue all'indirizzo motore di ricerca del codice sorgente SD . Può gestire molte lingue contemporaneamente. Le ricerche possono essere eseguite per modelli in una lingua specifica, o modelli tra le lingue (come "trova identificatori che coinvolgono FISCALE"). Essendo sensibile ai token di lingua, il numero di falsi positivi è ridotto, risparmiando tempo per l'utente. Comprende C, C ++, C #, COBOL, Java, ECMAScript, Java, XML, Verilog, VHDL e un numero di altre lingue.

(Sono l'architetto degli strumenti).

Di solito inizio con Emacs + CScope su Linux. Visual Studio ha alcuni strumenti di ispezione che offrono una funzionalità simile per Windows. Anche Doxygen può essere abbastanza utile: genererà documenti che possono essere utili anche se le fonti non hanno commenti sulla documentazione.

Eseguirò alcuni strumenti UML (forse un semplice taccuino con una penna =)) e / o strumenti per costruire classi, chiamate, gerarchie di metodi (integrati in IDE). Poi guarderò la dinamica con debugger o semplici test unitari. Con queste cose cercherò di eseguire una sorta di reverse engineering per capire il design.

In tali situazioni, utilizzerei Capire per C ++

L'utilizzo di un processo di indagine sulla firma è un buon modo per comprendere a fondo il codice. Con un buon linguaggio di scripting e un po 'di mojo per usarlo, costruendo un sondaggio di firma altamente personalizzato per la tua base di codice, in qualunque lingua non sia affatto un compito difficile.

Il software di tracciamento dei bug, specialmente se si collega al tuo software di controllo del codice sorgente sarà prezioso, in quanto potrebbe darti un'idea del perché sono state prese alcune decisioni sbagliate. Ciò è ancora più importante se il programmatore della manutenzione ha intenzione di fare anche qualche refactoring.

Anche un registro scritto è utile, in modo da poter documentare il sistema mentre si procede.

Sì, colpisci l'unghia sulla testa. Una shell unix e il pratico Notepad ++ sono quelli che usavo quando facevo i lavori di manutenzione in ColdFusion, PHP, Perl ecc. Bello non cambiare editor e rintracciare tutti i riferimenti a un nome / parametro / variabile.

Ora faccio semplicemente clic con il pulsante destro del mouse e premo "Trova tutti i riferimenti" in Visual Studio, che sembra essere imbrogli per essere onesti. I ragazzi di PHP sono estremamente gelosi, in quanto sono costretti a usare vi per l'editing. ;)

Lo strumento critico sarebbe qualcosa che ti consente di navigare (e modificare) la base di codice per aiutarti a comprenderlo.

È molto utile avere qualcosa che possa mostrare la relazione di classe (se si usa il linguaggio OO). La capacità di visualizzare alberi delle chiamate (statici) è anche molto utile quando si desidera valutare l'impatto di una modifica che si intende apportare.

Citi la fonte-insight. Un progetto open source di lunga durata è navigatore di sorgenti . Sembra che lo sviluppo sia ricominciato dopo essere stato stagnante per un po '.

Trovo utile Lutz's Reflector per questo, specialmente quando hai un mix di codice e binari. Ottieni grafici di chiamate e dipendenze (dipende da, utilizzato da, esposto da, istanziato da, ecc.), Grafici di assemblaggio e alcuni ottimi plugin.

NDepend è uno strumento dedicato a reingegnerizzare il codice legacy , in particolare basi di codice legacy intricate di grandi dimensioni Disclaimer: sono uno sviluppatore di strumenti

Per citare Scott Hanselman che ha scritto una volta sul suo blog : " ; NDepend mi sta dando un'idea delle mie applicazioni che non avevo mai avuto prima (...) Dopo aver realizzato la profondità e l'ampiezza delle informazioni che stavo guardando, ero come un bambino in un negozio di caramelle. & Quot;

Alcune funzionalità di NDepend utili per la reingegnerizzazione sono:

Devi essere in grado di navigare attraverso la base di codice. Se il tuo IDE preferito lo consente, puoi utilizzare un indicizzatore come Capire per C ++ (già citato), lxr o OpenGrok .

In fretta, puoi fare affidamento su grep (1s) o - meglio - Ack .

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