Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Zum Abschnitt springen
Parasoft-Blog
Eingebettete Systeme begleiten uns schon seit Ewigkeiten. Lesen Sie weiter, um zu erfahren, was sie sind, einige Sicherheitsbedenken bei eingebetteten Systemen und wie angemessene Tests dazu beitragen können, sie sicher und geschützt zu machen.
Zum Abschnitt springen
Eingebettete Systeme sind die dedizierten Rechenzentren moderner Produkte und Infrastrukturen, die es Geräten ermöglichen, die physische Welt schnell und zuverlässig zu erfassen, zu verarbeiten und darauf zu reagieren.
Eingebettete Systeme sind spezialisierte Computersysteme, die für die Ausführung bestimmter Funktionen innerhalb eines größeren Produkts oder Systems entwickelt wurden. Sie bilden die verborgene Intelligenz hinter vielen Technologien, auf die wir täglich angewiesen sind – von Autos, Flugzeugen, Medizingeräten und Industrierobotern bis hin zu intelligenten Haushaltsgeräten, Telekommunikationsausrüstung und vernetzter Infrastruktur. Da sie häufig sicherheitskritisch sind, ist automatisiertes Testen eingebetteter Systeme unerlässlich.
Im Gegensatz zu Allzweckrechnern kombinieren eingebettete Systeme Hardware und Software für einen spezifischen Zweck. Sie arbeiten üblicherweise unter strengen Beschränkungen hinsichtlich Rechenleistung, Speicher, Energieverbrauch, Timing, Zuverlässigkeit, Sicherheit und Kosten.
Doch eingebettete Systeme befinden sich im Wandel. Moderne eingebettete Systeme sind zunehmend vernetzt, softwaredefiniert und intelligent. Künstliche Intelligenz (KI) und maschinelles Lernen (ML) verlagern Rechenprozesse von traditionellen Rechenzentren auf eingebettete und Edge-Geräte, während KI-gestützte Entwicklung die Art und Weise verändert, wie Ingenieure die darauf laufende Software erstellen, testen und verifizieren.
Eingebettete Systeme treiben Geräte in nahezu allen Branchen an. Sie sind keine optionalen Erweiterungen, sondern das operative Herzstück moderner Technologie. Hier einige Beispiele.
Eingebettete Systeme liefern die Intelligenz in Smartphones, Smart-TVs, Wearables, Haushaltsgeräten und Smart-Home-Geräten. Sie steuern Funktionen wie Stromverbrauch, drahtlose Kommunikation, Sensordatenverarbeitung, Displays und Benutzerinteraktion.
Zunehmend führen diese Geräte auch KI-Workloads lokal aus. Spracherkennung, Bildverarbeitung, Anomalieerkennung und andere KI-Funktionen können direkt auf eingebetteten oder Edge-Prozessoren ausgeführt werden, anstatt vollständig von der Cloud-Infrastruktur abhängig zu sein.
Moderne Fahrzeuge verfügen über umfangreiche Netzwerke elektronischer Steuergeräte (ECUs) und zunehmend leistungsfähige zentrale oder zonale Rechnerarchitekturen. Eingebettete Software steuert Bremsen, Lenkung, Batteriemanagement, Antriebsfunktionen, Airbags, Fahrerassistenzsysteme (ADAS), Konnektivität und viele weitere Fahrzeugfunktionen.
Da Fahrzeuge zunehmend softwaredefiniert und KI-fähig werden, unterstützt eingebettete Computertechnik auch die Wahrnehmung, Entscheidungsfindung, Fahrerüberwachung und immer ausgefeiltere automatisierte Fahrfunktionen.
Diese Systeme müssen unter anspruchsvollen Umwelt- und Sicherheitsbedingungen zuverlässig und oft in Echtzeit funktionieren.
Herzschrittmacher, Infusionspumpen, Patientenmonitore, Bildgebungsgeräte, chirurgische Systeme und andere medizinische Geräte sind auf eingebettete Software angewiesen, die präzise und zuverlässig sein muss.
Künstliche Intelligenz erweitert die Möglichkeiten der Medizintechnik durch Anwendungen wie Bildanalyse, Patientenüberwachung, Anomalieerkennung und Entscheidungsunterstützung. Je näher die Intelligenz an Patient und Gerät rückt, desto wichtiger wird die Zuverlässigkeit sowohl der KI-gestützten Funktionen als auch der zugehörigen konventionellen Software.
Eingebettete Systeme steuern Fabrikautomation, Robotik, Eisenbahnsignalanlagen, Avionik, Energieinfrastruktur und industrielle Steuerungssysteme.
Moderne Roboter sind ein besonders gutes Beispiel für die Weiterentwicklung eingebetteter Systeme. Sensoren, Echtzeit-Steuerungssoftware, KI-Wahrnehmungsmodelle, Bewegungsplanung, Vernetzung und Sicherheitsmechanismen können alle innerhalb desselben Systems zusammenarbeiten. Das Ergebnis ist eine Kombination aus traditioneller deterministischer eingebetteter Software und zunehmend komplexem, KI-gesteuertem Verhalten.
Was unterscheidet ein eingebettetes System von einem Allzweckrechner? In erster Linie sein Zweck und seine Betriebsbedingungen.
Eingebettete Systeme sind für die Ausführung spezifischer Funktionen konzipiert. Im Gegensatz zu einem Desktop-Computer, der Tausende von unabhängigen Anwendungen ausführen kann, ist ein eingebetteter Controller auf das vom Produkt geforderte Verhalten ausgelegt.
Ein Bremsregler muss beispielsweise kontinuierlich die Eingangssignale überwachen, die Steuerlogik ausführen, Fehler erkennen und Bremskomponenten innerhalb definierter Zeitvorgaben aktivieren.
Eingebettete Systeme arbeiten oft mit begrenzter Rechenleistung, Speicherkapazität, Datenspeicherung, Stromversorgung und Wärmekapazität. Ingenieure müssen die Softwarefunktionalität mit den Fähigkeiten und Kosten der zugrunde liegenden Hardware in Einklang bringen.
Diese Einschränkungen gewinnen besonders an Bedeutung, da KI-Workloads zunehmend auf eingebettete Prozessoren, GPUs, neuronale Verarbeitungseinheiten (NPUs) und andere spezialisierte Beschleuniger verlagert werden.
Viele eingebettete Systeme sind Echtzeitsysteme, das heißt, sie müssen innerhalb vorgegebener Fristen auf Ereignisse reagieren.
In sicherheitskritischen Umgebungen wie Fahrzeugbremsen, Medizingeräten, industriellen Steuerungssystemen oder Avionik kann selbst ein zu spätes Erzielen des korrekten Ergebnisses einen Systemausfall darstellen. Korrektheit hängt daher sowohl davon ab, was das System tut, als auch davon, wann es dies tut.
Eingebettete Produkte können über Jahre oder sogar Jahrzehnte kontinuierlich betrieben werden. Sie müssen sich vorhersagbar verhalten, Fehler tolerieren und unter Umwelt- und Betriebsbelastungen stabil bleiben.
Gleichzeitig führen Konnektivität und softwaredefinierte Architekturen dazu, dass Aktualisierungen nach der Bereitstellung immer häufiger vorkommen. Die Entwicklung eingebetteter Software muss sich daher nicht nur mit der Qualität der Erstveröffentlichung befassen, sondern auch damit, wie Systeme während ihrer gesamten Betriebsdauer gewartet, aktualisiert, verifiziert und gesichert werden.
Eingebettete Software interagiert direkt mit Sensoren, Aktoren, Motoren, Kommunikationsschnittstellen, Speichern, Prozessoren und spezialisierten Beschleunigern. Hardware und Software werden daher häufig gemeinsam entwickelt und optimiert.
Diese enge Verbindung zur physischen Welt ist einer der grundlegenden Unterschiede zwischen eingebetteter und traditioneller Unternehmenssoftware.
Die Architekturen eingebetteter Systeme variieren erheblich je nach Komplexität, Leistung, Sicherheit und Echtzeitanforderungen. Die Verwendung einer Mikrocontroller-Architektur ist charakteristisch für eingebettete Systeme.
Ein einfacher eingebetteter Mikrocontroller kann eine CPU, RAM, ROM oder Flash-Speicher, Eingabe-/Ausgabeschnittstellen, Sensoren, Aktoren, Kommunikationsschnittstellen und eine Mensch-Maschine-Schnittstelle enthalten.
Fortgeschrittenere Systeme können Mehrkernprozessoren, GPUs, NPUs, Hochgeschwindigkeitsnetzwerke, Virtualisierung, mehrere Betriebssysteme und KI/ML-Modelle integrieren.
Ein typisches eingebettetes System verbindet Sensoren, Aktoren, Kommunikationsschnittstellen und eine Mensch-Maschine-Schnittstelle (HMI) mit einem Controller, der Eingaben verarbeitet und mit der physikalischen Umgebung interagiert.
Im einfachsten Fall kann eine eingebettete Anwendung kontinuierlich in einer Schleife ausgeführt werden. Die Software liest Eingaben, verarbeitet Informationen, aktualisiert Ausgaben und wiederholt den Vorgang.
Eine verwandte Architektur ist der Regelkreis, in dem das System wiederholt einen physikalischen Zustand misst, wie z. B. Temperatur, Geschwindigkeit, Druck oder Position, diesen mit einem Sollwert vergleicht und einen Aktor entsprechend anpasst.
Diese Architekturen bieten Vorteile wie Determinismus, geringen Ressourcenverbrauch und einfache Implementierung. Allerdings wird ihre Skalierung mit zunehmender Parallelität, Kommunikation und Funktionalität schwieriger.
Interruptgesteuerte Systeme ermöglichen es, dass Hardwareereignisse Software-Routinen sofort auslösen, anstatt auf die Hauptanwendungsschleife zu warten.
Multitasking-Architekturen erweitern diesen Ansatz, indem sie es mehreren Software-Tasks ermöglichen, Prozessorressourcen mithilfe von Techniken wie prioritätsbasierter Planung, Zeitscheibenverfahren oder kooperativem Task-Switching gemeinsam zu nutzen.
Diese Architekturen werden häufig eingesetzt, wenn Systeme gleichzeitig Sensorverarbeitung, Kommunikation, Benutzerinteraktion, Steuerungsfunktionen und Fehlermanagement bewältigen müssen.
Anspruchsvollere eingebettete Systeme nutzen häufig ein Echtzeitbetriebssystem (RTOS) zur Bereitstellung von Scheduling, Inter-Task-Kommunikation, Timing-Diensten, Speicherverwaltung und Hardwareabstraktion.
Geschichtete Architekturen trennen Hardwaretreiber, Systemdienste, Middleware und Anwendungsfunktionalität zusätzlich. Dies verbessert Modularität, Portabilität, Testbarkeit und Wartbarkeit.
Moderne sicherheitskritische Systeme gehen möglicherweise noch einen Schritt weiter und nutzen Mehrkernprozessoren, Partitionierung, Virtualisierung, heterogenes Rechnen und spezialisierte KI-Beschleuniger, um immer komplexere Software auf leistungsstarken Rechenplattformen zu konsolidieren.
Die Auswahl der eingebetteten Hardware erfolgt unter Berücksichtigung technischer und geschäftlicher Anforderungen. Da Produkte millionenfach gefertigt werden, können selbst geringfügige Unterschiede bei Prozessor-, Speicher-, Leistungs- oder Komponentenkosten erhebliche wirtschaftliche Auswirkungen haben.
Typische Einschränkungen sind:
Diese Einschränkungen werden mit zunehmender Komplexität eingebetteter Software immer schwieriger zu bewältigen. KI-Workloads, fortschrittliche Sensorverarbeitung, Konnektivität, Cybersicherheit und softwaredefinierte Funktionalität können den Rechenbedarf drastisch erhöhen.
Daher reichen moderne eingebettete Systeme von kleinen Mikrocontrollern bis hin zu 64-Bit-Mehrkernprozessoren und heterogenen Systemen, die CPUs, GPUs und dedizierte KI-Beschleuniger kombinieren.
Software hat sich zu einer der wichtigsten Quellen für Differenzierung und Innovation bei eingebetteten Produkten entwickelt.
Eingebettete Software kann von einigen tausend Codezeilen, die auf einem Bare-Metal-Mikrocontroller laufen, bis hin zu Millionen von Zeilen reichen, die über Prozessoren, Betriebssysteme, Middleware, Anwendungen, Open-Source-Komponenten und KI-Modelle verteilt sind.
Kleine eingebettete Anwendungen laufen typischerweise auf Mikrocontrollern ohne formales Betriebssystem. Sie steuern möglicherweise ein einzelnes Teilsystem mit einer begrenzten Anzahl von Sensoren und Aktoren.
Ihre Einfachheit macht sie ressourceneffizient und hochgradig deterministisch.
Komplexere Anwendungen nutzen häufig kommerzielle oder Open-Source-RTOS oder Embedded Linux. Diese Umgebungen bieten Dienste für Multiprocessing, Multithreading, Netzwerktechnik, Hardwareabstraktion und Kommunikation.
Die Anwendungsgebiete reichen von industriellen Steuerungen und vernetzten Geräten bis hin zu sicherheitskritischen Systemen im Transportwesen und in der Medizintechnik.
Große eingebettete Systeme ähneln zunehmend komplexen verteilten Rechenumgebungen. Sie können Mehrkernprozessoren, Virtualisierung, Hochleistungsnetzwerke, große Software-Stacks und mehrere gleichzeitig laufende Anwendungen enthalten.
Softwaredefinierte Fahrzeuge, autonome Maschinen, Telekommunikationsinfrastruktur, fortschrittliche Robotik und Luft- und Raumfahrtsysteme zeigen, wie weit sich eingebettetes Rechnen vom traditionellen Mikrocontroller entfernt hat.
Eine der größten Veränderungen im Bereich eingebetteter Systeme ist die wachsende Bedeutung von KI. Diese Transformation hat zwei Dimensionen.
Dies eröffnet enorme Produktivitätsmöglichkeiten, stellt aber auch eine Herausforderung für die Überprüfung dar.
KI-generierter Code muss dieselben Anforderungen an Sicherheit, Zuverlässigkeit, Codierungsstandards und funktionale Korrektheit erfüllen wie von Menschen geschriebener Code. In regulierten Anwendungen müssen Entwickler zudem objektive Nachweise erbringen können, die belegen, dass die resultierende Software ausreichend verifiziert wurde.
KI kann die Entwicklung beschleunigen. Die Verifizierung muss Schritt halten.
Eingebettete Systeme interagieren häufig mit der physischen Welt. Daher können Fehler Folgen haben, die weit über einen Softwareabsturz hinausgehen.
Ein Defekt in einem Bremsregler, einem medizinischen Gerät, einem Industrieroboter, einem Eisenbahnsystem oder einem Flugsteuerungssystem kann zu Verletzungen, Todesfällen, Sachschäden oder erheblichen wirtschaftlichen Folgen führen.
Cybersicherheit schafft eine weitere Risikodimension.
Vernetzte eingebettete Geräte legen Kommunikationsschnittstellen, Softwarekomponenten, Aktualisierungsmechanismen und Lieferketten offen, die Angreifer potenziell ausnutzen können.
Aus diesem Grund müssen die Teams Sicherheit und Schutz während des gesamten Lebenszyklus eingebetteter Software berücksichtigen.
Je nach Branche und Anwendungsbereich müssen Organisationen möglicherweise Standards wie die folgenden einhalten:
Darüber hinaus müssen Organisationen, die KI-gestützte sicherheitskritische Systeme entwickeln, neben ihren etablierten Prozessen zur funktionalen Sicherheit auch die neu entstehenden KI-Sicherheitsstandards und -richtlinien berücksichtigen.
Sicherheit und Schutz können nicht am Ende der Entwicklung hinzugefügt werden. Sie erfordern eine systematische Überprüfung und Validierung während des gesamten Softwarelebenszyklus.
Zu den üblichen Verifizierungsaktivitäten gehören:
Die Automatisierung dieser Aktivitäten hilft den Entwicklungsteams, Fehler früher zu erkennen, die Softwarequalität kontinuierlich zu bewerten und die für Überprüfungen, Audits und Zertifizierungen erforderlichen Nachweise zu generieren.
Parasoft unterstützt Teams bei der Automatisierung von Tests und Verifizierungen eingebetteter Software in Entwicklungs-, CI/CD- und Compliance-Workflows.
Parasoft C/C++test kombiniert statische Analyse, Unit-Tests, strukturelle Codeabdeckung, Anforderungsrückverfolgbarkeit und Konformitätsberichte, um Teams bei der Entwicklung sichererer und zuverlässigerer C- und C++-Software zu unterstützen.
Parasoft C/C++test CT erweitert Continuous Testing in moderne CI/CD-Workflows und arbeitet mit bestehenden Unit-Testing-Frameworks wie GoogleTest zusammen, während es gleichzeitig strukturelle Abdeckung, Anforderungsrückverfolgbarkeit und Konformitätsnachweise bietet.
Parasoft DTP aggregiert Softwarequalitäts- und Testinformationen, um zentralisierte Analysen, Dashboards, Trendanalysen und Compliance-Berichte bereitzustellen.
Zusammengenommen helfen diese Funktionen den Entwicklungsteams dabei, einen durchgängigen Verifizierungs-Workflow von der Entwickler-IDE über CI/CD bis hin zu Zieltests zu etablieren.
Integration von KI in die Verifizierung eingebetteter Software
Parasoft setzt KI auch im Verifizierungsprozess selbst ein.
Mithilfe von MCP-fähigen KI-Workflows und spezialisierten KI-Fähigkeiten ermöglicht Parasoft KI-Agenten die Arbeit mit strukturierten Verifizierungsinformationen, die von C/C++test und C/C++test CT generiert werden. Anstatt sich ausschließlich auf das Wissen eines generischen KI-Modells zu verlassen, können die Agenten Informationen über Verstöße gegen die statische Analyse, Codierungsregeln, Testergebnisse und die strukturelle Codeabdeckung nutzen, um Entwickler bei spezifischen Verifizierungsaufgaben zu unterstützen.
KI-gestützte Arbeitsabläufe können Teams helfen:
Parasoft DTP nutzt außerdem maschinelles Lernen, um die Ergebnisse der statischen Analyse zu priorisieren, damit sich die Entwickler auf die wahrscheinlich wichtigsten Verstöße konzentrieren können.
Ziel ist es nicht, das Urteilsvermögen von Ingenieuren zu ersetzen. Vielmehr soll KI dazu genutzt werden, repetitive Arbeiten zu reduzieren und Ingenieure bei der Beschleunigung ihrer Arbeit zu unterstützen, während gleichzeitig die in der sicherheitskritischen Softwareentwicklung erwartete Strenge der Verifizierung, Rückverfolgbarkeit und Nachweisbarkeit gewährleistet wird.
Dies gewinnt insbesondere an Bedeutung, da KI-generierter Code immer häufiger eingesetzt wird. Unabhängig davon, ob der Code von einem Entwickler geschrieben oder mithilfe von KI generiert wurde, muss er analysiert, getestet, gemessen, überprüft und verifiziert werden, bevor Teams ihm in einem eingebetteten System vertrauen können.
Eingebettete Systeme sind nicht mehr einfach nur kleine Computer, die in Produkten versteckt sind.
Sie entwickeln sich zu vernetzten, softwaredefinierten, KI-gestützten Computersystemen, die zunehmend bestimmen, wie sich Produkte verhalten, weiterentwickeln und mit der physischen Welt interagieren.
Gleichzeitig verändert KI die Art und Weise, wie Ingenieure diese Systeme entwickeln. Code kann schneller generiert, Tests intelligenter erstellt und KI-Agenten können bei Verifizierungsaufgaben helfen, die früher einen hohen manuellen Aufwand erforderten.
Eine schnellere Entwicklung verringert jedoch nicht die Notwendigkeit technischer Strenge – im Gegenteil, sie macht die kontinuierliche Überprüfung umso wichtiger.
Da eingebettete Systeme immer intelligenter und autonomer werden, benötigen Unternehmen Entwicklungsmethoden, die Innovation mit systematischer Verifizierung verbinden. Automatisierte Tests, kontinuierliche Compliance, Rückverfolgbarkeit von Anforderungen und KI-gestützte Verifizierung bilden die Grundlage, die Entwicklungsteams benötigen, um sichere, zuverlässige und vertrauenswürdige eingebettete Software bereitzustellen.
Statische Codeanalyse für die eingebettete Entwicklung
Weiterführende Inhalte