Das Dreieck aus Komplexität, Qualität und Produktivität

Dreiecksbeziehungen tauchen im Engineering immer wieder an vielen Stellen auf. Das V-Modell ist ein solches Dreieck, ein anderes ist: „Günstig, Gut, Schnell, wähle zwei“. Um eine Dreiecksbeziehung geht es auch im aktuellen ESE-Report von Willert, den ich hier kurz umreiße.

(Hinweis: Noch schnell für mein Webinar zu KI in der Produktentwicklung heute um 16:00 anmelden!)

Der Name Willert ist vielen hier sicher ein Begriff. Andreas Willert ist Geschäftsführer der Willert Software Tools GmbH und mit seiner Firma im Embedded Software Engineering (ESE) unterwegs. Lesenswert ist das SE-Trends-Interview mit Andreas Willert. Der ESE-Report, um den es hier geht, kann in voller Länge hier heruntergeladen werden. Ich kann auch empfehlen, im Archiv der ESE-Reports zu stöbern.

Prinzipien verstehen

Wir können Komplexität nicht verstehen, ohne die zugrundeliegenden Prinzipien zu verstehen. (Das ist was anderes als die Theorie der Komplexität, wie sie bspw. Prof. Olivier de Weck untersucht).

Weiterhin haben wir es im Engineering immer mit Trade-Offs zu tun. Genau darum geht es hier: Bei hoher Komplexität müssen wir uns zwischen hoher Qualität oder hoher Produktivität entscheiden. Und wir können nach Möglichkeiten suchen, die Komplexität zu reduzieren. Nicht immer haben wir viel Spielraum. Wenn es bspw. um Sicherheit geht, dann ist eine hohe Qualität unumgänglich. Ebenso lässt sich bei vielen Problemen die Komplexität nicht beliebig reduzieren.

Ziel des Reports ist es daher, dem Leser ein besseres Verständnis über die grundsätzlichen Wirkmechanismen zu geben, und zwar praxisnah. Um in der Praxis an den richtigen Stellschrauben drehen zu können (Qualität, Effizienz, Kosten), muss der Leser verstehen, wo die verschiedenen Prinzipien ansetzen. Und zuletzt spielen Werkzeuge eine wichtige Rolle, da diese für ein effizientes Arbeiten unerlässlich sind.

Dekomposition

Ein wichtiges Werkzeug für den Umgang mit Komplexität ist das Zerlegen von großen Systemen in viele Teilsysteme. Das klingt im ersten Moment leicht, der Teufel steckt jedoch im Detail. Denn die Dekomposition führt zu neuen Schnittstellen. Diese Schnittstellen können unterschiedliche Ebenen haben: Zeit, Daten, usw. Zwei Prinzipien helfen hier:

1. Prinzip: Verlinken  

Verlinkungen sind unglaublich nützlich für viele Anwendungsfälle. Voraussetzung ist allerdings, dass die Traceability vollständig ist. Hinzu kommt, dass wir für unterschiedliche Anwendungsfälle möglicherweise unterschiedliche Verlinkungen benötigen. Der Report zählt eine ganze Anzahl von Beispielen auf. Besonders gefährlich – und schmerzvoll sind „Hidden Links“, also fehlende Verlinkungen, die eigentlich bestehen sollten. Daher ist ein wichtiges Prinzip, Hidden Links frühzeitig aufzudecken. Oder besser noch, sie von Anfang an zu vermeiden.

In der Praxis bereitet das werkzeugübergreifende Verlinken ebenfalls noch große Kopfschmerzen. Hier wird als möglicher tooltechnischer Lösungsansatz OSLC aufgeführt. Leider unterstützen noch nicht alle Werkzeuge diesen Standard.

2. Prinzip: Contract-Based Design  

Ein weiteres wichtiges Prinzip ist Contract-Based Design. Dieses Prinzip hilft, die Schnittstellenkomplexität in den Griff zu bekommen. Dabei ist ein Problem, dass viele Schnittstellen unzureichend dokumentiert werden. Als Beispiel wird ein Geschwindigkeitssensor aufgeführt. Es ist leicht, wichtige Aspekte in der Schnittstellendokumentation zu vergessen, wie die Abtastrate des Sensors.

Contract-Based Design (CBD; oder auch Design by Contract) löst dieses Problem über eine wesentlich umfangreichere Dokumentation der Schnittstelle, die idealerweise maschinenlesbar ist.

3. Prinzip: Abstraktion durch Musterbildung  

Das dritte Prinzip ist Musterbildung, welches unter dem Namen Design Pattern in der Programmierung bereits weit verbreitet ist. Unser Gehirn kann auch Muster sehr gut erkennen. Das ist der Vorteil von Mustern: Wir erkennen sie auf einen Blick. Muster können aber auch gefährlich sein, denn falsch angewendete Muster können zu schwer identifizierbaren Problemen führen (wir erkennen das Muster und prüfen es nicht).

Das ist übrigens ein großes Problem beim Modellieren: Ungeschulte Menschen sehen nur „Kästen und Linien“ und denken sich ihren Teil, ohne die Semantik dahinter zu verstehen. Wenn jedoch das Modell bspw. zur Codegenerierung benutzt wird, kann dies zu großen Problemen führen.

Fazit

Diese Zusammenfassung reißt nur an, wie wir das Dreieck aus Komplexität, Qualität und Produktivität meistern können. Ich kann die Lektüre dieses ESE-Reports allen Lesern empfehlen!

Bildquelle: Freepik

Michael Jastram

Creator and Author of SE-Trends