Industrie 4.0 // Softwareentwicklung für das IIoT Herausforderungen an die Softwareentwicklung für das IIoT
Systeme des industriellen Internet of Things (IIoT) stellen spezielle Anforderungen an die Softwareentwicklung. Der Artikel zeigt die Aufgaben und die Rolle von Tools wie der statischen Analyse auf.
Anbieter zum Thema

SCADA-Systeme (Supervisory Control And Data Acquisition), die das Kernstück der meisten industriellen Systeme bilden, arbeiten unter extremen Bedingungen, steuern kritische Infrastrukturen und müssen strikte Sicherheitsstandards einhalten. Von vielen anderen Gerätetypen unterscheiden sich industrielle Systeme in folgender Weise:
- Eingeschränkte Fähigkeiten: Speicherprogrammierbare Steuerungen (SPS) sind oft Geräte mit geringer Leistungsaufnahme sowie einem begrenzten Umfang an Rechenleistung und Konnektivität. Sie sind häufig mit größeren SCADA-Systemen vernetzt, die nicht selten älteren Datums sind und keinen modernen Konnektivitäts- und Sicherheits-Standards entsprechen. Diese Geräte an das Internet anzubinden, ist wegen der fehlenden Security-Maßnahmen extrem riskant, aber durchaus üblich.
- Bedarf an Safety und Security: Während die Ingenieure im Bereich der industriellen Steuerungen mit dem Thema Safety (funktionale Sicherheit) vertraut sind, ist die Security (die Absicherung gegen externe Bedrohungen) noch neu und wird häufig übersehen. Angesichts der Tatsache, dass diese Systeme lohnende Angriffsziele darstellen, ist es unabdingbar, den Security-Aspekt in die Architektur einzubinden.
- Unvereinbare Standards, Protokolle und Daten: Industrielle Systeme sprechen ihre eigene Sprache – und diese entspricht nicht immer jener, die von den übergeordneten Systemen erwartet wird. Angesichts des hohen Störaufkommens in ihrer Umgebung reichen typische Netzwerkprotokolle nicht aus, um für eine fehlerfreie Kommunikation zu sorgen. Früher arbeiteten SCADA-Systeme innerhalb der Grenzen der jeweiligen Fabrik oder Anlage, und es war kaum nötig, Daten aus diesen Grenzen heraus zu übertragen. Im IIoT bedingt der Transfer von Daten aus der Fabrikhalle zur Erfassung in der Unternehmenszentrale mehr als nur das schlichte Vergeben einer IP-Adresse.
Tipps für Software-Design und Implementierung
Einige Herausforderungen, vor denen das IIoT steht, gehen über die reine Softwareentwicklung hinaus. Ein empfehlenswerter Ansatz enthält folgende Elemente :
- Design, das Safety und Security an die erste Stelle setzt: Bei industriellen Systemen für den Einsatz in sicherheitskritischen Bereichen legt man schon beim ‚Design-in‘ der Safety-Merkmale die Normen zugrunde, die diese Systeme erfüllen müssen (wie IEC 61508). Bei der Security muss es genauso sein. Auch sie muss von Anfang an Bestandteil des Designs sein und darf nicht erst in einer späteren Entwicklungsphase nachgerüstet werden. Ebenso wichtig ist die Berücksichtigung des Security-Aspekts auf der Ebene des Systems, in dem das betreffende Gerät arbeiten soll, um mehrere Abwehrschichten aufzubauen und die Angriffsoberfläche so weit wie möglich zu begrenzen.
- Handhabung von Bestandscode und der Software-Supply-Chain: Beim Aufsetzen auf Betriebssysteme ist die Integration von existierendem Code unverzichtbar, wenn man wettbewerbsfähig bleiben will. Es ist positiv zu bewerten, dass man das Rad bei der Entwicklung nicht immer wieder neu erfindet. Allerdings birgt die verbreitete Verwendung von Code und Binärdateien von Drittanbietern ihre Gefahren.
- Nebenläufigkeit und Multicore-Prozessorplattformen: Multicore-Prozessorplattformen sind heute die Regel. Leider bringt die von Multicore-Prozessoren gebotene echte Hardware-Nebenläufigkeit zusätzliche Herausforderungen für die Softwareentwicklung mit sich. Aber durch verbesserte Programmiertechniken lassen sich die Vorteile der Multicore-Technik umsetzen.
- Entwicklungseffizienz: Jedes Team, das an Geräten der nächsten Generation arbeitet, muss mit einem begrenzten Zeit- und Finanzbudget immer mehr Funktionalität produzieren. Der Umstieg auf neue Softwareentwicklungs-Techniken und die Nutzung automatisierter Entwicklungs-Tools wie der statischen Analyse kann die allgemeine Entwicklungseffizienz steigern.
Die Rolle der statischen Analyse für die Entwicklung
Dass Standards zur Softwaresicherheit die Anwendung statischer Analysetools empfehlen, hat seine Berechtigung. Defekte frühzeitig aufzudecken, ist ein wichtiger Faktor, um Kosten zu senken, da ihr Großteil in der Anfangsphase entsteht – unabhängig, ob für IoT oder IIoT. Die statische Analyse hilft auf folgende Weise, Risiken, Zeitaufwand und Kosten zu reduzieren:
- Frühe Aufdeckung von Defekten: Statische Analysetools können am Arbeitsplatz des Entwicklers eingesetzt werden und Defekte ausmerzen, bevor sie in das Build-System und die Modultests gelangen.
- Detektierung von Defekten, die in Tests unerkannt blieben: Modultests können bedeutende Fehler übersehen – und dies auch in Projekten, die nach hoher Fehlerüberdeckung verlangen. Nebenläufigkeitsfehler lassen sich in Modultests üblicherweise schwer auffinden und treten gelegentlich erst nach stundenlangem Betrieb zu Tage. Statische Analysetools aber besitzen die Fähigkeit, diese Fehler schon im Quellcode zu erkennen, bevor sie Eingang in das funktionierende System finden.
- Defekte von vornherein vermeiden: Die Durchsetzung strikter Programmierstandards wie MISRA C kann helfen, viele Arten von Defekten im Code zu vermeiden. Die Erzwingung einer guten Programmierdisziplin und die Schaffung eines Mikrozyklus aus Entwickeln, Analysieren und Testen für kleine Codeänderungen können dafür sorgen, dass viele Defekte gar nicht entstehen.
- Beseitigung der toten Winkel in Code und Binärdateien von Drittenbietern: Bei der Softwareentwicklung für industrielle Geräte wird oft extern zugelieferter Code wie COTS- (Commercial-Off-the-Shelf) oder Open-Source-Software eingesetzt. Bevor sie Eingang in ein Gerät findet, ist Software unbekannter Herkunft in Sachen Safety und Security sorgfältig zu prüfen. Statische Analysetools können Quell- und Binärcode von Drittanbietern auf Defekte und Sicherheitslücken untersuchen, die anderweitig nicht hätten aufgedeckt werden können.
- Beschleunigte Dokumentation für Sicherheitsstandards: Die statische Analyse (ebenso wie viele andere Prüf- und Life- cycle-Management-Tools) bietet eine automatisierte Dokumentation zur Unterstützung der Tests, für Programmierstandards und als Nachweis für Qualität und Robustheit. Weil ein Großteil des Arbeitsaufwands bei den Safety-Zertifizierungen auf die Dokumentation und das Erstellen von Nachweisen entfällt, können die Automatisierung und insbesondere die statische Analyse hier eine merkliche Entlastung bringen.
* Bill Graham ist Technical Marketing Engineer bei GrammaTech.
Artikelfiles und Artikellinks
(ID:44562294)