# Top-down i Bottom-up

Top-down i Bottom-up són estratègies de processament d'informació característiques de les ciències de la informació, especialment pel que fa al programari. Per extensió s'apliquen també a altres ciències humanes i científiques.
En el model Top-down es formula un resum del sistema, sense especificar detalls. Cada part del sistema es refina dissenyant amb més detall. Cada part nova és llavors redefinida, cada vegada amb més detall, fins que l'especificació completa és prou detallada per validar el model. El model "Top-down" es dissenya amb freqüència amb l'ajuda de "caixes negres" que fan més fàcil complir requeriments encara que aquestes caixes negres no expliquin en detall els components individuals.
En contrast, en el disseny Bottom-up les parts individuals es dissenyen amb detall i després s'enllacen per formar components més grans, que al seu torn s'enllacen fins que es forma el sistema complet. Les estratègies basades en el flux d'informació "bottom-up" es semblen potencialment necessàries i suficients perquè es basen en el coneixement de totes les variables que poden afectar els elements del sistema.

## Ciències de la computació

En el procés de desenvolupament de programari, els enfocaments Top-down i Bottom-up tenen un paper crucial.
El disseny Top-down va ser promogut el 1970 pels investigadors d'IBM Harlan Mills i Niklaus Wirth. Mills va desenvolupar els conceptes de programació estructurada per a usos pràctics i els va provar en un projecte el 1969 per automatitzar l'índex de la morgue del New York Times . L'èxit administratiu i enginyeril del projecte van fer que l'enfocament top-down es van escampar per IBM i per la resta de la indústria dels computadors. Niklaus Wirth, que entre els seus èxits té el desenvolupament del llenguatge de programació Pascal, va escriure l'article Program Development by stepwise Refinement , que va tenir molta influència. Els mètodes Top-down van ser afavorits en l'enginyeria de programari fins que va arribar la programació orientada a objectes a finals dels 1980.
L'enfocament top-down emfatitza la planificació i coneixement complet del sistema. S'entén que la codificació no pot començar fins que no s'hagi assolit un nivell de detall suficient, si més no en alguna part del sistema. Això retarda les proves de les unitats funcionals del sistema fins que gran part del disseny s'ha completat.
Bottom-up fa èmfasi en la programació i proves primerenques, que poden començar tan aviat s'ha especificat el primer mòdul. Aquest enfocament té el risc de programar coses sense saber com es connectaran a la resta del sistema, i aquesta connexió pot no ser tan fàcil com es creu al començament. La reutilització del codi és un dels majors beneficis de l'enfocament bottom-up.
El desenvolupament de programari modern normalment combina tant Top-down com Bottom-up . Encara que un coneixement complet del sistema es considera normalment necessari per a un bon disseny, fent que teòricament sigui un enfocament top-down, la majoria de projectes de desenvolupament de programari tracten d'usar codi existent en algun grau. L'ús de mòduls existents li donen al disseny un gust 'bottom-up'. Alguns enfocaments usen un enfocament en el qual un sistema parcialment funcional és dissenyat i programat completament, i aquest sistema es va expandint per omplir els requisits del projecte.

## Referències

* Perl Design Patterns Book

## Enllaços externs

* Development by stepwise Refinement