Page 5 - 120900035890_gallo_cloud_tecno

Basic HTML Version

5
programmazione imperaTiva: l’approccio Top-down
unItà dI aPPrendIMento 1
LezIon
top-down e bottom-up
1
La tecnica top-down, quindi, nasce come
tecnica di analisi dei problemi
e non come tecnica
di progettazione: il risolutore, infatti, utilizza tale metodologia per affrontare agevolmente il
processo risolutivo del problema.
All’atto dell’implementazione, poi, il programmatore deciderà se implementare singolar-
mente i vari sottoproblemi, o se accorparne alcuni e scomporne altri.
Per scomporre un problema in tanti sottoproblemi funzionali ci si sofferma su
cosa
debba
essere fatto e non sul
come
, che con tale metodologia viene affrontato poco e soltanto all’ul-
timo livello.
La tecnica
top-down
, quindi, parte dall’obiettivo e da esso fa scaturire la strategia più
adatta a raggiungere l’obiettivo stesso; valorizza, quindi, il
perché
e da esso fa dipendere il
come
, ossia la strategia. Individua, pertanto, le risorse necessarie, precisa quelle disponibili
e identifica quelle mancanti, propone successivamente ogni risorsa mancante come sotto-
obiettivo, ovvero come sottoproblema in cui ciascun sotto-obiettivo richiede una sotto-
strategia risolutiva.
La metodologia
bottom-up
, ossia “dal basso verso l’alto”, privilegia invece l’aspetto esecutivo
rispetto a quello funzionale, procedendo dal particolare verso il generale. Il metodo bottom-up
è una
strategia induttiva
e consente di concentrarsi subito sui punti cardine del problema che,
però, potrebbero essere di difficile individuazione iniziale.
Nel modello top-down si affronta il problema osservandolo più in generale e poi rifinendo
ogni sua parte. Ad esempio, creo un modello di automobile e poi scendo nel dettaglio rifi-
nendo ruote, motore e così via. Un approccio informatico è quello di servirsi di sottopro-
grammi da definire in un secondo momento. È il classico approccio della
programmazione
procedurale
.
Nel modello bottom-up si affronta il problema preoccupandosi prima dei dettagli più sem-
plici, fino ad arrivare al modello più complesso (esattamente il contrario del modello top-
down). Ad esempio, creo una ruota, poi un motore e le altre parti, e solo alla fine ottengo
il modello complesso di un’automobile. Nella
programmazione ad oggetti
è utilizzato
questo metodo, in quanto si ha la possibilità di creare singoli oggetti indipendenti e quindi,
tramite questo approccio, si sviluppa cominciando dalle classi base che poi si estendono o
si collegano insieme a creare un programma complesso.
Nel processo di sviluppo software, gli approcci top-down e bottom-up giocano un ruolo
fondamentale. L’approccio top-down enfatizza la pianificazione e una completa compren-
sione del sistema. È ovvio che la fase di codifica non può iniziare finché non si è raggiunto
almeno un sufficiente livello di dettaglio nella progettazione di una parte significante del
sistema. Questo, comunque, ritarda la fase di test delle ultime unità funzionali di un sistema
fino a quando una parte rilevante della progettazione non è stata completata.
Al contrario, l’approccio bottom-up enfatizza la codifica e la fase di test precoce, che può
iniziare appena il primo modulo è stato specificato. Questo approccio, comunque, induce il
rischio che i moduli possano essere codificati senza avere una chiara idea di come dovranno
essere connessi ad altre parti del sistema. L’importante principio di riusabilità del codice è
una delle muse ispiratrici di questo metodo. I moderni approcci alla progettazione software
spesso combinano sia la tecnica top-down, sia quella bottom-up. Benché l’analisi e la com-
prensione del sistema completo siano tipicamente considerate necessarie per una buona
progettazione (e quindi tramite l’approccio top-down), nella maggior parte dei progetti
software si cerca di fare uso di codice già esistente ad alcuni livelli (tendenza bottom-up).
dettaGLI
top
down
up
Bottom
?
ProBLeMa