Top-Down-Entwurfs-Prinzip
bewährt:
Bei den algorithmisch orientierten Programmiersprachen kommt der
Entwicklung des Lösungsverfahrens eine zentrale Bedeutung zu.
Der erste Schritt hierzu besteht darin, zuerst die zugrunde liegende
Problemstellung zu verstehen.
Danach wird festgelegt, welche Eingaben das Programm benötigt
und was das Programm ausgeben soll.
Größere Probleme werden in kleine Teilschritte zerlegt, die
wiederum in weitere Teilaufgaben zergliedert werden können.
Zu jeden Teilschritt entwickelt der Programmierer den
dazugehörigen Lösungsalgorithmus. Zur Entwicklung
der Lösungsalgorithmen ist es fast immer sinnvoll, zunächst
für einen einfachen Datensatz die Lösung per
Hand/Taschenrechner/Computeralgebrasystem herzuleiten und die daraus
gewonnenen Erkenntnisse danach weiter zu verallgemeinern.
Als Hilfsmittel zur Entwicklung der Algorithmen und des Programmablaufs
können Sie einen sogenannten Programmablaufplan (engl. flow chart)
zeichnen oder den Algorithmus zunächt in Pseudocode (eine Mischung
aus Fortran und Englisch) aufschreiben.
Erst nachdem im Detail der Lösungsweg auf dem Papier ausgearbeitet
wurde, beginnt die Umsetzung in Programmcode. Durch die intensive gedankliche
Vorarbeit - so zeigt die Erfahrung vieler Programmentwickler - werden bereits
im Vorfeld die wichtigen Details geklärt - und es entstehen
übersichtlichere, struktuiertere und weniger fehleranfällige
Programme als bei einem überhasteten, spontanem Programmieren.
Der methodische Ansatz ist in der Regel auch schneller, das sehr
viele Fehler, die bei spontanem Vorgehen erst gefunden und eliminiert
werden müssen aufgrund der intensiven gedanklichen Vorarbeit
gar nicht erst auftreten.
Wurde der Programmcode geschrieben, werden am besten die einzelnen
Teilschritte separat getestet und dann die Teilschritte zu dem
Gesamtprogramm zusammengesetzt. Es ist absolut notwendig, das
Gesamtprogramm mit allen möglichen Arten von zugelassenen
Eingabedaten zu testen und sicherzustellen, dass sämtliche
Verzweigungen und Schleifen richtig abgearbeitet werden.
Deshalb sollte auf die Auswahl der Testdatensätze größte
Sorgfalt verwendet werden. Die richtige Lösung für die Testdaten
sollte in einem unabhängigen Verfahren (je nach Problemstellung
per Hand, Taschenrecher, Computeralgebrasystem,
Lösungen aus anderen (numerischen) Verfahren, von anderen
Wissenschaftlern aus Publikationen, abgeleitete Werte aus einer
reinen theoretischen Beschreibung) hergeleitet und mit dem Ergebnis
des entwickelten Programms verglichen werden.
Erst wenn Sie absolut sicher sind, dass Ihr Programm in allen Fällen
richtig arbeitet, sollten Sie es einsetzen bzw. freigeben.
Nochmals die Grundprinzipien des Top-Down-Entwurfs in der Übersicht:
- Fertigen Sie eine eindeutige und klare Problembeschreibung an.
- Beschreiben Sie genau, welche Informationen eingegeben und welche
ausgegeben werden sollen.
- Arbeiten Sie für einen einfachen Datensatz
die Lösung per Hand/Taschenrechner/Computer-Algebra-System aus.
- Strukturieren Sie nun für das generalisierte Problem
die einzelnen Schritte. Teilen Sie dazu das Gesamtproblem
in immer feinere Teilschritte auf, die sukzessive weiter
verfeinert werden können. ("vom Groben zum Feinen = Top-Down-Entwurf")
(Bei diesem Schritt können Sie Datenfluß-Diagramm
oder Pseudocode zu Hilfe nehmen).
- Setzen Sie erst jetzt den von Ihnen entwickelten Lösungsalgorithmus
in Programm-Code um. Realisieren Sie evtl. einzelne, in sich
abgeschlossene Programmteile als Unterprogramme.
- Durchlaufen Sie den oberen Fehlersuch- und Eliminierungszyklus
so oft wie nötig.
- Speziell bei der Auswahl Ihrer Testdaten sollten Sie sich Gedanken
machen, ob die verwendeten Testdatensätze soweit wie möglich
voneinander unabhängig sind und die Spezifität des
Problems hinreichend verkörpern.
|