Zeitgemäße Design Systems mit Figma, Storybook und Angular (Teil 1)

Seite 2: Design Systems im Kontext moderner Softwareentwicklung

Inhaltsverzeichnis

Design Systems passen hervorragend zum Konzept des Component-based Software Engineering (CBSE), einem wesentlichen Fundament für skalierbare Anwendungen. Die Idee ist alt: Größere Aufmerksamkeit erhielt das Thema der komponentenorientierten Entwicklung bei einer NATO-Konferenz in Garmisch-Partenkirchen im Jahre 1968 – als Reaktion auf die sogenannte Softwarekrise. Damals waren Softwareprojekte zu komplex, und wurden oft nicht rechtzeitig oder gar nicht fertig.

Um das zu adressieren, schauten sich die frĂĽhen Softwareingenieure in der Industrie um: Denn in der Massenproduktion gab es Standardteile, die Hersteller je nach Anforderung austauschen und von Zulieferern beziehen konnten. Douglas McIlroy ĂĽbertrug die Idee auf die Softwareentwicklung.

Softwarekomponenten zeichnen sich dadurch aus, dass sie abgeschlossen sind ("black box"), isoliert, wohldefinierte Ein- und Ausgänge besitzen, dadurch einfach testbar und wiederverwendbar sind. Darüber hinaus können Entwickler sie von Drittanbietern und über Marktplätze bekommen. Mit npm, NuGet und Maven existieren riesige solcher Softwaremarktplätze, bei denen Kunden oftmals sogar aus verschiedenen Implementierungen auswählen können.

Darauf aufbauend wollen Design Systems nun den Durchstich in die grafische Welt schaffen: Projektbeteiligte sollen auf allen Ebenen, also auch in visuellen Entwürfen am Whiteboard oder einem Grafikdesign-Tool, nur noch in Komponenten denken. Durch den konsequenten Einsatz der Komponentenorientierung rücken Konzeption und Entwicklung – Design und Code – näher zusammen und bilden eine durchgängige Einheit. Anstatt über abstrakte Entwürfe zu sprechen, sollen konkrete, lebendige Komponenten ein gemeinsames Verständnis schaffen. Richtig angelegt ergeben sich sogar Synergieeffekte für das Testing der Komponenten, da Beteiligte etwa Mock-Implementierungen zwischen Design System und Unit-Tests teilen können.

Aus der Softwareentwicklung nicht wegzudenken ist das Thema User Experience. ISO 9241-210 versteht darunter alle Aspekte der Erfahrung des Nutzers bei der Interaktion mit einem Produkt oder Dienst, einer Umgebung oder Einrichtung. Zunehmend komplexe Anwendungen ringen ihren Benutzern immer mehr kognitive Leistung ab. Es ist mittlerweile das Credo aller Branchengiganten (Google, Facebook, Twitter und Co.) geworden, die teilweise komplexen Workflows durch intelligente und lernende Benutzeroberflächen und grafischen Elementen wie Illustrationen und Animationen zu vereinfachen.

Um die sogenannte kognitive Belastung zu schmälern, setzen Entwickler vor allem auf Konsistenz und bekannte Bedienmuster. Selbst hochkomplexe (Business-)Awnendungen führen Nutzer spielerisch an Funktionen heran, um die Belastung durch langwierige Schulungen hin zu einfach verständlichen Benutzeroberflächen zu verlagern. Denn: Noch nie war der Softwaremarkt so hart umkämpft wie heute.

Dabei können Design Systems ebenfalls helfen. Durch die klare Strukturierung und scharf definierte Use-Cases ist es deutlich einfacher, Features zugänglich zu gestalten. Auch hier kommt das Prinzip "Fail Early Fail Often" zum Einsatz. Die Annahmen, die Entwickler zu neuen Features treffen, können sie innerhalb kurzer Zeit in Form eines Benutzertests innerhalb des Design System validieren. Eine Neuentwicklung im laufenden Produktzyklus stellt dank der isolierten Komponenten ebenfalls keine große Herausforderung mehr dar: Enterprise-Entwicklung im Silicon-Valley-Stil.