Ansichten eines Informatikers

Idempotenz

Hadmut
29.12.2023 16:11

Ein nur wenigen bekannter, aber sehr wichtiger und schöner Fachbegriff aus dem Reich der Informatik.

FOCUS: Mega-Panne bei Kartenzahlungen im Supermarkt! Prüfen Sie jetzt Ihre Kontoauszüge

Aufgrund eines Systemfehlers bei einem von Aldi Süd, Lidl, Rewe, Edeka, dm und Rossmann genutzten Zahlungsdienstleister ist es ausgerechnet am 23. Dezember zu doppelten Abbuchungen bei der Kartenzahlung mit Visa gekommen. Dies berichtet die „Lebensmittel Zeitung“ in ihrer aktuellen Ausgabe.

„Aufgrund einer technischen Störung in unserem System kam es am Samstag, den 23. Dezember, bei einem Teil der durchgeführten Visa-Transaktionen zu einer doppelten Verarbeitung“, erklärte der betroffene Anbieter Payone auf Anfrage.

Der Fachbegriff in der Informatik für Systeme, die so etwas auschließen, lautet „Idempotenz“. Von lateinisch idem und potent. Idem heißt „das gleiche“ und potent heißt „fähig“. Die Fähigkeit, das gleiche zu liefern. In der Mathematik ein Objekt oder eine Funktion, die angewandt auf sich selbst wieder sich selbst liefert, etwa f(x) = f(f(x)).

Ein Programm, ein Algorithmus, eine Funktion ist idempotent, wenn die mehrmalige Anwendung zum selben Ergebnis führt, wie die einmalige. Dass man also ein Programm beliebig oft laufen lassen kann, und zur Sicherheit oder im Fehlerabbruchfall beliebig wiederholen kann, ohne dass es zu (nachteiligen) Veränderungen im Vergleich zum einmaligen Programmlauf kommt. Wenn ich beispielsweise eine Pizza bestellte, dann das Telefonat abbricht, ich nochmal anrufe und sicher sein kann, dass ich nicht zwei bekomme, sondern nur sichergestellt ist, dass die Bestellung richtig ankam. Auch wenn ich zwanzigmal anrufe. Dass es also nicht schadet, ein Programm sicherheitshalber oder aus welchen Gründen auch immer mehrfach laufen zu lassen. Wenn ich ein Loch in die Wand bohren will, und es idempotent tue, dann bin ich nach dreißigmal Loch bohren sicher, dass da das gewollte Loch ist und nicht dreißig Löcher.

Das ist eine wichtige Eigenschaft mancher Systeme, Installationssysteme wie Puppet, Ansible und so weiter haben diese Eigenschaft. Es schadet nichts, auf einem installierten System die Installation noch einmal laufen zu lassen, es passiert dann einfach nichts weiter.

Der Begriff ist aber vielen Informatikern nicht geläufig, und ich könnte mich auch nicht erinnern, ihn im Studium gehört zu haben.

Gerade bei Zahlungssystemen wäre es wichtig, sie idempotent zu bauen. Dass es also nicht schadet, wenn Zahlungsvorgänge doppelt laufen, weil erkannt wird, dass sie schon ausgeführt sind. Wenn also irgendwo irgendwas nicht funktioniert hat, könnte man alle Zahlungen eines Tages einfach nochmal laufen lassen, und es werden nur noch die ausgeführt, die nicht schon ausgeführt wurden, Zahlungen also nicht doppelt ausgeführt werden können.

Offenbar aber ist das Zahlungssystem wohl nicht idempotent.

Dafür habt Ihr jetzt aber einen richtig schönen, tollen und wichtigen Begriff aus der Informatik gelernt, den nicht viele Informatiker kennen.

Damit könnt Ihr in Besprechungen, Pflichtenheften, Anforderungen, Bewerbungsgesprächen (Blogartikeln?) und so weiter klotzig Eindruck machen, vor allem, wenn außer Euch im Raum keiner weiß, was es bedeutet, und das auch keiner zugeben will. Wenn Euch einer was andrehen will: „Ist Ihre Software denn auch idempotent?“ oder „Wir sind gegenüber dem Zeitplan etwas in Verzug, weil wir noch qualitätssichernd die Idempotenz hergestellt haben.“ Soll mal einer was dagegen sagen.

Vorsicht allerdings bei Anwesenheit von Feministinnen. Die verstehen das, wie immer, völlig falsch. Das gibt dann Ärger.