Effiziente Prüfung von Codierregeln

Tool-basierte statische Codeanalyse hat sich als Standardverfahren der Softwareentwicklung etabliert, insbesondere zur Prüfung von Codierrichtlinien, aber auch für tiefgehende semantische Analysen. Codierrichtlinien zielen auf die Vermeidung von Programmierfehlern durch Einschränkung und Regulierung der zu verwendenden Sprachelemente. Die Festlegung und Prüfung von Codierrichtlinien kann als grundlegende Qualitätssicherungsmaßnahme angesehen werden, und ist für sicherheitskritische Software gemäß aller aktuellen Normen verpflichtend.

Entscheidend für einen erfolgreichen Einsatz ist die Effizienz der Regelprüfung, für die verschiedene Aspekte zu berücksichtigen sind. Zum einen sollte eine komfortable Einbindung in den Entwicklungsprozess gegeben sein - Batch-Mode Fähigkeit, offene Formate für Analysekonfiguration und Analyse-Reports, sowie die Vollständigkeit der Reports stellen wichtige Anforderungen für eine erfolgreiche Einbindung in den Build-Prozess oder in Systeme zur Continuous Integration & Verification dar.

Zum anderen ist eine hohe Analysegeschwindigkeit und -präzision erforderlich. Eine große Zahl von Fehlalarmen führt zu unnötigem Aufwand und reduziert die Benutzer-Akzeptanz. Andererseits stellen übersehene Regelverletzungen mögliche Programmierfehler dar. Syntaktische Regeln können exakt geprüft werden, semantische Regeln, die sogenannten unentscheidbaren Regeln, jedoch nicht: für sie ist prinzipiell keine exakte Ja-/Nein Antwort möglich. Ein Beispiel ist die Vermeidung von Zugriffen auf uninitialisierte Variablen: die Initialisierung kann nicht nur durch statische Initializer erfolgen, sondern auch indirekt über Zeigerzugriffe oder Absolutadressen an weit entfernten Codestellen. Hier ist eine gute Strategie, eine unterapproximierende Regelprüfung zu verwenden, die Fehlalarme nach Möglichkeit ausschließt, und diese Regelprüfung mit einer semantischen Laufzeitfehleranalyse zu verbinden. Durch einen Laufzeitfehleranalysator auf Basis der Abstrakten Interpretation kann hierbei sicherstellt werden, dass keine der abgedeckten Fehler übersehen werden, und dennoch niedrige Fehlalarmraten erreicht werden.

 

Referent: Dr. Daniel Kästner, AbsInt GmbH

Dr. Daniel Kästner studierte Informatik und Wirtschaftswissenschaften an der Universität des Saarlandes und promovierte im Jahr 2000. Er ist Mitgründer und CTO der Firma AbsInt Angewandte Informatik GmbH. Dr. Kästner ist Mitglied der MISRA C und MISRA SQM Arbeitsgruppen und des Projekt-Teams Formale Methoden des IEC 61508 Standards. Er ist Autor oder Co-Autor von über 60 Veröffentlichungen in den Bereichen Funktionale Sicherheit, Validierung und Verifikation von sicherheitskritischer Software, Cybersecurity, Compilerbau und Programmanalysen für eingebettete Prozessoren.

 

Key Facts

Themengebiet: Embedded Testing

Datum und Uhrzeit: 04. November 2021, 11:15 bis 12:00

Raum: Madrid

Copyright © 2021 HLMC Events GmbH