7.6.17
Clean Code
Development

Flow Design in der Praxis

Was ist Flow Design?

Bei Flow Design handelt es sich um eine Entwurfsmethode für Software, das heißt, dass hierbei keine Objektkonstruktionen bekannt sind und ausschließlich Funktionseinheiten integriert werden. Am Ende folgt die Implementation, bei der der Entwurf nach Flow Design in eine Sprache (z.B. C#) übersetzt wird.

Flow Design agiert über Datenflussdiagramme. Auftretende Probleme werden nach dem Divide und Conquer Prinzip so lange untergliedert und in Unterprobleme aufgeteilt, bis einfache Funktionseinheiten zur Lösung entstehen. Flow Design bietet aufgrund der grafischen Darstellung eine Möglichkeit, Software gemeinsam im Team zu konzipieren, und zwingt die Entwickler ihre Gedanken, in Form von Datenflusszeichnungen zu formulieren.

Die Funktionseinheiten im Flow Design lassen sich in zwei verschiedene Aufgaben unterteilen. Dabei können die Einheiten entweder Logik ausführen oder mehrere Methoden integrieren ohne dabei jedoch selbst Logik auszuführen. Dabei ist zu beachten, dass die Funktionseinheiten immer nur jeweils eine der beiden Aufgaben erfüllen können.

Was ist jetzt hierbei Logik?

Unter Logik wird Code bezeichnet, der Verhalten herstellt. Das heißt, Code der Veränderungen von Zuständen herbeiführt. Dazu werden die folgenden Konstrukte zur Definition von Logik herangezogen: Expressions, da diese Werte von Input- zu Output-Werten umwandeln, API-Calls und Control Statements wie z.B. If-then-else, for, while etc.. Logik im Kontext des Flow Designs entsteht über Verzweigungen im Programmfluss, Schleifen und Wertzuweisungen.

Integrationsmethoden hingegen rufen lediglich andere Methoden auf, die Logik ausführen oder selber Methoden integrieren. Bei der Integration werden Methoden in einer bestimmten Reihenfolge aufgerufen und verwalten so den Datenfluss.

Flow Design in der Praxis

Die Aufgabenstellung

Im Coding Dojo haben wir eine Kata der Clean Code Developer School bearbeitet. Unter Function Katas versteht man kleine Aufgaben. Die Problemstellung der Katas ist ein Algorithmus, die Lösung wiederum besteht aus einer Funktion. Außerdem sind eventuelle Refaktorisierungen zu beachten (vgl. Clean Code Developer School). Ziel des Coding Dojos ist es, bei der Entwicklung die Prinzipien und Praktiken des CCD zu beachten und zu verinnerlichen.

Die konkrete Aufgabenstellung bei unserem Coding Dojo war wie folgt:

Schreibe eine Funktion, die Römische Zahlen [1] in Dezimalzahlen übersetzt.

Beispiele:

„I“ –> 1

„II“ –> 2

„IV“ –> 4

„V“ –> 5

„IX“ –> 9

„XLII“ –> 42

„XCIX“ –> 99

„MMXIII“ –> 2013

Die Römischen Zahlen bewegen sich im Bereich von „I“ bis „MMM“.

Römische Ziffer I V X L C D M
Wert 1 5 10 50 100 500 1000

Nimm an, dass die Römischen Zahlen korrekt sind.

Die Herangehensweise

Zu Beginn der Aufgabe hat man die ein oder andere Idee, wie man an dieses Problem herangehen kann und welche Lösungen anzusetzen sind. Allerdings sollte man sich im ersten Schritt zunächst folgende Fragen stellen:

  • Wie stelle ich sicher, dass in meinem Entwicklerteam jeder die gleiche Vorstellung von der Umsetzung des Problems hat?
  • Was muss ich hierzu vor der Entwicklung beachten?
  • Was kann hierbei zu Problemen führen?

Bei Flow Design geht es darum, die Lösung eines Problems an sich zu modellieren und nicht darum, wie es technisch umgesetzt werden soll. Es ist unabhängig von einer bestimmten Programmiersprache, weshalb auch keine Schlüsselwörter oder konkreten Datentypen in der Notation verwendet werden. Setzt man Flow Design konsequent um und trennt Integrationsmethoden von Operationen, wird automatisch das IOSP (Integration Operation Segregation Principle) erfüllt.

Die Umsetzung

Was war nun genau die Herausforderung bei der Aufgabenstellung? Es geht darum, Römische Zahlen in Dezimalzahlen umzurechnen. Im Flow haben wir dafür die Methode „int FromRomanNumerals (string romanNumber)“ deklariert. Auf dieser Ebene haben sich bei dem Problem die 3 Punkte „Übersetzen der römischen Ziffern in dezimale Ziffern“, „Ausgewählte Ziffern mit Vorzeichen versehen“ und „Summieren der Ziffern“ ergeben, die in entsprechenden Methoden implementiert wurden. Wie in einem Team üblich entstehen hier immer wieder Uneinigkeiten und unterschiedliche Lösungswege oder Ideen. Daher wurden, wo nötig, die Methoden nochmal im Detail entworfen bzw. diskutiert.

Flow Design - Fazit

Flow Design ist ein sehr gutes Mittel für ein Team, um ein gemeinsames Verständnis eines Problems zu erarbeiten und Aufgaben daraus abzuleiten. Diese können dann vom Team parallel abgearbeitet werden. Durch eine konsequente Umsetzung des IOSP Prinzips hat man schon per Design leicht testbare Methoden. So kann die Implementierung auch nach TDD (Test Driven Development) umgesetzt werden.


Über den Autor:

Julian ist Softwareentwickler, spezialisiert auf Web- und .NET-Technologien. Um Clean Code tatsächlich entwickeln zu können, ist ihm, neben rein technischer Entscheidungen, besonders die Kommunikation mit dem gesamten Team wichtig. Clean Code Development ist für ihn ein Teamsport und kann nicht allein gemeistert werden.

No items found.

Weitere Artikel

Clean Code
7.9.21

Clean Code Development: Das Wertesystem

Das Wertesystem von Clean Code Development umfasst die Werten Evolvierbarkeit, Korrektheit, Produktionseffizienz und Kontinuierliche Verbesserung.

Clean Code
9.9.21

Clean Code Development: Die Grade

Clean Code Development ist in verschiedenen Graden unterteilt, die man als Entwickler eine nach der anderen erklimmt und in einem ewigen Kreislauf wiederholt

Clean Code
9.9.21

Clean Code Development: Die Tugenden

Um Clean Code Developer zu werden, gilt es eine Reihe von Tugenden zu verinnerlichen: Schätze Variation, Tue nur das Nötigste, Isoliere Aspekte etc.

Clean Code
Development
Digitalisierung
30.11.22

Nachhaltige Software­entwicklung: Was man darunter versteht und wie man nachhaltig entwickelt

Wie man Software entwickelt, die sich flexibel und langfristig an neue Markt- und Kunden­anforderungen anpassen lässt

Wie können wir Sie beraten?
Telefon
Online Beratung
Kontaktanfrage
Telefon
Wir freuen uns auf Ihren Anfruf
+49 (0) 721-619096-0
+49 (0) 721-619096-19
Für Sie erreichbar von
Mo bis Fr 8-16 Uhr
Online Beratung
Buchen Sie online einen für Sie passenden Termin
Wir freuen uns auf Ihre Nachricht
Wenn Du wissen möchtest, welche Daten wir ver­ar­beiten und wie lange wir diese speichern, findest du weiter­führende Infor­mationen in unserer Daten­schutz­erklärung.
Vielen Dank! Ihre Kontaktanfrage wurde von uns empfangen!
Oh nein! Irgendwas ist schiefgelaufen. Probieren Sie es bitte noch einmal!
Kontakt