Profile cover photo
Profile photo
seneos GmbH
11 followers
11 followers
About
Posts

Post has attachment
Modern C++
Warum es an der Zeit ist, C++ im Embedded Bereich neu zu bewerten

Ralf Waldukat - System Ingenieur, seneos GmbH
Ralf Waldukat - System Ingenieur, seneos GmbH
Die Projekterfahrung der seneos Mitarbeiter in der Automotive Branche zeigt, dass das Automotive Umfeld immer noch sehr konservativ und sicherheitsbewusst im Bereich Software Entwicklung agiert. Software wird traditionell nach dem Vorbild von Schaltblöcken entwickelt und ebenso getestet.

Durch die stärkere Vernetzung, die bessere Hardware und die Anforderungen von Level 3 / 4 autonomen Fahrzeugen steigt die Komplexität und die Größe des Source-Codes. Gleichzeitig wird die Entwicklungszeit verkürzt und die Kosten gesenkt.

C++11, C++14, C++17 und die damit verbundenen Entwicklungsmethoden reduzieren die Komplexität und ermöglichen einen graduellen Umstieg ohne Nachteile. Um diese neue Art zu programmieren von älteren C++ Versionen abzugrenzen, spricht man heute auch von Modern C++.

Mit Modern C++ wurden fast alle Nachteile des C++03 Standards behoben, so dass der Einsatz in der Automotive Welt möglich wird. Der resultierende Assembler-Code ist genauso hochwertig oder besser im Vergleich zu der traditionellen Entwicklung mit C entstehende Code.

Möglich wird das durch die Reduzierung auf ein Subset der neuen Features (vergleichbar MISRA). Exception Handling, Dynamische Speicherverwaltung und große Bibliotheken werden oft ausgeschlossen.

Sinnvoll sind viele Kleinigkeiten, die das Arbeiten mit C++ einfacher machen. Z.B. werden Strings nicht mehr über manuelle Pointerzugriffe manipuliert, sondern über Klassen. Dies macht einen Zugriff auf fremde Speicher unmöglich und Fehler können abgefangen werden. Das ist auch in C möglich. Die Praxis zeigt aber, dass es von den Entwicklern nicht genutzt, falsch genutzt oder an den entscheidenden Stellen vergessen wird.

Das gleiche gilt für Arrays. Buffer Overflows sind für viele Fehler verantwortlich und auch nicht durch statische Code-Analyse abzufangen. Dies lässt sich auch nicht mit mangelnder Sorgfalt erklären wie 30 Jahre Web-Entwicklung und Bugs zeigen. Mit überladenen Operatoren, welche diese Zugriffe abfangen und das System in einen sicheren Zustand bringen, können diese Fehler nicht mehr vergessen werden.

Datenstrukturen werden üblicherweise von Schleifen durchlaufen. Dort wird oft das letzte Element ausgelassen oder auf den Speicher hinter dem letzten Element zugegriffen. Durch die neuen for-auto-loops werden diese Fehler zuverlässig verhindert. Die Schleife leitet das erste Element, das letzte Element und den Inkrement selbstständig aus der verwendeten Datenstruktur (Map, Array, etc.) ab.

Der Typ für das Schleifenelement kann automatisch abgeleitet werden, da er durch die verwendete Struktur bestimmt wird. Eine manuelle Typisierung bietet an dieser Stelle keinen Vorteil. Das führt insgesamt zu sicheren Schleifen, welche vom Compiler bestmöglich optimiert werden können, z.B. mit der Verwendung der SIMD-Einheiten.

Auch neue Konzepte können übernommen werden. RAII (Resource Acquisition Is Initialisation) verhindert, dass Ressourcen nur teilweise vorbereitet werden. Der erste Zugriff auf die Ressource stellt gleichzeitig sicher, dass diese auch in einem konsistenten Zustand ist. Falls nicht, kann der Fehler direkt bei der Entstehung z.B. durch Aufruf eines Fault-Handlers behandelt werden. Damit spart man sich einen Großteil der Überprüfungen, welche sonst bei jedem Zugriff durchgeführt werden.

Modern C++ reduziert auch den Boiler-Plate-Code und fördert die Übersicht. In einem Kundenprojekt mussten diverse Zeitstempel verschiedener Auflösung und unterschiedlicher Systeme miteinander verrechnet werden. In C ist der entstehende Code durch die implizite ungarische Notation schwer zu lesen und noch schwerer zu ändern. Mit überladenen Operatoren kann die Komplexität hinter einfachen Additionen und Subtraktionen versteckt werden. Die Korrektheit der Operationen wird durch Unit Tests sichergestellt.

Wenn möglich und sinnvoll werden die neuen Sprachelemente von uns in Projekten eingeführt und mindestens mit Unit-Tests unterstützt. Das führt zu einer verkleinerten, sicheren und übersichtlichen Code-Basis und einer schnellen Entwicklung.

Ralf Waldukat, System Ingenieur
seneos GmbH
Photo
Add a comment...

Post has attachment
seneos schult Gymnasiasten in C Programmiersprache

Kurz vor den Sommerferien absolvierten vier wissbegierige Schüler der 9. Klasse vom Silverberg Gymnasium aus Bedburg einen Programmierkurs in unserer Akademie. Hier wurde an zwei Tagen den Schülern spielerisch die Programmiersprache C nahe gebracht. Der Dozent Dennis Stolp, der extra die Schulung für Schüler aufgesetzt hatte, fand es erfrischend wie aufnahmefähig die Jungs in dem Alter sind. 

http://seneos.com/home/meldungen/date////seneos-schult-abiturienten-in-c-programmiersprache.html
Add a comment...

Post has attachment
Wir haben unsere Internetseite durch den Link "Freiberufler" erweitert. Bei der Vielzahl der Projekte, die wir für unsere Kunden realisieren dürfen und durch die gute Vernetzung in die Automotiv-Welt, können wir einen Teil mit Business Partnern realisieren. Schaut einfach mal vorbei, vielleicht ist ja was dabei. https://goo.gl/N6VDjm
Add a comment...

IAA - New Mobility World / 14.-24.09.17
Mit fünf Themen und drei Eventformaten ist die New Mobility World die weltweit umfassendste Plattform für die Mobilität von morgen. Sie findet im Rahmen der IAA statt.
Add a comment...

Post has attachment
Zum Thema Safety and Security oder besser gesagt Digitale Forensik gab es am 31.11 einen Fachvortrag von Herrn Dipl.-Ing. Thomas Käfer, M.Sc. bei der seneos in Köln.
Photo
Add a comment...

Post has attachment
Adam unser Praktikant bereitet sich bei der seneos GmbH in Köln auf seine Bachelorarbeit vor.
Photo
Add a comment...

Post has attachment
Add a comment...

Post has shared content
Die seneos GmbH entwickelt im Rahmen einer offenen Telematikplattform für die Flycar Innovations GmbH (Frankfurt) den Grundbaustein, der es ermöglicht Fahrzeuge ab Baujahr 2001 via W-LAN und einem Smartphone über eine gesicherte Plattform mit dem Internet zu verbinden. Dieser einzigartige OBDII Stecker liest nicht nur einfach Standarddaten aus, sondern kann über die Fahrzeugidentifikationsnummer, GPS Daten und Fahrzeugdaten wie Inspektionsintervalle, Kilometerstand, Ölstand usw. einen Mehrwert für z. B. Versicherer, Flottenmanager, und Fahrzeughalter bieten. Über die Plattform der Flycar Innovations können Smartphone Apps von Drittanbietern bereit gestellt werden, deren individuelle Geschäftsmodelle die Fahrzeuginformationen verarbeiten. Als erstes wird auf der IAA neben dem Prototypen ein elektronisches Fahrtenbuch vorgestellt. In der Serie wird das OBDII Modul zusätzlich mit einer SIM Karte ausgeliefert.
Photo
Add a comment...

Post has attachment

Post has attachment
Add a comment...
Wait while more posts are being loaded