È significativamente più costoso riparare un bug alla fine del progetto?


21

In un post sul blog di Andrew Hay , è stato postulato il seguente assioma:

La risoluzione di un bug alla fine del progetto costa molto di più rispetto alla correzione dello stesso errore all'inizio del progetto.

Tuttavia, questo non sembra certo, soprattutto dopo aver letto un post sul blog di Less Wrong , e i dati che ho visto per eseguirne il backup sono estremamente vecchi.

Oggi questo assioma è accurato?


@StefanHendriks I commenti nel tuo link all'articolo di Morendil coprono davvero tutto ciò che potresti chiedere; A PARER MIO. Grandi informazioni lì.
Aaron McIver,

@AaronMcIver la mia intenzione è di avere più persone a conoscenza di questo. Come spargere la voce e aumentare le possibilità di ottenere dati reali. Non cerco una vera discussione; quelli fantastici si svolgono nell'articolo (come hai scoperto anche :)).
Stefan Hendriks,

2
Ciao Stefan, questo non è un forum di discussione, né un soapbox: ho rimosso il tuo commento dalla domanda. Possiamo aiutare a spiegare gli aspetti dello sviluppo del software, ma se stai cercando di utilizzare questo sito come mezzo per promuovere le tue idee o condividere post sul blog che ti sono piaciuti, sei nel posto sbagliato.

Sebbene ciò abbia certamente a che fare con la programmazione, la natura della domanda potrebbe effettivamente renderla più appropriata su critics.stackexchange.com.
StriplingWarrior

Risposte:


16

Gli unici dati concreti che abbia mai visto sono Boehm e Papaccio, Comprensione e controllo dei costi del software .

Ciò risale al 1988 ed è stato uno studio di circa 80 progetti software. Hanno concluso che una decisione presa in anticipo e corretta in ritardo potrebbe costare 50-200 volte quello che avrebbe se fosse stata corretta in anticipo. Ma il tipo di decisioni molto precoci di cui stanno parlando sono su quale sistema operativo eseguire e su quale lingua e database utilizzare.

Quindi queste cifre potrebbero essere sovraccaricate rispetto allo sviluppo del software di oggi. Tuttavia, ora abbiamo molta esperienza nel settore e sappiamo istintivamente che è ancora valido fino a un certo punto.

In fin dei conti, sappiamo che se un errore nei requisiti viene rilevato appena prima di andare in produzione, questo provoca molte rielaborazioni e fa ritardare o addirittura annullare il progetto, dove se fosse stato catturato prima che fosse eseguito qualsiasi lavoro, noi Sarebbe andato tutto bene.

Modifica: Doc Brown fa un buon punto nel suo commento.

La ricerca di Boehm è stata condotta su progetti COBOL e FORTRAN in un momento in cui i tempi di compilazione e di esecuzione erano ridicolmente lenti. Ho iniziato la mia carriera nei primi anni '90 in COBOL e il ciclo di compilazione e test impiegava così tanto tempo che valeva la pena di testare a secco il codice prima di passare attraverso il ciclo (o almeno durante la fase di compilazione, per ogni evenienza potresti prendere qualcosa e cancellarlo in anticipo, risparmiando circa un'ora).

A loro volta, i nostri capi ridevano delle nostre lamentele perché non molto tempo fa dovevano portare una scatola di schede perforate ordinate a mano nella stanza del server e lasciarla lì per un giorno.

Quindi era decisamente più vero di quanto non lo sia ora.

Eppure, molto recentemente, ho visto blog che riutilizzavano la visualizzazione di Steve McConnell di questo problema ( rif , datato 1996) come se quel grafico fosse effettivamente basato su numeri concreti. Non lo è. È una visualizzazione, per spiegare semplicemente il suo punto.

Penso che la premessa di Morendil, nell'articolo citato dall'OP, sia buona. La scienza che abbiamo su questo argomento è povera e obsoleta e tuttavia trattata come canonica. Ma penso anche che regge bene e suona vero perché sappiamo per amara esperienza che è ancora vero, almeno fino a un certo punto. E penso che il suo drammatico fraseggio "disciplina malata" non gli faccia alcun favore.


3
+1. Penso che si dovrebbe aggiungere che la ricerca di Boehm è stata fatta in un momento in cui i costi di costruzione e distribuzione delle versioni di bugfix erano molto più alti di quanto lo siano oggi.
Doc Brown,

@DocBrown: buon punto. Aggiunto. Insieme a un'ulteriore escursione.
pdr,

+1 per riferimento in effetti, +1 per la visualizzazione (peccato che posso dare solo un punto.) Ottima risposta, grazie!
Stefan Hendriks,

15

Anche se non sono a conoscenza di dati concreti o altre prove a supporto di questa affermazione, come minimo , immagino che sia buon senso.

Pensaci in questo modo .. Se hai un sistema complesso con sottosistemi interdipendenti (come fanno la maggior parte delle applicazioni non banali), pensa ai problemi a catena che possono essere il risultato di modifiche apportate a uno qualsiasi dei sistemi. Se si dimostra che i sottosistemi sono corretti (tramite test unitari e simili) e risolti in anticipo, il numero di bug che saranno causati a causa di knock-on da soli viene mitigato semplicemente risolvendo in anticipo.

Inoltre, se correggi i bug in anticipo, l'implementazione è ancora fresca nella mente dello sviluppatore. A seconda della lunghezza di un determinato progetto, se alla fine si stanno risolvendo dei bug, lo sviluppatore dovrà impiegare del tempo per capire cosa hanno scritto e (forse) come funzionano i sottosistemi da cui dipende il loro codice. Il tempo impiegato per apprendere questo = $.


1
Quindi sostanzialmente stiamo parlando della quantità di sforzo necessaria per correggere un bug in seguito (o prima). Posso pensare ad altri fattori che rendono i bug più costosi se risolti in seguito. Ma questo dipende dalla tua definizione di bug. Forse è qualcosa da concordare per primo. Nel mio libro è anche una "aspettativa non corrispondente in questa versione". Ad esempio, una funzionalità mancante. Questo potrebbe costare soldi veri, quindi è più ovvio allora. Alcune funzionalità potrebbero non costare di più (come per i siti Web, le modifiche CSS?) Ora che in anticipo. Oppure, non molto di più. Tuttavia, non ho dati.
Stefan Hendriks,

@StefanHendriks: stiamo parlando sia della quantità di sforzo necessaria sia dei nuovi bug sostenuti dalle correzioni richieste. Probabilmente dovresti scavare nel progetto post mortems (quelli che hanno utilizzato entrambi i metodi) per ottenere dati reali.
Demian Brecht,

2
@AaronMcIver: La mia opinione sull'articolo non è quale metodo sia migliore, ma che la ricerca e i dati concreti utilizzati nel backup del reclamo e interpretazioni errate nei rapporti successivi. Sebbene la mia risposta non sia basata su dati pubblici, si basa su oltre 10 anni di esperienza professionale nel campo di sistemi altamente complessi.
Demian Brecht,

1
A proposito, non sono d'accordo sul fatto che le modifiche ai CSS non ne soffrano. Prova a risolvere un problema di layout una volta che hai tutte le altre cose perfette pixel e scoprirai che potresti dover rompere un sacco di cose
Andrea

1
@DemianBrecht La tua risposta è molto soggettiva, motivo per cui chiedo. È una speculazione e una sensazione viscerale. Mentre quelli possono certamente avere un peso, il problema è che spesso può non essere una rappresentazione imprecisa della realtà, come sottolinea l'articolo. L'uso del buonsenso come criterio sul perché può costare di più può anche essere invertito. Si potrebbe sostenere che il numero di persone coinvolte in una correzione di bug potrebbe essere il vero fattore che costa di più o meno, ignorando lo sforzo effettivo degli sviluppatori.
Aaron McIver,

12

Dubito che sia possibile trovare un modo scientificamente rigido di misurare questo - ci sono troppi altri fattori coinvolti e non ci sono due progetti abbastanza comparabili da servire come più di casi di studio. Il pensiero logico dovrebbe farti fare molta strada però. Alcuni argomenti:

  • La quantità totale di codice in un progetto tende a crescere verso la fine. Più a lungo aspetti a correggere un bug, maggiore è la base di codice che devi toccare.
  • La qualità del nuovo codice aggiunto a un progetto diminuisce verso la fine, almeno se c'è pressione (che di solito è un dato): una scadenza incombente fa sì che le persone gettino in mare le migliori pratiche solo per spedire in tempo. Ciò significa che più avanti correggi un bug, più codice errato devi esaminare.
  • Anche se la duplicazione del codice è generalmente disapprovata, accade sempre, e poiché è facile copiare e incollare, ma è difficile ricongiungere sezioni di codice duplicate, la quantità di codice una volta incollato copia in genere aumenta nel corso della vita di un progetto. Un codice più copiato copia significa una maggiore possibilità che il tuo bug venga duplicato e debba essere trovato e corretto più volte (e, di conseguenza, una maggiore possibilità che alcune delle sue occorrenze passino inosservate).
  • La correzione di un bug è una modifica a una base di codice; speri di migliorare le cose, ma un cambiamento comporta sempre un rischio. Un cambiamento che causa seri problemi in un progetto a distanza di mesi dovrebbe lasciare molto spazio per la gestione dei danni, ma due giorni prima della spedizione, ci si trova in gravi difficoltà.
  • Più a lungo esiste il bug stesso, più è probabile che altre parti dell'applicazione inizino a fare affidamento sul suo comportamento scorretto. Quindi, quando lo risolvi, improvvisamente scateni un sacco di bug secondari nel codice che non si aspetta che la tua funzione fornisca effettivamente i risultati documentati corretti.

+1. Bella risposta. Copia e incolla il codice che ha dei bug genera più bug a seconda dei moduli che dipendono da esso.
Karthik Sreenivasan,

2

Questa è roba accettata di base dall'ingegneria dei sistemi - e si applica a qualsiasi forma di sviluppo tecnico (sia che costruisca ponti, missili, navi da guerra o software).

Fondamentalmente, il costo delle cose sale all'incirca di un ordine di grandezza mentre attraversi le fasi di sviluppo.

Qualcosa che costa $ 10 da risolvere al punto di concepire l'idea ...

Costerà circa $ 100 se devi aggiornare le specifiche ....

O costa circa $ 1000 se qualcosa è stato implementato e devi apportare modifiche a quel punto (e aggiornare le specifiche, ottenere le approvazioni e così via) ma non ha superato una sorta di test formale di accettazione / svendita

O costa circa $ 10000 se qualcosa è stato implementato e il cliente ha accettato, e devi apportare modifiche a quel punto (e aggiornare le specifiche, ottenere le approvazioni, ripetere il test e rieseguire l'accettazione e la qualificazione del cliente, e così via)

E il costo dopo la distribuzione / implementazione / messa in servizio è ancora maggiore.

Gli esempi abbondano ed è facile comprenderli: un sistema bancario con una seria modifica dell'ambito fatta dopo che ne hai impiegati 25.000 impiegati costerà un pacchetto in tempi di riqualificazione ... prima ancora di considerare l'ambito, la codifica, il test, la regressione, ecc ecc ecc

Ovviamente il tuo chilometraggio varierà: i costi e gli impatti della modifica del sito Web di e-commerce di riscaldamento di calzini elettronici di Fred Nurke sono in qualche modo diversi dai costi di modifica del software su un computer di controllo di volo di un aereo.


1
Supponiamo che ogni mese consegni ai tuoi utenti una nuova versione di un software (o solo patch, come fa MS per Windows). Ora compaiono due bug, uno che è stato introdotto nel software due anni fa, uno introdotto il mese scorso. Il costo per correggere quei due bug e distribuire la nuova versione può essere praticamente lo stesso. Il costo per risolvere i problemi causati da uno qualsiasi di questi bug può essere diverso, ma dipende molto dal bug stesso.
Doc Brown,

Non è la stessa cosa: è dopo la spedizione. I costi dopo la spedizione sono simili in termini di entità (hanno tutti bisogno di aggiornamenti, test, implementazione). Ciò che sottolineo sopra è che i costi aumentano notevolmente dopo il rilascio.
quick_now

1
"post-release" è uno stato valido per il software incorporato, in una certa misura per il software termoretraibile e anche per il software sviluppato in un modello a cascata (errato!). Altri tipi di software vengono sviluppati e rilasciati in modo incrementale, il tempo di "post-rilascio" è praticamente ridotto rispetto alla durata del prodotto. Questo è specificamente il caso delle applicazioni web.
Doc Brown,

Potrebbe essere il caso delle applicazioni Web, ma non è l'intero universo. E le lavatrici? Macchine? Missili? Sistemi operativi per PC? Centrali elettriche? PLC che gestiscono cementifici? Va avanti e avanti e va avanti l'elenco.
quick_now

2

Non ho accesso a dati o fatti concreti, quindi posso offrirti solo osservazioni aneddotiche raccolte dai miei ultimi 20 anni in IT.

Credo che ci sia una grande differenza tra il modo in cui la maggior parte degli sviluppatori crea software oggi rispetto a 20 anni fa. Con il movimento Agile che ha guadagnato così tanto slancio, in particolare negli ultimi 5-6 anni, ho visto un vero cambiamento negli atteggiamenti sul posto di lavoro. Tanto che la qualità di ciò che facciamo sembra solo crescere a passi da gigante ogni anno e con ogni progetto mentre applichiamo le lezioni che abbiamo imparato da un progetto all'altro. I processi più snelli combinati con un'attenzione particolare allo sviluppo del primo test sono passati da molto controversi a banali. Al punto che entrare in molte aziende oggi, se non ti senti a tuo agio con Agile, sarai fortunato se non ti mostreranno la porta.

Quindi quale impatto ha avuto questo. Innanzitutto, ho notato che i problemi vengono spesso identificati molto prima. Spesso, se il problema non sembra troppo grave, a volte può essere sospeso a tempo indeterminato. In una rara manciata di casi, ho visto bug che erano ritenuti banali diventare problemi seri quando affrontati in seguito, poiché alcuni problemi fondamentali diventano evidenti che all'epoca non venivano considerati. A volte ciò può portare a un ciclo di correzione elaborato e può essere costoso in una certa misura, ma tale costo è spesso misurato in termini di risorse in misura minore e più spesso in termini di impatto sulla relazione tra cliente e sviluppatore. I clienti si stanno abituando a questo modo di pensare Agile, che restituisce loro risultati molto più velocemente di quanto non facesse ai vecchi tempi, con sprint di sviluppo altamente iterativi e rapido inversione di tendenza tra richieste e implementazione, quindi si sono aspettati molto da noi. E per quanto riguarda i bug effettivi, il tempo per risolvere un bug è molto più spesso ridotto a causa della presenza di una solida serie di test per supportare le modifiche e della capacità di creare nuovi test da cui fornire informazioni e soluzioni ai problemi segnalati.

Quindi, nel complesso, sembra che lo sforzo complessivo per correggere i bug sia stato ridotto nella maggior parte dei casi se esiste una solida serie di test e procedure per garantire che i test rimangano al centro di ciò che fa lo sviluppatore, ma il costo effettivo si è in qualche modo spostato in parte almeno dall'implementazione, ad altre aree del business, perché in qualche modo l'attenzione si è spostata dalla pura offerta e domanda alla gestione delle relazioni.

Un'altra cosa che è diventata evidente è che il nostro istinto intestinale di alcuni anni fa, che suggeriva che essere Agili avrebbe ridotto i nostri cicli di manutenzione, è stato dimostrato in modo giusto e sbagliato. Proprio nel senso che test solidi hanno reso più semplice il debug e la correzione del nostro codice in larga misura e la riduzione del numero complessivo di bug rilasciati nel codice di produzione, e sbagliato nel senso che ora stiamo lavorando di più per evitare di dover mantenere il codice legacy, eseguendo costantemente il refactoring del codice e migliorando l'architettura in modo che sta diventando sempre più raro che dobbiamo sviluppare nuovi prodotti completamente da zero.

Quindi, alla fine, cosa significa questo riguardo alla domanda del PO? Bene, significa che la risposta in realtà non è così semplice come avremmo potuto pensare. 15 anni fa, avrei probabilmente risposto alla domanda come , ma ora ritengo sia più realistico affermare che è davvero troppo difficile misurare empiricamente, perché la natura di ciò che facciamo per sviluppare il software è molto cambiata da quando abbiamo iniziato a porsi la domanda del PO allora. In un certo senso, più avanziamo le nostre tecniche e competenze come industria, più la domanda cresce da un sì definitivo, a un punto in cui sospetto che tra un breve numero di anni diremo che non importa quando correggiamo i bug, poiché i nostri test e processi saranno molto più robusti, i tempi delle correzioni dei bug saranno meno guidati dagli sforzi per salvare i nostri budget e più dalle priorità per soddisfare le esigenze dei nostri clienti, e il costo relativo sarà diventa praticamente insignificante contestualmente.

Ma, come ho detto, questa non è una prova concreta supportata dai dati, ma solo le mie osservazioni degli ultimi anni e il mio istinto mi dice che ci sarà più saggezza rivoluzionaria a venire che migliorerà il modo in cui facciamo le cose.


1

I primi bug si propagheranno ad altre parti del sistema, quindi quando si corregge il bug si potrebbe essere costretti a riscrivere alcune parti del sistema che si basavano sul bug stesso.

Oltre al tempo, ti renderai conto di come vengono costruite alcune parti del programma e dovrai ricordartelo. È una qualche forma di debito tecnico (se acceleri il progetto nella fase iniziale avrai problemi a completarlo a causa delle scorciatoie che hai preso).

È così semplice e non c'è nulla da provare.

Penso che stai cercando di accelerare il progetto il più rapidamente possibile per presentare una soluzione di lavoro al tuo dipendente. La buona notizia è che la avrai molto velocemente, la cattiva notizia è che probabilmente non la finirai mai senza una completa riscrittura se continui a scrivere schifezze il più velocemente possibile e pensi di sistemare tutto in un paio di mesi. Probabilmente non sarai nemmeno in grado di refactoring questo.


Sì, tutto ha un senso. Tuttavia, mi chiedo se questo è significativamente diverso dal fissaggio in seguito. Sì, devi imparare di nuovo un po 'le cose. Tuttavia, forse non rilasciando prima hai perso più soldi del costo che sarebbe di risolvere questo problema. Ciò renderebbe questo problema economico o costoso da risolvere? Anche quando è meno lavoro perché era all'inizio?
Stefan Hendriks,

2
La riparazione del sistema già rilasciato è molto più complicata. Ad esempio, non puoi semplicemente riscrivere le strutture dati. Dovrai fornire agli utenti un modo per migrare i loro dati. Ancora una volta, se rilasci troppo presto finirai in un pasticcio, invece di correggere i bug perderai tempo a scrivere codice di migrazione. Forse perdi un po 'di soldi, è meglio che perdere clienti a causa della loro vendita di software scadente.
Slawek,

>> ... devi riapprendere un po 'le cose ... I casi limite in particolare lo rendono difficile e non banale. Le interazioni al di fuori dell'immediato vengono dimenticate rapidamente a meno che non si disponga di una specifica esaustiva, corretta e mantenuta .
DaveE,

1

Bene, probabilmente non posso darti la prova definitiva che stai chiedendo, ma posso riferire un incidente abbastanza recente dal mio lavoro.

Abbiamo aggiunto una funzionalità che ha fornito funzionalità di gestione del flusso di lavoro al nostro prodotto. Roba tipica BDUF, specifiche approvate e approvate dal cliente. Implementato su specifica. Reclami dal 1 ° giorno alla distribuzione.

Non avevamo fatto una vera e propria soluzione di usabilità con il cliente, solo preso la parola per quello che volevano. Risultato: centinaia di ore di rilavorazione: analisi, progettazione, implementazione e QA dovevano essere rifatti. Tutto perché nelle specifiche mancavano particolari casi d'uso. Un bug nelle specifiche, se vuoi.

Ho visto cose simili in precedenti lavori quando qualcuno nella catena fa ipotesi diverse dalle ipotesi dell'utente finale. I bug di codifica semplici sono relativamente facili da gestire se catturati vicino quando accadono, ma i bug di progettazione possono uccidere interi sistemi.


1

Se si corregge il bug dopo il rilascio, si ha il costo di trovare e correggere il bug, che può richiedere o meno tempo / costo per eseguire il rilascio. Tuttavia, hai una serie di test di integrazione, test di regressione, test UA, attività di rilascio, ecc. Che dovranno essere presi in considerazione. A meno che la correzione del bug non si verifichi con una serie di altre correzioni o un aggiornamento della versione, si avranno costi aggiuntivi per le attività di test e rilascio che verrebbero evitate includendo la correzione nella versione iniziale, poiché questi costi sarebbero condivisi su un numero di correzioni / aggiornamenti / caratteristiche.

Considera anche il costo che il bug causerà in uso, se è solo cosmetico, quindi probabilmente non importa, ma una funzione o un bug delle prestazioni potrebbe creare un costo con attività di supporto o riduzione della produttività o calcoli errati.


1

Chiedi a Intel quanto costano i Pentium Bug, Ariane 5 Rocket è un altro buon esempio. Questi bug sono stati corretti alla fine del progetto. Ho lavorato su un sistema in cui un "tentativo" di una versione del software ha un budget di 6 cifre. In questi casi estremi, è facile vedere il costo. In altri (la maggior parte?) Casi, il costo viene nascosto dal rumore, ma è ancora lì.

Non c'è dubbio che i bug costano denaro mentre esistono. Un elemento, Rapporti difetto, richiede tempo per la compilazione, il triage e la chiusura come duplex, il tempo è denaro, quindi un bug aperto crea costi continui. pertanto, deve essere che rinviare le correzioni di bug costa più che risolverle prima.

Se un bug sfugge allo stato brado, il costo ha un salto saggio ... È "La fine del progetto" prima o dopo il rilascio del software?


I bug del software nel mondo embedded sono decisamente più costosi da correggere alla fine del progetto. Immagina di dover fare un richiamo sull'auto a causa di un bug del software nel modulo di controllo del motore.
tehnyit

I bug che menzioni non sono stati trovati in anticipo e quindi non risolti in anticipo.

@ Thorbjørn In effetti hai ragione, anche se non sono stati individuati in anticipo i difetti che abbiamo inserito in anticipo (nel caso di The Ariane Rocket, il bug è stato inserito prima ancora che il progetto fosse avviato, poiché riutilizzavano il codice esistente.). Il costo è proporzionale al tempo che intercorre tra l'inserimento e la correzione distribuita, nulla a che fare con il momento in cui viene trovato o risolto (la maggior parte degli sviluppatori lo considera riparato una volta che la patch è nella base di codice. Un difetto non viene risolto fino a quando gli utenti finali non lo hanno installato ). Tutto ciò è solo IMHO però - non ho prove a sostegno.
mattnz,

1

Una volta ho letto un articolo che aveva due punti interessanti (sfortunatamente i riferimenti che avevo erano spariti da tempo, quindi dovrò solo postulare qui). Il primo punto che hanno sottolineato è che circa il 50% di tutti gli errori sono stati introdotti nelle specifiche dei requisiti e che circa il 90% di tutti gli errori è stato rilevato durante i test UAT o di sistema.

Il secondo punto era che per ogni fase del modello V il costo era aumentato di 10 volte. Se il fattore è corretto trovo o meno irrilevante, ma gli errori più costosi sono quando il tuo progetto si basa su un'ipotesi errata. Questo porta a un'enorme quantità di riscrittura. Tutto il codice che funziona a causa di tale presupposto ma non riesce quando viene applicato il presupposto corretto dovrà essere riscritto.

Ho riscontrato la necessità di riscrivere l'intero modello di dominio a causa di un presupposto errato nelle specifiche dei requisiti. Se un tale bug viene rilevato in anticipo, vale a dire quando si esaminano le specifiche dei requisiti il ​​costo è molto basso. In questo caso particolare ci sarebbero volute dieci righe di testo. Nel caso in cui venga trovato durante UAT (com'era) il costo è sostanziale (nell'esempio dato il costo del progetto è stato aumentato del 50%)


1

Nessun dato statistico, ma esperienza personale:

Il codice di controllo del motore a razzo su cui stavo lavorando aveva una linea simile powerCutoff = someCondition && debugOptions.cutoffIsAllowed;. L'opzione predefinita non era consentita. La build 'final' avrebbe dovuto rimuovere tutte le opzioni di debug, quindi la linea è stata modificata powerCutoff = someCondition;.

Hai riscontrato il bug durante la revisione del codice? Non abbiamo fatto. La prima volta che si è verificata la condizione di innesco nel test che ha provocato un taglio imprevisto è stata pochi mesi prima del primo volo.

Questo bug sarebbe costato meno di un'ora se fosse stato rilevato durante la revisione. Potrebbe essere costato un giorno o due se è stato catturato durante l'integrazione, causando una singola ripetizione del test. Se fosse stato rilevato durante la qualificazione formale, avrebbe potuto costare una settimana o due provocando un riavvio completo della serie di test con una nuova build.

Com'era, il costo balooned. Per prima cosa abbiamo progettato ed eseguito test per determinare se l'unità di volo potrebbe persino innescare la condizione. Dopo che si è stabilito che si trattava di una possibilità reale, c'erano costi di ingegneria, gestione e analisi del cliente della soluzione migliore, rilascio della nuova build, creazione ed esecuzione di un nuovo piano di test di regressione, test di sistema in più unità e simulatori. Tutto sommato è costato migliaia se non decine di migliaia di ore-uomo. Inoltre i 15 minuti originali per apportare effettivamente il giusto cambio di codice.


0

Purtroppo, come molte cose, dipende.

Se un messaggio di dialogo è errato, potrebbe essere "banale" da correggere (aggiorna stringa, ricostruisci / pacchetto, ridistribuisci). O se è necessario aggiornare un layout, può essere sufficiente una modifica a un file .css.

Se il bug è che l'output di un metodo critico che ha una specifica e una prova di oltre 100 pagine è errato, l'indagine stessa potrebbe richiedere ore o giorni. Questo è ciò a cui si riferisce il vecchio "assioma" e ciò che, tra le altre cose, TDD e agile stanno cercando di evitare (fallire presto e chiaramente, fare progressi progressivi sicuri, yada).

Dalla mia recente esperienza con team multi-scrum su un singolo progetto, i "bug" sono in genere problemi di unione / integrazione che compaiono solo alla chiusura di una versione quando i rami delle funzionalità sono promossi a stabili. Questi sono i peggiori, poiché i conflitti spesso richiedono il supporto incrociato dei team mentre i team hanno fretta di finire i propri obiettivi, ma non so che sono più costosi di altri bug, poiché si verificano quando si verificano: in ritardo il rilascio, ma al più presto possibile. Questo è ciò che li rende i peggiori.

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.