È un bug o un'attività quando qualcosa non funziona, ancora, nel processo di sviluppo

3

Di solito abbiamo questo dilemma nella nostra squadra. A volte, per implementare un compito o una storia, scopriamo che il sistema deve trovarsi in uno stato specifico. Ad esempio, una configurazione di sistema specifica deve essere effettuata in anticipo.

L'attività / storia può essere completata e funziona come specificato su di essa con la corretta configurazione in atto. Si noti che la configurazione non è direttamente correlata con l'attività.

Quindi, dobbiamo creare un nuovo ... ??? ... qualcosa per il processo di generazione di quel file di configurazione. Questo è dove i problemi appaiono. Alcuni dicono che è un bug altri dicono che è un compito o una funzione extra .

Quindi, dov'è il limite tra bug e compiti nella fase di sviluppo? Dovremmo addirittura considerare qualcosa di un bug se tutti i compiti funzionano come indicato nelle loro definizioni? Una cosa può essere considerata un bug perché lo si confronta con lo stato corrente (instabile) del sistema?

Breve esempio :

  • Una funzionalità richiede la configurazione di un servizio di comunicazione per uno specifico operazione.
  • Nel processo di implementazione il team scopre che il servizio richiede che i nomi host delle pere siano risolvibili a un indirizzo IP.
  • Il team aggiunge gli hostname al server DNS (o ai file host) e continua a implementare la funzionalità richiesta.
  • Dopo che la funzione iniziale è funzionante, una domanda è aumentata. Il sysadmin dovrebbe configurare il DNS o il file hosts o la nostra applicazione dovrebbe farlo automaticamente?
    • È possibile una soluzione automatica. Quindi viene presa la decisione di implementarlo.
  • ... qui iniziano le discussioni ... si tratta di un bug o di una funzionalità / attività extra?

PS: So che ho mescolato funzionalità / attività / storia nella domanda. È intenzionale. Sono interessato a separare i bug dagli altri. Non importa cosa il resto significhi in un caso particolare.

    
posta Patkos Csaba 09.10.2012 - 09:53
fonte

7 risposte

9

Chiamerei questo un compito. Se ti capisco correttamente, è pensato per abilitare una nuova funzione, quindi non è una correzione di bug - altrimenti tutto dovrebbe essere chiamato un bug.

Se la modifica apportata da questo fa una differenza significativa per gli utenti finali (indipendentemente dalla funzione principale che si intende supportare / abilitare), potresti considerare di chiamarla una (sotto) funzione.

Tutto sommato, non c'è bisogno di agonizzare troppo sulla terminologia, il punto principale è farlo fare: -)

    
risposta data 09.10.2012 - 10:33
fonte
7

Non restare impigliato su come chiamarlo - importa davvero? È qualcosa che deve essere fatto, quindi scrivi una storia in modo che il lavoro venga svolto. Se sei un team agile hai il potere di chiamarlo come vuoi. Raggiungere un consenso come una squadra, quindi iniziare a preoccuparsi di cose più importanti.

    
risposta data 09.10.2012 - 13:08
fonte
2

Direi che dal momento in cui qualcosa non funziona alle specifiche, o è semplicemente rotto, è un bug. Qualsiasi altra cosa è un'attività / funzione / storia, in altre parole: qualcosa extra che aggiungi al programma.

Potresti anche introdurre il concetto di un "cambiamento": non correggere realmente qualcosa che è rotto, non qualcosa di nuovo da aggiungere, ma cambiare il modo in cui qualcosa funziona (di solito come il risultato di un cambiamento nei requisiti). Ma questo è tre tipi di 'todos', quindi una modifica sarebbe anche un compito.

    
risposta data 09.10.2012 - 10:09
fonte
1

In realtà sto utilizzando @pleinolijf e @ Péter Török su questo: è solo un bug se il software non funziona secondo le specifiche. Un errore di specifica che non è stato catturato nella fase di progettazione o di sviluppo iniziale può giustificare una modifica delle specifiche e successive modifiche al codice, ma in generale, non è un bug.

In generale, un "compito" è in realtà il tipo più generico di problema nella maggior parte dei tracker ed è utile quando non esiste un altro tipo di problema. Qualsiasi altra cosa (richiesta di modifica, bug, requisito, richiesta di funzionalità, gizmo banana, ...) è in realtà una specializzazione del tipo di problema "compito". Ciò significa che se è disponibile un tipo più appropriato di problema, è necessario riflettere due volte sull'utilizzo di "attività". Anche i bug dovrebbero essere ragionevolmente limitati nella portata, ma a volte è difficile stabilire quale sarà lo scopo di un particolare problema prima di esservi tuffati.

Quindi, generalizzando, la domanda diventa davvero "la mancanza di una caratteristica costituisce un bug?" . La caratteristica in questo caso è la possibilità di configurare, in modo automatico o intuitivo, i prerequisiti per funzionalità specifiche che a loro volta sono definite nelle specifiche. Poiché la funzionalità di base è già presente e funziona correttamente (in base ai requisiti stabiliti nelle specifiche) senza le modifiche in discussione e senza richiedere soluzioni alternative durante l'uso, supponendo che le specifiche non richiedessero in particolare, un processo di installazione semplice, direi che tutto ciò che è attualmente nel software funziona come dovrebbe. Quindi, non un "bug".

Ciò di cui stai parlando è la aggiunta di nuove funzionalità (impostazione automatica dei prerequisiti), che in generale ha una barra piuttosto alta per essere considerata un bug nel mio libro.

L'unico modo in cui potrei considerare qualcosa di simile a essere un bug è se la specifica afferma che non è necessario alcun set-up manuale. In caso contrario, si tratta di un'omissione delle specifiche, che richiede che la specifica venga aggiornata con la funzionalità desiderata appena scoperta e che venga sviluppata seguendo le stesse linee della funzionalità originale (la cui mancanza probabilmente non era considerata un bug).

    
risposta data 09.10.2012 - 10:34
fonte
1

Durante il processo di sviluppo, qualcosa è solo un bug se il programmatore lo ha tolto dalla lista TODO e pensa che funzioni. Non se il programma non corrisponde ancora alle specifiche.

Quando cambiano le specifiche (vale a dire una nuova regola "Il programma dovrebbe fare X"), ciò non significa che il programma abbia improvvisamente un nuovo bug ("non fa ancora X").

    
risposta data 09.10.2012 - 11:02
fonte
1

La tua domanda colpisce molte persone molto esattamente dove vivono, in un posto che può essere piuttosto doloroso. Bug non è un termine tecnico molto preciso, ma sicuramente ha un sacco di bagaglio emotivo.

Dove lavori, le persone considerano le funzionalità come miglioramenti pianificati e le correzioni dei bug come miglioramenti non pianificati? Quando uno sviluppatore ha creato un codice con bug sotto lo scadenzario di un programma troppo breve, è stato richiamato per essere responsabile di un lavoro che potrebbe non essere stato approfondito quanto necessario? Come esperto del codice, le persone danno complimenti per una soluzione rapida e reattiva? Gli stimatori abituali hanno delle conseguenze dopo aver preso credito per le funzionalità e per essere veloci, anche se trovare e correggere i bug è stato molto frustrante per i tester e i clienti e richiede molto tempo agli sviluppatori che lavorano alla manutenzione?

Certo che non lo fanno. Più bug ci sono, meno l'orgoglio di lavoro che abbiamo, meno la nostra squadra è più brava. Se stai lavorando su funzionalità, devi essere affidabile e competente. Se su bug, non così tanto. Le caratteristiche ricevono un ringraziamento e una festa quando hanno finito. I bug ricevono il trattamento silenzioso o una retrospettiva che discute su quanto è tardi il rilascio perché abbiamo avuto così tanti bug. Forse dove lavori la retrospettiva parla di come le caratteristiche si sono evolute in ulteriori requisiti imprevisti di sistemi e funzionali che non facevano parte della stima, ma sono stati risolti con gli straordinari e gli sforzi eroici dei membri del team?

Creare una funzione è un'attività. La correzione di un bug è un'attività. Quelli che chiamiamo bug sono spesso difetti che si riferiscono a caratteristiche che abbiamo detto siano state fatte, o parti mancanti dovute alla comprensione incompleta dei requisiti funzionali o di sistema (o in Agile, storie di utenti o casi d'uso che sono flussi alternativi incompleti o mancanti).

Se il codice visibile del cliente viene costantemente costruito in anticipo rispetto al supporto sottostante, si tratta di un problema di progettazione o di gestione del progetto. Abbiamo TDD e test unitari, quindi idealmente, possiamo essere abbastanza accurati nei nostri test e piuttosto selettivi su quando esporre le funzionalità attraverso l'interfaccia utente a tester, clienti o gestione dei prodotti.

I progetti spesso utilizzano la prototipazione rapida dell'interfaccia utente per mostrare un'interfaccia utente senza codice. Non favorisce lo sviluppo se la gestione del prodotto ritiene che l'80% del lavoro sia svolto quando viene mostrata la demo, ma il progetto continua a funzionare per un lungo periodo. Pesare con attenzione fino a che punto si lasciano i prototipi davanti al prodotto pronto per l'uso.

Agile mira a rompere la mentalità del contratto e rende più appetibile la collaborazione usando i prototipi. La relazione e la comunicazione tra sviluppatori e stakeholder richiede un alto grado di dare e avere. Aiuta a gestire metodicamente i requisiti utilizzando un elenco di burn down o altro modo per limitare l'ambito e ridurre la linea temporale soggetta a stima.

Parte del nostro problema è il modo in cui monitoriamo i progressi. Se abbiamo caratteristiche descritte dalla percentuale completa, essenzialmente prendiamo il merito di qualcosa prima che sia compiuto. Le percentuali delle stime complete sono estremamente inaffidabili. Se abbiamo bisogno di mostrare progressi, dovremmo rompere le cose al livello in cui possiamo dire qualcosa che è considerato importante nel nostro progetto che sta da solo come un oggetto coeso che fornisce funzionalità è completamente fatto. Invece di pietre miliari parzialmente completate, utilizza solo pollici-ciottoli completamente completo

.

Per il lavoro che descrivi, se porta più orgoglio e motivazione nel team, voterò sicuramente per definirlo un compito e non un bug.

    
risposta data 09.10.2012 - 12:19
fonte
0

Qual è la differenza tra un "bug" e un "compito / nuova funzionalità"?

Definisco un "bug" come qualcosa che devi correggere / implementare gratuitamente (il fornitore del software deve pagare i costi).

Una "attività / nuova funzionalità" è qualcosa che il cliente deve pagare.

Con questa definizione un cliente potrebbe vedere ogni "problema" come un errore perché lo correggerà gratuitamente. Il fornitore di software d'altra parte vuole essere pagato per il suo sviluppo.

Il tuo esempio

Should the sysadmin configure the DNS or hosts file or should our application do it automatically?
An automatic solution is possible. So a decision is made to implement it.

è un classico elemento di trascinamento.

Per un progetto a prezzo fisso la soluzione per questo dilemma è un contratto che definisce quali caratteristiche sono incluse nel prodotto e quali no.

Ogni caratteristica del contratto che manca è un bug.

    
risposta data 17.10.2012 - 17:33
fonte

Leggi altre domande sui tag