© DrHitch/Shutterstock.com
Softwarestabilität in der Industrie

3 Optimierungsmaßnahmen gezielt umsetzen


Im vorherigen Kapitel haben wir aufgezeigt, welche Vorbereitungen wir treffen können, um Änderungen am produktiv eingespielten Softwarestand erfolgreich durchführen zu können. Nun geht es an die Optimierungsmaßnahmen – denn es geht immer noch ein bisschen besser.

Bisher waren wir als Datensammler und -analysten unterwegs. Diese Daten haben wir über verschiedene Tools verdichtet, analysiert und visualisiert. Wir haben das gemacht, damit wir einen Trend haben, gegen den wir unsere Erweiterungen, Verbesserungen oder auch Fehlerbehebungen prüfen können. Weiterhin erhält man so eine gute Vorhersagemöglichkeit für die Stabilität, die der Grund für den Aufwand ist. In diesem Kapitel werden wir aufzeigen, mit welchen Methoden man Bugfixes, Changes, weitere Features, aber auch absolut dringende Hotfixes am besten in das System integriert. Für das bessere Verständnis wollen wir das anhand einer kleinen fiktiven Anwendung darstellen. Diese Anwendung verwaltet den Fuhrpark der SYNGO-Autovermietung (Abb. 3.1). Die Anwendungsfälle sind sehr einfach: Anzeige des kompletten Fuhrparks, Anzeige der Verfügbarkeit eines konkreten Fahrzeugs sowie Buchen eines Fahrzeugs für einen bestimmten Zeitraum.

image

Abbildung 3.1: Anwendung zur SYNGO-Autovermietung

Gehen wir nun davon aus, dass das Entwicklungsteam die Version 1.0 der Software nach den Vorgaben dieser Serie zur Produktion bereitgestellt hat, wobei Git als Versionsverwaltung verwendet wird und die Versionsnummer zum Release fix getaggt wurde. Dann wäre es nun an der Zeit, sich zu fragen, was für den Kunden die höchste Priorität hat. Das Wichtigste ist, die Stabilität der Software zu gewährleisten. Entscheidende Grundlagen hierfür sind die schon erwähnte Versionsverwaltung mit der sauberen Versionierung der verschiedenen Softwarestände sowie dem Vorhandensein von Tags für fertige Versionen. Unterstützung hierfür bietet z. B. das Maven-Release-Plug-in, um Releases immer nach dem gleichen Schema durchzuführen. In einem weiteren Schritt kann weiter automatisiert werden, indem diese Releases beispielsweise durch die CI-Umgebung getriggert werden. Das Wichtigste ist, die Stabilität der Software zu gewährleisten, in Abhängigkeit der notwendigen Dinge, die eigentlich zu tun sind: Grundlagen wie einheitliche Versionsverwaltung, saubere Versionierung und das Setzen von Tags durch Automatisierung der Deployments, beispielsweise über das Maven-Release-Plug-in.

Ein guter Ansatz zur Versionsverwaltung ist dabei die klassische Unterteilung in Major-, Minor- und Bugfix-Release-Nummern (z. B. 1.4.2 – Major 1, Minor 4, Bugfix 2). Dabei wird die Bugfix-Nummer immer dann hochgezählt, wenn eine neue Version der Software ausgeliefert wird, die nur Bugs fixt – gegebenenfalls sogar nur einen einzelnen. Die Minor-Nummer wird verändert, sobald neue Features oder Changes an bestehenden Features ausgerollt werden. Und die Major-Nummer wird letztlich nur dann erhöht, wenn sich die Kompatibilität von Schnittstellen ändert – also dann, wenn fremde Systeme ihre Schnittstellen entsprechend anpassen müssten. Solange die Major-Nummer gleich bleibt, kann man also davon ausgehen, dass die vorhandenen Schnittstellen kompatibel bleiben.

Deployment-Zeitpunkt

Für die Stabilität eines Betriebs ist es unumgänglich, sich auch Gedanken um den Zeitpunkt eines Deployments zu machen. Es gibt verschiedene Faktoren, die man hier berücksichtigen muss.

Zum einen die Branche, in der man sich befindet. Nehmen wir die Langzeitplanung. Viele Branchen haben Spitzenzeiten, in denen ihr Geschäft reibungslos lauf...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang