2010-04-29 17 views
7

Ci sono fondamentalmente questi due approcci alla progettazione di un sistema. quali sono i vantaggi e gli svantaggi? Quando dovrei usare quale? Dovrei combinare questi approcci? Come?Design discendente o dal basso verso l'alto?

+4

È una domanda breve, ma ho il sospetto che la risposta sarebbe piuttosto lunga! ... –

+1

Preferisco il design da sinistra a destra. –

+0

@Mitch Wheat potrebbe essere, anche rispondendo parzialmente o reindirizzando ad alcuni libri/documenti/articoli/blog sarà sufficiente :) –

risposta

21

In parole povere, dall'alto verso il basso viene da una decomposizione dello spazio problema in sotto-problemi, mentre il bottom-up viene da organizzare parti dello spazio soluzione in blocchi più grandi.

Per poter utilizzare in modo efficace top-down, è necessaria una comprensione molto solida del problema, ovvero requisiti solidi in mano. Perché il bottom-up sia efficace, devi risolvere un problema "standard" i cui pezzi sono ben noti, ma dove l'assemblaggio esatto potrebbe aver bisogno di qualche sperimentazione prima di farlo bene.

Si consiglia di leggere il brillante documento di Parnas A rational design process and how to fake it per ulteriori informazioni su questo problema. La risposta è: utilizzare entrambi, a seconda dei casi. Quando hai finito, rendi tutto simile (nelle tue specifiche, nella documentazione di progettazione e nella documentazione utente) come se avessi fatto tutto dall'alto al basso.

+0

grazie mille per una buona risposta e link a quel documento –

+4

+1: per «Quando hai finito, fai sembrare tutto come se avessi fatto tutto top-down » – ZJR

2

Si dovrebbe anche dare un'occhiata al principio "Affettare il dolce" dalla comunità agile. Questo principio ti obbliga a concentrarti sull'aggiungere valore di business per l'utente ad ogni iterazione della tua applicazione. Si tenta di progettare e realizzare una fetta verticale della domanda e consegnarla, per poi focalizzarsi sulla prossima fetta ecc

Ecco un link che spiega il principio più in dettaglio http://blog.energizedwork.com/2005/05/slicing-cake.html

+0

Grazie, so delle iterazioni, immagino che il punto difficile sia come tagliare la torta in modo che aggiungere un'altra fetta non sia così difficile come aggiungerne alcune precedenti. –

3

Penso che la tua domanda merita lungo e risposte articolate. suggerisco di leggere un vecchio articolo di Martin Fowler (cfr. "È il design morto?"), Che parla delle relazioni in merito alla progettazione iniziale e le tecniche agili (http://martinfowler.com/articles/designDead.html)

La mia esperienza è quella di avere sempre un'architettura di stampa blu dei moduli , interazioni tra componenti del sistema. Avendo questo progetto (che in alcuni progetti può essere di alto livello), inizio a progettare/sviluppare moduli/componenti. Alcuni di questi possono essere sviluppati anche dal basso verso l'alto.

+0

Un buon riferimento sempre apprezzato :) –

Problemi correlati