Design ovenfra og nedenfra

**Ovenfra og ned** og **nedenfra og opp** er to strategier for informasjonsprosessering og kunnskapsordning som er brukt innen mange ulike fagfelt som programvareutvikling, humaniora og vitenskapsteori (se systemikk), samt ledelse og organisasjon. I praksis kan de sees på som to stiler for tenking, undervisning og lederskap. 

En **ovenfra** tilnærming (også kjent som *stegvis design* eller *stegvis raffinering*, og i noen tilfeller som synonym for ''dekomposisjon'') innebærer at man bryter ned systemet for å få innsikt i de utgjørende delsystemene lik som ved dekonstruksjon. Ovenfra-tilnærmingen formulerer et overblikk over systemet, og spesifiserer (men detaljerer ikke) det første nivået av eventuelle delsystemer. Hvert delsystem blir så raffinert i mer detalj, noen ganger ved å dele inn i flere nivåer av delsystemer, inntil hele spesifikasjonen er redusert til grunnelementer. En ovenfra modell er ofte spesifisert ved hjelp av svarte bokser, hvilket gjør modellen lettere å manipulere. Imidlertid kan svarte bokser ha problemer med å klargjøre elementære mekanismer eller være detaljerte nok til at man realistisk kan validere modellen. En ovenfra tilærming starter med det store bildet, og bryter deretter ned i mindre deler.

En **nedenfra** tilnærming er å sette sammen systemer for å skape mer komplekse systemer, som derved gjør de originale systemene til delsystemer av det nye systemet. Nedenfra prosessering er en type informasjonsprosessering basert på innkommende data fra miljøet for å danne en oppfatning. Fra et kognitivt psykologisk perspektiv kommer informasjon inn gjennom øynene (sanseinntrykk, eller "nedenfra"), og blir deretter omformet til et bilde i hjernen som kan tolkes og gjenkjennes som en persepsjon (utputt som er "bygget opp" fra prosessering til endelig kognisjon). I en nedenfra tilnærming vil de individuelle grunnelementene i systemet først bli spesifisert i stor detalj. Disse elementene blir deretter lenket sammen for å danne større delsystemer som igjen er lenket, noen ganger på mange nivå, inntil et komplett system på toppnivå har blitt dannet. Denne strategien ligner ofte en frømodell hvor begynnelsen er liten, men til slutt vokser i kompleksitet og kompletthet. Imidlertid kan slike "organiske strategier" resultere i et virvar av elementer og delsystemer utviklet i isolasjon, og som har vært optimert lokalt i motsetning til å oppfylle et globalt formål

## Produktdesign og utvikling
Under utvikling av nye produkter benytter designere og ingeniører seg både av nedenfra opp og ovenfra ned tilnærminger. Nedenfra-tilnærmingen brukes når hyllevare eller eksisterende komponenter velges og integreres i produktet. Et eksempel kan være å velge et bestemt festemiddel (for eksempel en metrisk bolt) og deretter designe komponenten slik at festemiddelet passer riktig. Med en ovenfra-tilnærming ville i stedet et spesialtilpasset festemiddel blitt designet slik at den ville passet riktig uten eventuell modifikasjon av komponenten. Generelt dersom et produkt har mer restriktive krav (for eksempel masse, geometri, sikkerhet, miljø), som for eksempel en romdrakt, kan det være man tar en ovenfra tilnærming og spesialdesigner omtrent alt.

## Informatikk
### Programvareutvikling
I programvareutvikling spiller ovenfra- og nedenfra-tilnærmelsene en nøkkelrolle.

Ovenfra tilnærminger legger vekt på planlegging og fullstendig forståelse av systemet. Ingen koding kan begynne før tilstrekkelig detaljnivå har blitt oppnådd i designet av minst en del av systemet. Ovenfra tilnærminger implementeres ved å sette spirer inn for modulene, men dette sinker testing av de endelige funksjonelle enhetene i et system inntil et betydelig design er komplett.

Nedenfra tilnærminger legger vekt på koding og tidlig testing, hvilket kan begynne så fort den første modulen er spesifisert. Risikoen med denne tilnærmingen er at moduler kan bli kodet uten å ha en klar tanke om hvordan de skal linkes til andre deler av systemet, slik at linking kan bli vanskeligere enn først tenkt. Gjenbruk av kode er en av hovedfordelene med en nedenfra tilnærming.

Ovenfra design ble fremmet i 1970-årene av IBM-forskerne Harlan Mills og Niklaus Wirth. Mills utviklet konsepter for strukturert programmering for praktisk bruk, og testet de i et prosjekt fra 1969 for å automatisere indeksen i *[[The New York Times|New York Times]]* sitt arkiv. Prosjektets tekniske og ledelsesmessige suksess førte til spredningen av ovenfra-tilnærmingen i IBM og resten av IT-industrien. Niklaus Wirth som hadde utviklet programmeringsspråket Pascal skrev også den innflytelsesrike artikkelen *Program Development by Stepwise Refinement*. Siden fortsatte Wirth med å utvikle språk som Modula og Oberon hvor man kunne definere en modul før man visste hele programspesifikasjonen, og utifraa dette kan man konkludere med at han ikke strengt fremmet ovenfra programmering. Ovenfra metoder ble stort sett foretrukket i programvareutvikling inntil slutten av 1980-årene, og objektorientert programmering hjalp med å demonstrere ideen om at både aspekter av ovenfra og nedenfra programmering kunne brukes.

Moderne tilnærminger til programvaredesign kombinerer vanligvis ovefra og nedenfra tilnærminger. Selv om en forståelse av det komplette systemet vanligvis anses nødvendig for godt design – og dermed teoretisk fører til en ovenfra tilnærming – forsøker de fleste programvareprosjekter å bruke eksisterende kode til en viss grad. Allerede eksisterende moduler gir designene en «nedenfra stil».


Top Down Approach.png|Ovenfra tilnærming til integrasjonstesting
Bottom Up Approach.png|Nedenfra tilnærming 
Sandwich Approach.png|Smørbrød-tilnærming 
Bing Bang Approach.png|Storsmell-tilnærming 


### Programmering

Ovenfra som programmeringsstil er bærebjelken i tradisjonelle prosedyriske språk der designet starter ved å spesifisere komplekse deler og deretter dele de inn i gradvis mindre biter. En ovenfra teknikk for å skrive et program er å lage en hovedfunksjon (*main function*) som navngir alle de viktigste funksjonene den vil trenge. Deretter vil utviklerne se på alle kravene til hver av disse funksjonene og prosessen gjentas for disse. Disse kompartmentaliserte delrutinene vil til slutt utføre handlinger som er så enkle at de enkelt og konsist kan kodes. Når alle de ulike underrutinene har blitt kodet er programmet klart for testing. Ved å definere hvordan applikasjonen henger sammen på høyt nivå kan arbeidene på lavere nivå utføres selvstendig.

I en nedenfra tilnærming blir de enkelte grunnelementene i systemet først spesifisert i stor detalj. Disse elementene blir deretter koblet sammen for å danne større delsystemer som igjen er koblet sammen (noen ganger på mange nivåer) inntil et komplett system er dannet på toppnivå. Denne strategien ligner ofte en spiremodell som er liten i begynnelsen, men til slutt vokser i kompleksitet og kompletthet. Objektorientert programmering er et paradigme som bruker objekter til å designe applikasjoner og dataprogrammer.

## Nevrovitenskap og psykologi

Disse begrepene brukes også i nevrovitenskap, kognitiv nevrovitenskap og kognitiv psykologi for å diskutere strømmen av informasjon i prosessering. Normalt anses sensorisk innputt som nedenfra, og høyere kognitive prosesser som har mer informasjon fra andre kilder som ovenfra. En nedenfra prosess er preget av fravær av høynivå retning i sensorisk prosessering, mens en ovenfra prosess er preget av høyt nivå av sensorisk prosessering ved kognisjon, slik som mål og målsetninger.

Rock, Neiser og Gregory hevder at ovenfra-tilnærmingen innebærer persepsjon som er en aktiv og konstruktiv prosess. I tillegg er det en respons som ikke er direkte gitt av stimulus-innputt, men et resultat av stimulus, interne hypoteser og forventningsinteraksjoner. Når stimulus presenteres kort og klarhet er usikker gir det en vag stimulus, og perspsjon blir en ovenfra tilnærming.

### Ledelse og organisasjon

I organisasjon og ledelse brukes ovenfra og nedenfra for å beskrive hvordan beslutninger tas eller hvordan endringer blir implementert.

En ovenfra tilnærming vil si at en toppleder tar avgjørelser om hvordan noe skal gjøres. Denne tilnærmingen fortsetter så til lavere nivåer i hierarkiet som i større eller mindre grad er bundet av dem. For eksempel kan en sykehussjef som ønsker forbedringer på et sykehus bestemme at en stor endring (som å implementere et nytt program) er nødvendig, og deretter kan det brukes en planlagt tilnærming for å drive endringene nedover i oranisasjonen.

En nedenfra tilnærming til endringer springer ut fra grasroten og har sitt utspring i en flat struktur med mennesker som jobber sammen og får en beslutning til å oppstå fra deres felles engasjement. For eksempel er en avgjørelse av en gruppe aktivister, studenter eller ofre om å gjøre en handling en "nedenfra" avgjørelse. En nedenfra tilnærming kan tenkes på som en inkrementell endring som representerer en fremvoksende prosess kultivert og vedlikeholdt primært av linjearbeidere.

Positive aspekter ved ovenfra tilnærminger inkluderer deres effisiens og et fantastisk overblikk over høyere nivåer, samt at eksterne effekter kan internaliseres. Negative sider er at reformer kan oppfattes som å bli pålagt ovenfra hvilket kan gjøre det vanskelig for folk på lavere nivåer å akseptere dem, og det finnes indikasjoner på at dette skjer uavhengig av hvilke reformer som innføres (Dubois 2002). En nedenfra tilnærming muliggjør mer eksperimentering, og kan gi mer informasjon om hva som trengs på bakken. Andre bevis tyder på at det finnes en tredje kombinert tilnærming til endring.

### Folkehelse
Både ovenfra og nedenfra tilnærminger brukes i folkehelse. Det er mange eksempler på ovenfra programmer, ofte drevet av myndigheter eller store mellomstatlige organisasjoner, hvorav mange er sykdoms- eller problemspesifikke som for eksempel HIV eller kopper. Eksempler på nedenfra programmer inkluderer mange små frivillige organisasjoner som er etablert for å forbedre lokal tilgang til helsehjelp. Mange programmer prøver imidlertid å kombinere begge tilnærmingene. For eksempel har utryddingsprogrammet for guineaorm, drevet av den ideelle ikke-statlige organisasjonen Carter Center, involvert opplæring av mange lokale frivillige og dermed resultert i økt kapasitet nedenfra. Det samme har internasjonale programmer for bedre hygiene, sanitære forhold og tilgang til primærhelsetjeneste.

## Filosofi og etikk
Ovenfra resonnering i etikk er når den som ressonerer begynner fra abstrakte universaliserbare prinsipper og deretter ressonerer de ned til bestemte situasjoner. Nedenfra resonnering er når den som tenker begynner med intuitive bestemte situasjonsbedømmelser og deretter ressonerer opp til prinsipper. Reflektivt ekvilibrium oppstår når det er interaksjon mellom ovenfra og nedenfra resonnering, inntil begge er i harmoni. Det vil si når universaliserbare abstrakte prinsipper refleksivt finner seg i balanse med bestemte intuitive bedømmelser. Prosessen oppstår når kognitiv dissonans oppstår når en resonnør prøver å løse ovenfra med nedenfra resonnering og justerer en eller den andre inntil man er fornøyd og har funnet den beste kombinasjonen av prinsipper og situasjonsbedømmelser.

## Se også
* Analytisk tenking
* Katedralen og basaren, to tilnærminger til kodeutvikling
* Pseudokode, uformell beskrivelse av virkemåten til en algoritme
* Syntetisk tenking, tenking som bruker funksjonen til et fenomen innenfor et større system for å forklare det

## Referanser