In alcuni progetti, devi seguire un rigoroso processo di sviluppo, che potrebbe non essere iterativo. Un esempio per questi è nel settore aerospaziale quando devi fornire software con gli standard DO-178B / C e simili.
Per uno, non hai nemmeno una scelta in questi casi. Non potresti svilupparlo in modo iterativo, neanche se lo volessi. Ma ancora più importante, questi progetti non si prestano molto bene allo sviluppo iterativo.
Pensa a scrivere software di controllo che viene sparato nello spazio (letteralmente!). Non c'è più margine di miglioramento una volta che è in volo (è già diverso se la tua cosa inizierebbe a funzionare sulla Luna o sulla ISS, perché le patch software diventano possibili). Inoltre, l'hardware sottoposto a controllo è in genere molto maturo ei requisiti sono stati ben analizzati e raramente soggetti a modifiche.
Casi simili si verificano nel software che deve essere certificato. Mentre è possibile sviluppare quelli iterativamente, c'è un certo punto in cui devi dichiarare il tutto completo per ottenere la certificazione. Dopodiché, non devi più toccare il software o la tua certificazione è nulla. Di nuovo, uno scenario che non favorisce esattamente lo sviluppo iterativo.
Detto questo, noto comunque sempre più progetti software in questi settori che vanno verso sviluppi incrementali (all'interno della cornice immutabile degli standard richiesti). Inoltre, viene prestata molta attenzione a ridurre la quantità di software che non può essere sviluppato in modo iterativo (o richiede solo la certificazione) e separarlo chiaramente dal software rimanente. I vantaggi monetari di questa mossa sono ovvi (almeno a chiunque abbia mai visto il costo del software che controlla un aereo), ma sono anche i vantaggi tipici del libro di testo dello sviluppo incrementale a cui gli sviluppatori del prodotto sono interessati.