Zum Inhalt springen
Versionen desselben Dokuments, sortiert nach absteigender Größe und Versionsnummer

Bewährte Verfahren der Versionskontrolle für eine effiziente Softwareentwicklung

Die Versionskontrolle in einem ALM-Tool hilft dabei, verschiedene Versionen von Softwarepaketen zu verwalten und nachzuverfolgen. Durch die Befolgung bewährter Verfahren zur Versionskontrolle können Ihre Entwickler gemeinsam an einem Projekt arbeiten und gleichzeitig wichtige Änderungen und Daten nachverfolgen.

Um die Vorteile der Versionskontrolle voll auszuschöpfen, müssen Projektmanager bewährte Verfahren befolgen, um ihre Softwareentwicklungsprozesse zu optimieren. Eine gut umgesetzte Versionskontrolle bietet Teams einen vollständigen Überblick über den langfristigen Änderungsverlauf sowie Funktionen für Verzweigungen, Zusammenführungen und die Nachverfolgung.

Dieser Beitrag befasst sich mit den Vorteilen der Versionskontrolle, bewährten Verfahren und den Tools, die sich am besten für leistungsstarke DevOps-Teams eignen.

1. Unterschiede zwischen Versionierung und Versionskontrolle

Im alltäglichen Sprachgebrauch werden diese beiden Begriffe oft synonym verwendet, was zu Verwirrung und Unklarheiten führt. In der Softwareentwicklung haben die beiden Begriffe jedoch unterschiedliche Bedeutungen:

Versionsverwaltung: Der umfassendere Prozess der Verwaltung von Versionen eines Softwareprodukts, von öffentlichen Veröffentlichungen bis hin zu detaillierten Änderungen auf Quellcodeebene an Anwendungen während der Entwicklung. Er geht über die reine Versionskontrolle hinaus und dient dazu, verschiedene Versionen und Änderungen im Zeitverlauf nachzuverfolgen.

Versionskontrolle: Der Schwerpunkt liegt auf der effizienten Verwaltung von Änderungen am Quellcode während der Softwareentwicklung. Dazu gehört der Einsatz bewährter Verfahren und Tools, um Änderungen am Quellcode einer Software zu verfolgen, zu dokumentieren und gemeinsam daran zu arbeiten.

2. Vorteile der Einführung einer Versionskontrolle

Warum sollte man Zeit in die Versionskontrolle von Software investieren? Weil sie die Codequalität verbessert, die Release-Prozesse beschleunigt und schnellere Iterationen ermöglicht, wodurch bisherige Kapazitäten übertroffen werden.

In der Regel programmieren Entwickler auf ihrer Workstation und übertragen ihren Code in ein Repository. Dort verwalten Versionskontrollsysteme wie Git Codeänderungen, Zweige und Zusammenführungen, um die Zusammenarbeit und Übersichtlichkeit zu gewährleisten.

Schematische Darstellung von Entwicklern an ihren Arbeitsplätzen, die Commits an das zentrale Repository senden und von dort zurückerhalten.
Gute Versionsverwaltungssysteme müssen viele verschiedene Codezweige gleichzeitig verwalten können.

Verbesserte Zusammenarbeit und Teameffizienz

Entwicklungsteams müssen den Überblick über Änderungen an der Codebasis behalten, darunter neue Funktionen, Features und Fehlerbehebungen. Angesichts immer kürzerer Entwicklungszyklen ist es von entscheidender Bedeutung, die Entwicklung des Codes im Blick zu behalten. Entwickler verfolgen die Versionen mithilfe verschiedener Versionsschemata. So hilft beispielsweise das Semantic Versioning (SemVer) Entwicklern dabei, Anwendungen, Plugins, Erweiterungen und verschiedene Softwareobjekte nachzuverfolgen.

Heutzutage wird Code auf verschiedenen Servern in der Cloud aktualisiert. Auf Plattformen wie AWS hilft die Versionsverwaltung Entwicklern dabei, den Überblick über mehrere Varianten eines Objekts in einem einzigen Speicher-Bucket zu behalten. Bei der Entwicklung von APIs trägt die Versionsverwaltung dazu bei, Übergänge reibungslos zu gestalten, Abwärtskompatibilität zu gewährleisten und Änderungen an einer API transparent zu verwalten sowie diese Änderungen den Nutzern mitzuteilen.

Die Versionskontrolle hilft Teams zudem dabei, Konflikte zu lösen und zu vermeiden, selbst wenn mehrere Personen gleichzeitig Änderungen vornehmen.

Verbesserte Codequalität und Stabilität

Die Versionskontrolle bietet Entwicklern ein Sicherheitsnetz, da sie damit Änderungen am Code im Zeitverlauf einsehen und verwalten können. Sollte eine Version einen Fehler enthalten, können Entwickler die Uhr zurückdrehen und einen früheren Code-Stand wiederherstellen. Dies führt zu stabilerem und qualitativ hochwertigerem Code. Git ist die beliebteste Versionskontrollsoftware für Entwickler.

Rückverfolgbarkeit und Rechenschaftspflicht.

Die Versionskontrolle unterstützt die Rückverfolgbarkeit, indem sie alle Änderungen am Quellcode während des Entwicklungsprozesses sowie die Reihenfolge, in der diese Änderungen vorgenommen wurden, nachverfolgt. Sie liefert den Teams historische Informationen zu allen Änderungen am Quellcode und gibt Aufschluss darüber, warum diese Änderungen an der Codebasis vorgenommen wurden. Diese Nachverfolgung hilft den Teams, zusammenzuarbeiten und termingerecht zu liefern.

Vor der Auslieferung müssen Teams jedoch sicherstellen, dass alle für ein System definierten Anforderungen getestet wurden. Eine Anforderungsrückverfolgungsmatrix (RTM) hilft Entwicklern dabei, nachzuverfolgen, ob ihr Code die ursprünglichen Geschäftsziele erfüllt. RTMs können Teams zudem dabei unterstützen, Testskripte zu erstellen, um den Code vor der Auslieferung zu validieren.

Eine horizontale Rückverfolgbarkeitsmatrix in „Modern Requirements4DevOps“
Modern Requirements4DevOps bietet Teams zwei verschiedene Optionen für Rückverfolgbarkeitsmatrizen. Quelle: Verbessern Sie die Projektqualität mit einer Anforderungsrückverfolgbarkeitsmatrix! (modernrequirements.com)

3. Bewährte Verfahren für die Versionskontrolle

Angesichts der vielen Vorteile, die die Versionskontrolle Teams bietet, ist es notwendig, bestimmte Vorgehensweisen anzuwenden, um diese Vorteile optimal zu nutzen. Die meisten leistungsstarken Software- und DevOps-Teams halten sich an einige bewährte Verfahren der Versionskontrolle, darunter:

Versionsnummern

Versionsnummern helfen Teams dabei, den Überblick darüber zu behalten, an welcher Version der Software oder Hardware sie gerade arbeiten oder welche sie veröffentlichen wollen. Sie ermöglichen es, verschiedene Softwareversionen eindeutig zu identifizieren, sodass Teams effektiv kommunizieren und zusammenarbeiten können.

Bei der Versionsnummerierung gibt es verschiedene Konventionen, darunter das Semantic Versioning, das dem Format „Major.Minor.Patch“ folgt. Wenn Sie also im Rahmen Ihres Softwareentwicklungszyklus den dritten Bugfix der vierten Minor-Revision von Version 6 veröffentlichen, handelt es sich um die Version 4.7.6. 6.4.3?

Der Aufbau des semantischen Versionsformats „major.minor.patch“. Die Version lautet 6.4.3
Der Aufbau des semantischen Versionsformats „major.minor.patch“. Die Version lautet 6.4.3

Zentrales Repository zur Verwaltung und Speicherung

Über verschiedene Bereiche verstreute Codefragmente sind ein Rezept für eine Katastrophe. Daher sollten Teams ein zentrales Repository nutzen, um Code an einem Ort zu verwalten und zu speichern. Repos erleichtern Teams die Zusammenarbeit und helfen dabei, den Überblick über Änderungen zu behalten. Ein Versionskontrollsystem wie Git oder Subversion unterstützt Teams dabei, Codezweige im zentralen Repository zu speichern, zu verfolgen und zu verwalten sowie zusammenzuführen.

Strategien für Verzweigungen und Zusammenführungen bei der parallelen Versionsentwicklung

In den meisten komplexen Organisationen und Softwareprojekten arbeiten Entwickler gleichzeitig an verschiedenen Versionen des Codes. In solchen Situationen helfen Verzweigungs- und Zusammenführungsstrategien den Teams, gleichzeitig an diesen Versionen zu arbeiten, ohne sich gegenseitig zu behindern oder die Integrität des Codes zu beeinträchtigen.

Mit effektiven Strategien kann ein Team gleichzeitig an neuen Funktionen, Fehlerbehebungen, Experimenten und Integrationen arbeiten, ohne dass es dabei zu Konflikten kommt. Außerdem können Änderungen und Probleme isoliert werden, ohne das Live-Produkt zu beeinträchtigen. Sobald die Arbeit am Zweig abgeschlossen ist, können die Entwickler die Änderungen wieder in den Hauptzweig zusammenführen.

Ein detailliertes Diagramm verschiedener Codeblöcke und Verzweigungen, dargestellt als farbige Knoten.
Eine einzelne Produktionsversion kann viele verschiedene Zweige, Änderungen, Fehlerbehebungen und vieles mehr enthalten.

Zu den gängigen Verzweigungsstrategien gehören Feature-Branching, Release-Branching und Gitflow.

Gute Dokumentation und Commit-Tags/-Meldungen

Angesichts umfangreicher Codebasen und Millionen von Codezeilen ist eine gute Dokumentation entscheidend, damit Entwickler jederzeit den Überblick über ihre Softwareentwicklungsaufgaben behalten können. Laut GitHub tragen gut dokumentierte Codebasen dazu bei, die Produktivität von Entwicklern um 55 % zu steigern. Weitere Vorteile sind mehr Sicherheit, Zeitersparnis und eine standardisierte Kommunikation.

Darüber hinaus vermittelt eine umfassende Anforderungsdokumentation die Projektstruktur, Änderungen und die Zusammenhänge zwischen den Arbeitsabläufen. Insgesamt können Teams so effizienter zusammenarbeiten, Code überprüfen und letztendlich schneller veröffentlichen.

Benutzeroberfläche von „Smart Docs by Modern Requirements“, die die Formatierung und Verknüpfung von Anforderungen veranschaulicht.
Smart Docs hilft Teams dabei, komplexe Anforderungen an die Softwareentwicklung klar zu dokumentieren.

Schließlich ist die Einhaltung bewährter Verfahren für klare und prägnante Commit-Meldungen ein wichtiger Bestandteil einer guten Versionsverwaltung. So sollten Entwickler beispielsweise kurze und aussagekräftige Betreffzeilen verwenden, mit einem großgeschriebenen Verb beginnen und die Zeilenlänge auf 72 Zeichen beschränken.

Codeausschnitt einer Commit-Meldung, die den Best Practices für die Versionskontrolle entspricht.
Codeausschnitt mit einer prägnanten Commit-Meldung.

Sicherheit und geistiges Eigentum

Jede Software, die Ihr Unternehmen entwickelt, ist geistiges Eigentum, das potenziell Millionen wert ist, ebenso wie Produktdesigns, Dokumentationen und Geschäftsunterlagen. Die Verfahren Ihrer Organisation zur Versionskontrolle stellen ebenfalls eine Schwachstelle dar, die Sie durch folgende Maßnahmen beheben sollten:

  • Sicherung und Ausfallsicherung: Bei Hardwareausfällen oder anderen Notfällen ist es wichtig, Sicherungskopien zu erstellen und einen Ausfallsicherungsmechanismus für Ihre Versionskontrollsysteme einzurichten.

  • Zugriffskontrolle: Definieren Sie Benutzerrollen und Berechtigungen auf der Grundlage Ihrer Vertrauenshierarchie, um unbefugten Zugriff auf geschützten Code zu verhindern.

    Anfang 2019 wurden in einer Webanwendung der NASA, die JIRA Server nutzt, versehentlich sensible Informationen wie personenbezogene Daten von Mitarbeitern und Projektinformationen offengelegt. Ein Ingenieur führte dies auf fehlerhafte Berechtigungseinstellungen zurück.
Screenshot eines Tweets von Avinash Jain, in dem er mitteilt, dass er eine Sicherheitslücke entdeckt hat.
Die Nichtbeachtung bewährter Verfahren der Versionskontrolle, wie beispielsweise korrekter Zugriffsrechte, kann selbst für Unternehmen mit höchsten Sicherheitsanforderungen nachteilig sein.
  • Transparenz der Aktivitäten: Durch die Verfolgung der Benutzeraktivitäten in Ihrem Versionskontrollsystem können Sie verdächtiges Verhalten und potenzielle Sicherheitsvorfälle erkennen.

4. Folgen einer schlechten Versionsverwaltung

Eine mangelhafte Versionsverwaltung kann buchstäblich Millionen kosten. Im Jahr 2012 war die Knight Capital Group mit durchschnittlich mehr als 3,3 Milliarden Transaktionen pro Tag das größte US-amerikanische Aktienhandelsunternehmen. Ein Teil ihres Handels wurde über automatisierte Software abgewickelt.

Im August 2012 führten sie manuell eine neue Komponente im Zusammenhang mit dem Retail Liquidity Program ein. Der für die manuelle Bereitstellung zuständige Techniker versäumte es jedoch versehentlich, den neuen Code auf einen Server zu kopieren, sodass dort stattdessen der alte Code verblieb. Knight verfügte weder über einen zweiten Techniker noch über ein Versionsverwaltungssystem oder schriftliche Verfahren für Code-Reviews.

Der fehlerhafte Code führte zur Auslösung eines ruhenden Algorithmus namens „Power Peg“, der einen Kaufrausch auslöste und innerhalb einer Stunde Aktien im Wert von 7 Milliarden Dollar erwarb. Knight Capital konnte die unbeabsichtigten Transaktionen nicht bezahlen und verlor 440 Millionen Dollar.

Eine mangelhafte Versionskontrolle führte dazu, dass der Aktienkurs der Knight Capital Group innerhalb kurzer Zeit drastisch einbrach.

Zu den Maßnahmen, die Knight Capital hätte ergreifen sollen, gehörten bewährte Verfahren der Versionskontrolle und Softwareentwicklungsansätze wie DevOps. Ein Versionsverwaltungssystem hätte Änderungen nachverfolgen und dem Techniker dabei helfen können, überflüssigen Code zu entfernen. Eine Rollback-Funktion, die eine Rückkehr zu einer früheren stabilen Version der Software ermöglicht hätte, hätte ebenfalls dazu beigetragen, den unkontrollierten Handel zu stoppen.

5. Bewährte Verfahren und die richtigen Werkzeuge

Der Vorfall bei der Knight Capital Group hat gezeigt, wie katastrophale Folgen eine mangelhafte Versionskontrolle für ein Unternehmen haben kann. Glücklicherweise haben viele Unternehmen seitdem gelernt, bewährte Verfahren wie die oben beschriebenen einzuführen.

Ein weiterer entscheidender Aspekt der Versionskontrolle sind die Ihnen zur Verfügung stehenden Tools: moderne Tools für das Versions- und Variantenmanagement in Verbindung mit einer voll ausgestatteten Software für das Anwendungslebenszyklusmanagement.

Durch die Kombination dieser beiden Elemente können Ihre Softwareentwicklungsteams zusammenarbeiten, Änderungen nachverfolgen und die Qualität sowie die Stabilität des Codes sicherstellen. Hervorragende Produkte sorgen für zufriedene Kunden und höhere Umsätze für Ihr Unternehmen.


Erzielen Sie noch heute optimale Ergebnisse im Anforderungsmanagement!

New MR Logo cropped
Products
New MR Logo cropped

Moderne Anforderungen für DevOps

End-to-end requirements management in Azure DevOps.

Copilot für DevOps

AI-powered assistance for DevOps workflows.

Agents4DevOps

Autonomous AI agents for DevOps execution.

KI-Synchronisierungsbrücke

Real-time data sync across tools and systems.

Warum moderne Anforderungen?

Designed to work natively within Azure DevOps, Modern Requirements extends the platform with powerful capabilities that help teams capture, manage, and validate requirements more effectively.