Einfach generieren. Susanne Klar, Michael Klar. Generative Programmierung verständlich und praxisnah ISBN Inhaltsverzeichnis

Ähnliche Dokumente
Inhalt. Vorwort... XI

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 7. Februar 2013

Potentiale modellgetriebener Softwareentwicklung

Model Driven Development im Überblick

Generatives Programmieren

Model Driven Architecture Praxisbeispiel

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 11. Februar 2015

Comparing Software Factories and Software Product Lines

Motivation Grundlagen Technologien Manipulation Ecore Genmodell Demo Persistenz Notification Ausblick GMF Fazit / Quellen

Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen

Einführung in Generatives Programmieren. Bastian Molkenthin

Modellgetriebene Entwicklung eingebetteter Systeme mit Eclipse

MDSD spezifisches Projektmanagement. Thomas Stahl b+m Informatik AG

Inhaltsverzeichnis VII

Modellgetriebene Entwicklung einer Eclipse RAP-Anwendung unter Verwendung des Eclipse Modeling Frameworks

Objektorientierte Systementwicklung

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

Model-Driven Software Engineering (HS 2011)

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

2 Softwarearchitektur in der Organisationsstruktur 25

MDRE die nächste Generation des Requirements Engineerings

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH

Model Driven SOA. < J Springer. Anwendungsorientierte Methodik und Vorgehen in der Praxis. Gerhard Rempp Mark Akermann Martin Löffler Jens Lehmann

Model Driven Architecture (MDA)

Systemdenken und Gestaltungsmethodik System-Modellierung

Modellgetriebene Softwareentwicklung. Gabriele Taentzer WS 2012/2013 Philipps-Universität Marburg

Effektive Software-Architekturen Ein praktischer Leitfaden

Software Engineering

Beispielhaft MDSD in der Praxis. Dr. Shota Okujava

Poseidon for UML. Einführung. Andreas Blunk

Modellgetriebene Softwareentwicklung (Model Driven Software Development - MDSD) SS 2014

Release-News: Technische Lösungen

Modellbasierte Testautomatisierung mit Fitnesse

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012

Vortrag von: Ilias Agorakis & Robert Roginer

Model Querys zur Überprüfung von sicherheitsrelevanten Eigenschaften

Ein Ansatz zum modellgetriebenen Integrationstest von EJB-basierten Informationssystemen

Inhalt. Motivation Techniken des MDE. Fallbeispiele

Entwicklung domänenspezifischer Software

Model Driven Architecture

Modellgetriebene Softwareentwicklung und deren Auswirkung auf die Entwicklungsmethodologie von Standardsoftware

Integration von Model-Driven Development und formaler Verfikation in den Softwareentwicklungsprozess

Software-Architektur. Spektrum k_/takademischht VERLAG

MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools

Inhaltsverzeichnis. Dirk Stähler, Ingo Meier, Rolf Scheuch, Christian Schmülling, Daniel Somssich

AGEDIS Methode und Werkzeuge. 1. Was ist AGEDIS 2. Die AGEDIS Methode 3. Architektur / Werkzeuge 4. Fazit

Xpert.press. Model Driven SOA. Anwendungsorientierte Methodik und Vorgehen in der Praxis

Architecture Blueprints

Grundlagen von MOF. Alexander Gepting 1

Prozessorientierte Integration von Anwendungssystemen WS 2015 FWP-Fach für Bachelor Wirtschaftsinformatik

Architecture Blueprints Ein Leitfaden zur Konstruktion von Softwaresystemen mit Java Spring,.NET, ADF, Forms und SOA


Der Rational Unified Process

ESE Conference 2011, Zürich. Generative Konzepte für den Plattform-Zoo - am Beispiel Mobile-Apps. Rüdiger Schilling Delta Software Technology GmbH

Modellgetriebene Softwareentwicklung von mobilen Anwendungen. Gabriele Taentzer WS 2014/15 Philipps-Universität Marburg

Programmieren ohne Programmierer Das GeneSEZ Generator Framework. Gerrit Beine

Software Factories SS Prof. Dr. Dirk Müller. 3 Modellgetriebene Softwareentwicklung

X2X SOFTWARE-ROBOTER

Ausarbeitung Referat zur MDA

Automatisch fehlerfrei eine Vision?

Inhaltsverzeichnis. Gernot Starke. Effektive Softwarearchitekturen. Ein praktischer Leitfaden ISBN:

Wiederverwendung von Transformationen

Case Story : Modellgetriebene Softwareentwicklung bei der Rentenzahlung

Softwarevarianten im Griff mit textuellen DSLs

Container als Immutable Infrastructure. John M. Hutchison

b+m Informatik AG Langlebige und zukunftsfähige modellgetriebene Softwaresysteme? Thomas Stahl b+m Informatik AG

Enterprise PHP 5. Serviceorientierte und webbasierte Anwendungen für den Unternehmenseinsatz. von Johann-Peter Hartmann, Björn Schotte. 1.

Pragmatische Modellierung von Testfällen für Software im Automobil 1

Modellgetriebene Testentwicklung (MDTD)

Model-Driven Development in Scrum-Projekten

Architecture Blueprints

Application Engineering Grundlagen für die objektorientierte Softwareentwicklung mit zahlreichen Beispielen, Aufgaben und Lösungen

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Business Analysis Body of Knowledge BABOK v3. Konzepte Scope Struktur. Ursula Meseberg microtool GmbH Berlin

MDA-Praktikum, Einführung

Inhaltsverzeichnis. Ernest Wallmüller. Software Quality Engineering. Ein Leitfaden für bessere Software-Qualität ISBN:

Modellbasierte Software- Entwicklung eingebetteter Systeme

Objektorientiertes Programmieren

Praktische Anwendungsentwicklung mit Oracle Forms

SPI - Software Process Improvement mit CMMI, PSP/TSP und ISO 15504

<Insert Picture Here> Generierung von ADF-Applikationen aus Metadaten des Oracle Designer

Ein Ausblick auf die neuen Features

Visual Studio 2010 Neues für Architekten

Modellgetriebene Softwareentwicklung

Modernisierung eines Legacysystems mittels MDSD

1 XML Hype oder Hoffnung? Einleitung Wie ist dieses Buch aufgebaut?... 3

PLATTFORMÜBERGREIFENDE ENTWICKLUNG MITHILFE MODELLGETRIEBENER METHODEN UND TECHNOLOGIEN

Generierung von Steuerungsprogrammcode für SPS und μc aus Petri-Netz-Modellen

Kernprozess zur System- und Softwareentwicklung. Logische Systemarchitektur f 1. f 2 f 3. f 4 Funktion. Technische Systemarchitektur SG 1 SG 2 SG 3

Thema 7 Einstieg in die Semesterarbeit

Systematisches Requirements Engineering

Softwaretechnik 3. Klausurnachbesprechung , Phillip Ghadir

Modellgetriebene Softwareentwicklung

Modellgetriebene Softwareentwicklung

SEA. Modellgetriebene Softwareentwicklung in der BA

ANGEWANDTE LINGUISTISCHE DATENVERARBEITUNG PROF. DR. JÜRGEN ROLSHOVEN UTE WINKELMANN

Abschlussbericht. Erstellung eines automatisierten Build-Prozesses für Eclipse-RCP- Anwendungen am Fallbeispiel Control System Studio.

Model Driven Software Development

Transkript:

Einfach generieren Susanne Klar, Michael Klar Generative Programmierung verständlich und praxisnah ISBN 3-446-40448-1 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40448-1 sowie im Buchhandel

Inhalt Vorwort... XI 1 Grundlagen und zentrale Begriffe...1 1.1 Kernphilosophie: Automatisierung... 2 1.1.1 Standardisierung als Voraussetzung... 2 1.1.2 Trennung von Domänen- und Applikations-Entwicklung... 3 1.1.3 Domänenspezifische Erstellung... 4 1.1.4 100% Automatisierung?... 7 1.1.5 Queraspekte... 8 1.1.6 Flexibilität: generativ oder interpretativ... 10 1.1.7 Konsequenzen für das Management... 10 1.1.8 Fazit... 12 1.2 Die Rolle des Modells... 12 1.3 Generatoren... 14 1.3.1 CASE-Tools... 14 1.3.2 Schablonen in Programmiersprachen... 14 1.3.3 Generatorsysteme... 15 2 Applikations- und Domänen-Entwicklung...19 2.1 Kurzeinführung in HuGo... 20 2.2 Fazit und Ausblick... 29 2.3 Übungen... 30 2.3.1 Als Applikations-Entwickler spezifizieren... 31 2.3.2 Als Domänen-Entwickler Anpassungen vornehmen... 31 2.3.3 Anpassung der DSL... 33 3 Gleichförmigkeiten...35 3.1 Schema in Schnittstellenbeschreibung der DSL... 36 3.2 Architektur für verteiltes System... 38 3.3 Referenzimplementierung... 39 3.4 Generator zur Transformation... 41 3.5 Fazit und Ausblick... 45 3.5.1 Ein erstes Prozessmodell... 45 3.5.2 Finden der richtigen DSL... 47 3.5.3 Die Rolle des Modellierers... 48 3.5.4 Validierung des Modells... 49 3.5.5 Vorteile von Generieren... 50 3.5.6 Potenzielle Erweiterungen des Beispiels... 51

VI Inhalt 4 Queraspekte und DRY-Prinzip...53 4.1 Vorbemerkung... 54 4.2 Schritt 1: Basisentwurf Formulareditor... 55 4.2.1 Der Kernaspekt... 56 4.2.2 Die Basiskomponenten... 56 4.2.3 Die Modelldatei... 58 4.2.4 Die Architektur... 60 4.2.5 Referenzimplementierungen & Frames... 63 4.2.6 Fazit und Ausblick... 76 4.2.7 Übungen... 77 4.3 Schritt 2: Vereinfachung des DSL-Modells... 82 4.3.1 Trennung zwischen Applikation und Basiskomponenten... 82 4.3.2 Eine vereinfachte DSL... 85 4.3.3 Umwandeln der vereinfachten DSL in die formular.model... 86 4.3.4 Validierung des DSL-Modells... 90 4.3.5 Fazit und Ausblick... 91 4.4 Schritt 3: Nachträglicher Queraspekt: Tooltipps für Items... 91 4.4.1 Änderungen in der DSL... 92 4.4.2 Änderungen in den Frames... 92 4.4.3 Fazit und Ausblick... 94 4.5 Schritt 4: JUnit-Testfälle für Constraints... 96 4.5.1 Constraint-Mechanismus im Formulareditor... 96 4.5.2 Schematisierung von Testfällen... 97 4.5.3 Kurzeinführung in JUnit... 98 4.5.4 Generierung der JUnit Klasse... 101 4.5.5 Fazit und Ausblick... 104 4.6 Schritt 5: Dokumentation generieren... 105 4.6.1 Schematisierung von Dokumentation... 105 4.6.2 Format der Dokumentation (HTML)... 109 4.6.3 Generierung der Dokumentation... 110 4.6.4 Fazit und Ausblick... 115 4.6.5 Übung: Eigenes Doku-Schema... 118 5 Applikationsnah generieren...119 5.1 Eine DSL für Gebäudelichtsteuerung... 120 5.2 Die Architektur... 122 5.3 Die Referenzimplementierung... 124 5.4 Generator-Frames... 128 5.4.1 Generierung der Steuerungsklassen... 129 5.4.2 Übung: Generierung des Test-Clients... 134 5.5 Fazit und Ausblick... 137 5.5.1 Applikationsnahe DSL... 137

Inhalt VII 5.5.2 Schematisierung und Codeversatzstücke... 137 5.5.3 Ausbau um weitere elektrische Komponenten... 138 5.5.4 UML-Zustandsdiagramme als alternative DSL?... 138 5.5.5 Trennung von Steuerung und Test-Client... 139 5.5.6 Portabilität des Zielcodes... 139 5.5.7 Generativ versus interpretativ... 140 6 Fachwelt rund ums Generieren...141 6.1 Systemfamilien und Produktlinien... 142 6.2 Aspektorientierte Programmierung (AOP)... 145 6.3 Generische Programmierung... 146 6.4 Generative Programmierung (GP)... 147 6.5 Model Driven Architecture (MDA)... 147 6.6 Model Driven Software Developement (MDSD)... 151 6.7 Fazit und Ausblick... 151 6.7.1 UML als Basis für eine DSL?... 151 6.7.2 Modell, Metamodell und Metametamodell: Sinnvolle Abstraktionen... 152 7 Generierungstechniken...155 7.1 Templates für beliebige Zielsprachen... 156 7.1.1 Templates und Filtering... 156 7.1.2 Templates und Metamodell... 158 7.2 Frame-Prozessoren... 160 7.3 API-basierte Generatoren... 161 7.4 Code-Attribute... 162 7.5 Inline-Generierung... 165 7.6 Code-Weaving... 168 7.7 Fazit und Ausblick... 170 8 Engineering...177 8.1 Das Prozessmodell... 178 8.1.1 Trennung von Applikations- und Domänen-Entwicklung... 178 8.1.2 Iterative Entwicklung... 182 8.1.3 Erstellung von Referenzimplementierung und Prototyp... 183 8.1.4 Erstellung von Basiskomponenten... 185 8.2 Dokumentation... 187 8.2.1 Allgemeines zur Dokumentation... 187 8.2.2 Dokumentation der DSL... 188 8.2.3 Dokumentation des Programmiermodells... 189 8.2.4 Dokumentation der Varianten... 189 8.3 Testen... 189

VIII Inhalt 8.3.1 Automatische Tests für Varianten... 190 8.3.2 Test der Transformationsanweisungen des Generators... 191 8.3.3 Akzeptanztest der DSL... 191 8.3.4 Review-Fragen... 192 8.4 Infrastruktur (Make, Debug, Versionierung)... 199 8.4.1 Code-Generierung und Make-Prozess... 199 8.4.2 Debuggen von generiertem Code... 200 8.4.3 Coding-Blöcke und Refaktorisieren... 200 8.4.4 Versionierung der Artefakte... 201 8.5 Generatoren erzeugen Generatoren... 202 9 Management...203 9.1 Das Team... 204 9.1.1 Rollen... 204 9.1.2 Wissen und Fähigkeiten... 207 9.1.3 Psychologische Effekte... 208 9.2 Betriebswirtschaftliche Aspekte... 211 9.2.1 Flexibilität: interpretativ oder generativ... 212 9.2.2 Prinzipielle Einsparungspunkte... 214 9.2.3 Kosten-/Nutzen-Verhältnis erhöhen... 215 9.2.4 Outsourcing und Offshoring... 215 9.3 Risiken und Risikomanagement... 216 9.3.1 Keine saubere Trennung zwischen AE und DE... 216 9.3.2 Falscher Ehrgeiz einer 100%-Generierung... 217 9.3.3 Kein konsequentes, iteratives Vorgehen... 218 9.3.4 Zu wenig Feedback... 219 9.3.5 Überlastete Domänen-Entwickler... 219 9.3.6 Unpassende Architektur... 220 9.3.7 Tool-Zentriertheit... 220 9.3.8 Zu wenig Ausrichtung auf die Domäne... 221 9.3.9 Zu wenig DRY... 221 10 FAQs...223 10.1 Generieren ist doch nicht wirklich neu, oder?... 224 10.2 Wozu generieren, wenn ich Konfigurationsdateien habe?... 224 10.3 Wie zuverlässig ist generierter Code?... 225 10.4 Lohnt sich Generieren auch bei bestehenden Projekten?... 225 10.5 Sollte man anteilige Generierung vermeiden?... 225 10.6 Wo ist der Haken beim Generieren?... 226 10.7 Warum verwenden Sie kein MDA-Tool?... 226 10.8 Welche Tools können Sie empfehlen?... 226 10.9 Warum wird bislang noch so wenig generiert?... 227

Inhalt IX A Theorie und Praxis...229 A.1 Zuordnung Grundprinzipien Kapitel 2 5... 230 A.2 Weitere Beispiele aus dem Web-Umfeld... 232 A.3 Und Ihr Projekt... 234 Literatur...235 Register...237