Evolutionäre Entwicklung

Evolutionäre Entwicklung bedeutet, dass sich Softwaresysteme und Dienste in Form einzelner Module und deren Versionen entwickeln – und nicht in Form allumfassender, monolithischer Releases (s.a. Agile, iterative Vorgehen und Architektur).

An die Stelle des klassischen Release, in Form eines inhaltlich und insbesondere technisch geschlossenen Gesamtpaketes (z.B. jar, war, ear, etc.), tritt eine “Liste” der Module bzw. der Modulversionen, die das entsprechende “Systemrelease” ausmachen.

Aus technischer Sicht ist ein System dabei einfach ein Verzeichnis (Repository), das alle Module in Form eindeutig benannter, einzelner Dateien enthält.

Kontinuierliche bzw. evolutionäre Entwicklung eines Systems findet statt, indem bedarfsgerecht neue Module oder neue Versionen bestehender Module eingeführt werden. Entscheidend dabei ist, dass dies im laufenden Betrieb erfolgen kann und kein Gesamtbuild oder Neuinstallation eines Systems mehr notwendig ist.

Die Umsetzung von Fehlerbehebungen und neuen oder geänderten Funktionalitäten ist dadurch nur noch vom individuellen Aufwand der jeweiligen Aufgabenstellung abhängig und kann so viel zuverlässiger geplant, besser skaliert und viel zeitnaher realisiert werden.  Weitere Details …