© Excellent backgrounds/Shutterstock.com
Java Magazin
Zielgerichtete Evolution mit Fitness Functions

Software-DNA entschlüsselt

Wie kommen Sie zu einer dauerhaft guten Softwarelösung? Fitness Functions machen die Zielerreichung automatisch und kontinuierlich messbar, auch wenn das Team von eingeschlagenen Wegen abweicht und Experimente wagt. Dieser Beitrag zeigt, wie die Idee auch in Ihr Vorhaben Eingang finden kann.

René Weiß, Stefan Zörner


Software automatisiert zu testen, etwa mit Unit- und Integrationstests im Rahmen des Builds, ist ein alter Hut. Fehler, die sich in der Weiterentwicklung eingeschlichen haben, lassen sich so effizient und zugleich risikoarm aufspüren – Entwickler erhalten früh Feedback. Auch eine Softwarelösung mit Monitoringwerkzeugen kontinuierlich zu überwachen, ist gängig. Ausfälle zeigen sich früh, und über Alarme und geeignete Maßnahmen lässt sich gegensteuern, bevor es knallt. Ziel beider Ansätze ist „gute“ Software durch Rückmeldungen. Gut heißt hier konkret: korrektes Verhalten, etwa bei der Verarbeitung der Daten (abgesichert durch Tests) bzw. zuverlässiger Betrieb (abgesichert durch Monitoring). Schlussendlich sind das nur zwei Aspekte für Qualität, und in Ihrem Fall vielleicht nicht einmal die entscheidenden für Ihren Erfolg. Wann ist Ihre Software gut genug? Wie können Sie sicherstellen, dass sie es im weiteren Verlauf bleibt – insbesondere, wenn die Entwicklung kleinteilig, organisatorisch dezentral und technologisch polyglott erfolgt? Wie auch der Beitrag von Stefan Toth in diesem Heft (S. 10) zeigt, sind Feedback und Transparenz wichtige Aspekte, um eine evolutionäre Architektur zu etablieren, und Fitness Functions ein Schlüssel dazu.

Evolutionäre Architektur und Fitness Functions

Neal Ford und seine Mitautoren fordern für eine evolutionäre Architektur, dass sie „geleitete, inkrementelle Veränderungen über mehrere Dimensionen hinweg unterstützt“ [1]. Das klingt abstrakt und sperrig, ist aber schnell aufgelöst, wenn wir die einzelnen Punkte mit verschiedenen Aspekten evolutionärer Softwareentwicklung verknüpfen, oder konkreter mit charakteristischen Eigenschaften von Microservices als einem möglichen Architekturstil.

Inkrementell bedeutet, dass sich Ergänzungen und Änderungen schrittweise einführen oder etablieren lassen. Kleinteiligkeit, eine möglichst lose Kopplung zwischen Teilen und technologische Freiheiten für die Teams, die sie bauen, begünstigt das. Experimente sind erwünscht, neue Technologien etwa leicht lokal ausprobiert, erfolgversprechende Ansätze setzen sich durch. Über mehrere Dimensionen hinweg heißt, diesen Erfolg an mehreren Faktoren festzumachen. Sie deklarieren verschiedene Ziele als entscheidend für Ihr Vorhaben. Oftmals beeinflussen diese sich wechselseitig; Sie müssen sie ausbalancieren. So ist eine leichte Portierbarkeit auf beliebigen Zielumgebungen nicht leicht mit hoher Performance unter einen Hut zu bringen. Es gilt, Kompromisse ...

Java Magazin
Zielgerichtete Evolution mit Fitness Functions

Software-DNA entschlüsselt

Wie kommen Sie zu einer dauerhaft guten Softwarelösung? Fitness Functions machen die Zielerreichung automatisch und kontinuierlich messbar, auch wenn das Team von eingeschlagenen Wegen abweicht und Experimente wagt. Dieser Beitrag zeigt, wie die Idee auch in Ihr Vorhaben Eingang finden kann.

René Weiß, Stefan Zörner


Software automatisiert zu testen, etwa mit Unit- und Integrationstests im Rahmen des Builds, ist ein alter Hut. Fehler, die sich in der Weiterentwicklung eingeschlichen haben, lassen sich so effizient und zugleich risikoarm aufspüren – Entwickler erhalten früh Feedback. Auch eine Softwarelösung mit Monitoringwerkzeugen kontinuierlich zu überwachen, ist gängig. Ausfälle zeigen sich früh, und über Alarme und geeignete Maßnahmen lässt sich gegensteuern, bevor es knallt. Ziel beider Ansätze ist „gute“ Software durch Rückmeldungen. Gut heißt hier konkret: korrektes Verhalten, etwa bei der Verarbeitung der Daten (abgesichert durch Tests) bzw. zuverlässiger Betrieb (abgesichert durch Monitoring). Schlussendlich sind das nur zwei Aspekte für Qualität, und in Ihrem Fall vielleicht nicht einmal die entscheidenden für Ihren Erfolg. Wann ist Ihre Software gut genug? Wie können Sie sicherstellen, dass sie es im weiteren Verlauf bleibt – insbesondere, wenn die Entwicklung kleinteilig, organisatorisch dezentral und technologisch polyglott erfolgt? Wie auch der Beitrag von Stefan Toth in diesem Heft (S. 10) zeigt, sind Feedback und Transparenz wichtige Aspekte, um eine evolutionäre Architektur zu etablieren, und Fitness Functions ein Schlüssel dazu.

Evolutionäre Architektur und Fitness Functions

Neal Ford und seine Mitautoren fordern für eine evolutionäre Architektur, dass sie „geleitete, inkrementelle Veränderungen über mehrere Dimensionen hinweg unterstützt“ [1]. Das klingt abstrakt und sperrig, ist aber schnell aufgelöst, wenn wir die einzelnen Punkte mit verschiedenen Aspekten evolutionärer Softwareentwicklung verknüpfen, oder konkreter mit charakteristischen Eigenschaften von Microservices als einem möglichen Architekturstil.

Inkrementell bedeutet, dass sich Ergänzungen und Änderungen schrittweise einführen oder etablieren lassen. Kleinteiligkeit, eine möglichst lose Kopplung zwischen Teilen und technologische Freiheiten für die Teams, die sie bauen, begünstigt das. Experimente sind erwünscht, neue Technologien etwa leicht lokal ausprobiert, erfolgversprechende Ansätze setzen sich durch. Über mehrere Dimensionen hinweg heißt, diesen Erfolg an mehreren Faktoren festzumachen. Sie deklarieren verschiedene Ziele als entscheidend für Ihr Vorhaben. Oftmals beeinflussen diese sich wechselseitig; Sie müssen sie ausbalancieren. So ist eine leichte Portierbarkeit auf beliebigen Zielumgebungen nicht leicht mit hoher Performance unter einen Hut zu bringen. Es gilt, Kompromisse ...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang