25
ActiveCharts Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Jens Kohlmeyer | 05. März 2007 | Institut für Programmiermethodik und Compilerbau

Folien ActiveCharts für pdf - Ulm– Wohldefinierte Semantik Explizite Schnittstelle zwischen PIM und PSM/Code (Aktionen) Verwendung einer herkömmlichen Programmiersprache (C#) Verhältnis

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

ActiveChartsVerknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

Jens Kohlmeyer | 05. März 2007 |Institut für Programmiermethodik und Compilerbau

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 2

Übersicht

Unser Ansatz ActiveCharts kombiniert Modelle aus den Analyse/Design-Phasen und (handgeschriebenen) Code aus der Implementierungs-phase auf eine neue Art:

Der Kontrollfluss einer Anwendung wird mit UML 2.0 Aktivitätsdiagrammen modelliert, die von einer Laufzeitumgebung (ActiveChartsIDE) interpretiert werden. Mit dieser Laufzeitumgebung können die Aktivitätsdiagramme simuliert und visualisiert werden. Funktionen wie beispielsweise Breakpoints oder schrittweises Vorgehen ermöglichen ein einfaches Debuggen der Anwendung.

Analyse- bzw. Designartefakte werden in unserem Ansatz nahtlos für die Implementierungsphase übernommen. Wir wollen damit die Lücken zwischen den unterschiedlichen Phasen im Softwareentwicklungs-prozess verkleinern und die Dokumentation und die Wartbarkeit von Softwareprodukten verbessern.

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 3

Inhalt

– Motivation

– Forschungsansatz ActiveCharts

– ActiveCharts Architektur

– Beispiel

– Diskussion

– Aktuelle Forschungsarbeiten

– Zusammenfassung und Ausblick

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 4

Motivation (1/2)

Probleme bei der Softwareentwicklung

- Lücke zwischen Design-Phase und Implementierung- Modelle werden nicht wieder verwendet- Modellinhalte müssen “nachimplementiert” werden- Dokumentation ist unter Umständen nicht aktuell- Die Semantik von verwendeten Modellen ist oft unklar

- Freie Auslegung durch Entwickler kann zu falscher Implementierung führen- Fehlende Ausführbarkeit der Modelle kann zu falschem Verhalten führen

Ein Lösungsansatz: Model Driven Architecture, MDA

- Idee: Lücke zwischen Design-Phase und Implementierung schließen- Anwendungen aus Modellen (und nötigen Erweiterungen generieren)- Wiederverwendung der Business-Logik durch plattformunabhängige Modelle

(PIM)- Erzeugung von plattformspezifischem Code durch entsprechende Modelle

(PSM)

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 5

Motivation (2/2)

Zwei Hauptinterpretationen der MDA:

TranslationistTranslationist ElaborationistElaborationist

PSM: CodePSM: Code

PIMPIM

PSMPSM

PSM: CodePSM: Code

PIMPIM

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 6

Forschungsansatz ActiveCharts – ein MDA-Ansatz (1/2)

1. Reines „Forward Engineering”- Beschreiben der statischen Struktur mit UML 2.0

Klassendiagrammen- Beschreiben des Verhaltens mit UML 2.0 Aktivitätsdiagrammen

- Modellieren den Kontrollfluss der Anwendung- Werden zur Laufzeit interpretiert

2. Verknüpfung mit herkömmlicher objektorientierter Programmiersprache- C#- Aktionen aus den Aktivitätsdiagrammen können mit C# Code

ausgearbeitet werden

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 7

Forschungsansatz ActiveCharts – ein MDA-Ansatz (2/2)

Analyse/DesignAnalyse/Design

Domänenmodell (Klassendiagramm)Anwendungsfälle (Text)Aktivitätsdiagramme (Erweiterungen der Anwendungsfälle)Simulation & Debugging mit ActiveChartsIDE

Codegenerierung aus dem DomänenmodellInterfaces aus dem Aktivitätsdiagramm generierenInterfaces implementieren (die Aktionen)Diagramme werden durch Laufzeitumgebung ausgeführt

Simulation & Debugging mit ActiveChartsIDE

„Standalone execution“ des Projekts

TestTest

ImplementierungImplementierung

ReleaseRelease

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 8

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 9

Inhalt

– Motivation

– Forschungsansatz ActiveCharts

– ActiveCharts Architektur

– Beispiel

– Diskussion

– Aktuelle Forschungsarbeiten

– Zusammenfassung und Ausblick

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 10

Ein Beispiel – eine vereinfachte Alarmanlage

Alarmanlage

- hat Sensoren, Sirenen und einen Controller- Sensoren senden Heartbeat-Signal- Wird der Heartbeat nicht innerhalb einer bestimmten

Zeit empfangen: Alarm!

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 11

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 12

Vereinfachte Alarmanlage – statische Struktur

SensorAlarmDeviceController1..*1

device sensors

Siren

1..*

1device

sirens

C# Code, der die Klassen,Attribute und Assoziationen

implementiert

AlarmDevice alarmanlage = new AlarmDevice();Siren sirene = new Siren();alarmanlage.sirenen.Add(sirene);

Generator

Verwendung in eigenem Code

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 13

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 14

Alarmanlage - Kontrollfluss

SensorBehavior

5s

Heartbeat

ControllerBehavior

Init

Heartbeat10s

ProcessHeartbeat

receivedSignal

[result == false][result == true]

result

Alarm

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 15

Alarmanlage - Kontrollfluss

ControllerBehavior

Init

Heartbeat10s

ProcessHeartbeat

receivedSignal

[result == false][result == true]

result

Alarm

SensorBehavior

5s

Heartbeat

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 16

Alarmanlage - Kontrollfluss

ControllerBehavior

Init

Heartbeat10s

ProcessHeartbeat

receivedSignal

[result == false][result == true]

result

Alarm

SensorBehavior

5s

Heartbeat

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 17

Alarmanlage - Kontrollfluss

ControllerBehavior

Init

Heartbeat10s

ProcessHeartbeat

receivedSignal

[result == false][result == true]

result

Alarm

SensorBehavior

5s

Heartbeat

Programmiert mit C# Code

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 18

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 19

Handgeschriebener Code

ProcessHeartbeat muss überprüfen, ob ein Sensor fehlt– Für alle existierenden Sensoren die Zeitstempel anschauen– Falls ein Sensor keinen Heartbeat mehr sendet, Alarm auslösen– Für den Sensor, der das Signal gesendet hat: Zeitstempel aktualisieren

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 20

ActiveCharts – Sreenshots (1/2)

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 21

ActiveCharts – Sreenshots (2/2)

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 22

Diskussion

Die erstellten Analyse/Design-Dokumente sind Teil der Implementierung– Wiederverwendung der Design-Artefakte– Die graphische Dokumentation ist immer aktuell– Kein unnötiges Nachprogrammieren des Kontrollflusses– Die Modelle könne ausgeführt werden– Wohldefinierte Semantik

Explizite Schnittstelle zwischen PIM und PSM/Code (Aktionen)Verwendung einer herkömmlichen Programmiersprache (C#) Verhältnis von Code und Modellen ist frei wählbar

– Erhöht die Akzeptanz beim Entwickler– Vereinfacht den Übergang zu modellgetriebener Softwareentwicklung

Formale Beschreibung der Semantik von Aktivitätsdiagrammen der UML 2.0 mit Abstract State Machines

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 23

Aktuelle Forschungsarbeiten

- Einbindung von (nichtfunktionalen) Anforderungen in ActiveCharts

- Übersetzungsansatz: übersetzte Komponenten einbinden

- Persistierung des Interpreters (beispielsweise für Testsuite)

- Generierung von Testfällen

- Portierung auf Java

- Wohldefinierte Semantiken für weitere UML 2.0 Diagrammarten (Abstract State Machines)

- Verifizierung von Abstract State Machines

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 24

Zusammenfassung und Ausblick

- Unser Ansatz der modellgetriebenen Softwareentwicklung benutzt UML 2.0 Klassen- und Aktivitätsdiagramme

- ActiveChartsIDE unterstützt in diesem Ansatz:- Import der erstellten Diagramme- Codegenerierung aus Klassendiagrammen- Interpretation der Aktivitätsdiagramme zur Laufzeit- Visualisierung des Tokenflusses- Debugger Funktionalität

- Formale Beschreibung der Semantik mit Abstract State Machines

Weitere Informationen und ActiveChartsIDE-Download unterwww.activecharts.de

ActiveCharts | Jens Kohlmeyer | 5. März 2007Seite 25

Vielen Dank für Ihre

Aufmerksamkeit!