In teoria, ci sono almeno cinque possibili approcci.
Top-Down:
Inizia con i finti colpi d'interfaccia utente o un prototipo di carta. Trasformali in veri e propri dialoghi e fatti strada tra i gestori di pulsanti e altri controlli attraverso la logica e il database.
Bottom-Up:
Inizia con le strutture dati (probabilmente lo schema del database). Quindi aggiungere la logica (modellando i processi del mondo reale); infine, l'interfaccia utente è solo un'interfaccia per attivare la logica e visualizzare i risultati.
Prima logica:
Inizia con la logica del programma, implementando l'accesso ai dati e un'interfaccia utente rudimentale, se necessario. Quindi formalizza e indurisci le strutture dati e, infine, arricchisci l'interfaccia utente in modo appropriato.
Incontro nel mezzo:
Inizia con lo schema del database e l'interfaccia utente e lavora contemporaneamente verso il punto in cui si incontrano. Con questo approccio, la logica viene per ultima.
Espansione orizzontale:
Inizia identificando la quantità minima assoluta di funzionalità che farebbe qualcosa di interessante e implementa l'intero stack (strutture dati, logica e UI) per questa parte. Potrebbe essere solo un ciclo CRUD di base con una semplice finestra di modifica per una sola entità. Quindi inizia ad aggiungere più funzionalità, implementando l'intero stack per ogni funzionalità (quindi 'orizzontale').
Ciascuno di questi ha pro e contro.
Top-down ti dà una visibilità visibile nelle prime fasi del processo e ti consente di verificare il tuo design funzionale con le parti interessate: spesso i mock-shot dicono agli utenti più di un progetto che diagrammi di flusso o muri di testo.
Bottom-up ti dà la possibilità di progettare uno schema di database solido come una roccia prima di impegnarti in qualcosa; Poiché uno schema di database è notoriamente difficile da modificare una volta rilasciato, si vuole ottenere questa parte correttamente: l'impatto della modifica di un'interfaccia utente è molto più ridotto e produce meno bug meno gravi.
La prima logica significa che puoi testare la logica prima di dedicare molto tempo al database e alla presentazione, il che è particolarmente interessante se la tua logica sarà davvero complessa.
Meet-in-the-middle combina i vantaggi di bottom-up e top-down, ma dovrai saltare avanti e indietro tra due attività e rischi di finire con una logica più complessa del necessario perché le tue due estremità non si incontrano naturalmente.
L'espansione orizzontale si sposa bene con un flusso di lavoro iterativo e ha il vantaggio aggiunto che, se la priorità è buona, avrai un'applicazione funzionante in qualsiasi momento, quindi se non prendi una scadenza, avrai un versione con meno funzioni, ma è ancora completamente funzionale, a differenza di una versione con un database completo, ma senza interfaccia utente.
Quindi, quale sceglierai dipende dal tuo stile personale e dalle circostanze.