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.

titelblatt baDas Titelblatt der Ausarbeitung

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.

 

See also

  • VisualStudio
    wxWidgets-3.1.0 mit VisualStudio 2017 statisch kompilieren

    Für das Erstellen von grafischen Benutzeroberflächen ist das Framework wxWidgets m.E. die erste Wahl.

  • FIFA StatsTracker (C++, wxWidgets)

    Der FIFA StatsTracker ist eine in C++ geschriebene und auf mobile Systeme (v.a. Tablets und Touch-Notebooks) ausgelegte Software, die während eines FIFA-Matches die Statistiken der beteiligten Spieler erfassbar macht und eine umfassende Auswertung der Daten bereitstellt, um einen Vergleich untereinander zu ermöglichen.

  • VisualStudio
    VisualStudio 2017: Definition von Präprozessorvariablen

    Um die Plattformunabhängigkeit eines Programms zu gewährleisten, ist die Arbeit mit Präprozessorvariablen im Quellcode von Vorteil. Die Implementierungen der Methodenrümpfe können dadurch in der selben Datei vorgenommen werden. Es kann jedoch vorkommen, dass beim Kompilieren eines Projekts das Betriebssystem und dessen Version nicht automatisch erkannt wird. Abhilfe schafft ein neuer Eintrag in den "Preprocessor Definitions" des Projekts.

Cookies make it easier for us to provide you with our services. With the usage of our services you permit us to use cookies.
Ok