Fort- und Weiterbildung / 29. März 2022 - 01. April 2022, 1.-4. Tag: 09.00-12.30 Uhr
Online-Seminar »Softwareentwurf mit Flow-Design«
Clean-Code-Reihe
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 die Planung der Codestrukturen 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.
Inhalt
- Die Kernphasen einer systematischen Softwareentwicklung im Überblick: Analyse, Entwurf, Codierung
- Die Phasen des Entwurfs
- Lösungsansatz finden
- Lösungsansatz modellieren
- Prinzipien für wandelbare Codestrukturen abgeleitet aus der ursprünglichen Objektorientierung
- Verantwortlichkeiten im Code zusammenarbeiten lassen ohne funktionale Abhängigkeiten
- Modellierung mit Datenflüssen
- Datenflüsse modularisieren
- Die Modulhierarchie von der Klasse bis zum Service
- IODA Architektur: Ein Architekturmuster ohne funktionale Abhängigkeiten
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.
Lernziele
- Probleme ohne Einsatz von Code konzeptionell lösen können.
- Lösungsansätze abstrahiert von einer Codierungsplattform deklarativ und visuell beschreiben können.
- Struktur, Verhalten und Daten in Lösungen sauber trennen.
- Lösungen in unterschiedlicher Granularität formulieren können.
- Reflexion der Mainstream-Objektorientierung.