Le pratiche TDD e Agile possono promettere di produrre una soluzione ottimale? (O anche una soluzione "buona"?)
Non esattamente. Ma non è questo il loro scopo.
Questi metodi forniscono semplicemente un "passaggio sicuro" da uno stato a un altro, riconoscendo che i cambiamenti richiedono tempo, sono difficili e rischiosi. E il punto di entrambe le pratiche è garantire che l'applicazione e il codice siano entrambi fattibili e comprovati per soddisfare i requisiti più rapidamente e più regolarmente.
... [TDD] si oppone allo sviluppo del software che consente di aggiungere software che non ha dimostrato di soddisfare i requisiti ... Kent Beck, a cui è stato accreditato di aver sviluppato o "riscoperto" la tecnica, ha dichiarato nel 2003 che TDD incoraggia semplici progetta e ispira fiducia. ( Wikipedia )
TDD si concentra sul garantire che ogni "blocco" di codice soddisfi i requisiti. In particolare, aiuta a garantire che il codice soddisfi i requisiti preesistenti, anziché consentire ai requisiti di essere guidati da una codifica scadente. Tuttavia, non promette che l'implementazione sia "ottimale" in alcun modo.
Per quanto riguarda i processi Agile:
Il software di lavoro è la misura principale del progresso ... Alla fine di ogni iterazione, le parti interessate e il rappresentante del cliente esaminano i progressi e rivalutano le priorità al fine di ottimizzare il ritorno sull'investimento ( Wikipedia )
L'agilità non è alla ricerca di una soluzione ottimale ; solo una soluzione funzionante , con l'intento di ottimizzare il ROI . Promette una soluzione funzionante prima piuttosto che dopo ; non "ottimale".
Ma va bene, perché la domanda è sbagliata.
Gli ottimali nello sviluppo del software sono obiettivi sfocati e mobili. I requisiti di solito sono in evoluzione e pieni di segreti che emergono, con tuo grande imbarazzo, in una sala conferenze piena di capi del tuo capo. E la "bontà intrinseca" dell'architettura e della codifica di una soluzione è classificata dalle opinioni divise e soggettive dei tuoi pari e da quella del tuo superiore manageriale - nessuno dei quali potrebbe effettivamente sapere qualcosa sul buon software.
In meno, pratiche TDD e agile riconoscono le difficoltà e tentare di ottimizzare per due cose che sono oggettivi e misurabili: . Lavoro V non-lavoro e Sooner v tardi..
E, anche se abbiamo "lavoro" e "prima" come metriche oggettive, la tua capacità di ottimizzare per loro dipende principalmente dall'abilità e dall'esperienza di una squadra.
Le cose che si potrebbe interpretare come gli sforzi producono ottime soluzioni includono cose come:
eccetera..
Se ciascuna di queste cose effettivamente produca soluzioni ottimali sarebbe un'altra grande domanda da porre!