PG-Antrag - Lehrstuhl 5 für Programmiersysteme
Transcrição
PG-Antrag - Lehrstuhl 5 für Programmiersysteme
PG-Antrag AgES 1 Thema AgES: Aspektgetriebene Entwicklung sicherer Steuerungssysteme 2 Zeitraum Sommersemester 2013 und Wintersemester 2013/2014 3 Umfang Jeweils 8 Semesterwochenstunden 4 Veranstalter Dipl.-Inf. Oliver Bauer <[email protected]>, Tel. 7752 Dipl.-Inf. Stefan Naujokat <[email protected]>, Tel. 7734 Prof. Dr. Bernhard Steffen <[email protected]>, Tel. 5801 Informatik Lehrstuhl 5, Otto-Hahn-Straße 14, Raum 135/131 5 Aufgabe Moderne Steuerung von Flug- und Fahrzeugen geht über eine 1:1-Übertragung von Eingabeimpulsen hinaus. So reagiert zum Beispiel die Servolenkung im Auto je nach aktueller Geschwindigkeit unterschiedlich, und Steuersignale für Höhen-, Quer- und Seitenruder im Flugzeug werden abgestimmt, um ein ruhigeres Fluggefühl zu vermitteln. Häufig kommen derartige Steuerungen auch zum Einsatz, um die Sicherheit zu erhöhen, beispielsweise bei automatischen Bremssystemen im Auto oder um Flugmanöver zu unterbinden, die das Flugzeug in einen instabilen Zustand versetzen können. Ziel der Projektgruppe ist es, derartige Steuerungslogik als Prozesse zu modellieren und diese mit Konzepten der aspektorientierten Programmierung zu transformieren, sodass zusätzliche Features orthogonal zur Steuerung spezifiziert und in beliebige Steuerungsprozesse hineingewebt werden können. Dabei liegt der Fokus mehr darin, Konzepte für die aspektorientierte Erweiterung von Prozessen zu entwickeln als tatsächlich sicherheitskritische Steuerungen umzusetzen. Als Proof-of-Concept soll mit diesen Methoden eine Quadrocopter-Steuerung um die Sicherheitsaspekte Kollisionsvermeidung“ und Automatische Notlandung“ erweitert werden. Dies soll zunächst in einer ” ” zu erstellenden Simulationsumgebung, später an einem echten Quadrocopter erfolgen. Ziel Die Aufgabe der Projektgruppe beginnt mit der Erstellung einer Quadrocopter-Simulationsumgebung, die die Möglichkeit hat, von extern (via Netzwerk) Befehle entgegenzunehmen (z.B. vor, hoch, runter, drehen) und verschiedene Sensordaten liefert (z.B. Flughöhe, Abstand zum nächsten Objekt vorne, . . .). Über diese Schnittstelle sollen dann die Prozessmodelle kommunizieren, um den simulierten Quadrocopter zu steuern. Im ersten Schritt sollen Tastatureingaben zunächst direkt in entsprechende Steuersignale übersetzt werden (siehe Abbildung 1 links). Die so entstehende Simulationsumgebung soll als Basis für die Evaluation des aspektorientierten Sicherheitskonzeptes dienen. Daher soll eine einfache 1 Abbildung 1: Ziele 3D-Rendering-Engine (wie z.B. jPCT [3]) eingesetzt werden, um Bewegungen im dreidimensionalen Raum berechnen und visualisieren zu können. Schwerpunkt der PG sind dann die Konzeption und Umsetzung des aspektorientierten Sicherheitskonzeptes mittels Modelltransformationen, die dann anhand folgender zweier Aspekte für die Quadrocoptersteuerung eingesetzt werden sollen: 1. Kollisionsvermeidung Unter Verwendung von Entfernungssensoren soll automatisch verhindert werden, dass der Quadrocopter gegen ein vor sich befindliches Hindernis fliegt. Das heißt, wenn z.B. die vor-Taste gedrückt wird, soll der vor-Befehl in der Steuerung nur dann freigegeben werden, wenn die Entfernung zum nächsten Hindernis hinreichend groß ist. Fortgeschrittenere Varianten dieses Aspektes sollen Geschwindigkeit und Bremsweg beachten, oder Sensordaten aus mehreren Richtungen auswerten, um nicht nur Steuerungsimpulse zu unterdrücken, sondern zum Beispiel auch proaktiv sichere Ausweichmanöver durchführen zu können. 2. Automatische Notlandung In der Realität kommt es häufig vor, dass der Kontakt mit der Fernbedienung abreißt. Gerade im Flugverkehr kann das fatal sein. Sicher ist es keine Lösung, die Rotoren einfach abzuschalten. Allerdings ist ein stupides Beibehalten der aktuellen Flugbahn im Allgemeinen auch nicht besser. Es soll daher hier ein Aspekt umgesetzt werden, der, wenn für eine gewisse Zeit kein Signal von der Fernsteuerung eingeht, den Quadrocopter kontrolliert zu Boden bringt. Für das zweite Semester ist dann die Umsetzung auf einem realen Quadrocopter geplant, der mit denselben Steuerungsmethoden angesprochen werden kann und demnach dieselben Modelle und Aspekte verwenden kann. Unter heutiger Betrachtung würde sich beispielsweise eine Parrot AR Drone 2“ [5] ” mit zugehöriger Java API [4] anbieten. Wegen des schnellen technischen Fortschritts in diesem Bereich wird die konkrete Produktentscheidung auf das Ende des ersten PG-Semesters verlegt. Finales Ziel ist es, Steuerungsmodelle mit den dazugehörigen Aspekten automatisch zu verweben und anschließend in um Sicherheitsaspekte erweiterten, unabhängigen Steuerungscode zu übersetzen (Abbildung 1, rechts). Die Flexibilität dieses Ansatzes soll durch Umsetzung von Missionsmodellen evaluiert werden, die neben der reinen Steuerung auch Zielvorgaben erfassen (z.B. Pfadsuche durch ein Labyrinth). 2 Technologien Prozessmodellierung Modellgetriebene Softwareentwicklung (Model Driven Development, MDD) bietet neben der aus Informatiker-Sicht vorteilhaften Möglichkeit, modellbasierte Verifikationstechnologien anwenden zu können (wie zum Beispiel Model Checking) auch den Vorteil, für NichtProgrammierexperten domänenspezifische Konzepte in Form von Workflows einfach umzusetzen. Am Lehrstuhl für Programmiersysteme existiert mit dem jABC [7,8] ein Framework, das dieses Vorgehen inklusive Validierungs- [14] und den durch das Genesys-Framework zur Verfügung gestellten Modelltransformationstechniken [9,10] unterstützt. In der PG sollen die Modell-zu-Modell-Transformation (M2M) für das Einweben von Aspekten und die Modell-zu-Code-Transformation (M2C) für die finale Codegenerierung eingesetzt werden. Aspektorienterte Programmierung Aspekte wurden ursprünglich für objektorientierte Programmiersprachen als Mittel zur Realisierung von sogenannten Cross-cutting Concerns“ (Logging, Profiling, ” Tracing oder Sicherheitsaspekte) eingesetzt, bei Java zum Beispiel mit AspectJ [2]. Inzwischen gibt es auch Erweiterungen zu modellbasierten Ansätzen, wie zum Beispiel BPEL [1] oder UML [11,12]. In der Projektgruppe sollen M2M-Transformationen als ein flexibles Mittel eingesetzt werden, um Prozesse (z.B. Steuerung des Quadrocopters) mit Aspektmodellen (z.B. Kollisionsvermeidung) zu verschmelzen. In Abbildung 2 ist ein einfacher Workflow bestehend aus fünf Prozessen dargestellt, welcher um eine Laufzeitmessung erweitert wird. Illustriert ist dabei die Messung der Laufzeit aller Ausführungen von Prozess S2 . Woven model: Model to Model Transformation S1 Domain-specific model S1 Sa S2 S2 S3 S4 S5 Sb Cross-cutting concerns: Sa • Sb Sb S3 S4 S5 @Around S2 Abbildung 2: Aspektorientierung auf Modellebene 6 Teilnahmevoraussetzungen Vorausgesetzt werden: • Fundierte Kenntnisse in mindestens einer objektorientierten Programmiersprache, bevorzugt Java • Elementare Kenntnisse über Modellierungstechniken, wie sie zum Beispiel in den Vorlesungen For” male Methoden des Systementwurfs“, Virtualisierung und Compilation“, Softwarekonstruktion“ ” ” und Dienstleistungsinformatik“ vermittelt werden. ” Wünschenswert sind zudem: • Kenntnisse im Umgang mit Eclipse-Werkzeugen und -Programmierung 3 • Kenntnisse über Geschäftsprozesse 7 Minimalziel Im Rahmen der PG sollen mindestens die folgenden Punkte umgesetzt werden: • • • • • • • • Erstellen einer vereinfachten Quadrocopter-Simulationsumgebung Protokoll/API zur Steuerung der Simulation über Netzwerk Erstellen entsprechender jABC-Prozessbausteine Steuerungsprozesse modellieren, die auf Tastatureingaben reagieren Konzept entwickeln zur Erweiterung dieser Prozesse mittels AOP-Methoden Sicherheitskonzept Kollisionsvermeidung“ als Aspekt umsetzen und integrieren ” Sicherheitskonzept Automatische Notlandung“ als Aspekt umsetzen und integrieren ” Generierung von jABC-unabhängigem Steuerungscode mittels Genesys Framework Die Minimalziele beziehen sich dabei nicht auf den realen Quadrocopter. 8 Literatur [1] Charfi, Mezini. Aspect-Oriented Web Service Composition with AO4BPEL. Springer, LNCS 3250, 2004. [2] http://www.eclipse.org/aspectj [3] http://www.jpct.net/ [4] https://projects.ardrone.org/projects/show/ardrone-api [5] http://ardrone2.parrot.com [6] http://www.heise.de/developer/artikel/jABC-227898.html [7] Steffen et al. Model-Driven Development with the jABC. Springer, LNCS 4383, 2007. [8] http://www.heise.de/developer/artikel/jABC-227898.html [9] Jörges, Steffen, Margaria. Building Code Generators with Genesys: A Tutorial Introduction. Springer, LNCS 6491, 2011. [10] Jörges. Genesys: A Model-Driven and Service-Oriented Approach to the Construction and Evolution of Code Generators. PhD Thesis. Springer LNCS, to appear. [11] Wimmer et al. A survey on UML-based aspect-oriented design modeling. ACM Comput. Surv. 43, 2011. [12] Kandé et al. From AOP to UML: Towards an Aspect-Oriented Architectural Modeling Approach. 2002. Technical Report. Swiss Federal Institute of Technology. Lausanne. [13] Naujokat et al. Loose Programming with PROPHETS. Springer, LNCS 7212, FASE 2012. [14] Jonsson et al. Incremental Requirement Specification for Evolving Systems. Publishing Association Nordic Journal of Computing, FIW 2000. 9 Rechtlicher Hinweis Die Ergebnisse der Projektarbeit und die dabei erstellte Software sollen der Fakultät für Informatik uneingeschränkt für Lehr- und Forschungszwecke zur freien Verfügung stehen. Darüber hinaus sind keine Einschränkungen der Verwertungsrechte an den Ergebnissen der Projektgruppe und keine Vertraulichkeitsvereinbarungen vorgesehen. 4