Come segnalare lo stato di avanzamento della ricerca sul codice?

2

Mi è stato assegnato un compito che ho bisogno di fare ricerche su codebase e segnalare i miei progressi.

L'ambiente di sviluppo non è impostato. Posso solo leggere il codice e analizzarlo, ad es. il flusso di lavoro della creazione dell'account utente.

C'è molta incertezza in quanto la mia comprensione del codice potrebbe non riflettere l'effettiva esecuzione del codice.

Capisco aumentare la visibilità dei miei progressi per tutti è buono. Ma non so come farlo.

Grazie.

    
posta janetsmith 12.01.2015 - 18:49
fonte

2 risposte

1

Dato che la domanda riguarda il reporting dei progressi, suggerirei di adattare una delle metodologie di sviluppo agili al tuo caso.

Più precisamente:

  1. Inizia a dividere la maggior parte del lavoro di ricerca in User Story, ciascuno per le diverse parti del codice base che devi coprire. Non è necessario conoscere tutte le parti in anticipo, basta catturare quelle che secondo la comprensione corrente sono le principali.
  2. Per ogni User Story, crea le attività che pensi di dover eseguire per comprendere il codice sorgente. Ad esempio, un'attività potrebbe essere Capire Classe X , un altro Documento su come vengono create le Istanze di Classe Y o Determinare le principali responsabilità della Classe Z , ecc.

Utilizza il tuo sistema di biglietteria preferito per registrare le tue User Story e le loro attività.

Ora potresti usare, per esempio, TDD per avvicinarti all'analisi. Prendi un compito e scrivi le prove che considereresti sufficienti per concludere che il compito è stato compiuto. Un modo per farlo sarebbe progettare un modulo i cui campi corrispondono a pezzi di informazioni che il compito è destinato a scoprire. È possibile scrivere Test unitari per verificare che tutti i campi di informazione siano stati completati. Non hai bisogno di niente di fantasia, un parser molto semplice sul contenuto di un file di testo chiamato dopo l'attività sarà sufficiente. Qualcosa sulla falsariga di

    Class name:
    Responsibilities:
    Weaknesses:
    Collaborations:
    Dependencies:
    ...

Mentre avanzi con questa metodologia scoprirai nuove User Story e nuove attività. Sarai anche in grado di creare più unit test che i frutti della tua ricerca dovrebbero farli passare. I test ti forniranno una visualizzazione molto chiara dei progressi. I record contenenti le informazioni nei campi che testerai cattureranno in modo strutturato la comprensione che hai sviluppato fino ad ora.

Una cosa importante che non è sempre riconosciuta come preziosa è la visualizzazione del progresso verso l'orizzonte della conoscenza che stai cercando di raggiungere. Quindi, lascia che ti spieghi meglio.

Consiste in un singolo grafico che è molto facile da disegnare e fornisce molte informazioni: Usa l'asse X per rappresentare il tempo trascorso dal giorno 1. Usa l'asse Y per rappresentare il numero cumulativo di compiti identificati finora. Poiché l'asse Y è una quantità cumulativa, la curva non diminuirà. Nei giorni 1 e 2 la trama mostrerebbe il numero iniziale di attività che è possibile identificare. Con il passare del tempo il numero di compiti aumenterà. Ad un certo punto nel tempo noterai che stai ancora aggiungendo attività, ma ora ad un ritmo inferiore. Questo ti darà un'idea di convergenza, nel senso che vedrai l'asintoto orizzontale che dovresti idealmente raggiungere.

L'aggiunta di attività non è una curva fluida perché un giorno si aggiungono attività, quindi si lavora su di esse per dire, una settimana circa. Questo è rappresentato dalla curva verde. La curva nera è perfetta. La linea orizzontale superiore (blu) è la tua attuale ipotesi migliore dell'asintoto. La distanza tra la curva attuale e l'asintoto è una misura delle tue incognite sconosciute, le attività che non hai ancora identificato, ma alla fine lo faranno.

Si noti che questo grafico non include il numero (cumulativo) di attività chiuse finora. Puoi aggiungerli e ottenere molte più informazioni. Il mio punto, tuttavia, è che anche senza queste informazioni sarete in grado di segnalare i progressi nella vostra comprensione. I compiti chiusi finora misureranno le tue conoscenze conosciute. La differenza tra il numero totale di compiti e il numero di quelli chiusi sarà una misura delle tue sconosciute conosciute.

E, naturalmente, se vuoi essere davvero rigoroso dovresti usare questi grafici per fornire stime probabilistiche del tempo necessario per raggiungere traguardi intermedi.

    
risposta data 13.01.2015 - 02:52
fonte
6

Prendere appunti.

Pensa al motivo per cui ti è stato chiesto di farlo? Sei un nuovo noleggio, con il compito di diventare familiare prima di fare lo sviluppo effettivo? Sei un consulente? È un progetto per la scuola?

Pensa al motivo per cui sei stato incaricato di eseguire questa operazione e annota (in un documento Word o simile) le informazioni più rilevanti per il compito in questione. Se lo fai solo per te stesso - ad es. perché sei un nuovo assunto che vogliono auto-allenarsi prima di darti compiti di programmazione - annota le informazioni che troverai più utili come guida di riferimento quando in realtà devi fare sviluppo.

Cose che puoi scrivere:

  1. Struttura della classe e separazione delle preoccupazioni: cerca di capire quali parti principali vanno dove.
  2. Le API Revelant richiedono lo sviluppo che devi fare
  3. Cose che miglioreresti dato il cambiamento, le classi che hanno bisogno di lavoro, i metodi che dovrebbero essere rifatti, i colli di bottiglia delle prestazioni.
  4. Domande che vorresti porre (grazie a @rwong)
risposta data 12.01.2015 - 19:47
fonte

Leggi altre domande sui tag