© Excellent backgrounds/Shutterstock.com
Java Magazin
Teil 3: Flow Design in Java implementieren

Java im Fluss


Nach den letzten beiden doch sehr theoretischen Artikeln zu Flow Design und IODA-Architektur soll es jetzt konkret werden. Wir werden ein Flow Design für das einfache, aber nicht triviale Beispiel der Konvertierung römischer Zahlen entwerfen und danach in Java implementieren.

Artikelserie

Teil 1: Flow Design: ein neuer Ansatz für Softwaredesign

Teil 2: IODA: ein neuer Ansatz für Softwarearchitekturen

Teil 3: Flow Design in Java implementieren

Teil 4: Flow Design mit Scala

Beim Entwurf des Flow Designs orientiere ich mich an einem Blogartikel von Ralf Westphal [1], in dem er eine analoge Implementierung in C# beschrieben hat. Viele Diagrammideen sind auch von dort übernommen. Das folgende Szenario soll implementiert werden: Realisiere eine Applikation, die durch einen Benutzer eingegebene römische Zahlen in arabische Zahlen umwandelt und umgekehrt.

Der recht kurze Anforderungstext fordert nichts Spezifisches. Der Benutzer soll die römische oder arabische Zahl nur eingeben können. Ein einfaches Konsolenprogramm ist also ausreichend. Das Ganze könnte auf einer Konsole folgendermaßen aussehen:

> convertroman Enter roman or arabic number: XIV 14 > convertroman Enter roman or arabic number: 42 XLII >

Es wurde nichts über Validierung gesagt. Diese kann sehr rudimentär ausfallen.

Natürlich machen wir hier kein objektorientiertes Design. Unsere Intention ist eine andere: Ein Flow Design soll entstehen. Aber keine Angst vor dem weißen Blatt, wir starten einfach mit der obersten Applikationsebene. Wie stellt sich die Applikation dem Benutzer dar? Alles, was wir von der Anforderungsanalyse wissen, ist, dass die Applikation durch eine Benutzerinteraktion gestartet wird: Der Benutzer startet das Programm. In Flow Design würden wir das wie in Abbildung 1 zu sehen umsetzen. Die leere Klammer symbolisiert ein datenloses Ereignis, wie es das Starten eines Programms ist. Diese Funktionseinheit repräsentiert auch die höchste Abstraktionsebene im Design.

kuniss_javaflow_1.tif_fmt1.jpgAbb. 1: Oberste Funktionseinheit „convert roman“

Der erste Schritt ist getan. Das Blatt ist nicht mehr leer. Der nächste Verfeinerungsschritt ist das Zerlegen der obersten Funktionseinheit in Unterfunktionseinheiten, die Teilaspekte der Funktionalität von convert roman implementieren sollen. Was muss als Erstes getan werden? Zuallererst soll die Eingabe des Benutzers eingelesen und als Zahl repräsentiert werden. Danach folgen die eigentliche Umwandlung und die Darstellung des Ergebnisses (Abb. 2).

kuniss_javaflow_2.tif_fmt1.jpgAbb. 2: Verfeinerung der F...
Java Magazin
Teil 3: Flow Design in Java implementieren

Java im Fluss

Nach den letzten beiden doch sehr theoretischen Artikeln zu Flow Design und IODA-Architektur soll es jetzt konkret werden. Wir werden ein Flow Design für das einfache, aber nicht triviale Beispiel der Konvertierung römischer Zahlen entwerfen und danach in Java implementieren.

Denis Kuniß


Nach den letzten beiden doch sehr theoretischen Artikeln zu Flow Design und IODA-Architektur soll es jetzt konkret werden. Wir werden ein Flow Design für das einfache, aber nicht triviale Beispiel der Konvertierung römischer Zahlen entwerfen und danach in Java implementieren.

Artikelserie

Teil 1: Flow Design: ein neuer Ansatz für Softwaredesign

Teil 2: IODA: ein neuer Ansatz für Softwarearchitekturen

Teil 3: Flow Design in Java implementieren

Teil 4: Flow Design mit Scala

Beim Entwurf des Flow Designs orientiere ich mich an einem Blogartikel von Ralf Westphal [1], in dem er eine analoge Implementierung in C# beschrieben hat. Viele Diagrammideen sind auch von dort übernommen. Das folgende Szenario soll implementiert werden: Realisiere eine Applikation, die durch einen Benutzer eingegebene römische Zahlen in arabische Zahlen umwandelt und umgekehrt.

Der recht kurze Anforderungstext fordert nichts Spezifisches. Der Benutzer soll die römische oder arabische Zahl nur eingeben können. Ein einfaches Konsolenprogramm ist also ausreichend. Das Ganze könnte auf einer Konsole folgendermaßen aussehen:

> convertroman Enter roman or arabic number: XIV 14 > convertroman Enter roman or arabic number: 42 XLII >

Es wurde nichts über Validierung gesagt. Diese kann sehr rudimentär ausfallen.

Natürlich machen wir hier kein objektorientiertes Design. Unsere Intention ist eine andere: Ein Flow Design soll entstehen. Aber keine Angst vor dem weißen Blatt, wir starten einfach mit der obersten Applikationsebene. Wie stellt sich die Applikation dem Benutzer dar? Alles, was wir von der Anforderungsanalyse wissen, ist, dass die Applikation durch eine Benutzerinteraktion gestartet wird: Der Benutzer startet das Programm. In Flow Design würden wir das wie in Abbildung 1 zu sehen umsetzen. Die leere Klammer symbolisiert ein datenloses Ereignis, wie es das Starten eines Programms ist. Diese Funktionseinheit repräsentiert auch die höchste Abstraktionsebene im Design.

kuniss_javaflow_1.tif_fmt1.jpgAbb. 1: Oberste Funktionseinheit „convert roman“

Der erste Schritt ist getan. Das Blatt ist nicht mehr leer. Der nächste Verfeinerungsschritt ist das Zerlegen der obersten Funktionseinheit in Unterfunktionseinheiten, die Teilaspekte der Funktionalität von convert roman implementieren sollen. Was muss als Erstes getan werden? Zuallererst soll die Eingabe des Benutzers eingelesen und als Zahl repräsentiert werden. Danach folgen die eigentliche Umwandlung und die Darstellung des Ergebnisses (Abb. 2).

kuniss_javaflow_2.tif_fmt1.jpgAbb. 2: Verfeinerung der F...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang