Forum: Mikrocontroller und Digitale Elektronik C und C++ ASIL


von Hulk (Gast)


Lesenswert?

Hallo,

gibt es bei der Sicherheitseinstufung für ASIL eine Unterscheidung 
zwischen C und C++ Programmiersprache? Wenn C++ so beschränkt wird, dass 
es verwendet werden darf, welchen Vorteil hat es dann noch?

von marcel (Gast)


Lesenswert?

hi

asil zielt auf funktionale sicherheit ab. ob c oder c++ ist dabei im 
ersten schritt egal.

c++ biete die Möglichkeit automatische code generierung zu nutzen und so 
Funktionen von z.b. matlab in auf der ziel hw ausführbaren code zu 
überführen. mit c geht dies, eher eingeschränkt.

gruß marcel

von maveric00 (Gast)


Lesenswert?

Hallo,

die ISO 26262 macht keine direkten Einschränkungen bezüglich der 
verwendeten Programmiersprache (es werden sowieso Elemente  nur 
"empfohlen" oder "stark empfohlen"). Damit kann man sowohl C als auch 
C++ verwenden.

Allerdings empfiehlt die ISO 26262, sich Gedanken zur verwendeten 
Programmiersprache zu machen und entsprechende Einschränkungen zu 
definieren. Um die anderen Anforderungen (Testbarkeit etc.) zu erfüllen, 
können je nach dem höchsten ASIL-Level verschiedene Einschränkungen 
notwendig werden. Dies kann z.B. durch das Verwenden der MISRA-C oder 
C++-Regeln erfüllt werden.

Explizit auf C++ bezogen ist allerdings die starke Empfehlung ab ASIL B 
keine dynamischen Objekte oder Variablen zu verwenden, oder diese 
während ihrer Erzeugung zu testen. Andere Einschränkungen laufen auch 
der "natürlichen" Verwendung von C++ entgegen (Variablennamen nur einmal 
verwenden, keine implizite Typkonvertierung, kein versteckter Daten- 
oder Programmfluss), dies gilt mehr oder weniger jedoch auch für C. 
Ähnliches gilt für die starke Architekturempfehlung, das Verknüpfen von 
Softwareelementen stark einzuschränken (also z.B. nicht durch 
Funktions-Overloading den Linker die Funktion automatisch aus einer 
Auswahl selektieren zu lassen).

Ich kenne allerdings durchaus Implementationen von sicherheitsrelevanter 
Software in C++, wobei die Vorteile allerdings auch erheblich reduziert 
wurden.

Da aber speziell für die Implementation der sicherheitsrelevanten 
Softwareteile gilt, dass sie so einfach wie möglich sein sollten 
(alleine um der Anforderung genüge zu tun, dass nichts in der Software 
enthalten ist, was nicht auch in der Anforderungsbeschreibung definiert 
ist, und jede Anforderung getestet umgesetzt worden ist), ist die Wahl 
der Implementationssprache ehrlich gesagt relativ nebensächlich.

Da das Umsetzen der ISO 26262 ein erhebliches praktisches Wissen 
voraussetzt (der TÜV geht davon aus, dass ein Ingenieur mindestens 2 
Arbeitsjahre Erfahrung bei der Anwendung der ISO 26262 haben muss, wenn 
er die Rolle eines ISO 26262 Functional Safety Managers übernehmen 
soll), sollte Dir ein entsprechend kompetenter Ansprechpartner zur 
Verfügung stehen, wenn Du ISO 26262 relevante Software entwickeln 
sollst. Sollte das nicht der Fall sein, solltest Du sehr genau auf den 
Umfang Deiner persönlichen Haftbarkeit (Straf- und Zivilrechtlich) 
achten.

Schöne Grüße,
Martin

P.S.: die oben genannte automatische Code-Generierung durch 
modellbasierte Softwareentwicklung geht übrigens mit C und C++ gleich 
gut, das ist also kein Unterscheidungskriterium. Allerdings ist hier die 
Wahl der "Zwischen-"Sprache noch irrelevanter als bei der händischen 
Kodierung.

von Ralph (Gast)


Lesenswert?

Du kannst da jede Programmiersprache verwenden die du willst.

ASIL geht nur darauf ein Wie du etwas entwickelst, also der Prozess 
dahinter.

Die Beschreibung dazu nennt sich in der Automobilindustrie ISO 26262. 
Für andere Industriegbiete wird es Vergleichbares geben, das weiß ich 
allerdings die ISO Nummer nicht.

Das einige Programmiersprachen hier Vorteile gegenüber anderen haben ist 
erst mal nebensächlich für die Auswahl. Hat jedoch gewaltigen Einfluss 
auf den Aufwand den man treiben muss um ASIL konform entwickeln zu 
können.

zb. Verlangt eine ASIL konforme Implementierung das Codeanalysen 
durchgeführt werden.
Nimmt man C gibt es Tools die zb MISRA Regeln automatisch abprüfen.
Nimmt man eine Programmiersprache für die es solche Tools nicht gibt, 
muss man eine solche Analyse bei Hand machen.

Das ist übrigens einer der Hauptgründe warum Assembler fast keine Rolle 
mehr spielt. Und nur noch da verwendet wird wo es keinen anderen Weg 
gibt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.