Vorgehen bei der Entwicklung

Die Entwicklung eines Programms ist vergleichbar mit der Entwicklung eines mechanischen Bauteils. Man sollte sich immer zuerst Gedanken darüber machen, was die Anforderungen an das Programm sind, bevor man mit dem eigentlichen Kodieren anfängt. Zu Beginn wird es Ihnen einfach fallen, ohne Planung das Programm zu schreiben. Mit steigender Komplexität des Programms ändert sich das aber deutlich. Ohne diese Planung können neue Anforderungen eine Überarbeitung des gesamten bisherigen Codes zur Folge haben, wodurch der Aufwand und die Fehleranfälligkeit deutlich steigen.

Vor Beginn der eigentlichen Programmierung muss ein Pflichtenheft aufgestellt werden. Einige Fragen lauten: Welche Benutzerschnittstellen müssen vorhanden sein? Ist eine graphische Ausgabe notwendig oder kann der Nutzer über die Konsole arbeiten? Welche Funktionalitäten sind gefordert? Solche Fragen sollten zu Beginn der Entwicklung beantwortet werden um bereits eine klare Vorstellung vom Programm zu erhalten. Diese Fokussierung auf die gestellten Anforderungen ist sowohl bei der Einzelarbeit, als auch für die Arbeit im Team unabdingbar.

Ein solches Pflichtenheft könnte wie folgt aussehen:

Es soll ein Taschenrechner für ältere Kinder programmiert werden.

 

Welche Funktionen soll er besitzen?

 

Für die angestrebte Nutzergruppe reichen die Grundrechenarten und ein einfaches Zahlenfeld aus. Weitere Funktionen ließen sich leicht implementieren, sind aber nicht zielführend.

- Grundrechenarten

- Zahlenfeld

 

Welche Nutzerschnittstelle soll geboten werden?

 

Zur Auswahl stehen eine graphische Benutzeroberfläche und die Konsole als Schnittstelle. Eine graphische Benutzeroberfläche lässt sich leichter visuell erfassen und verstehen.

-       Graphische Benutzeroberfläche

 

Darstellung des Ergebnisses?

 

Nutzern dieses Alters sollte neben der Fließkommadarstellung auch noch die Darstellung als Bruch geboten werden, um den Umgang mit Brüchen zu lehren.

-       Fließkommadarstellung und Bruchdarstellung

 

Diese trivial wirkenden Entscheidungen führen zu einem klaren Bild des Programms und ermöglichen eine grobe Übersicht der notwendigen Funktionen.

 

Bottom-up / Top-down

 

Nach der Erstellung des Pflichtenhefts muss das weitere Vorgehen geklärt werden. Es gibt zwei Herangehensweisen bei der Entwicklung eines Programms: Zum Einen das Bottom-up-Prinzip und zum Anderen das Top-down-Prinzip.

Um diese Methoden zu verstehen, sei zunächst die Struktur eines größeren Programms erklärt. Während einfache Programme noch mit einer einzigen Funktion auskommen, in der sich der gesamte Code befindet, nutzen größere Programme eine Vielzahl von Funktionen, die von einem Hauptprogramm aufgerufen werden um ihre Aufgabe zu erfüllen.

Beim vorangegangenen Programm ist die Hauptfunktion der Start des Taschenrechners. Dieser benutzt die Subfunktionen Addition, Subtraktion, Multiplikation und Division. Für die graphische Ausgabe wird eine weitere Unterfunktion benötigt. Diese Struktur kann man sich wie die Wurzel eines Baumes vorstellen. Die Hauptfunktion bildet den Stamm, während jede abzweigende Wurzel eine Unterfunktion darstellt, welche möglicherweise wieder selbst Unterfunktionen hat.

Beim Vorgehen nach dem Top-down-Prinzip wird zuerst die Funktion Taschenrechner erstellt. Es ist bekannt, dass sie die oben genannten Subfunktionen zur Ausführung benötigt und welche Funktionalität diese bieten müssen. Es wird also angenommen, dass diese Subfunktionen bereits vorliegen und so funktionieren wie sie die Funktion Taschenrechner benötigt. Nachdem die Funktion Taschenrechner komplett geschrieben ist, werden die Subfunktionen geschrieben, mit den Vorgaben, die von der Funktion Taschenrechner gestellt wurden. In der Summe entsteht ein funktionsfähiges Programm. Der Nachteil dieser Methode liegt darin, dass die Funktion Taschenrechner bis zur Vollendung der Subfunktionen nicht lauffähig ist und somit Fehler in der Planung sehr spät ersichtlich werden.

 

Im Gegensatz dazu setzt das Bottom-up-Prinzip an der kleinsten Einheit an. Es wird zunächst die Gesamtheit an benötigten Funktionen und Subfunktionen festgestellt. Dann wird mit den einfachsten Subfunktionen begonnen. Im Beispiel des Taschenrechners ist die Addition die einfachste Subfunktion. Es muss von Anfang an klar sein, welche Schnittstellen benötigt werden um diese Subfunktion durchzuführen. Der Vorteil gegenüber dem Top-down-Prinzip ist, dass die Subfunktionen schon in der frühen Entwicklung getestet werden können, da sie als einzelnes Programm lauffähig sind.

Es ist Ihnen überlassen welche Methode Sie verwenden, jedoch ist das Bottom-up-Prinzip zu empfehlen, da es gerade zu Beginn Fehler deutlich macht und damit die Möglichkeit bietet, diese frühzeitig zu korrigieren.

 

Pseudocode

 

Das Schreiben von Code kann stellenweise sehr abstrakt sein. Der Schritt von der geplanten Funktionalität zum fertigen lauffähigen Code ist oftmals nur schwer direkt durchzuführen. Pseudocode eignet sich als eine Abstraktionsebene zwischen Aufgabe und Ziel. Es werden erste Codestrukturen ersichtlich, ohne jedoch Wert auf richtige und vollständige Programmierung zu legen. Oft reichen einfache Beschreibungen des Vorganges um sich den Zielcode klar zu machen.

Mit Pseudocode ist also im Wesentlichen Text gemeint, der bereits die Logiken und Funktionalitäten des späteren Programms verdeutlicht, aber nicht den Konventionen einer Programmiersprache unterworfen ist.

 

Ein Beispielprogramm für Pseudocode wäre folgendes:

Das Programm soll bei Werten, die kleiner als fünf sind, den Wert zu null setzen. Dies könnte ein Filter sein, der Bildbereiche, die dunkel sind, gänzlich schwarz färbt.

 

WENN eingabewert KLEINER 5

DANN eingabewert GLEICH 0

 

Die Implementierung dieses Pseudocodes sähe in MATLAB wie folgt aus:

 

if eingabewert < 5
  eingabewert = 0;
end

 

Es gibt auch Definitionen für Pseudocode, welche auf der deutschen Wikipedia-Seite nachzuschlagen sind http://de.wikipedia.org/wiki/Pseudocode .