esiste un modo elegante per analizzare il processo di un ingegnere?


12

Esistono molti sentimenti secondo cui misurare gli impegni è inappropriato.

È stato fatto uno studio che tenta di attirare più fonti di quelle che si impegna, come ad esempio:

  • modelli di navigazione
  • Lavoro IDE (pre-commit)
  • tempo di inattività
  • multitasking

Non riesco a pensare a un modo semplice per fare queste misure, ma mi chiedo se sia stato fatto qualche studio.


Da un punto di vista personale, credo che la riflessione sulle proprie "metriche" possa essere preziosa indipendentemente dall'utilizzo (o in assenza di) di questi per la valutazione delle prestazioni. Vale a dire un modo discreto per riflettere sulle tue abitudini. Ma questa è una questione di discussione al di là di domande e risposte.

Risposte:


6

Non sono sicuro che lo considereresti elegante, ma Watts Humphrey ha scritto un intero libro chiamato Personal Software Process che si occupava solo di misurare la tua produttività. Ha delineato metriche per input come il tempo alla scrivania e le interruzioni, il tempo impiegato a lavorare su vari tipi di attività del ciclo di vita del software, i difetti per quantità di codice. Esiste un rapporto tecnico che fornisce la versione breve all'indirizzo:

http://www.sei.cmu.edu/library/abstracts/reports/00tr022.cfm

Se vuoi esaminare qualcosa come la qualità di un codice per sviluppatori, Chidamber e Kemerer hanno proposto diverse metriche per il codice orientato agli oggetti.

Metriche per codice orientato agli oggetti

  • profondità dell'albero ereditario,
  • numero ponderato di metodi,
  • numero di funzioni membro,
  • numero di bambini e
  • accoppiamento tra oggetti.

Utilizzando una base di codice, hanno cercato di correlare queste metriche alla densità del difetto e allo sforzo di manutenzione utilizzando l'analisi covariante. Studi successivi hanno fatto analisi simili su centinaia di progetti Java di Source Forge per determinare le loro caratteristiche relative alle metriche CK e alcune metriche aggiuntive proposte in seguito.

Metriche derivanti dal contesto delle revisioni del codice

I difetti possono essere classificati in base a molti criteri:

  • gravità: (maggiore, minore, cosmetica, investigazione / sconosciuta),
  • tipo (logica, errore di battitura, ortografia, violazione standard di codifica, ecc.),
  • contenimento di origine / fase (requisiti, progetto, codice, ecc.).

Ci sono anche tassi di preparazione e ispezione (tempo per revisore, tempo per riga di codice) e densità di difetto (per KLOC (migliaia di righe di codice), al minuto di tempo ispettore / revisore).

Tracciare questi valori rispetto ai grafici di controllo può mostrarci se siamo entro i limiti del processo (ad esempio, un team che ispeziona 200 righe di codice che non rileva difetti in un gruppo che ha in media venticinque difetti per KLOC potrebbe non funzionare correttamente).

Altre metriche

Altre metriche che potrebbero aiutare a includere quelle per

Limitazioni dell'analisi

Esistono enormi limiti al valore delle metriche. I bug corretti per sviluppatore possono significare quasi tutto, e quando inizi a punire o premiare quella misura, scommetto che i bug diventeranno più numerosi e granulari, e il mix di bug difficili da risolvere facilmente cambierà anche quando il team sceglierà correre per avere il massimo.

C'è anche una certa distrazione e potenzialmente una perdita di concentrazione e divertimento che può derivare da misurazioni intrusive. Non puoi diventare molto più elegante (ed emotivamente gravato) di un poeta lacustre come Wordsworth che ha detto:

      Sweet is the lore which Nature brings;
      Our meddling intellect
      Mis-shapes the beauteous forms of things:--
      We murder to dissect.

Mentre il software non è esattamente la natura, dammi un po 'di latitudine perché pensavo che non avrei mai potuto usare nulla dalle lezioni di letteratura inglese delle superiori.

Agile potrebbe essere considerata una reazione a un grande processo centralizzato. A volte quella modalità di lavoro potrebbe richiedere così tanto sforzo analitico che la capacità di raggiungere il flusso durante la creazione del software è quasi scomparsa.


Mi piace questa risposta, indipendentemente dal fatto che qualcun altro fornisca informazioni migliori, quindi l'ho modificata per contenuti sezionali.
Nuova Alessandria,

Non capisco che il tuo commento sul valore guadagnato sia per "sviluppatori che non hanno effettuato la transizione ad Agile". La semplice ricerca di "valore guadagnato in agile" e "valore agile guadagnato" porta molte persone che hanno applicato le tecniche EVM tradizionali in ambienti agili ...
Thomas Owens

Il valore ottenuto sembra una buona tecnica adattiva per quanto riguarda la stima. Ho pensato che la stima Agile avesse i suoi approcci principalmente legati ai punti. Vedrò se posso riformulare le cose per renderle inclusive.
Sviluppatore:

Ci sono interi libri sulla stima agile, quindi è abbastanza completo. Tuttavia, ho lavorato in ambienti agili che, per loro natura, hanno richiesto l'applicazione di EVMS.
Thomas Owens

2

Voglio aggiungere una risposta alternativa che punti dalla pratica standard di ingegneria del software verso un altro campo con l'obiettivo di rubare dagli strumenti di base che possiamo adattare, se necessario. Gli addetti all'assicurazione della qualità si preoccupano della produzione, della resa e del rilevamento e della prevenzione dei difetti, proprio come gli sviluppatori di software.

http://en.wikipedia.org/wiki/Seven_Basic_Tools_of_Quality

Mi piace la tabella di controllo.

http://en.wikipedia.org/wiki/Control_chart

Fare un'attività, tracciare una metrica, fare un'altra, tracciare la sua metrica e così via. Ad esempio, la trama si impegna al giorno. Il grafico scatterà i dati che vanno da un minimo ad un massimo. Forse più tardi puoi caratterizzare i risultati per determinare che quando il valore è basso, qualcosa impedisce il progresso e quando è troppo alto, il lavoro inizia in modo rapido ma sciatto. Il modo in cui incoraggi i lavoratori ad accelerare o rallentare viene lasciato a te.

Le metriche personali potrebbero essere qualcosa che puoi correlare da solo a partire da una domanda del tipo "Mi sento più produttivo quando ..."

  • Scrivi un caso d'uso completo prima di iniziare a scrivere codice.
  • Scrivi i miei test unitari prima del mio codice.
  • Verificare frequentemente con le parti interessate per assicurarsi che i requisiti non cambino e creare una massiccia rielaborazione del lavoro svolto verso un piano obsoleto.
  • Cambia più codice possibile.
  • Delegare modifiche ben definite ai membri del team che sono i più esperti con le parti che ho chiesto loro di cambiare.
    • Offri al mio team una panoramica completa, ma con priorità possiamo finire nello sprint attuale.
    • Inizia il mio passaggio di refactoring con un elenco gerarchico di directory, file, classi, metodi, equazioni, variabili, documentazione, ecc. Che cambierò.
    • Ricerca un problema di alto livello per trovare soluzioni della tecnica nota, stimando l'ambito e i miglioramenti chiave necessari per realizzare una soluzione migliore.

Il vecchio ha visto che ciò che misuriamo è ciò che viene fatto potrebbe portarti ad attaccare il problema in base a ciò che ritieni sia il fattore limitante

o più fattori in ordine di priorità basato su un diagramma di Pareto.

http://en.wikipedia.org/wiki/Pareto_chart

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.