Wenn ein Programmierer eine Aufgabenstellung bekommt, dann spielen nicht nur die für die Software geforderten Funktionen eine wichtige Rolle. Die Funktionen stehen sicherlich im Mittelpunkt, weil jede Software einen Endanwender bei einer Tätigkeit (wie Fahrrad-Miete, Navigation in unbekanntem Gelände, Organisation der Einkäufe) unterstützen soll. Daraus ergeben sich aber weitere Punkte, die ebenfalls erörtert werden sollen:
Wie wir sehen, gibt es viele Baustellen, die wir beachten müssen, wenn eine Software erstellt werden soll. Um hier nicht den Überblick zu verlieren, bietet sich im Vorfeld der Erstellung des Quellcodes der Entwurf der Software an. Es gibt verschiedene Methoden und Techniken. So können wir einen grafischen Entwurf gestalten. Das hat den Vorteil, dass wir mit genormten Symbolen den Sachverhalt darlegen können. Häufig wird aber auch eine textuelle Beschreibung bevorzugt.
Für die Gestaltung von Programmabläufen, die von einem Rechner abgearbeitet werden können, bieten sich als grafische Varianten der PAP (Programmablaufplan) und das Struktogramm (auch Nassi-Shneiderman oder Blockdiagramm) an. Beide bilden die Grundlage für unsere Programmabläufe.
Alternativ – und von vielen Programmierern bevorzugt – ist der Entwurf mittels Pseudocode. Dieser ist nicht genormt: Hier wird in Anlehnung an eine beliebige Programmiersprache der Programmablauf frei formuliert.
Die Implementierung beinhaltet das Schreiben des Quellcodes. Ohne den gibt es ja kein Programm.
Viele Programmierer vernachlässigen – je nach Kenntnisstand – die Phase des Entwurfs und setzen sich gleich an den Rechner. Abhängig von Kenntnisstand aber auch Umfang der Aufgabe kann das auch zielführend sein. Aber wenn man sich auf unbekanntem Terrain bewegt, sollte eine Planung bzw. hier der Entwurf schon etwas ausführlicher besprochen werden.
Generell ist die Idee der Trennung von Implementierung und Entwurf:
Der Test einer Software wird hier in der Reihenfolge als 4. Phase aufgelistet. Es wäre allerdings kontraproduktiv, mit dem Testen erst dann anzufangen, wenn die Software implementiert und damit fertig ist.
Getestet wird sowohl im Entwurf als auch in der Implementierung als auch danach.
Es gibt verschiedene Verfahren. So unterscheiden wir zwischen einem White-Box-Test und einem Black-Box-Test.
Beim White-Box-Test liegt der Entwurf vor oder der Quellcode offen (wir sehen, was wir geschrieben haben).
Beim Entwurf geht es darum, zu prüfen, ob der von uns gestaltete Programmablauf zum Ziel bezogen auf die Aufgabenstellung führt. Man spricht auch von einem Schreibtischtest.
Ein White-Box-Test in der Implementierung (also Prüfen Quellcode) wird gemacht, um sicherzustellen, dass die Software die Hardwareressourcen des Rechners nicht zu sehr beansprucht. Man nennt das auch Laufzeit/Speicherverhalten.
Die Black-Box-Testverfahren sind vielfältig und werden anhand der vorliegenden Software durchgeführt. Es muss auch nicht die ganze Software fertig sein. So wird in der Phase der Implementierung immer wieder getestet; jedesmal, wenn ein paar Zeilen geschrieben wurden, muss geprüft werden, ob das funktioniert. Dann interessiert nicht der Quellcode, sondern nur die Funktionalität des Programms (richtige Berechnung, korrektes Abfangen von fehlerhaften Eingaben usw.)