Entwicklung & Code
Software Testing: Wie KI die Anforderungen in Softwaretests verbessert
In dieser Episode sind Andreas Günther und Breno Pinheiro bei Richard Seidl zu Gast. Die drei sprechen über KI für bessere Anforderungen und eine tragfähige Testbasis. Sie zeigen, warum reiner Text nicht reicht und wie Modelle, Use Cases, Aktivitätsdiagramme und PlantUML Klarheit schaffen. KI unterstützt, wenn Teams Kontext, Scope und Begriffe sauber definieren und Feedback iterativ nutzen. Längere, wiederverwendbare Prompts statt Bauchgefühl. Der Blick reicht von Praxis in verschiedenen Branchen bis zu Agilität, Lernkultur und Verantwortung im Umgang mit Daten.
Wie die beiden Gäste betonen, weiß die KI umso mehr, was das Unternehmen überhaupt macht, je mehr gute Anforderungen als Trainingsbasis vorhanden sind.
Bei diesem Podcast dreht sich alles um Softwarequalität: Ob Testautomatisierung, Qualität in agilen Projekten, Testdaten oder Testteams – Richard Seidl und seine Gäste schauen sich Dinge an, die mehr Qualität in die Softwareentwicklung bringen.
Die aktuelle Ausgabe ist auch auf Richard Seidls Blog verfügbar: „Mit KI mehr Qualität bei Anforderungen – Andreas Günther, Breno Pinheiro“ und steht auf YouTube bereit.
(mai)
Entwicklung & Code
Aus Softwarefehlern lernen – Teil 9: Bugs entscheiden über Leben und Tod
In den bisherigen Kategorien ging es um viele Fehler, die wirtschaftliche Verluste oder Projektkatastrophen ausgelöst haben. Doch es gibt eine Klasse von Softwarefehlern, die weit schwerwiegendere Konsequenzen haben: sicherheitskritische Fehler, die Menschenleben kosten können.
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 9: Sicherheitskritische Systeme – Wenn Software über Leben und Tod entscheidet
Sicherheitskritische Systeme finden sich überall dort, wo Software unmittelbar mit physischen Prozessen interagiert – in der Luftfahrt, der Medizintechnik, der Automobilbranche, der Bahntechnik und in der Industrieautomation. Wenn hier ein Bug auftritt, sind die Folgen oft irreversibel.
Der Therac-25 war ein medizinischer Linearbeschleuniger, entwickelt zur Strahlentherapie von Krebspatientinnen und -patienten. Die Maschine war eine Weiterentwicklung der Vorgängermodelle Therac-6 und Therac-20, die noch stark auf Hardwaresicherungen und physische Interlocks setzten. Beim Therac-25 verlagerte der Hersteller viele dieser Sicherheitsmechanismen in die Software – eine Entscheidung, die sich als fatal herausstellen sollte.
Zwischen 1985 und 1987 kam es nämlich zu mindestens sechs dokumentierten Strahlenunfällen. Mehrere Patientinnen und Patienten erhielten extrem hohe Dosen, einige starben an den Folgen. Die Ursachenanalyse deckte damals eine Kombination aus Design- und Prozessfehlern auf:
- Race Conditions in der Steuerungssoftware: Wenn Anwenderinnen oder Anwender sehr schnell Eingaben tätigten, konnte die Maschine einen internen Statuswechsel doppelt interpretieren. Sie glaubte, der Schutzmechanismus sei aktiv, obwohl er es nicht war.
- Verlass auf Software-Interlocks: Früher sorgten physische Sicherungen dafür, dass Hochleistungsstrahlung nur bei korrekter Konfiguration ausgelöst wurde. Beim Therac-25 vertraute man darauf, dass die Software dies fehlerfrei prüft.
- Fehlende formale Spezifikationen und unabhängige Reviews: Weder gab es einen formalen Sicherheitsnachweis, noch waren die Testprozesse robust genug, um die Race Conditions unter realistischen Bedingungen zu entdecken. Die Software wurde von einem einzelnen Entwickler geschrieben, der auch gleichzeitig der einzige Tester war.
Das Therac-25-Desaster zeigt ein Muster, das sich in vielen sicherheitskritischen Vorfällen wiederholt:
Weiterlesen nach der Anzeige
- Technische Schulden durch Verlagerung auf Software: Hersteller ersetzen Hardware-Interlocks aus Kosten- oder Komfortgründen durch Softwarelogik – oft ohne gleichwertige Absicherung.
- Mangelndes Verständnis von Nebenläufigkeit und Timing: Sicherheitskritische Systeme müssen deterministisch arbeiten. Unerwartete Race Conditions sind hier besonders gefährlich.
- Fehlende unabhängige Prüfung: Wenn die Entwicklerinnen und Entwickler auch die Tester sind, bleiben viele Annahmen unentdeckt. Safety Engineering verlangt Redundanz in der Prüfung, nicht nur in der Hardware.
Gegenmaßnahmen sind auch in diesem Fall wieder verhältnismäßig einfach zu ergreifen:
- Defensive Architektur: Safety-kritische Zustände dürfen nicht von einem einzigen Signal oder Prozess abhängen. Hardware- und Software-Interlocks sollten sich ergänzen.
- Formale Spezifikationen und Verifikation: Wichtige Abläufe sollten mathematisch modelliert und verifiziert werden.
- Kompromisslose Post Mortems: Jede Abweichung ist zu dokumentieren und zu analysieren, mit konkreten Änderungen im Design.
- Lückenlose Telemetrie und Logging: Safety-Systeme müssen jederzeit nachvollziehbar machen, warum sie eine Aktion ausgeführt oder blockiert haben.
- Unabhängige Audits und Zertifizierungen: Branchen wie Medizintechnik (IEC 62304), Luftfahrt (DO-178C) und Automobil (ISO 26262) schreiben genau das vor – und das aus gutem Grund.
Safety-kritische Fehler entstehen selten durch schlampige Entwicklerinnen oder Entwickler. Häufiger liegt die Ursache in organisatorischem Druck: Termine, Kosten oder das Vertrauen darauf, dass „die Software es schon regelt“. Das Problem ist, dass Softwarefehler leise eskalieren, bis sie plötzlich sichtbar und irreversibel werden.
Der Therac-25 ist heute ein Lehrbuchbeispiel dafür, dass man bei sicherheitskritischen Systemen niemals auf formale Sicherheitsmechanismen verzichten darf. Jede vermeintliche Abkürzung in Richtung „rein softwarebasiert“ kann hier Menschenleben kosten.
(who)
Entwicklung & Code
PHP 8.5 bringt neue Sprachfeatures und mehr Lesbarkeit für Developer
Nach mehreren Release Candidates hat das PHP-Team die stabile Version 8.5 veröffentlicht. Die neue Hauptversion der Programmiersprache führt mehrere Sprachverbesserungen ein, die Lesbarkeit und Sicherheit erhöhen sollen. Neben Feinschliff an bestehenden Funktionen kommen einige neue Features hinzu.
Weiterlesen nach der Anzeige
URI-Erweiterung für saubere Adressverarbeitung
Mit der neuen URI-Extension hält erstmals eine native Unterstützung für strukturierte Arbeit mit URLs und URIs Einzug in PHP. Sie soll eine einfache und sichere Zerlegung, Manipulation und den Wiederaufbau von Adressen ermöglichen – ohne auf externe Libraries zurückgreifen zu müssen. Ziel ist, typische Fehlerquellen beim Parsen und Zusammenfügen von URLs zu vermeiden und den Code zugleich klarer und konsistenter zu machen.
(Bild: nuevoimg / 123rf.com)

Am 25. November findet die betterCode() PHP statt, eine Online-Konferenz von iX und dpunkt.verlag in Kooperation mit thePHP.cc. Interessierte können sich in Vorträgen unter anderem über PHP 8.5, den Caddy Server und FrankenPHP informieren. Tickets sind über die Konferenz-Website erhältlich.
Pipe Operator: Datenflüsse lesbarer
Eine weitere zentrale Neuerung ist der Pipe Operator (|>), der funktionale Aufrufketten deutlich lesbarer macht. Statt verschachtelter Funktionsaufrufe lassen sich Ergebnisse nun Schritt für Schritt weiterreichen. Das sorgt für eine bessere Lesbarkeit von komplexen Datenflüssen.
Das Beispiel aus dem RFC soll dies verdeutlichen:
function getUsers(): array {
return [
new User('root', isAdmin: true),
new User('john.doe', isAdmin: false),
];
}
function isAdmin(User $user): bool {
return $user->isAdmin;
}
// This is the new syntax.
$numberOfAdmins = getUsers()
|> (fn ($list) => array_filter($list, isAdmin(...)))
|> count(...);
var_dump($numberOfAdmins); // int(1);
Clone With: Klonen mit gezielten Anpassungen
Weiterlesen nach der Anzeige
PHP 8.5 hat das neue Sprachfeature clone with zum Erzeugen leicht veränderter Objektkopien im Gepäck. Während bisher beim Klonen alle Eigenschaften übernommen und Entwicklerinnen und Entwickler Änderungen manuell vornehmen mussten, lassen sich nun gezielt einzelne Werte direkt beim Klonvorgang anpassen.
Folgendes Beispiel soll das Prinzip verdeutlichen:
readonly class Color
{
public function __construct(
public int $red,
public int $green,
public int $blue,
public int $alpha = 255,
) {}
public function withAlpha(int $alpha): self
{
return clone($this, [
'alpha' => $alpha,
]);
}
}
$blue = new Color(79, 91, 147);
$transparentBlue = $blue->withAlpha(128);
So ermöglicht clone with vor allem bei unveränderlichen Datenstrukturen eine elegantere und besser lesbare Syntax.
Feinere Kontrolle mit dem #[NoDiscard]-Attribut
Das neue Attribut #[\NoDiscard] unterstützt Entwicklerinnen und Entwickler beim Aufspüren potenzieller Logikfehler. Wird das Ergebnis einer mit #[\NoDiscard] markierten Funktion verworfen, gibt PHP künftig eine Warnung aus. So lassen sich versehentlich ignorierte Rückgabewerte schneller aufdecken, was die Codequalität erhöhen und unnötige Fehlersuche reduzieren soll.
Konstante Ausdrücke mit mehr Macht
Schließlich stärkt die Version auch PHPs Möglichkeiten zur Metaprogrammierung: Ab sofort lassen sich Closures, Casts und First-Class Callables in konstanten Ausdrücken verwenden. Diese Erweiterung öffnet die Tür für noch flexiblere Definitionen im Compile-Time-Kontext – beispielsweise beim Aufbau von Konfigurationsobjekten oder dynamischen Standardwerten.
Weitere Informationen zum Release finden sich bei php.net sowie im Changelog.
(mdo)
Entwicklung & Code
Angular 21 vollzieht den Abschied von zone.js
Angular 21 ist erschienen. Die neue Hauptversion des Webframeworks bietet experimentelle Signal Forms, eine Developer-Preview für Angular Aria für barrierefreie Headless-Komponenten und weitere Neuerungen. Die Bibliothek zone.js ist zugunsten der Zoneless Change Detection in neuen Angular-Anwendungen nicht mehr enthalten.
Weiterlesen nach der Anzeige
(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.
Barrierefreie Komponenten dank Angular Aria
Als Developer-Preview ist Angular Aria enthalten. Diese Bibliothek für gängige UI-Pattern legt den Fokus auf Accessibility – für barrierefreie Headless-Komponenten gemäß der Webstandard-Suite WAI-ARIA (Web Accessibility Initiative – Accessible Rich Internet Applications) des World Wide Web Consortium (W3C).
Derzeit umfasst Angular Aria ein Set aus acht UI-Pattern – Accordion, Combobox, Grid, Listbox, Menu, Tabs, Toolbar und Tree – mit 13 Komponenten. Diese sind nicht gestylt und lassen sich nach Belieben mit eigenen Styles versehen.
Angular Aria lässt sich mit npm i @angular/aria installieren. Für dieses neue Feature steht ein Guide bereit, der Codebeispiele für alle Komponenten, Skins zum Ausprobieren und weitere Informationen enthält.
Experimentelle Signal Forms
Weiterlesen nach der Anzeige
Angular-Entwickler können nun Signal Forms ausprobieren, eine experimentelle Bibliothek für das Verwalten von Form-State auf Basis der reaktiven Signals. Sie soll sowohl eine gute Developer Experience als auch vollständige Typsicherheit für den Zugriff auf Formularfelder ermöglichen und zentraler, Schema-basierter Validationslogik folgen.
Für den Einsatz der experimentellen Signal Forms halten der entsprechende Guide und die Dokumentation alle Details bereit.
Abschied von zone.js und Begrüßung von Vitest
Vitest ist in Angular 21 zum Standard-Test-Runner gewählt worden. Das gilt für neue Projekte, während die bisher genutzten Technologien Karma und Jasmine weiterhin vollständigen Support durch das Angular-Team genießen, sodass Entwicklerinnen und Entwickler noch nicht zu Vitest migrieren müssen. Wer es allerdings testen möchte, kann die experimentelle Migration durchführen.
Und schließlich verabschiedet sich Angular 21 endgültig von zone.js – ein Prozess, der sich schon seit Angular 18 abzeichnete. Die eigenständige Bibliothek zone.js, die von Beginn an in Angular zum Einsatz kam, ist nun nicht mehr standardmäßig enthalten. Neue Angular-Anwendungen nutzen demnach das Zoneless-Verfahren, während für bestehende Anwendungen eine Migrationsanleitung zur Verfügung steht.
Die Zoneless Change Detection bietet laut dem Angular-Team zahlreiche Vorteile: verbesserte Core Web Vitals, natives async/await, Ökosystem-Kompatibilität, verringerte Bundle-Größe, vereinfachtes Debugging und eine verbesserte Kontrolle. Dennoch habe zone.js eine wichtige Rolle bei der Gestaltung von Angular gespielt, hebt das Entwicklungsteam hervor.
Weitere Informationen zu den Updates in Angular 21 hält der Angular-Blog bereit.
(mai)
-
UX/UI & Webdesignvor 3 MonatenAdobe Firefly Boards › PAGE online
-
UX/UI & Webdesignvor 1 MonatIllustrierte Reise nach New York City › PAGE online
-
Apps & Mobile Entwicklungvor 3 MonatenGalaxy Tab S10 Lite: Günstiger Einstieg in Samsungs Premium-Tablets
-
Datenschutz & Sicherheitvor 3 MonatenHarte Zeiten für den demokratischen Rechtsstaat
-
Datenschutz & Sicherheitvor 2 MonatenJetzt patchen! Erneut Attacken auf SonicWall-Firewalls beobachtet
-
Online Marketing & SEOvor 3 Monaten„Buongiorno Brad“: Warum Brad Pitt für seinen Werbejob bei De’Longhi Italienisch büffeln muss
-
Online Marketing & SEOvor 3 MonatenCreator und Communities: Das plant der neue Threads-Chef
-
Entwicklung & Codevor 3 MonatenEventSourcingDB 1.1 bietet flexiblere Konsistenzsteuerung und signierte Events
