ATEGRA Software Engineering

Schnelle Software-Entwicklung (RAD) und Prototyping

Für Software-Entwicklung wird neben einer Programmiersprache meistens auch ein Datenbanksystem eingesetzt. Das Datenbanksystem erlaubt Daten-Persistenz (d.h. die Daten leben weiter, auch wenn der Rechner abgestellt wurde und der Hauptspeicher geleert ist). Falls die Programmiersprache eine kurze Notation (= wenige Zeilen) zulässt und die Entwicklungsumgebung dies fördert, wird der eigentliche Programmieraufwand gering, da nur wenig Programmcode geschrieben werden muss. Beispiele für solche Programmiersprachen sind: Viele der Sprachen mit „4GL“ im Namen sowie die IBM Notes Makrosprache (bei IBM Notes kommt noch hinzu, dass die gesamte Entwicklungsumgebung integriert ist mit der Entwicklungssprache und dass die Code-Verteilung über dasselbe Verfahren wie die Verteilung der Daten via Replikation funktioniert). Gegenbeispiele sind: Die Sprache C und alle Derivate davon (z.B. C++, C#, Java) sowie Basic und alle Derivate davon (Visual Basic, Lotusscript). Wenn die Sprache zudem gut mit der Entwicklungsumgebung integriert ist, wird eine weitere Beschleunigung der Programmierung erzielt. Beispiel: IBM Domino Designer. Hier ist auch die Code-Verwaltung und die Code-Distribution integriert.

Beim Entwickeln von typischen Datenbankapplikationen sind folgende Arbeiten zu erledigen:

  1. Definition des phys. Datenbankschemas (Datentypen, Tabellen, Zugriffstrukturen)
  2. Definition von Ein-/ Ausgabe-Masken
  3. Programmieren von Drucker-Output-Listen
  4. Berechnung von Werten aufgrund von eingegebenen/abgespeicherten Werten
  5. Datenbankadministration: Optimierung des Speicherplatzbedarfs und der Zugriffsstrukturen
  6. Definition der Zugriffsrechte und ggfls. Einrichten einer User-Verwaltung

Moderne Tools vereinfachen A massiv, indem es beispielsweise in B integriert wird. Sie setzen C um, indem die Definition des Bildschirm-Outputs gleich der Definition des Drucker-Outputs wird. Auch E kann weitgehend automatisiert werden. Damit wird der Programmieraufwand weiter reduziert. Ein Beispiel für ein System, dass so arbeitet ist Lotus Notes.

Erfahrungswerte zeigen, dass in einem Software-Entwicklungs-Projekt der Aufwand in etwa wie folgt verteilt wird:

  • Analyse 10-30%
  • Design 10-30%
  • Programmierung 10-20%
  • Tests 10-30%
  • Schulung 10-30%

Diese Phasen werden i.d.R. sequentiell durchlaufen. Einsparungen beim Programmieren haben also u.U. bloss 10% Einfluss auf den Gesamtaufwand. Hier ist die Idee entstanden, bereits in den Phasen Analyse und Design aber auch in den Phasen Test und Schulung anders vorzugehen. Das geht wie folgt:

Prototyping

Die Beteiligten teilen sich in die Rollen Entwickler und Kunde. In einem Entwicklungsprojekt gibt es einerseits den Arbeitsaufwand von Entwickler und Kunde und anderseits die verstrichene Zeit (in Tagen oder Wochen). Beides soll tief gehalten werden. Kleinere Verbesserungen sollen sofort umgesetzt werden, damit die Entwicklung rasch vorangeht. Das Vorgehen beim Prototyping entspricht den folgenden Schritten:

  1. Falls möglich, wird durch den Kunden schriftlich festgehalten, was die Software können soll (Pflichtenheft). Dazu gehören grobes Design der Masken mit ihren Feldern und Mengengerüst (wieviele pro Jahr). Falls kein Pflichtenheft erstellt werden kann, müssen bestehende Papier- und elektronische Formulare konsultiert werden.
  2. Es müssen eine oder mehrere Kunden-Personen zur Verfügung stehen, die das Thema kennen und dem Entwickler Fragen beantworten und Zielvorgaben machen können.
  3. Es wird durch die Entwickler ein Protoyp 0.8 entwickelt, der die wichtigsten Funktionen enthält.
  4. Der Prototyp 0.8 wird anlässlich einer gemeinsamen Sitzung dem Kunden vorgeführt und besprochen. Verbesserungen werden teilweise sofort umgesetzt und geprüft (das Tool lässt es zu) und teilweise notiert für die spätere Umsetzung.
  5. Für die Verbesserungen, die nicht sofort umgesetzt wurden, wird der Realisierungsaufwand durch die Entwickler geschätzt.
  6. Der Kunde entscheidet, ob alle oder nur einige der Verbesserungen realisiert werden sollen, je nach Budget und Aufwand und teilt dies den Entwicklern mit.
  7. Die Entwickler setzen die gewünschten Verbesserungen um. Es entsteht der Prototyp 0.9.
  8. Es findet wieder ein Treffen statt, an dem der Prototyp 0.9 vorgeführt und besprochen wird. Es werden sofort umsetzbare Verbesserungen umgehend umgesetzt und die anderen notiert.
  9. Die Schritte 5, 6, 7, 8 werden wiederholt. Die Version 1.0 und später evtl. 1.1 oder 1.2 entsteht. Anstelle einer Präsentation kann auch ein Testbetrieb (die Anwender testen) oder ein gemeinsamer Testworkshop (Kunde/Anwender + Entwickler gemeinsam) durchgeführt werden.

Eigenschaften der Methode

  • Entwickler und Kunde arbeiten eng zusammen im Gegensatz zur klassischen Methode, wo der Entwickler im Büro, fern vom Anwender, programmiert
  • das Endprodukt ist nahe bei den Bedürfnissen des Kunden, da Entwickler und Kunden sich in mehreren Iterationen annähern (klassisch: nur eine Wiederholung)
  • da kleine Verbesserungen sofort umgesetzt werden, wird das Ziel schneller erreicht
  • der Programmieraufwand ist kleiner (sofern die eingesetzten Sprachen dies fördern)

Voraussetzungen

  • das Entwicklungstool muss eine kurze Notation unterstützen und möglichst viele Aufgaben automatisieren
  • die Entwickler müssen die Methode kennen und korrekt anwenden
  • der Kunde muss mithelfen und die Methode unterstützen

Zusammenfassung: Falls Sprache und Entwicklungsumgebung sowie Methode abgestimmt sind und die Entwickler entsprechend ausgebildet und eingestellt und der Kunde auch entsprechend eingestellt ist, werden im Vergleich zu konventionellen Entwicklungstools und -methoden rascher und mit weniger Aufwand anwendernahere Anwendungen entwickelt.

Man spricht in diesem Zusammenhang auch von Rapid Application Development (RAD).

Feedback-Formular

    Wir erhalten gerne Post! Wenn Sie wollen, erreichen Sie uns jederzeit unter der E-Mail-Adresse info@ategra.ch oder telefonisch unter +41 44 392 21 20. Wir freuen uns darauf, Sie kennenzulernen!