In der Softwarebranche gibt es viele verschiedene Entwicklungssprachen für die unterschiedlichsten Anwendungszwecke und Plattformen. Einige dieser Plattformen ermöglichen dabei die Entwicklung von Programmen in den unterschiedlichsten Sprachen, während andere die Entwicklung auf einige wenige beschränken. Im Vergleich dazu beschreiben Konzepte, wie z.B. endliche Automaten, sprachunabhängig ein Konzept, welches dann in die jeweilige Sprache übertragen werden kann. Solche Entwicklungskonzepte können daher einmal in einer generellen Form beschrieben und dann in den unterschiedlichen Sprachen generiert werden. Dies hat den Vorteil, dass komplexe Abläufe wie endliche Automaten nur einmal definiert werden müssen, um dann in mehreren Sprachen angewandt zu werden.
Yakindu SCT ist ein Programm, welches die grafische Modellierung eines endlichen Automaten sprachunabhängig ermöglicht. Dazu werden z.B. eigene Datentypen definiert, welche dann innerhalb des endlichen Automaten verwendet werden können. Im zweiten Schritt kann der endlichen Automate dann in der gewünschten Programmiersprache generiert und damit in dieser verwendet werden. Dies realisiert die oben erwähnte semantische Trennung zwischen einem sprachunabhängigen Konzept und dessen Implementierung in einer Sprache. Sollte die gewünschte Sprache noch nicht vorhanden sein, besteht die Möglichkeit diese als Yakindu SCT Plugin hinzuzufügen.
Dies ist z.B. notwendig für die Verwendung von Yakindu SCT in der Mobilen Entwicklung. Während die Entwicklungssprache Java, welche für Android verwendet wird, bereits implementiert ist, gibt es für die noch relativ junge Sprache Swift, die unter iOS verwendet wird, keine entsprechende Implementierung. Diese Projektarbeit soll sich daher mit der Entwicklung eines Yakindu SCT Generators für die Sprache Swift befassen, um die Verwendung von Yakindu SCT in der mobilen iOS Entwicklung zu ermöglichen.
Inhaltsverzeichnis
1 Einleitung
2 Grundlagen
2.1 Endliche Automaten
2.2 Yakindu Statechart Tools (Yakindu SCT)
2.3 Swift
3 Architektur von Yakindu SCT
3.1 Übersicht
3.2 Entwicklungssprache
3.3 Klassenarchitektur
4 Entwurf des Generators
4.1 Voraussetzungen
4.2 Endgültiger Entwurf
5 Realisierung des Generators
5.1 Relevante Klassen und Definitionen
5.2 Timer
5.3 Statemachine
6 Validierung der Implementation
6.1 Statemachine UnitTest Befehle
6.2 Definition der Befehle in Swift
6.3 Generieren und Ausführen der Tests
7 Zusammenfassung und Ausblick
Zielsetzung & Themen
Das Hauptziel dieser Arbeit besteht darin, das Programm Yakindu SCT um die Programmiersprache Swift zu erweitern, um so die Generierung von endlichen Automaten für die mobile iOS-Entwicklung zu ermöglichen und gleichzeitig die zugrundeliegende Architektur für zukünftige Sprachintegrationen transparent darzustellen.
- Grundlagen endlicher Automaten und deren Modellierung
- Architekturkonzepte von Yakindu SCT (Dependency Injection, Generator-Plugins)
- Entwurf eines Swift-spezifischen Generators
- Realisierung der Generierungskomponenten (Timer, Statemachine)
- Qualitätssicherung durch automatisiertes Testen in Swift mittels XCTest
Auszug aus dem Buch
3 Architektur von Yakindu SCT
Damit eine neue Sprache für die Generierung von endlichen Automaten hinzugefügt werden kann, muss im ersten Schritt die Architektur von Yakindu SCT verständlich werden. Dieses Kapitel befasst sich mit der näheren Beschreibung der Struktur und schafft damit die Voraussetzungen für die Implementierung.
3.1 Übersicht
Der Aufbau von Yakindu SCT ist getrennt zwischen dem Hauptsystem, welches zum Beispiel die grafische Oberfläche und die Logik für die Generation beinhaltet, und Plugins, die das Hinzufügen einer neuen Sprache ermöglichen. Um eine neue Sprache hinzuzufügen muss lediglich ein neues Projekt erstellt und dann Yakindu SCT erneut kompiliert werden. Durch die „plugin.xml“ erkennt Yakindu SCT die neue Sprache und kann diese dann für die Generierung verwenden. In dieser „plugin.xml“ wird eine Klasse definiert, welche von der Klasse „GeneratorModule“ erbt und als Einstieg für den Generator dient. In dieser werden dann die restlichen Klassen über „Dependency Injection“ bekannt gegeben. Wie dies prinzipiell funktioniert, wird im nächsten Abschnitt genauer beschrieben. Das oben erwähnte Schema ist für ein besseres Verständnis unter Abbildung 3.1 dargestellt.
Zusammenfassung der Kapitel
1 Einleitung: Diese Einleitung beschreibt die Motivation zur Erweiterung von Yakindu SCT für die Sprache Swift und legt die Zielsetzung sowie den Aufbau der Arbeit dar.
2 Grundlagen: Das Kapitel vermittelt essenzielle theoretische Basisinformationen zu endlichen Automaten, den Funktionen von Yakindu SCT und den Besonderheiten der Programmiersprache Swift.
3 Architektur von Yakindu SCT: Hier wird der modulare Aufbau des Systems erläutert, insbesondere der Einsatz von Dependency Injection, Xtend und Xtext zur Erweiterbarkeit.
4 Entwurf des Generators: Dieses Kapitel behandelt das Konzept für den Swift-Generator, unterteilt in notwendige Klassenstrukturen und die Definition der FlowCode- sowie ExpressionsCode-Logik.
5 Realisierung des Generators: Hier erfolgt die technische Implementierung der Generator-Klassen, der Timer-Logik und der Statemachine-Generierung.
6 Validierung der Implementation: Dieses Kapitel stellt die Qualitätssicherung durch die Definition von Unit-Tests vor, die in Swift generiert und mittels XCTest ausgeführt werden.
7 Zusammenfassung und Ausblick: Der abschließende Teil fasst die erreichten Ergebnisse zusammen und erörtert zukünftige Anforderungen an den Generator im Hinblick auf Sprachupdates.
Schlüsselwörter
Yakindu SCT, Swift, Generator-Plugin, endliche Automaten, Dependency Injection, Xtend, Xtext, Statemachine, Modellierung, iOS-Entwicklung, Codegenerierung, Unit-Test, XCTest, Softwarearchitektur, Automatisierung.
Häufig gestellte Fragen
Worum geht es in der Arbeit grundlegend?
Die Arbeit befasst sich mit der Entwicklung eines Plugins für Yakindu SCT, das die Generierung von Software-Code für endliche Automaten in der Programmiersprache Swift ermöglicht.
Was sind die zentralen Themenfelder?
Die Arbeit deckt die Architektur von Modellierungs-Tools, die Codegenerierung für eingebettete Systeme, Sprachkonzepte von Swift und automatisierte Testverfahren für generierten Code ab.
Was ist das primäre Ziel der Arbeit?
Das Ziel ist die nahtlose Integration der Sprache Swift in das bestehende Yakindu SCT Ökosystem, um die Entwicklung für iOS-Plattformen zu unterstützen.
Welche wissenschaftlichen Methoden werden angewendet?
Es werden methodische Ansätze wie Reverse-Engineering bestehender Systemstrukturen, ein systematischer Software-Entwurf (Architekturmodellierung) und eine validierende Implementierung mittels Unit-Tests verwendet.
Was wird im Hauptteil der Arbeit behandelt?
Der Hauptteil gliedert sich in die Analyse der Tool-Architektur, den Entwurf des Generators, die konkrete Programmierung der Generierungs-Logik und die abschließende Validierung durch Testfälle.
Welche Schlüsselwörter charakterisieren die Arbeit?
Die zentralen Schlagworte sind Yakindu SCT, Swift-Codegenerierung, endliche Automaten, Plugin-Entwicklung und automatisierte Tests.
Warum ist eine „plugin.xml“ für Yakindu SCT wichtig?
Die „plugin.xml“ fungiert als Konfigurationsdatei, über die das System das neue Plugin erkennt, die Generator-Module registriert und somit die Sprache im Tool verfügbar macht.
Wie erfolgt die Qualitätssicherung der generierten Zustandsautomaten?
Die Qualitätssicherung wird durch vordefinierte Testfälle in einer Xtext-basierten Sprache realisiert, die durch einen zweiten Generator in Swift-Code für das XCTest-Framework übersetzt und ausgeführt werden.
- Quote paper
- Marc Mettke (Author), 2017, Yakindu SCT Plugin für die Generierung von endlichen Automaten in Swift, Munich, GRIN Verlag, https://www.hausarbeiten.de/document/383804