Top Down è quando si prende l'intero problema e lo si suddivide in problemi sempre più piccoli finché non si arriva a in basso dove si trovano molti dettagli di implementazione reali.
Bottom Up è quando crei molti piccoli blocchi dettagliati che sono generalmente utili e che possono essere assemblati insieme per risolvere problemi sempre più grandi.
Top-down è utile per analizzare e capire come un grosso problema può essere suddiviso in aree di responsabilità e produce la struttura complessiva di un software. Uno svantaggio è che tende a produrre codice specifico per attività in fondo che è generalmente difficile da riutilizzare in altre applicazioni.
Bottom Up, d'altra parte, è spesso l'approccio che i costruttori di biblioteche adottano. È interamente focalizzato sulla produzione di piccoli componenti che sono il più generici e riutilizzabili possibile all'interno delle loro specifiche aree di utilità.
Quando (ri) progettiamo un intero sistema, entrambi gli approcci sono importanti. Inizialmente l'approccio Top Down ti fornirà una struttura logica specifica per l'applicazione. Una volta che è stato raggiunto, l'approccio Bottom Up può essere applicato laddove vengono affrontate le specifiche di basso livello. Questo potrebbe significare localizzare librerie rilevanti che sono ben adattate per risolvere problemi di livello inferiore o imbarcarsi su una soluzione basata su librerie interne.
Il punto è che il codice di implementazione effettivo dovrebbe essere il più possibile riutilizzabile. In questo modo, la creazione di applicazioni successive dovrebbe diventare progressivamente più economica. A tal fine, l'approccio Top Down non può che portarti così lontano e, a quel punto, l'approccio Bottom Up colma le lacune con qualcosa di meno specifico per l'attività corrente ma più utile per le attività in generale.