ITler gesucht (Top Down und Bottom Up)

MatthiasL

Semiprofi
Thread Starter
Mitglied seit
21.12.2005
Beiträge
1.266
Ort
Mauer bei Heidelberg
Hi Leute


Ich wusste nicht wo ich das Thema sonst erstellen sollte. Ich muss nächste Stunde Top Down und Bottom Up meinen Mitschülern erklären, peil da aber selber nicht ganz durch, wäre cool, wenn mir ein ITler das mit einfachen Worten erklären könnte.


Benni
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
ja aber ich muss das meinen Mitschülern erklären, die davon kein Plan haben, habe jetzt auch schon eine, wäre cool, wenn das jemand berichtigen könnte

top-down: Man schaut sich erst das fertige System an und nimmt dann nach und nach die Bestandteile heraus, aus denen es aufgebaut ist, bis du zu dem kleinsten Bausteinen.



bottom-up: Man nimmt als erstes den kleinsten Baustein eines Systems und baut damit nach und nach das fertige System, das dann aus den Bausteinen besteht
 
top-down: Man schaut sich erst das fertige System an und nimmt dann nach und nach die Bestandteile heraus, aus denen es aufgebaut ist, bis du zu dem kleinsten Bausteinen.

bottom-up: Man nimmt als erstes den kleinsten Baustein eines Systems und baut damit nach und nach das fertige System, das dann aus den Bausteinen besteht

Ich stelle mich einfach mal Dumm. Wo ist jetzt der Unterschied? In Beiden Fällen zerteilst du ein fertiges System in Einzelteile. Wie du das macht spielt keine Rolle das Resultat wäre das Gleiche. Abgesehen davon ist das System doch fertig. Warum sollte man ein fertiges System verändern wenn es doch funktioniert.

Top Down und Bottom Up kennte ich von der Softwareentwicklung und da geht es darum ein nicht existierendes System zu entwickeln. Siehe http://de.wikipedia.org/wiki/Top-Down-_und_Bottom-Up-Design
 
@little_skunk: Habe den Artikel auf wikipedia auch gelesen, aber wenn man sich mit dem Thema nicht ein bischen beschäftigt versteht man das nicht wirklich


Ein fertiges System hat man nicht, nur bei der Top-down Methode, plant man erstmal und fängt dann erst mit der Programmierungen an, man verschafft sich erstmal ein Überblick über das System und teilt es dann in einzelne Module auf, diese werden analysiert und ggf. weiter aufgeteilt, bis eine komplete, detailierte Spezifikation vorliegt. Und dann wird erst programmiert. Der Schwerpunkt bei der Methode liegt halt bei Planung und Verständnis des Systems

Bei der Bottom-up Methode wird sofort los programmiert und wenn ein Problem auftritt, trifft man sich in der Gruppe und es wird eine Problemlösung gesucht und immer so weiter, am ende wird dann das System zusammen gesetzt.


Soweit bin ich jetzt, bin aber auch nicht 100% sich ob das richtig ist, weil im Internet wiedersprechen sich auch einige Informationen, wäre cool, wenn sich ein spezialist melden könnte
 
Zuletzt bearbeitet:
Angenommen du willst ein Download Manger programmieren
Top Down: Du schreibst jetzt grob auf was dieser Download Manager tun und machen soll. Also HTTP, FTP, Torrent, P2P, Zeitplaner. Dann wirst du konkreter stellst ein ungefähren aufbau des Programms dar, dann erstellst du Struktogramm wo nach du dann Code schreibst.

Bottom Up: Du schreibst grob auf was der Download Manger tun und machen soll und Programmierst es dann.

Als kleines Fazit: Top Down für große/schwere Projekte, Bottom Up für kleine/leichte.
 
@Yosha: Big Thx, das hilft mir echt weiter

Ich habe gelesen, das es nicht nur an der größe des Projektes liegt, welche Methode man wählen sollte. Top-down soll gut für Software sein, die nicht oft verändert wird, weil das um einiges schwerer sein soll als bei der Bottom-up methode.

Kennst du zufälligerweise eine Seite, wo das Thema gut erklärt wird, weil ich habe bis jetzt noch keine einzige gute Seite gefunden, obohl ich schon sehr viel gesucht habe
 
Zuletzt bearbeitet:
Wenn Code nach längerer Zeit verändert werden soll ist ordentlich Code einfach zum für einen wieder einstieg. Wenn Code häufiger verändert wird ist Ordentlich Code auch förderlich um nicht nach und nach komplett im Chaos zu versinken.

Es muss halt das Verhältnis stimmen zwischen dem Aufwand Top Down zumachen oder sich notfalls wieder in den Programmcode einzuarbeiten.
 
Natürlich aus Top Down resultiert eher sauberer Code als durch Bottom Up. Wenn du bspw. Programmierarbeit aufteilst Eingabe, Verarbeitung und Ausgabe wirst du bei Top Down die gleichen oder ähnliche Variablennamen jeweils vorfinden. Bei Bottom Up nennt jeder seine Variablen wie er Lustig ist. Im Eingabe Code steht dann für den eingegebenen Text als Variable varTextein in dem AusgabeCode wiederum Ausg_Eing_var usw.
Wenn dann in fünf Jahren jemand davor sitzt und was verändern soll muss er ja erst mal wieder durch das Programm durch steigen.
 
Ich habe gelesen, das es nicht nur an der größe des Projektes liegt, welche Methode man wählen sollte. Top-down soll gut für Software sein, die nicht oft verändert wird, weil das um einiges schwerer sein soll als bei der Bottom-up methode.

Genauer gesagt geht es dabei um die Anforderungen des Kunden. Wenn abzusehen ist, dass diese Anforderungen nicht endgültig sind, macht Top Down keinen Sinn. Du müsstest jedesmal die komplette Planung über den Haufen werfen und von vorne Anfangen. Bottom Up wäre da besser. Da müsstest du bei jeder Änderung nur überlegen welche Module davon betroffen sind. Unabhängig davon ist jede Nachträgliche Veränderung sowieso schlecht aber oftmals nicht vermeidbar. In solchen Fällen gibt es aber bessere Programmiermethoden, die aber ebenfalls Vor und Nachteile haben. Als Beispiel sei hier Prototyping genannt.

Natürlich aus Top Down resultiert eher sauberer Code als durch Bottom Up.

Dem muss ich wiedersprechen. Der Code ist maßgeblich vom Programmierer und auch vom Qualitätsmanagment abhängig. Wobei zweiteres ausschlaggebend ist. Bei jedem größeren Projekt gibt es Personen, die einfach nur die Qualität und Lesbarkeit von Quellcode beurteilen. Die Konsequenzen sind auch nicht gerade gering. Ich habe schon Programmteile gesehen, die vom Qulitätsmanagment komplett abgewiesen wurden und daraufhin überarbeitet werden mussten obwohl das Programm an sich Fehlerfrei war (soweit man das zu dem Zeitpunkt beurteilen konnte).

Bei Bottom Up nennt jeder seine Variablen wie er Lustig ist. Im Eingabe Code steht dann für den eingegebenen Text als Variable varTextein in dem AusgabeCode wiederum Ausg_Eing_var usw.

Das Zauberwort heißt "Konventionen". Diese vereinbart man vorher und sie sind für alle Projekte gültig. Was bringt es dir angeblich sauberen Code in einem Projekt zu haben wenn pro Projekt die Verantwortlichen die Variablen bennen wie sie Lustig sind?
 
Dem muss ich wiedersprechen. Der Code ist maßgeblich vom Programmierer und auch vom Qualitätsmanagment abhängig. Wobei zweiteres ausschlaggebend ist. Bei jedem größeren Projekt gibt es Personen, die einfach nur die Qualität und Lesbarkeit von Quellcode beurteilen. Die Konsequenzen sind auch nicht gerade gering. Ich habe schon Programmteile gesehen, die vom Qulitätsmanagment komplett abgewiesen wurden und daraufhin überarbeitet werden mussten obwohl das Programm an sich Fehlerfrei war (soweit man das zu dem Zeitpunkt beurteilen konnte).
Wenn du Professionelle Randbedingungen dafür aufzeigst klar...
Das Zauberwort heißt "Konventionen". Diese vereinbart man vorher und sie sind für alle Projekte gültig. Was bringt es dir angeblich sauberen Code in einem Projekt zu haben wenn pro Projekt die Verantwortlichen die Variablen bennen wie sie Lustig sind?
Die Variablen waren jetzt auch nur ein Beispiel für schlechte Absprache und ein schlechtes Beispiel für schlechten Code....

Ich denke das Problem ist das man TdBu je nach den Umstände anders sieht und anders Ausführt. Und es damit kein 0815 Antwort gibt.
 
@little_skunk
Das ein Code im QM aufgrund von Unlesbarkeit abgelehnt wird überrascht mich sehr. Den Testern die ich während meinem Praktikum kennenglernet habe, war es herzlich egal, wie kryptisch der Code war. Es wurden Testcases geschrieben und diese dann durchgeführt. D.h. das System wurde als Blackbox getestet. Aus Sicht des QM zum Kunden hin ist es doch gleichgültig, ob ich in meinen Code die fiesesten Abkürzungen usw. einbaue und nichts kommentiere oder ob ich alles schön ausführlich hinschreibe und immer schöne Kommentare hinterlasse. Wenn die Testcases durchlaufen und keine Fehler entdeckt werden bekommt der Kunde in beiden Fällen die gleiche Qualität (Wenn wir mal davon ausgehen, dass in keinem der beiden Fälle bessere Algorithemen bzw. geeignetere Datenstrukturen verwendet wurden). Der Kunde hat ja keinen Einblick auf den Quellcode. Wenn der Code später jedoch geändert werden soll, ist es natürlich um Welten effizienter schön leserlichen und gut kommentierten Code vor sich zu haben.

@topic
Ich finde die englische Erklärung erheblich besser, als die Deutsche. http://en.wikipedia.org/wiki/Top-down_and_bottom-up_design

Ich persönlich stelle mir Top-Down ähnlich einer Deduktion vor. Man schließt vom Allgemeinen auf das Besondere. Stelle dir zum Beispiel das allgemeine Problem vor, dass du ein Auto entwerfen sollst. Dieses Problem kannst du in verschiedene Teilprobleme aufteilen. So besteht ein Auto aus einer Karosserie, einem Motor, einem Fahrgestehl und vier Reifen (sehr vereinfacht). Um ein Auto zu entwerfen, musst du also erstmal eine Karosserie usw. entwerfen. Eine Karosserie, wiederrum, kann auch noch weiter unterteilt werden (Dies gilt auch für die anderen Komponenten). Wenn du nun so weitermachst erreichst du die Basiskomponenten, die nicht weiter unterteilt werden können. Du hast das Problem also Top-Down zerlegt.

Ich persönlich steller mir Bottom-Up ähnlich einer Induktion vor. Man schließt vom Besonderen auf das Allgemeine. Zuvor haben wir ja das Auto Top-Down entworfen. Der eigentliche Zusammenbau erfolgt jedoch Bottom-Up. D.h. wir bauen zuerst die Basiskomponenten zusammen, dann werden diese Basiskomponenten weiter zusammengebaut, bis du irgendwann bei der Kassorie, dem Motor usw. angekommen bist. Diese verbaust du dann zu deinem Auto. Du hast das Auto also Bottom-up zusammengebaut.

Wie du sicher gemerkt hast, war dieses Beispiel nicht aus der Softwareentwicklung. Was sich nämlich so einfach für ein Auto anhört ist in der Softwareentwicklung ein ziemliches Chaos. Dies liegt oft daran, dass sich Anforderungen (wie little_skunk bereits bemerkt hat) ändern oder nicht richtig verstanden wurden. Manchmal weiß der Auftraggeber selbst nicht so genau was er nun eigentlich will. Du denkst dir wahrscheinlich: "Ach die müssen nur richtig miteinander reden, dann klappt dass schon." Leider ( und wirklich leider) ist das nicht ganz richtig. Meist sind die Entwickler keine Experten in der Domäne des Kunden. D.h. sie kennen die Thematik des Kunden nicht. Gleiches gilt auch für den Kunden. Hier besteht also ein richtig großes potentielles Kommunikaionsproblem. Das Softwareengineering ist nicht umsonst ein stetig wachsender Teil der Informatik. Um das Problem der veränderten Anforderungen bzw. neuen Anforderungen während eines Projektes zu begegnen gibt es z.b. die agilen Softwareentwicklungsmetoden (z.b.: SCRUM oder Feature Driven Development). Weitere Katogerien sind z.B. sequentielle (Wasserfallmodell) oder prototypische (little_skunk hat das bereits erwähnt) Softwareentwicklungsmethoden.

Du siehst das ist echt ein weites Feld. Hier gibts auch noch ein bisschen Literatur: http://www.informatikbegriffsnetz.de/arbeitskreise/vorgehensmodelle/publallg.html
 
Zuletzt bearbeitet:
@little_skunk
Das ein Code im QM aufgrund von Unlesbarkeit abgelehnt wird überrascht mich sehr.

QM besteht nicht nur aus Test. Code Review gehört meiner Meinung auch zu einer guten QM. Natürlich können die Tester das nicht machen (Backboxtest vs Whitboxtest)

Leider hast du Recht, dass das häufig vernachlässigt wird. Wobei ich das quantitativ sowieso nicht einschätzen kann. Ich kann dir nur sagen wie das bei uns abläuft aber nicht ob wir jetzt der Regelfall oder die Außnahme sind.


Den Testern die ich während meinem Praktikum kennenglernet habe, war es herzlich egal, wie kryptisch der Code war.

Das klingt so negativ. Den Testern muss der Code egal sein sonst können sie ihren Blackboxtest nicht ordentlich erledigen.

Ich persönlich stelle mir Top-Down ähnlich einer Deduktion vor. Man schließt vom Allgemeinen auf das Besondere. Stelle dir zum beispiuel das allgemeiner Problem vor, dass du ein Auto entwerfen sollst.

Sehr gutes Beispiel finde ich und auch sehr gut erklärt. So schön hätte ich es nicht ausdrücken können :)

Ich persönlich steller mir Bottom-Up ähnlich einer Induktion vor. Man schließt vom Besonderen auf das Allgemeine. Zuvor haben wir ja das Auto Top-Down entworfen.

Vor mir noch eine kleine Ergänzung. Wir wissen nichts von dem zuvor entworfenen Auto. Wir wollen ein völlig neues Auto entwerfen und wissen, dass es wohl 4 Räder benötigt. Also bauen wir einfach mal die Räder. Wir wissen, dass die Räder irgendwie befestigt werden müssen. Also schaun wir mal wie wir das hinbekommen. Dabei fällt uns auf, dass Bremsen wohl auch hilfreich wären. So führt eines zum anderen und am Ende haben wir hoffentlich ein fertiges Auto vor uns.
 
Schade das ihr den Thread nicht früher gefunden habt, mit den Informationen hätte ich aufjedenfall ne 1 gekriegt, habe leider die Information von Yosha genommen, die dann teilweise falsch waren.

Aber trotzdem vielen danke, wäre cool, wenn ihr das auch in Wikipedia reinstellen könntet, das es in Zukunft den leuten nicht so schwer fällt wie mir.
 
Das steh so längst schon in Wikipedia (http://de.wikipedia.org/wiki/Top-Down-_und_Bottom-Up-Design). Sry aber wenn man zu Dumm zum lesen ist, kann ich auch nicht weiterhelfen...

Tut mir leid wenn ich jetzt etwas ausfallend werde. Solltest du tatsächlich genau diesen Wikipediabeitrag gelesen habe, so bitte ich um Entschuldigung und darum genau zu schildern wo das Problem liegt.
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh