Entwicklung eines Dokumentations- und Flowchartgenerators für 8-Bit-AVR-Assembler-Projekte aus der Luftfahrt (C++)
Dieser Titel ist zugleich das Thema meiner im Frühjahr 2017 an der OTH Regensburg vollendeten Bachelorarbeit.
Motivation
Es existiert per se keine Software auf dem Markt, welche die automatische Generierung einer Dokumentation sowie die Erstellung von Flussdiagrammen für Quelltexte der Sprache Assemblerbietet.
Dieser Situation wurde durch die Entwicklung einer solchen Anwendung Abhilfe geleistet, um die Prozesse der Beschreibung und der Analyse von Assemblerquelltexten aus Sicht der Entwickler bei AVIONIK Straubing zu vereinfachen.
Funktion und Verwendung
Hierzu werden die Quelltexte sowie extern definierbare Taktzyklen vom Benutzer in einer grafischen Oberfläche bereitgestellt, um anschließend auf Knopfdruck eingelesen und verarbeitet zu werden.
Das Ergebnis der Datenverarbeitung ist eine HTML-Ausgabe, die ausgedruckt oder als PDF-Datei abgelegt werden kann. Diese Art der Dokumentationserstellung ist ein Komfortgewinn und eine Zeitersparnis für die Entwickler und dient des
Weiteren dem Nachvollziehen von Programmabläufen mittels Flussdiagrammen.
Hinweise auf fehlende Kommentare an Verzweigungen und Sprungbefehlen helfen, die Aussagekraft der Dokumentation zu verbessern. Mit den zusätzlich erhobenen Statistiken lässt sich die Kommentarabdeckung des gesamten Softwareprojekts quantifizieren.
Informationsgewinn
Hervorzuheben sind neben der automatischen Dokumentation jene Informationen, die mit Verwendung dieser Software zuverlässig, da automatisiert, erfassbar werden. Darunter fallen:
- Die Beschreibung von Übergabeparametern in Makros.
- Die logische Analyse des Ablaufs anhand von Flussdiagrammen. Ungewollte (Endlos)-Schleifen können damit erkannt und behoben werden.
- Das tabellarische Auflisten von Lese- und Schreibzugriffen von Registern, um irrtümliche Copy-Paste-Fehler zu identifizieren. Die korrekte Falsifikation erfolgt hier jedoch erst durch Zuwirken des Entwicklers, indem er sein ursprüngliches Ziel mit
der jeweiligen Umsetzung vergleicht. - Alle möglichen Pfade durch einen logischen Abschnitt, den ein Programm zur Laufzeit nehmen kann. Die Menge dieser Pfade entspricht der Mindestmenge an Testfällen, die eine 100%-ige Testabdeckung erfordert und kann die bisherige manuelle
Erstellung ersetzen.
Ausblick
Im Bezug auf den letzten Punkt eröffnet sich ferner die Möglichkeit, die bestehende Logik zu erweitern, um Codegerüste für Testfälle auf Basis der ermittelten Pfade automatisiert zu generieren. Damit einhergehend bietet sich auch das Bereitstellen der Software als Kommandozeilenversion und als Erweiterung für die Entwicklungsumgebungen Visual Studio und Atmel Studio an.
Die Ausgabe betreffend ist ein Syntax-Highlighting der Assemblerbefehle und eine durchsuchbare Dokumentation denkbar.
Als zusätzliches Feature können weitere unterstützte Parser für andere Assembler-Dialekte implementiert werden. Die Verwendung der bestehenden Programmlogik für die Realisation von Mutationstests stellt eine weitere Option dar.