Entwicklungsphasen am Beispiel Bibliothek ◦ Zusammenfassung ◦ ?

Wir illustrieren die wichtigsten Phasen der Anwendungsentwicklung an einem stark vereinfachten Beispiel, dem Modul Monatliche Ausleihstatistik eines Projekts Bibliotheksanwendung.

###
1 Spezifikationsphase

Ausgangspunkt des Projektbeispiels sei die folgende Grobspezifikation:

> Entwickeln Sie ein Modul, das eine Ausleihestatistik erstellt und wie folgt auf dem Bildschirm ausgibt:

> AUSLEIHSTATISTIK | FÜR DEN MONAT F E B R U A R
> Fachgebiet | Ausgeliehene Titel
> BWL | ***************************************
> VWL | ***********************************
> RECHT | ****************************
> SOZ./PSYCH. | ************
> ÜBRIGE | ***************

Diese Grobspezifikation ist ungenau, weil sie Fragen nach der Benutzereingabe und der Ausgabeberechnung offen lässt. Eine feinere Spezifikation des Moduls Monatliche Ausleihstatistik könnte wie folgt aussehen:

> Zweck

> Zweck des Moduls ist die Bildschirmausgabe eines Histogramms (Balkendiagramms) der Ausleihhäufigkeiten in den Fachgebieten Betriebswirtschaftslehre (BWL), Volkswirtschaftslehre (VWL), Recht, Soziologie/Psychologie und Übrige.

> Eingabe

> Tastatureingaben sind die Ausleihhäufigkeiten der folgenden Fachgebiete: BWL, VWL, Oeffentliches Recht, Privates Recht, Soziologie, Psychologie und Übrige. Der Ausleihmonat wird als Zahl zwischen 1 bis 12 eingegeben.

> Verarbeitung und -ausgabe

> Das Histogramm visualisiert die relativen Ausleihhäufigkeiten der Fachgebiete BWL, VWL, Recht, Soziologie/Psychologie und Übrige. Die maximale Balkenlänge wird der grössten Häufigkeit zugeordnet. Die Häufigkeiten werden durch proportionale Balken aus dem Zeichen * dargestellt.

Spezifikation von TESTS

###
2 Modularisierungsphase

Ein Modul ist ein entwurfs- oder programmiersprachlicher Baustein, der Aufgaben löst, die eng verbunden sind. Ein einfaches Programmpaket zur Bibliotheksverwaltung lässt sich entwurfssprachlich wie folgt modularisieren:

>     Bibliotheksverwaltung
>         Ausleihverkehr buchen
>            Stammdaten verwalten
>               Dokumente verwalten
>               Benutzer verwalten
>            Statistiken erstellen
>               Dokumentestatistiken
>               ...
>                    Monatliche Ausleihstatistik
>               ...
>               Benutzerstatistiken
>           ...
>         ...

Die Beziehung zwischen den Modulen ist hierarchisch. Eingerückte Module gehören zu den weiter oben ausgerückten Modulen. Dokumente verwalten gehört zum Beispiel zu den Vatermodulen Stammdaten verwalten und Ausleihverkehr buchen. Eine solche Einrückungsliste von Modulen nennt man Modulhierarchie. Die obige Modulhierarchie ist unvollständig. Wir werden ausserdem nur eines der dargestellten Teilprobleme vertiefen, nämlich das Modul Monatliche Ausleihstatistik.

Modulhierarchie von TESTS

###
3 Algorithmisierungsphase

Zu Beginn der Spezifikation und des Entwurfs hilft oft das EVA-Prinzip. Es zerlegt die Modulaufgaben in Eingabe, Verarbeitung und Ausgabe:

> Eingabe: Ausleihhäufigkeiten und -monat einlesen
> Verarbeitung: Ausgabe des Histogramms vorbereiten
> Ausgabe: Histogramm auf dem Bildschirm ausgeben

Als Nächstes verfeinern wir jeden EVA-Schritt in einer Einrückungsliste:

>     Ausleihhäufigkeiten und -monat einlesen
>         Programmtitel ausgeben
>             Für jede Ausleihhäufigkeit:
>                 Prompt "Ausleihhäufigkeit"
>                 Ausleihhäufigkeit lesen
>                 Ausleihhäufigkeit prüfen
>         Prompt "Ausleihmonat"
>         Monatszahl lesen
>         Monatszahl prüfen

>     Ausgabe des Histogramms vorbereiten
>         Maximale Häufigkeit ermitteln

>     Histogramm auf dem Bildschirm ausgeben
>         Ausgabetitel ausgeben
>         Spaltenbezeichner ausgeben
>         Für jede Ausgabehäufigkeit:
>             Zeilenbezeichner ausgeben
>             Balken ausgeben

Wir haben diese EVA-Verfeinerung in Pseudocode beschrieben. Pseudocode (auch Entwurfscode genannt) abstrahiert vom späteren Programmcode und umfasst deshalb wesentlich weniger Zeilen. Ausserdem ist die Syntax von Pseudocode einfacher als jene von Programmcode.

Modulbeschreibungen und Entwurfscode

###
4 Codierungsphase

#### Vorlagen und Makrocode

Eine Endbenutzerin kann Software an ihre Bedürfnisse anpassen, ohne gleich Code zu schreiben. Verbreitete Möglichkeiten der Anpassung (engl. customization) sind Vorlagen und Makros. Vorlagen (engl. templates) spielen vor allem in der Textverarbeitung und Tabellenkalkulation eine Rolle. Ein Textverarbeitungspaket erlaubt zum Beispiel die Definition von Textvorlagen aus Konstanten und Variablen (Leerstellen oder Platzhalter). Der Ersteller eines Serienbriefs verknüpft zum Beispiel die Platzhalter einer Vorlage mit Feldern einer Datenbank. Das Textverarbeitungsprogramm kann dann zum Beispiel aktuelle Adressdaten abrufen und vor dem Druck mit der Vorlage verknüpfen. In Serienbriefen sind neben der Adresse die Anrede und die Grussformel verbreitete Platzhalter.

Verlangt das Ausfüllen einer Vorlage viele manuelle Arbeitsschritte, so kann der Endbenutzer eine Folge von Tasten- und Mausaktionen als Makro aufzeichnen und später beliebig oft abspielen. Oft ist ein Makro der erste Schritt zur Entwicklung eines eigenen Programms. Excel und Access erlauben den Ausbau von Makros zu VBA-Programmen. Ein Makro automatisiert eine kleine Routineaufgabe, indem es mehrere Aktionen aufzeichnet und unter einem Namen zusammenfasst. In einfachen Editoren fehlt zum Beispiel oft eine Funktion, die den Text einer Zeile automatisch unterstreicht. Der Benutzer kann in diesem Fall den Makrorekorder einschalten, den Titel manuell unterstreichen und dann die Aufzeichnung beenden. Das generierte Makroprogramm kann der Benutzer zum Beispiel Unterstreiche_die_laufende_Zeile nennen:

>     Macro Unterstreiche_die_laufende_Zeile
>       JumpToBeginningOfNextLine
>       For LineLength Times Write ‘-’
>     End Macro

Der Code aufgezeichneter Makroprogramme lässt sich nachträglich anpassen. In unserem Beispiel kann der Benutzer etwa das Unterstreichungszeichen '-' durch '*' ersetzen. Wer über Programmierkenntnisse verfügt, kann das Makro auch als Grundlage eines eigenen Programms verwenden. Das obige Makro enthält bereits die wichtigsten Elemente von Programmen:

- Es fasst mehrere zusammengehörende Aktionen in einem benannten Baustein zusammen.

- Die Reihenfolge der Aktionen ist von Bedeutung.

- Einige Aktionen werden wiederholt. Das Beispiel wiederholt LineLength-mal die Aktion Schreibe ‘-’.

- Die Aktionen werden durch Schlüsselwörtern beschrieben. Macro und End setzen zum Beispiel die Makrogrenzen, und For und Times beschreiben eine Wiederholung.

#### Programmcode

Wir verfeinern nur einen kleinen Teil der Algorithmisierungsphase, nämlich die Datenstruktur und den Ablauf des Untermoduls Maximale Häufigkeit ermitteln. Eine Struktur, die eine Liste gleichartiger Daten speichert, heisst Datenfeld (engl. array). Das folgende Datenfeld heisst Ausleihäufigkeiten und speichert die Ausleihhäufigkeiten der ausgeliehenen Bücher:

i | 1 | 2 | 3 | 4 | 5
Ausleihhäufigkeiten | 200 | 100 | 500 | 300 | 400
(Fach | BWL | VWL | Recht | Psych./Soz. | Übrige)

Der Befehl Ausleihhäufigkeiten(i) greift auf die i-te Zelle des Datenfelds Ausleihhäufigkeiten zu. Der folgende VBA-Code geht durch alle Werte dieses Datenfelds und ermittelt die maximale Ausleihhäufigkeit. Wir benötigen diese für die Berechnung der Balkenlängen des Histogramms. Im Gegensatz zum Entwurfscode der Algorithmisierungsphase kann VBA-Code von einem Rechner ausgeführt werden:

>     Maximum = Ausleihhäufigkeiten(1)
>     For i = 2 To 5
>       If Ausleihhäufigkeiten(i) > Maximum Then
>         Maximum = Ausleihhäufigkeiten(i)
>       End If
>     Next i

Die erste Zeile weist einer Speicherzelle Maximum die Ausleihhäufigkeit von BWL zu. Die restlichen Zeilen lesen nacheinander die Elemente 2 bis 5 von Ausleihhäufigkeiten. Die Zeile nach Then überschreibt die Speicherzelle Maximum mit dem laufenden Element, sobald dieses grösser als der bisherige Inhalt von Maximum ist (Das Symbol = vergleicht also hier nicht zwei Werte, sondern überschreibt den Wert der Speicherzelle Maximum mit dem Wert von Ausleihhäufigkeit(i)). Nach dem Lesen aller Elemente des Datenfelds steht in Maximum die grösste Ausleihhäufigkeit. Ein vollständiges VBA-Programm zur Bestimmung des Maximums finden Sie in Maximum.xls.

Entwicklung von TESTS

Der Abschnitt Codierungsphase hat die Programmkonzepte Datenfeld, Entscheidung und Wiederholung eingeführt. Die folgenden Themen vertiefen diese Konzepte in VBA:

- Datenfeld (Ausleihhäufigkeit)

- Entscheidungsanweisung (If ... Then)

- Wiederholungsanweisung (For ... Next).

Exkurs zur gegenseitigen Beeinflussung von Entwicklungsphasen

Die Codierung hängt von der Spezifikation, dem Dialogentwurf, der Modularisierung und der Algorithmisierung ab. Idealerweise sollten die vorgelagerten Phasen aber nicht von späteren Implementationseinschränkungen beeinflusst werden. Leider sieht die Praxis aber oft anders aus - vor allem dann, wenn sich der spätere Programmcode auf mehrere Plattformen verteilt. Beispiele sind Anwendungen, die Clientrechner über das Internet mit Server-Datenbanken verbinden:

- Der Code der Benutzerschnittstelle liegt auf den Clients

- Codebibliotheken liegen auf Client- und Serverrechnern (ActiveX-Controls und Java Applets)

- Der Code für die Webkommunikation liegt auf Client- und Serverrechnern (DHTML und Active Server Pages (ASP)

- Der Datenbankcode liegt auf Serverrechnern (gespeicherte Prozeduren).

In einem solchen Fall ist es unumgänglich, bereits in den vorgelagerten Phasen an die spätere Codierung zu denken.