Komplexität beim embedded Software Design


Concurrency Checking

Das Programmieren von Multithreaded Anwendungen ist äußerst komplex und ermöglicht aufgrund der geteilten Daten schwer auffindbare Fehler. Der Trend zu Multicore Chip Design verlangt Multithreaded Software, um die Vorteile von moderner Hardware auszuschöpfen. Moderne statische Analyselösungen sprechen Concurrency Probleme in C und C++ Programmen an, aber speziell für Java gibt es bislang keine umfassende Lösung. Dabei wird Java als dritt-populärste Sprache für embedded Systeme heute von 28% der embedded Entwickler genutzt. Programmierer, die ihren Code nicht erfolgreich vor Fehlern wie Race Conditions und Deadlocks in C/C++ und Java schützen, werden unweigerlich mit Produktausfällen konfrontiert. Als Beispiel zeigt der Code in Bild 4 eine Unstimmigkeit bei den Methoden, wie eine Klasse ein Feld anspricht. Bei manchen Klassen sind die Zugänge synchronisiert, bei anderen nicht. Diese Fehlerart ist einfach zu übersehen, kann aber zu mysteriösen Symptomen führen, die schwer zu reproduzieren und festzustellen sind.

Tiefgreifende Analyse

C und C++, die gängigsten Sprachen für embedded Anwendungen, sind aufgrund einiger eigener Unzulänglichkeiten sehr anfällig für gefährliche Fehler. Trifft diese Eigenschaft auf eine steigende Vielfalt an Kombinationen aus Ziel-Hardware/-Firmware, kann das zu unberechenbarem Verhalten führen. Der Schlüssel für die Fehlerbehebung im Code ist die Auswahl eines Tools, das tief in die Codebasis eindringt und zugleich eine niedrige False-Positive Rate erzielt. Tools, die mit Hilfe eines einheitlichen Datenflusses und der symbolischen Ausführungsanalyse ein gesamtes Programm untersuchen, finden mehr potenzielle Fehler und Schwachstellen. Sie ermöglichen die Auslieferung von qualitativ höherwertigerer Software. Zudem sind Teams mit einem Tool mit modernen Darstellungsmöglichkeiten für Fehler wie z.B. Visualisierung besser gerüstet, um das genaue Code-Verhalten in ihren embedded Anwendungen nachzuvollziehen. Weil der Preis eines Fehlers bei embedded Geräten so hoch sein kann, sind Entwicklerteams historische ‚Early-Adopter‘ von modernen Lösungen zur Codeanalyse. Wegen der steigenden Anforderungen der embedded Industrie brauchen Entwickler diese automatisierten Analysetools dringender als zuvor, als Voraussetzung für einen erfolgreichen Job. Nur mit den fortschrittlichsten statischen Analysetools können sie die Herausforderungen durch neue regulatorische Normen erfüllen, die Auswirkungen durch sich explosionsartig vermehrenden Drittanbieter-Code verringern, und die allgegenwärtigen vernetzten Geräte und Multicore Prozessoren managen.

Seiten: 1 2 3Auf einer Seite lesen

GrammaTech Inc.

Das könnte Sie auch Interessieren