conflict_strategies_blog_image

Blog | Conflict-Strategien am Beispiel Quiz-App

Von am 03.04.2025

In der Softwareentwicklung treten Konflikte häufig auf, insbesondere wenn mehrere Entwickler gleichzeitig an derselben Codebasis oder denselben Daten arbeiten. Um solche Konflikte effizient zu lösen, gibt es verschiedene Strategien. In diesem Beitrag betrachten wir gängige Konfliktstrategien anhand eines praktischen Beispiels: einer Quiz-App – diese wurde im Zuge des Ionic-Workshops im ersten Semester entwickelt.

Typische Konflikte in der Quiz-App

Stellen wir uns eine Quiz-App vor, bei der mehrere Personen gleichzeitig Fragen bearbeiten oder hinzufügen können. Ein typischer Konflikt kann auftreten, wenn zwei User gleichzeitig dieselbe Quizfrage ändern. Die Frage lautet beispielsweise ursprünglich:

„Was ist die Hauptstadt von Frankreich?“

  • Person A ändert die Frage in: „Was ist die Hauptstadt von Frankreich im Jahr 2024?“
  • Person B ändert die Frage in: „Welche europäische Hauptstadt hat den Eiffelturm?“

Wenn beide Änderungen gespeichert werden, kann ein Datenkonflikt entstehen. Um solche Probleme zu vermeiden oder zu lösen, gibt es verschiedene Strategien.

1. Last Write Wins (LWW)

Diese Strategie bedeutet, dass die zuletzt gespeicherte Änderung gewinnt und frühere Änderungen überschrieben werden. In unserem Beispiel würde die Änderung von Person B gespeichert werden, während die Änderung von Person A verloren geht.

Vorteil: Einfach zu implementieren und keine zusätzlichen Mechanismen erforderlich.

Nachteil: Datenverlust möglich, wenn wichtige Änderungen überschrieben werden. In kollaborativen Systemen kann dies problematisch sein, da ältere, aber möglicherweise relevantere Änderungen verloren gehen.

Diese Methode eignet sich vor allem für Systeme, in denen eine geringe Konfliktwahrscheinlichkeit besteht oder in denen Daten nicht kritisch sind.

2. Optimistic Concurrency Control (OCC)

Hierbei wird davon ausgegangen, dass Konflikte selten sind. Jede Änderung erhält eine Versionsnummer oder einen Zeitstempel. Wenn eine Änderung gespeichert wird, prüft das System, ob die ursprüngliche Version noch aktuell ist. Falls nicht, erhält der Nutzer eine Warnung und muss die Änderung manuell zusammenführen.

Vorteil: Nutzer behalten die Kontrolle über Änderungen, und konkurrierende Bearbeitungen können in vielen Fällen parallel erfolgen, ohne die Benutzererfahrung zu beeinträchtigen.

Nachteil: Erhöhter Aufwand für Nutzer, da manuelle Konfliktlösung erforderlich sein kann. Wenn viele Konflikte auftreten, kann dies die Benutzerfreundlichkeit stark beeinträchtigen.

OCC wird häufig in verteilten Systemen und datenbankbasierten Anwendungen eingesetzt, in denen das Risiko gleichzeitiger Änderungen gering ist.

3. Pessimistic Concurrency Control (PCC)

Bei dieser Strategie wird eine Sperre gesetzt, wenn eine Person eine Quizfrage bearbeitet. Andere Nutzer können die Frage erst ändern, wenn die Sperre aufgehoben wird.

Vorteil: Keine Konflikte, da nur eine Person gleichzeitig Änderungen vornehmen kann. Dies stellt sicher, dass Änderungen nicht überschrieben werden und führt zu einer hohen Datenintegrität.

Nachteil: Kann zu Wartezeiten führen, wenn ein Nutzer vergisst, die Sperre aufzuheben. Zudem kann es bei hoher Nutzerzahl zu Engpässen kommen.

Diese Strategie eignet sich für kritische Daten, beispielsweise bei Banktransaktionen oder Bestellvorgängen in E-Commerce-Systemen.

4. Automated Merge Strategies

Bei textbasierten Änderungen können automatische Merge-Algorithmen verwendet werden, um Änderungen zusammenzuführen. In unserem Beispiel könnte das System erkennen, dass Person A nur den Zeitbezug hinzugefügt hat, während Person B eine alternative Fragestellung vorschlägt. Falls möglich, könnten beide Änderungen kombiniert werden.

Vorteil: Reduziert manuelle Konfliktlösungen und verbessert die Kollaboration.

Nachteil: Funktioniert nicht immer zuverlässig, insbesondere bei stark abweichenden Änderungen oder semantischen Konflikten.

Automatisierte Merge-Algorithmen werden häufig in Versionskontrollsystemen wie Git eingesetzt.

5. User-Guided Merge

Hier erhält der Nutzer bei einem Konflikt eine Auswahl:

  • Eine der beiden Versionen übernehmen.
  • Änderungen manuell zusammenführen.

Vorteil: Nutzer haben volle Kontrolle über die endgültige Version und können bewusste Entscheidungen treffen.

Nachteil: Erfordert manuelle Eingriffe, was Zeit kostet und die Benutzererfahrung verschlechtern kann.

Diese Strategie wird oft bei Content-Management-Systemen oder kollaborativen Texteditoren genutzt, wo die inhaltliche Konsistenz der Daten besonders wichtig ist.

Fazit

In der Softwareentwicklung gibt es verschiedene Strategien zur Lösung von Konflikten, insbesondere bei gleichzeitigen Änderungen an einer gemeinsamen Ressource wie einer Quizfrage. Welche Strategie am besten geeignet ist, hängt vom Anwendungsfall ab:

  • Last Write Wins (LWW): Einfach und effizient, aber potenzieller Datenverlust.
  • Optimistic Concurrency Control (OCC): Gut für seltene Konflikte, aber benötigt Nutzerintervention.
  • Pessimistic Concurrency Control (PCC): Sicher, aber kann blockierend sein.
  • Automated Merge Strategies: Praktisch für kleine Änderungen, aber nicht immer zuverlässig.
  • User-Guided Merge: Maximale Kontrolle für den Nutzer, aber aufwendig.

Für unsere Quiz-App könnte eine Kombination aus Optimistic Concurrency Control und User-Guided Merge die beste Lösung sein, um sowohl Flexibilität als auch Konsistenz zu gewährleisten. In Szenarien mit hohem Schreibaufkommen und vielen gleichzeitigen Nutzern könnten automatische Merge-Strategien auch eine Lösung darstellen.

Beitrag kommentieren

(*) Pflichtfeld