I have always been taught that one of the most important things to do at the beginning of the developments of a software is the Requirement gathering.
Bene, in più di tre decenni di sviluppo del software ho fatto l'esperienza di prima mano che un'analisi dettagliata dei requisiti (se intendi quella per "raccolta") è davvero molto importante per lo sviluppo della prossima feature o feature slice di un software, e queste caratteristiche non dovrebbero essere troppo grandi (è per questo che dovresti provare a tagliare le grandi caratteristiche a fette). E in questi anni, questa esperienza ha raggiunto anche il mainstream ed è diventata parte delle cosiddette metodologie "agili". Quindi chiunque ti abbia insegnato questo, sembra che ti abbiano detto alcune cose antiquate del passato.
Quindi la risposta a
Why do we spend so much time gathering detailed requirements at the beginning
is - "noi" non , solo teorici del passato, che non hanno una propria esperienza nello sviluppo di software efficace, e molto probabilmente non sanno che cosa significa sviluppo agile.
Naturalmente, a volte ci sono ragioni sensate per cui dedicare molto tempo alla raccolta dei requisiti all'inizio di un progetto:
-
perché devi offrire un'offerta a prezzo fisso a un potenziale cliente. Quando si calcola il prezzo, non si vuole trascurare un requisito nascosto in una mezza frase della pagina 42 della lista dei desideri dei clienti, che richiede diversi mesi o anni aggiuntivi per lo sviluppo.
-
o, se sei il cliente, vuoi assicurarti che un potenziale appaltatore sviluppi tutte le funzionalità che ti aspetti da lui per una certa somma di denaro, quindi fai un elenco dettagliato dei requisiti per il contratto.
-
perché è necessario prendere decisioni architettoniche sul sistema in anticipo e non si vuole trascurare un requisito che si scontra direttamente con l'architettura scelta
Nessuno di questi motivi, tuttavia, si aspetta che i requisiti non cambino nel tempo, o che ogni caratteristica del software sia analizzata in ogni dettaglio cruento prima di iniziare a scrivere la prima riga di codice. Ad esempio, se si stipula un contratto con i requisiti 1 2 e 3 e il requisito 3 è sostituito dal requisito 4, allora questa è una buona base per rinegoziare il contratto. O prendere decisioni architettoniche, queste sono in genere fondate su alcune nozioni generali sui requisiti non funzionali, quelle non diventano intrinsecamente sbagliate perché cambiano i requisiti funzionali, e non diventano sbagliati se i requisiti non funzionali cambiano entro un ragionevole grado .
Un altro punto vorrei menzionare che i "requisiti di raccolta" non significano necessariamente un'analisi dettagliata. È sempre una buona idea raccogliere costantemente idee per nuove funzionalità e miglioramenti in qualche backlog o issue tracker nell'intero progetto , non esclusivamente all'inizio di un progetto, ma parallelamente alle attività di sviluppo, ogni volta uno ha una buona idea che potrebbe migliorare il prodotto. Questa è davvero una parte importante della gestione dei requisiti, poiché ti consentirà in seguito di prendere una decisione su quale di queste idee dovrebbe essere prioritizzata, il che è abbastanza utile per essere analizzato in dettaglio e implementato come nuove funzionalità.