Wie ein technischer Ansatz zur Qualität von Automobilsoftware Defekte bremst

Von Alan Zeichick

22. September 2016

3  min lesen

By Alan Zeichick (Principal Analyst bei Camden Associates) und Artur Hicken, Chefevangelist bei Parasoft

Autos sind komplexer als je zuvor, und das bedeutet ein exponentielles Potenzial für Softwarefehler. Wie wir in „Automotive Software Engineering Defekte auf dem Vormarsch„Moderne Autos sind voll von Software, die sicherheitskritische Funktionen, Unterhaltungsfunktionen und fortschrittliche Kommunikation über eine große Lieferkette hinweg miteinander verbindet. Unter diesen Umständen kann ein einzelner Fehler oder ein schlecht konzipiertes Stück Code erhebliche Konsequenzen haben. Und während kein einzelnes Werkzeug oder keine einzelne Praxis eine Silberkugel ist, gibt es wichtige Grundsätze zur Reduzierung des mit der Entwicklung von Automobilsoftware verbundenen Risikos.

Nutzen Sie technische Konzepte, um Softwarefehler zu vermeiden

Der beste Weg, um Softwarefehler zu beseitigen, besteht darin, eine Umgebung zu schaffen, in der sie nicht eingeführt werden können, sowie einen Prozess zur einfachen Identifizierung und Behebung von Fehlern, die von einem vorgelagerten Anbieter eingeführt wurden. Dies wird durch die Übernahme etablierter Hardwareentwicklungsprinzipien wie Wiederholbarkeit, Anwendung bekannter Best Practices und Abhängigkeit von Standards erreicht.

Wie wir in „So nutzen Sie Standards für die Entwicklung von Automobilsoftware, um Risiken zu minimierenUm funktionale Sicherheit in eingebetteter Software zu erreichen, müssen beim Entwerfen und Codieren die folgenden Grundsätze der Technik beachtet werden:

  • Die funktionale Sicherheit muss proaktiv sein
  • Prozesse müssen kontrolliert, gemessen und wiederholbar sein
  • Mängel sollten durch die Umsetzung von Normen verhindert werden

Implementieren Sie Entwicklungsstandards mit Richtlinien

Unabhängig davon, ob eine zweispurige Autobahn gebaut oder ein Airbag-Auslösesystem codiert wird, sind Standards wichtige technische Werkzeuge. Im eingebetteten Automobilbereich gehören zu den Standards ISO-26262 6: 2011, die die funktionale Sicherheit für Automobilsoftware abdeckt, und MISRA, eine Familie von C- und C ++ - Entwicklungsstandards für sicherheitsrelevante elektronische Systeme in Autos.

Die Implementierung von Standards beginnt mit der Verkapselung der Einhaltung von Standards in Ihrer Entwicklungsrichtlinie. Wie in „Nutzung von Automobilentwicklungsstandards zur Risikominderung, Teil 2, ”Richtlinien sind durchsetzbare Aussagen, die im Klartext vorschreiben, wie Software entwickelt werden soll und warum sie auf diese Weise entwickelt werden soll. In einer Richtlinie kann beispielsweise Folgendes angegeben werden:

  • Die Software muss gemäß ISO 26262 entwickelt werden
  • Code wird von nachgeschalteten Subunternehmern nicht akzeptiert, die keine ausreichende Rückverfolgbarkeit bieten, um die Einhaltung des Standards nachzuweisen

Automatisieren Sie die Anwendung der Entwicklungsrichtlinie

Um Richtlinien in Klartext in durchsetzbare Anweisungen umzuwandeln, sind Tools erforderlich, mit denen Softwarequalitätstechniken, die auf Industriestandards und Best Practices im gesamten SDLC basieren, kontinuierlich angewendet werden können. Ein Mechanismus, der Ergebnisse sammelt, korreliert und priorisiert, ist auch für die Transparenz von Prozessen erforderlich, die potenziell Risiken in die Anwendung einbringen.

Wenn Sie eine Richtlinie haben, nach der alle Variablen initialisiert und der gesamte Speicher explizit zugewiesen werden muss, benötigen Sie ein Tool, mit dem Code mit nicht initialisierten Variablen oder Verweise auf nicht zugewiesenen Speicher einfach nicht eingecheckt werden können Eine Richtlinie sollte sicherstellen, dass die Fehler durch statische Analyse oder Erkennung von Laufzeitfehlern entdeckt werden.

Wenn es ein Team oder einen Programmierer gibt, der diese Art von Fehlern kontinuierlich macht, helfen Metriken und Metadatenanalysen dem Management, das Auftreten dieser Fehler zu verstehen, sicherzustellen, dass sie behoben werden, und bieten Anleitungen zur Verbesserung des Trainings, um diese Fehler weniger wahrscheinlich zu machen .

Stellen Sie sich dieses Szenario vor, das sich über Hunderte und Tausende von Regeln erstreckt, die die Best Practices für die Entwicklung eingebetteter Software abdecken. Wenn Sie sich verpflichten, diese Standards einzuhalten, können die Tools sicherstellen, dass die Arbeit korrekt ausgeführt wird.

Test zur Validierung, nicht zum Debuggen

Das Testen muss effektiv und deterministisch sein und sollte bei komplexen Speicherproblemen durchgeführt werden. Tests sollten auch während des gesamten SDLC stattfinden, damit Abnahmetests bestätigen, dass die Anwendung (oder das gesamte eingebettete System, z. B. ein komplexes Auto) ihre Funktions- und Qualitätsanforderungen erfüllt und zur Veröffentlichung bereit ist.

Leider verlassen sich viele Unternehmen auf Akzeptanztests in der späten Phase, um ihre Anwendungen zu debuggen, was die Kosten und das Risiko der Software erhöht. Das Ziel des Testens besteht darin, zu überprüfen, ob der Code internen, behördlichen und Branchenstandards entspricht, und nicht, Fehler zu identifizieren. Die Tests sollten bestanden und die Ergebnisse sollten für zukünftige Referenzen dokumentiert werden (und um Regulierungsbehörden und Zertifizierungsanforderungen zu erfüllen).

Wir können nicht selbstgefällig sein und glauben, dass der beste Weg, um die Qualität eingebetteter Automobilsoftware zu verbessern, darin besteht, mehr Tests an einem endgültigen oder nahezu endgültigen Produkt durchzuführen. Wir müssen die Software beim ersten Mal auf die richtige Art und Weise entwerfen und codieren. Dabei müssen wir einen technischen Ansatz mit Richtlinien verwenden, um Industriestandards und Best Practices zu nutzen und durchzusetzen. So begegnen wir der Herausforderung der Qualität von Automobilsoftware.

„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.

Von Alan Zeichick

Alan Zeichick ist Principal Analyst bei Camden Associates. Zuvor war Alan Chefredakteur der SD Times von BZ Media. Folgen Sie ihm @zeichick.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.