Thema 7 Einstieg in die Semesterarbeit · Erstellen Sie das M1-Modell für Ihre Ziel-Anwendung...
Transcript of Thema 7 Einstieg in die Semesterarbeit · Erstellen Sie das M1-Modell für Ihre Ziel-Anwendung...
Thema 7 Einstieg in die Semesterarbeit
SE – Vertiefung Beuth-Hochschule Berlin
Agenda
1. Beschränkung der Aufgabe
2. Vorgehensweise bei der Metamodell-Erstellung
3. Anforderungen und Bewertungsgrundlage
4. Diskussion Profile
5. Diskussion DSL
6. Weiteres Vorgehen
Hinweis auf weiteres Material in Moodle!
(Beispielprojekte zu DSL und Profilen)
(c) schmiedecke 11 SE3-9-Semesterarbeit 2
Beschränkung der Aufgabe
Wir haben uns in diesem Semester nicht mit M2M-Trasnformation beschäftigt,
sondern erstellen das PSM händisch mithilfe eines eigenen Metamodells
Definitieren Sie die Metasprache: Erstellen Sie eine PSM-DSL oder ein
oder mehrere Profile zur Auszeichnung des PSM in der UML.
Schreiben Sie einen M2T-Generator zur Umsetzung auf die Zielplattform
Erstellen Sie das M1-Modell für Ihre Ziel-Anwendung unter Verwendung
Ihrer Metasprache
Generieren Sie die Anwendung und ergänzen Sie sie von Hand.
3
PIM PSM ISM
M2M M2T
Fachliches Modell Entwurfsmodell Code
Mögliche Themen
Android-App-Generierung
Anwendung und Ausprogrammierung für verschiedene
Anwendungen, z.B.
– Tracking
– Mensa
– Shared Notes
– Taschenrechner, Umrechner
Standard-Blogseite
SOA-Anwendung
Webservice
Responsive Design
(c) schmiedecke 11 SE3-9-Semesterarbeit 4
Vorgehensweise allgemein:
Denken Sie daran:
Metamodell und Generator müssen für Ihr Beispiel funktionieren –
verallgemeinern können Sie beides später noch...
1. Erst die Beispielanwendung prototypisch in UML skizzieren und
implementieren
dann iterativ daraus M2, M1 und den Generator entwickeln:
2. Modellierungsanforderungen ermitteln und in eine M2-Sprache bringen
3. M1-Modell erstellen und händisch daraus Code generieren
4. Generator schreiben.
(c) schmiedecke 11 SE3-9-Semesterarbeit 5
Vorgehen bei der DSL-Erstellung
1. Modell- und Zielskizze (M1 und Code):
– Kleines Zielmodell in UML modellieren ("Modellskizze")
– Händisch umsetzen ("Zielskizze")
2. DSL schrittweise entwickeln:
– Elemente des Zielmodells identifizieren und typisieren (farbig markieren)
– Ergebnis im Zielsystem identifizieren
– Iterativ vorgehen: Grundlegende DSL bauen erstellen und Modellierung und
Transformation damit testen. Schrittweise ausbauen
Ggf. Probleme posten und nach Workarounds suchen.
3. Fertige DSL auf Ihre Ausdrucksstärke hin evaluieren
– Verschiedene M1-Modelle modellieren, Ausdrucksstärke bewerten,
– Umfang des generierbaren Codes bewerten.
4. Generator schrittweise bauen und testen
5. "Großes" Zielmodell erstellen, generieren, händisch vervollständigen
(c) schmiedecke 11 SE3-9-Semesterarbeit 6
Vorgehen bei der Profilerstellung
1. Modell- und Zielskizze PIM:
– Kleines Zielmodell in UML modellieren ("Modellskizze")
– Händisch umsetzen ("Zielskizze")
2. PSM vorbereiten:
– Entscheiden, um welche Infos das PIM angereichert werden soll
– Und wie sich das im Zielsystem niederschlagen soll
– Iterativ vorgehen: Kleine Testprofile bauen und mit kleinen MTL-Modulen
testen. Ggf. Probleme posten und nach Workarounds suchen.
3. Profil(e) erstellen und definieren
– Analysierbarkeit testen.
4. Modellskizze händisch in ein PSM überführen
– Mit Stereotypen und Tagged Values versehen
– Modellierungswert beurteilen, ggf. Profile überarbeiten
5. Generator schrittweise bauen und testen
6. "Großes" Zielmodell erstellen, generieren, händisch vervollständigen
(c) schmiedecke 11 SE3-9-Semesterarbeit 7
Rollen im MDSD-Prozess nach J.Bettin
(c) schmiedecke 11 SE3-9-Semesterarbeit 8
uc Rollen im MDSD lt. Bet...
Kunde
Domänenanalytiker
Domänenexperte
Domänenarchitekt
Sprachdesigner
Prototyp-Entwickler
Referenz-Implementierer
Plattform-Entwickler
Transformations-Enwickler
Anforderungen und Bewertungsgrundlage:
Praxis
Struktur des Metamodells
Zahl und Umfang der im Metamodell behandelten Aspekte, z.B.
– Architektur
– GUIs/Views
– Datenhaltung / Synchronisation
– Nutzung von Services / Geräten
– Geräteabhängige Eigenschaften
– …
Kriterium: für die Generierung nützliche Zusatzinformation
Struktur, Umfang und Korrektheit des Generators
– Kaskadierung möglich!
Korrektheit, Struktur und Vollständigkeit des generierten Codes
Zielmodell – Umfang, Aussagefähigkeit , ggf. Relevanz (c) schmiedecke 11 SE3-9-Semesterarbeit 9
Anforderungen und Bewertungsgrundlage:
Text
Das "punktet":
Diskussion des Metamodell-Entwurfs
Diskussion der Generatorstruktur
Zielvorgabe für die Softwarestruktur
Darlegung der praktischen Umsetzung, incl. Workarounds
Natürlich müssen Sie auch noch schreiben:
Einleitung
Theoretische Grundlagen:
– MDA, Eclipse Tools, Zielplattform
Konzeption und Entwurf des Generierungsprozesses
Fazit
(c) schmiedecke 11 SE3-9-Semesterarbeit 10
Diskussion des Metamodell-Entwurfs
DSL:
– Welche Information als eigenes Modellelement
– welche als Attribut eines Modellelements?
– Wer nutzt das Metamodell, welche Kenntnisse vorausgesetzt?
– Wie nützlich wäre eine andere grafischen Repräsentation –
welche?
Profile:
– Profil klar benennbar (fachlicher Zusammenhang)?
gut strukturiert?
– warum welches M2-Element erweitert?
– welche Profil-Assoziationen und –Attribute ("tagged values"),
welche Klassen-Assoziationen und –Attribute?
(c) schmiedecke 11 SE3-9-Semesterarbeit 11
Exkurs: Was ist ein gutes Profil?
Profile verbessern / schärfen die
Ausdrucksmöglichkeiten der UML
Es entstehen neue Modellelemente mit anderer oder
zusätzlicher Bedeutung
Zweck:
Zusätzliche Information, ggf. auf anderer Ebene
Ein- und ausblendbar
Nicht in allen Details direkt sichtbar
Von Werkzeugen nutzbar.
(c) schmiedecke 11 SE3-9-Semesterarbeit 12
Stereotypen –
neue oder veränderte Modellelemente
(c) schmiedecke 11 SE3-9-Semesterarbeit 13
class Requirements Mo...
«view»
Startpage
«view»
PersonalizedStartpage
«entity»
Account
«Factory»
AccountFactory
«link»
nicht Klasse im Java-Sinn
nicht Assoziation im Java-Sinn
Klasse im Java-Sinn mit zusätzlichen Features
Klasse im Java-Sinn mit besonderen Aufgaben
(einfache) TaggedValues
(c) schmiedecke 11 SE3-9-Semesterarbeit 14
class Requirements Mo...
«stereotype»
Factory
+ JNDIname: String
«stereotype»
Entity
+ IDStrategy: Integer
+ TableName: String
«stereotype»
Label
+ hidable: Boolean
Zusatzinformationen, die stereotyp-spezifisch sind ,
und auf den Verwendungskontext verweisen
Attribute, die im Modell nicht darstellbar sind,
z.B. bei Property- Stereotypen
Metamodell-Assoziationen
(zwischen Stereotypen)
Aus dem Tagged-Values-Beispiel von R. Petrasch
(c) schmiedecke 11 SE3-9-Semesterarbeit 15
Assoziationsfreies M1-Modell
Assoziationen sind TaggedValues der Stereotypen!
(c) schmiedecke 11 SE3-9-Semesterarbeit 16
Kriterien für die Verwendung von
Metamodell-Assoziationen
Insbesondere wenn das PSM durch Profile unterstützt
von Hand erzeugt wird, ist die Lesbarkeit wichtig!
Profile sollen zusätzliche – typischerweise technische –
Aspekte modellierbar machen
Das Herausziehen von Assoziationen (und anderen
Informationen) auf die "unsichtbare" Metaebene ist nur
ausnahmsweise sinnvoll, z.B.
– wenn es sonst eine Doppelung geben müsste
– wenn die Information aus technischen Gründen anders
untergebracht werden muss (Factory statt direkter Assoziation)
In diesen Fällen ist ggf. eine Stereotypisierung der M1-
Information sinnvoll (Darstellung ohne Generatoreffekt)
(c) schmiedecke 11 SE3-9-Semesterarbeit 17
Stereotypisierte M1-Assoziation
(c) schmiedecke 11 SE3-9-Semesterarbeit 18
<<control>>
Und was können wir jetzt machen?
Kreativ sein, natürlich
Themenbeispiele aus den letzten beiden Semestern
Wetter App (DSL + Profil)
Geschützter Mailverkehr (Profil)
To-Do-App (DSL)
BMI-Rechner (Profil)
div. Fitness-Apps (DSL + Profil)
Kostenmanager (DSL)
WG-App (DSL)
Kartenanwendung für Homepages (Profil)
MVC-CRUD-Generator für Symfony
Geo-Reminder
Rezepte-App
Webseitenbaukasten (Profil + DSL)
REST-Persistenz für Apps
Webseitenbaukasten (c) schmiedecke 11 SE3-9-Semesterarbeit 19
Weiteres Vorgehen
Dies war die letzte "reguläre" Vorlesung
Ab jetzt gibt es nur gelegentlich, nach Ankündigung,
Input – s.u.
Die VL-Zeit wird zur Übungszeit (ab 10:00)
Nächster Vortrag am 16.12.
10:00 Vorstellung eines Semesterprojekts
Im Januar:
– M2M-Transformation
– Testprofile
– Modellgetriebenes Vorgehen bei Microtool in Berlin
(c) schmiedecke 11 SE3-9-Semesterarbeit 20
Ende der Theorie
vielen Dank fürs Durchhalten!
ANHANG:
TAGGED VALUES -ANSÄTZE-
In diesem Bereich hat sich in den letzten Acceleo-Versionen so vel
verändert, dass ich die Folien entfernt habe. Näheres dazu in dne
Übungen.
(c) schmiedecke 11 SE3-9-Semesterarbeit 22