Entwicklung & Code
Aus Softwarefehlern lernen – Teil 4: Eine Patriot-Rakete verfehlt fatal ihr Ziel
Zeit ist eine der größten Illusionen in der Softwareentwicklung. Für viele Entwicklerinnen und Entwickler ist sie nur ein Zahlenwert – ein Datentyp wie int und long oder auch ein DateTime-Objekt. Doch in der Praxis ist Zeit komplex, unzuverlässig und voller Fallstricke. In jeder Anwendung, die mehr als ein paar Sekunden lebt oder mit der realen Welt interagiert, sind Zeitzonen, Sommerzeitumstellungen, Schaltsekunden, Uhren-Drift und Latenzen ein Thema. Wer das ignoriert, riskiert fatale Fehler.
Weiterlesen nach der Anzeige

Golo Roden ist Gründer und CTO von the native web GmbH. Er beschäftigt sich mit der Konzeption und Entwicklung von Web- und Cloud-Anwendungen sowie -APIs, mit einem Schwerpunkt auf Event-getriebenen und Service-basierten verteilten Architekturen. Sein Leitsatz lautet, dass Softwareentwicklung kein Selbstzweck ist, sondern immer einer zugrundeliegenden Fachlichkeit folgen muss.
Die Teile der Serie „Aus Softwarefehlern lernen“:
Muster 4: Zeit, Kalender und Geografie: Wenn die Uhr nicht das misst, was man denkt
Ein klassisches und tragisches Beispiel ist der Patriot-Raketenvorfall von 1991 während des Golfkriegs. Das Patriot-System war dafür gedacht, eingehende Scud-Raketen abzufangen. In Dhahran in Saudi-Arabien scheiterte die Abwehr jedoch, und die Rakete schlug in einer US-Kaserne ein: 28 Soldaten starben, viele weitere wurden verletzt.
Die Untersuchung ergab, dass das System eine akkumulierende Rundungsungenauigkeit hatte. Die interne Zeitmessung der Patriot war in Zehntelsekunden implementiert. Um aus diesem Wert auf Sekunden zu kommen, wurde ein Gleitkommawert mit endlicher Präzision genutzt. Über die Zeit summierte sich ein kleiner Fehler auf. Nach vielen Stunden Betriebsdauer war die berechnete Position der Scud-Rakete so weit verschoben, dass die Abfanglogik versagte.
Die Lehre: Zeit ist fehleranfällig und driftet, selbst wenn die Hardware perfekt funktioniert. Dieses Phänomen beschränkt sich nicht auf Militärtechnik. Ähnliche Effekte treten in Finanzsystemen, verteilten Datenbanken oder IoT-Geräten auf. Schon einfache Begebenheiten wie eine Sommerzeitumstellung können dazu führen, dass geplante Tasks doppelt oder gar nicht ausgeführt werden.
Besonders perfide sind Fehler, die erst bei längerer Betriebsdauer auftreten. Ein System, das im Labor wenige Stunden stabil läuft, kann nach Tagen oder Wochen in der Produktion plötzlich falsche Berechnungen durchführen. Hier greifen die normalen Teststrategien nicht, denn kaum ein Team führt komplette Langzeitsimulationen durch.
Typische Fehlerquellen rund um Zeit und Geografie sind:
Weiterlesen nach der Anzeige
- Systemzeit statt monotone Zeit: Viele Entwicklerinnen und Entwickler nutzen einfach die aktuelle Uhrzeit für Zeitdifferenzen. Verschiebt sich die Uhr (zum Beispiel durch NTP-Sync oder manuelle Korrektur), springen auch die Berechnungen.
- Fehlende Zeitzonenlogik: Ein Server in UTC, ein anderer in lokaler Zeit, eine Datenbank ohne Timezone-Feld – schon entstehen falsche Berechnungen bei Abrechnungen oder Deadlines.
- Sommerzeit und Schaltsekunden: Ein nächtlicher Batch-Job, der täglich um 2 Uhr läuft, kann plötzlich zweimal oder gar nicht laufen, wenn die Uhr umgestellt wird.
- Globale Verteilungen: Systeme, die um den Globus replizieren, müssen Latenzen und unterschiedliche lokale Zeiten berücksichtigen.
Was lässt sich aus diesen Erkenntnissen nun schließen, um diese Fehlerklasse in den Griff zu bekommen?
- Zeit als eigene Domäne behandeln: Den Unterschied zwischen der für Anwenderinnen und Anwender sichtbaren „Wandzeit“ und der „Monotonic Time“ für Berechnungen konsequent durchziehen.
- Monotone Uhren verwenden: Für Laufzeitmessungen oder Timeouts niemals die Systemuhr („wall clock“) nutzen. Moderne Sprachen und Frameworks bieten monotone Zeitquellen, die unabhängig von Zeitsprüngen sind.
- Explizite Zeitzonen: Timestamps immer in UTC speichern und Zeitzonen nur für die Anzeige oder Eingaben der Anwenderinnen und Anwender vorsehen.
- Langzeittests und Simulationen: Testumgebungen sollten Tage oder Wochen simulieren können, inklusive Uhrensprüngen. Das deckt akkumulierende Fehler und Probleme aufgrund von Uhrenumstellungen auf.
- Schutz vor akkumulativen Rundungen: Zeitdifferenzen mit hoher Präzision berechnen, interne Ticks in Ganzzahlen führen und Konvertierungen erst möglichst spät durchführen.
Der Patriot-Vorfall war sicherlich ein extremes Beispiel mit tragischem Ausgang. Aber die zugrunde liegende Erkenntnis betrifft jedes System, das Zeit berechnet oder über längere Zeiträume hinweg zuverlässig arbeiten muss: Zeit ist keine triviale Zahl. Wer sie wie eine gewöhnliche Variable behandelt, lädt Fehler ein. An dieser Stelle sei ergänzend auf das äußerst sehenswerte und lehrreiche Video The Problem with Time & Timezones von Tom Scott verwiesen.
Aus Softwarefehlern lernen – die Serie
Diese Artikelserie stellt neun typische Fehlerklassen vor, die in der Praxis immer wieder auftauchen – unabhängig von Branche oder Technologie. In jeder Kategorie wird die Serie ein konkretes Beispiel vorstellen, dessen Ursachen analysieren und daraus ableiten, was Softwareentwicklerinnen und Softwareentwickler langfristig lernen können.
Im nächsten Teil lesen Sie: Deployment, Konfiguration und Flags: Wenn ein Schalter Millionen kostet
(who)
Entwicklung & Code
Sulu 3.0: CMS mit neuem Content-Speicher und klarerer Architektur
Sulu 3.0 ist erschienen. Mit dem Release vollzieht das quelloffene Content-Management-System (CMS) laut Blogbeitrag eine größere technische Umstrukturierung. Statt auf das bislang genutzte PHPCR‑Repository setzt das Projekt künftig vollständig auf Doctrine ORM und JSON‑Felder – eine Entscheidung, die nicht nur die Performance heben, sondern auch die Einstiegshürde für Symfony‑Entwickler senken soll. Nach Angaben des Teams kamen rund 150.000 Zeilen Code neu hinzu, mehr als 265.000 wurden entfernt.
Weiterlesen nach der Anzeige
Das Open-Source-CMS Sulu basiert auf dem PHP-Framework Symfony und dient als Headless‑ oder klassisches CMS für komplexe, mehrsprachige Webprojekte. Es richtet sich vor allem an Entwicklerinnen und Entwickler, die flexible Inhaltsmodelle mit vertrauten Symfony‑Werkzeugen umsetzen wollen. Für Symfony sind kürzlich die Versionen 7.4 und 8.0 erschienen.
Von PHPCR zu Doctrine ORM
Mit der Abkehr vom speicherintensiven PHPCR führt Sulu ein neues Modell zur Ablage von Inhalten ein: Seiten, Artikel oder Snippets werden jetzt als reguläre Doctrine‑Entitäten mit JSON‑Spalten verwaltet. Damit greifen Developer direkt auf bekannte Tools und SQL‑Abfragen zurück, statt eine eigene Query‑Sprache lernen zu müssen.
Das System nutzt sogenannte Dimensionen, um Sprach‑, Veröffentlichungs‑ und Versionszustände abzubilden. So lassen sich nicht übersetzbare Felder in mehreren Sprachvarianten weiterverwenden – ein Ansatz, der die vorherige, tiefer verschachtelte Struktur ersetzt und sich offenbar leichter debuggen lässt.
Bessere Performance und Vereinfachungen
Nach Angaben des Teams bringt der neue Speicheransatz spürbare Leistungsgewinne. Content‑Strukturen lassen sich nun direkt in der Datenbank nachvollziehen, während Konfigurationsdaten weiterhin als XML im Repository bleiben.
Weiterlesen nach der Anzeige
Auch das Update der PHP-Bibliothek Flysystem auf Version 3 soll zur Vereinfachung der Handhabung von Mediendateien beitragen. Diese können künftig über eine einheitliche Schnittstelle auf unterschiedlichen Backends abgelegt werden, beispielsweise auf Amazon S3, Microsoft Azure, WebDAV oder Dropbox.
Entfall der Elasticsearch‑Pflicht für Artikel
Neben der Speicherarchitektur wurde das Artikel‑Bundle neu geschrieben. Es lässt sich nun ohne die Suchmaschine und das Analytic-Tool Elasticsearch betreiben, wodurch kleineren Projekten die Installation eines separaten Suchdienstes erspart bleiben soll. Für große Installationen bleibt die Option durch ein ergänzendes Bundle erhalten, das Elasticsearch wieder einbindet.
Ebenfalls neu ist SEAL, der Search Engine Abstraction Layer. Er bündelt Anbindungen an Suchsysteme wie Loupe, Meilisearch, Solr oder Elasticsearch hinter einer gemeinsamen API. Standardmäßig kommt Loupe zum Einsatz – eine SQLite‑basierte, PHP‑interne Lösung, die für mittlere Datenmengen ausreichend schnell arbeitet.
Migration und Unterstützung
Sulu liefert ein eigenes Tool, um vorhandene PHPCR‑Daten zu konvertieren. Das Migration‑Bundle überführt Seiten, Artikel, Snippets und URLs in die neue Speicherstruktur und protokolliert detailliert, wo gegebenenfalls Nacharbeit nötig ist.
Wer die Umstellung nicht allein durchführen möchte, kann laut Entwicklerteam auf Community‑Hilfe via Slack und GitHub oder auf professionelle Unterstützung zurückgreifen. Weitere Informationen zur Hilfe sowie zum Release finden sich im Blogbeitrag.
Weiterer Fahrplan
Mit Version 3.0 endet die Pflege für Sulu 1.6, während Sulu 2.6 als LTS-Version (Long-term Support) erhalten bleibt. Die neue Architektur soll künftige Funktionen erleichtern und das CMS langfristig wartbarer machen. Näheres zum Release und zum CMS auch auf GitHub.
(mdo)
Entwicklung & Code
Drupal Canvas: Visueller Page Builder für Drupal veröffentlicht
Drupal hat mit Canvas einen visuellen Page Builder veröffentlicht, der die Erstellung individueller Websites ohne umfangreiche Programmierkenntnisse ermöglichen soll. Das Werkzeug richtet sich an Site-Builder und Content-Teams, die bisher zwischen vorgefertigten Templates und aufwendiger individueller Entwicklung wählen mussten.
Weiterlesen nach der Anzeige
Weniger komplizierte Technik für Anwender
Als Open-Source-CMS kommt Drupal zwar bei vielen Organisationen zum Einsatz, die Flexibilität des Systems erforderte jedoch bislang einiges an technischem Know-how. Wie Produktleiter Lauri Timmanee im Drupal-Blog erklärt, existiere in Drupal ein Trade-off: „Entweder man ist gezwungen, eine Art Cookie-Cutter-Website zu erstellen, oder man muss komplexen Code schreiben. Wir wollen diesen Trade-off aufbrechen, indem wir bessere Werkzeuge bereitstellen, damit man tatsächlich Websites erstellen kann, die auf die eigene Marke zugeschnitten sind, ohne komplexen Code kennen zu müssen.“
Drupal Canvas 1.0 basiert auf einem React-Frontend, das mit den Core-APIs von Drupal integriert ist. Die Hauptfunktionen umfassen komponentenbasiertes visuelles Page Building mit einem Drag-and-Drop-Interface, In-Browser-Code-Komponenten zum Hinzufügen neuer Bausteine sowie die Option, mehrere Seiten vor der Veröffentlichung zu erstellen und mit mehrstufigem Undo in der Vorschau zu betrachten. Das System soll Entwicklern mehr Zeit für tiefgreifende technische Arbeiten verschaffen, während nicht-technische Nutzer eigenständiger arbeiten können.
Canvas ist als Community-getriebenes Projekt angelegt, laut Drupal-Roadmap sollen künftig möglichst alle Module im kommenden Drupal CMS 2.0 mit Canvas kompatibel sein. Die Entwickler stellen eine Demo-Installation auf GitHub bereit und sammeln Feedback über den dedizierten Slack-Channel #drupal-canvas. Das Projekt positioniert sich damit in Konkurrenz zu etablierten Page Buildern wie WordPress Gutenberg oder Elementor, setzt aber auf die Stärken von Drupal in Enterprise-Umgebungen.
Ausblick auf Drupal CMS 2.0
Drupal CMS ist eine vorkonfigurierte Distribution auf Basis von Drupal Core, die für schnelle Website-Erstellung mit vorgefertigten Modulen und Workflows optimiert ist, während Drupal Core die minimale, flexible Grundlage für Entwickler bietet. Inzwischen steht Drupal CMS kurz vor der Veröffentlichung der Version 2.0, die laut mehreren Drupal-Experten einen großen Entwicklungssprung für Webentwickler und Nutzer bringen soll. Die neue Generation der Software soll eine verbesserte Performance, modernisierte Benutzeroberfläche und vereinfachte Integrationsmöglichkeiten für KI-gestützte Tools bieten.
Weiterlesen nach der Anzeige
Neben den technischen Verbesserungen soll Drupal CMS 2.0 besonderen Wert auf Barrierefreiheit, Sicherheit und modulare Erweiterbarkeit legen. Durch ein überarbeitetes Framework und optimierte Workflows sollen Entwickler Projekte schneller umsetzen können, während Redakteure von einer klareren Struktur und KI-gestützten Funktionen wie Content-Generierung und SEO-Optimierung profitieren sollen. Das offizielle Release ist aktuell für das erste Quartal 2026 anvisiert, ursprünglich war es für den Oktober 2025 geplant.
(fo)
Entwicklung & Code
Open-Source-Toolkit: KI-Unternehmen Anthropic übernimmt Bun
Bun wurde von Anthropic übernommen, wie der Bun-Erfinder Jarred Sumner auf dem Bun-Blog mitteilt. Das JavaScript-Toolkit, bestehend aus Runtime, Bundler, Test Runner und Paketmanager, soll die Infrastruktur für Anthropics KI-Coding-Technologien Claude Code und Claude Agent SDK sowie künftige KI-Coding-Projekte darstellen.
Weiterlesen nach der Anzeige
Bun bleibt Open Source
Laut Sumners Ausführungen wird Bun auch weiterhin Open Source und MIT-lizenziert bleiben. Auch soll das gleiche Team wie bisher an Bun arbeiten und die Entwicklung weiter öffentlich auf GitHub stattfinden. Die Roadmap soll den Fokus auf Performance und Node.js-Kompatibilität beibehalten – und darauf, Node.js als die standardmäßige serverseitige Runtime für JavaScript zu ersetzen.
(Bild: jaboy/123rf.com)

Die enterJS 2026 wird am 16. und 17. Juni in Mannheim stattfinden. Das Programm wird sich rund um JavaScript und TypeScript, Frameworks, Tools und Bibliotheken, Security, UX und mehr drehen. Vergünstigte Blind-Bird-Tickets sind bis zum Programmstart erhältlich.
Bun erschien erstmals im Juli 2022 und verfolgte bereits damals das Ziel, ein „Drop-in“-Ersatz für Node.js zu werden. Schon innerhalb der ersten Woche erzielte das Projekt 20.000 GitHub-Sterne, wie sich der Bun-Erfinder zurückerinnert. Inzwischen ist die Zahl auf über 83.000 Sterne angestiegen und präsentiert sich seit Version 1.3 als Full‑Stack-JavaScript-Runtime.
Übernahme durch Anthropic
Anthropics Claude Code, ein agentisches KI-Coding-Tool, läuft mit Bun, und bereits während der letzten Monate hat das Bun-Team die Issues des Claude-Code-Teams mit Priorität bearbeitet. Nach Gesprächen mit Anthropic folgt jetzt die Übernahme von Bun, das selbst keine Einnahmen hatte: Anthropic kauft Bun als essenzielle Infrastruktur für Claude Code, die Toolsammlung Claude Agent SDK und zukünftige KI-Coding-Produkte.
Weiterlesen nach der Anzeige
Wie Sumner betont, soll dieser Schritt Bun zu langfristiger Stabilität verhelfen. Außerdem will man nun zusätzliche Software Engineers einstellen. Laut Sumner passen die beiden Seiten auf natürliche Weise zusammen, denn: „Bun begann mit einem Fokus darauf, Developer schneller zu machen. KI-Coding-Tools tun etwas Ähnliches.“
(mai)
-
UX/UI & Webdesignvor 2 MonatenIllustrierte Reise nach New York City › PAGE online
-
Datenschutz & Sicherheitvor 3 MonatenJetzt patchen! Erneut Attacken auf SonicWall-Firewalls beobachtet
-
Künstliche Intelligenzvor 2 MonatenAus Softwarefehlern lernen – Teil 3: Eine Marssonde gerät außer Kontrolle
-
Künstliche Intelligenzvor 2 Monaten
Top 10: Die beste kabellose Überwachungskamera im Test
-
UX/UI & Webdesignvor 3 MonatenFake It Untlil You Make It? Trifft diese Kampagne den Nerv der Zeit? › PAGE online
-
UX/UI & Webdesignvor 2 MonatenSK Rapid Wien erneuert visuelle Identität
-
Entwicklung & Codevor 3 WochenKommandozeile adé: Praktische, grafische Git-Verwaltung für den Mac
-
Social Mediavor 3 MonatenSchluss mit FOMO im Social Media Marketing – Welche Trends und Features sind für Social Media Manager*innen wirklich relevant?
