top-down vs. bottom-up tilgangAlgoritmerne er designet ved hjælp af to tilgange, som er top-down og bottom-up tilgang. I top-down-tilgangen opdeles det komplekse modul i undermoduler. På den anden side begynder bottom-up-tilgangen med elementære moduler og kombinerer dem derefter yderligere. En algoritme har først og fremmest til formål at behandle de data, der er indeholdt i datastrukturen. Med andre ord bruges en algoritme til at udføre operationerne på dataene inde i datastrukturerne.

En kompliceret algoritme opdeles i små dele kaldet moduler, og processen med opdeling kaldes modularisering. Modularisering reducerer i væsentlig grad komplikationerne i forbindelse med udformningen af en algoritme og gør dens proces lettere at designe og implementere. Modulær programmering er en teknik til at designe og skrive et program i form af funktioner, hvor hver funktion er forskellig fra hinanden og fungerer uafhængigt af hinanden. Indholdet i funktionerne er sammenhængende på en måde, og der eksisterer en lav kobling mellem modulerne.

Indhold: Top-down Approach Vs Bottom-up Approach

    1. Sammenligningsdiagram
    2. Definition
    3. Nøgleforskelle
    4. Konklusion

Sammenligningsdiagram

Basis for sammenligning Top-down Approach Bottom-up Approach
Basic Breaks the massive problem into smaller subproblems. Løser det grundlæggende problem på lavt niveau og integrerer dem i et større problem.
Proces Undermoduler analyseres solitært. Undersøger, hvilke data der skal indkapsles, og indebærer begrebet informationsskjulning.
Kommunikation Ikke nødvendigt i top-down-tilgangen. Bedrager en bestemt mængde kommunikation.
Redundans Indholder redundante oplysninger. Redundans kan elimineres.
Programmeringssprog Struktur-/procedurorienterede programmeringssprog (dvs. C) følger top-down-tilgangen. Objektorienterede programmeringssprog (som C++, Java osv.) følger bottom-up-tilgangen.
Hovedsageligt anvendt i Moduledokumentation, oprettelse af testcases, implementering af kode og fejlfinding. Testning

Definition af top-down-tilgang

Den top-down-tilgang opdeler grundlæggende et komplekst problem eller en algoritme i flere mindre dele (moduler). Disse moduler nedbrydes yderligere, indtil det resulterende modul er det grundlæggende program, der i det væsentlige skal forstås, og som ikke kan nedbrydes yderligere. Når der er opnået et vist niveau af modularitet, ophører nedbrydningen af moduler. Top-down-metoden er den trinvise proces, hvor et stort programmodul opdeles i enklere og mindre moduler med henblik på at organisere og kode programmet på en effektiv måde. Kontrolstrømmen i denne tilgang er altid i nedadgående retning. Top-down-tilgangen er implementeret i programmeringssproget “C” ved hjælp af funktioner.

Sådan begynder top-down-metoden med et abstrakt design, hvorefter dette design sekventielt forfines for at skabe mere konkrete niveauer, indtil der ikke er behov for yderligere forfining.

Definition af bottom-up-tilgang

Bottom-up-tilgangen fungerer på lige modsat vis af top-down-tilgangen. I første omgang omfatter den udformning af de mest grundlæggende dele, som derefter kombineres til et modul på højere niveau. Denne integration af undermoduler og moduler i modulet på højere niveau udføres gentagne gange, indtil den ønskede komplette algoritme er opnået.

Bottom-up-tilgangen fungerer med abstraktionslag. Den primære anvendelse af bottom-up-tilgangen er testning, da hvert grundlæggende modul først testes, inden det føjes til det større modul. Testningen udføres ved hjælp af visse lavniveaufunktioner.

Nøgleforskelle mellem top-down- og bottom-up-tilgangen

  1. Top-down-tilgangen dekomponerer den store opgave i mindre delopgaver, mens bottom-up-tilgangen først vælger at løse de forskellige grundlæggende dele af opgaven direkte og derefter kombinerer disse dele til et helt program.
  2. Hvert delmodul behandles separat i en top-down-tilgang. I modsætning hertil implementerer bottom-up-tilgangen begrebet informationsskjul ved at undersøge de data, der skal indkapsles.
  3. De forskellige moduler i top-down-tilgangen kræver ikke meget kommunikation. Derimod har bottom-up-tilgangen brug for interaktion mellem de separate grundlæggende moduler for senere at kombinere dem.
  4. Top-down-tilgangen kan producere redundans, mens bottom-up-tilgangen ikke omfatter redundante oplysninger.
  5. De processuelle programmeringssprog som Fortran, COBOL og C følger en top-down-tilgang. I modsætning hertil følger objektorienterede programmeringssprog som C++, Java, C#, Perl og Python bottom-up-tilgangen.
  6. Bottom-up-tilgangen er tidligere blevet anvendt i testning. Omvendt anvendes top-down-tilgangen til moduldokumentation, oprettelse af testtilfælde, fejlfinding osv.

Konklusion

Top-down-tilgangen og bottom-up-tilgangen er algoritmedesignmetoderne, hvor top-down er en konventionel tilgang, som dekomponerer systemet fra specifikation på højt niveau til specifikation på lavt niveau. På den anden side er bottom-up-metoden mere effektiv og fungerer på en omvendt måde, hvor de primitive komponenter designes først og derefter videreføres til det højere niveau.

Top-down-metoden lægger vægt på isolering af undermoduler (hvilket betyder lav kobling mellem modulerne), mens den ignorerer identifikationen af kommunikation og genanvendelighedskonceptet. I bottom-up-metoden er informationsskabelse og genanvendelighed de fremtrædende faktorer.