Sechs braune Zwiebeln fallen aus einem geflochtenen Korb auf eine dunkle Stoffoberfläche. Im Hintergrund sind Bündel von Frühlingszwiebeln zu sehen.Sechs braune Zwiebeln fallen aus einem geflochtenen Korb auf eine dunkle Stoffoberfläche. Im Hintergrund sind Bündel von Frühlingszwiebeln zu sehen.

27. September 2024

Small is beautiful: Nicht-funktionale Eigenschaften in komplexen Softwaresystemen ODER Warum wir yuuvis® Momentum so und nicht anders entwickelt haben

Von Dr. Nikola Milanovic

Das erste Mal, dass ich „Small is beautiful“* in einer Computerzeitschrift las – eine, die in den 1980ern sehr populär war –, besuchte ich gerade die Grundschule und fing an (oder versuchte), mir selbst das Programmieren beizubringen. Ich erinnere mich nicht mehr genau, worum es in dem Artikel ging, wahrscheinlich, weil ich damals das meiste davon nicht verstand. Aber der Satz „Small is beautiful“ blieb irgendwie bei mir hängen.

Von der „Gottklasse“ zu klaren Prinzipien

Später im Berufsleben bin ich diesem Satz immer wieder begegnet, selbst während meines Studiums, als ich etwas über modulare Entwurfsprinzipien lernte. Trotzdem schrieb ich, als ich bei meinem ersten Job die Aufgabe bekam, ein Medienimport-Tool zu erstellen, letztlich eine „Gottklasse“ mit über 1.000 Zeilen Code. Das passierte aus verschiedenen Gründen: Ich kam frisch von der Uni und hatte wenig Praxiserfahrung, die Anforderungen waren unklar oder gar nicht definiert („Hier, nimm diese 10 CDs mit Bildern und importiere sie bis Freitag.“), später tauchten Randfälle und Eskalationen auf, die schnelle Fixes erforderten, ohne dass man viel nachdenken konnte, und so weiter.

Noch später habe ich dann die Bedeutung klarer Architekturprinzipien verstanden. Nicht-funktionale Eigenschaften wie Performance, Sicherheit und Fehlertoleranz über Funktionen zu stellen, ist entscheidend. Gepaart mit kontinuierlichem Refactoring führt dieser Ansatz zu Produkten, die mit minimalen Ausfallraten laufen, gut skalieren und keine ernsthaften Sicherheitsprobleme haben.

Gleichzeitig habe ich erlebt, wie Produkte regelrecht explodiert und gescheitert sind, weil viel mehr versucht wurde als eigentlich nötig war. Zu viele Funktionen, zu viele Stakeholder, zu viele „Must-haves“, zu viele „Das brauchen wir auch unbedingt“.

Nicht-funktionale Eigenschaften als Fundament

Als wir vor ein paar Jahren bei OPTIMAL SYSTEMS mit der Entwicklung von yuuvis® Momentum begannen, haben wir uns auf einen kleinen, aber festen Satz von nicht-funktionalen Eigenschaften geeinigt. Wir haben beschlossen, dass wir, egal wie komplex die zukünftigen Anforderungen werden, diese niemals auf eine Weise umsetzen, die diese grundlegenden Eigenschaften gefährdet. Zum Beispiel haben wir uns auf eine minimale Import-Rate für eine bestimmte Clustergröße festgelegt. Sollte eine zukünftige Funktion diese Rate gefährden, müsste sie neu implementiert, aus dem Kernprodukt entfernt oder schlichtweg abgelehnt werden.

Zwiebelarchitektur: Das Herzstück von yuuvis® Momentum

Wir haben auch das Konzept der „Zwiebelarchitektur“ eingeführt. Im Kern dieser Architektur – also im „Zentrum der Zwiebel“ – muss das System zu jeder Zeit die vereinbarten nicht-funktionalen Eigenschaften ohne Kompromisse gewährleisten. Alle Services im Kern sind essenziell für den Betrieb des Systems und folgen dem Prinzip „Small is beautiful“. Andere Funktionen, die um den Kern herum gebaut werden – wie die Schichten einer Zwiebel –, können entfernt werden, ohne den Betrieb des Systems zu beeinträchtigen. Auch diese Schichten sollten die nicht-funktionalen Eigenschaften einhalten, dürfen sie jedoch bewusst für einen speziellen Anwendungsfall verletzen. Dies darf jedoch niemals das gesamte System gefährden; andere Funktionen dürfen durch solche Kompromisse nicht beeinträchtigt werden.

Das klingt auf dem Papier sehr einfach. Diese Entscheidung im Arbeitsalltag zu leben, ist jedoch schwierig, und es ist oft notwendig, Kompromisse einzugehen. Wir haben versucht, auf dem Weg so wenige Kompromisse wie möglich zu machen. Es hilft auch, einen leitenden Softwarearchitekten im Team zu haben, dessen Lieblingszitat lautet: „Perfektion ist nicht dann erreicht, wenn man nichts mehr hinzufügen kann, sondern wenn man nichts mehr weglassen kann.“** Deshalb ist yuuvis® Momentum heute eine sehr leistungsstarke ECM-Plattform, die für die Cloud entwickelt wurde und viele spannende Features bietet, wie etwa eine revisionssichere Schriftgutverwaltung, eine leistungsstarke Suche, ein intelligentes Schema, einen flexiblen Workflow, ein schnelles Sicherheitssystem, eine integrierte KI und vieles mehr. Trotz dieser Fortschritte bietet es weiterhin nahezu unendliche Skalierbarkeit, bleibt wartbar und ist genauso schnell und sicher wie vor ein paar Jahren, als es „nur“ ein sehr schnelles Dokumentenarchiv war.

Small is indeed beautiful. 

* Small is beautiful ist der erste Grundsatz der Unix-Designphilosophie von Mike Gancarz

** Antoine de Saint-Exupéry

Haben Sie noch Fragen?
Nehmen Sie Kontakt mit uns auf!