Zum Inhalt springen

Glossar · B

Breaking Change

Ein Breaking Change ist eine Änderung in einer Software, die bestehende Funktionen oder Schnittstellen bricht.

Definition

Ein Breaking Change bezeichnet eine Änderung in einer Software, die bestehende Funktionen, Schnittstellen oder Verhaltensweisen so beeinflusst, dass sie mit vorherigen Versionen nicht mehr kompatibel sind. Solche Änderungen führen dazu, dass bestehender Code, der auf der älteren Version basiert, nach dem Update nicht mehr korrekt funktioniert oder sogar fehlschlägt. Der Begriff wird vor allem in der Softwareentwicklung und bei der Pflege von APIs verwendet.

Breaking Changes können verschiedene Formen annehmen, etwa das Entfernen von Funktionen, das Ändern von Parametern in einer Programmierschnittstelle oder das Verändern von Datenformaten. Im Gegensatz zu sogenannten Backward-Compatible Changes, die abwärtskompatibel sind, erfordern Breaking Changes oft Anpassungen auf Seiten der Nutzer oder Entwickler, um die Software weiterhin nutzen zu können.

Was bedeutet das für Ihr Unternehmen?

Breaking Changes sind der Hauptgrund, warum große Versionssprünge bei Frameworks, Plugins oder Schnittstellen Geld kosten: Bestehender Code muss angepasst und neu getestet werden. Wer Updates lange aufschiebt, sammelt mehrere solcher Änderungen auf einmal an und macht das Upgrade zum Projekt. Bieten Sie selbst eine Schnittstelle für Partner an, sollten Sie Änderungen mit Vorlauf ankündigen und die alte Version eine Zeit lang parallel weiterbetreiben.

Hintergrund und Bedeutung

Der Begriff Breaking Change hat insbesondere mit der Versionierung von Software zu tun. Semantic Versioning (SemVer), ein weit verbreiteter Standard zur Versionsnummerierung, definiert Breaking Changes als Grund für eine Erhöhung der Hauptversionsnummer. Dies signalisiert den Nutzern, dass eine neue Version nicht ohne Anpassungen verwendet werden kann.

Breaking Changes sind ein wichtiges Thema im Software-Lifecycle-Management, da sie die Wartbarkeit und Stabilität von Anwendungen beeinflussen. Entwickler und Unternehmen müssen diese Änderungen sorgfältig planen und kommunizieren, um negative Auswirkungen auf Nutzer und abhängige Systeme zu vermeiden. In Open-Source-Projekten und bei APIs sind klare Richtlinien für Breaking Changes üblich, um die Zusammenarbeit zu erleichtern.

Arten von Breaking Changes

Typische Beispiele für Breaking Changes sind das Entfernen von Funktionen oder Methoden, das Ändern von Funktionssignaturen oder das Verändern von Rückgabewerten. Auch Änderungen an Datenformaten oder Protokollen, die nicht mehr mit älteren Versionen kompatibel sind, zählen dazu.

Darüber hinaus können Breaking Changes auch durch Änderungen im Verhalten der Software entstehen, etwa wenn eine Funktion nun andere Seiteneffekte hat oder Fehler anders behandelt werden. Solche Änderungen sind oft schwerer zu erkennen, da sie nicht unbedingt zu Kompilierfehlern führen, aber die Funktionsweise beeinträchtigen.

Umgang mit Breaking Changes

Um die Auswirkungen von Breaking Changes zu minimieren, setzen viele Projekte auf dokumentierte Migrationspfade und ausführliche Release Notes. So können Entwickler erkennen, welche Anpassungen notwendig sind, um die neue Version zu nutzen.

Zudem werden häufig Mechanismen wie Deprecation Policies eingesetzt, bei denen Funktionen zunächst als veraltet markiert werden, bevor sie entfernt werden. Dies gibt den Nutzern Zeit, ihre Anwendungen anzupassen und erleichtert den Übergang zu neuen Versionen.

Abgrenzung zu verwandten Begriffen

Breaking Changes unterscheiden sich von sogenannten Non-Breaking Changes, die bestehende Funktionalitäten erweitern oder verbessern, ohne die Kompatibilität zu beeinträchtigen. Letztere ermöglichen es, neue Features zu nutzen, ohne bestehende Anwendungen anzupassen.

Ein verwandter Begriff ist das Refactoring, bei dem der Code intern verändert wird, ohne das externe Verhalten zu ändern. Refactorings sind per Definition keine Breaking Changes, da sie keine Kompatibilitätsprobleme verursachen. Im Gegensatz dazu führen Breaking Changes zu notwendigen Anpassungen auf Anwenderseite.