Online Seminar / October 10, 2023 - October 13, 2023, 9:00 – 12:30 Uhr
Clean-Code-Seminarreihe: Softwareentwurf mit Flow-Design
Worum geht´s?
Langfristig hohe Produktivität kann nur erreicht werden, wenn die Softwareentwicklung sich nicht selbst ein Bein stellt. Das tut sie jedoch allzu oft durch vorzeitige Codierung. Vorzeitige Codierung ist eine Form der von Donald Knuth als fundamentales Übel identifizierten vorzeitigen Optimierung. Der Antrieb hinter der vorzeitigen Codierung ist natürlich so verständlich wie ehrenhaft: Es soll die Zeit von der Idee zum laufenden Code verkürzt werden.
Doch auch wenn damit womöglich grundsätzlich funktionaler Code schnell produziert wird, ist das Gesamtergebnis suboptimal. Die Optimierung hat nur kurzzeitig wert – und erzeugt mittel- bis langfristig einen überproportionalen Mehraufwand. Der Grund sind Codestrukturen, die nicht oder nur schlecht automatisiert testbar sind, geringe Verständlichkeit aufweisen und vor allem durch ad hoc Abhängigkeiten glänzen, die weiteren Veränderungen im Wege stehen.
Code, der die funktionalen und nicht-funktionalen Anforderungen des Kunden erfüllt, ist das Produkt der Softwareentwicklung. Um dem Kunden allerdings auch bei unklaren Anforderungen heute und großer Unsicherheit im Hinblick auf zukünftige Wünsche morgen dauerhaft hochqualitative Software liefern zu können, braucht es eine Planung der Codestrukturen; Wandelbarkeit »ergibt sich nicht«.
Diese Planung ist natürlich kein Selbstzweck, vielmehr dient sie einer nachfolgenden zügigen Codierung, die sich dann allerdings auf das Wesentliche konzentrieren kann: die Übersetzung der geplanten Strukturen mit programmiersprachlichen Mitteln und deren Füllung mit fehlerfreier Logik.
Das Training Softwareentwurf mit Flow-Design vermittelt einen pragmatischen, alltagstauglichen Ansatz, um solche Planung für jeden Entwickler zugänglich zu machen.
Flow-Design ist ein zweiphasiges Vorgehen, mit dem Anforderungen in eine codierbare Lösung transformiert werden. Das Ergebnis ist eine konzeptionelle Lösung in Form eines visuellen Modells als Vorlage für die Codierung.
Sich mit der Codierung zurückzuhalten und zunächst »nur« eine Lösungshypothese zu entwickeln, ist für viele Entwickler ungewohnt. Mit ein wenig Übung wird jedoch bald klar: Die Eingewöhnung bringt nicht nur für den Einzelnen Klarheit in die Softwareentwicklung, sondern ist extrem nützlich für die Erarbeitung von Lösungen im Team und unverzichtbar als Grundlage für eine produktivitätssteigernde Arbeitsteilung.
Flow-Design bietet eine leichtgewichtige visuelle Notation als Ausgangspunkt für die eigenen Entwürfe. Sie ist nicht standardisiert, aber praxiserprobt. Mit ihr bekommen Softwareteams eine einheitliche, minimale Sprache, um Lösungen deklarativ zu formulieren. Und wo diese Notation nicht ausdrucksfähig sein sollte, sind Entwickler eingeladen, sie pragmatisch für ihre Zwecke in ihrem Kontext zu erweitern.