Generatives Programmieren



Ähnliche Dokumente
Einführung in Generatives Programmieren. Bastian Molkenthin

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Comparing Software Factories and Software Product Lines

Übungen zur Softwaretechnik

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

Vortrag von: Ilias Agorakis & Robert Roginer

Generatives Programmieren

Objektorientierte Programmierung OOP

Die Orgadata AG ist ein stark expandierendes Software-Unternehmen aus Leer. Mit unserem System LogiKal

Model Driven Development im Überblick

Product Line Engineering (PLE)

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Vom Konzept direkt ins Cockpit: Optimierte HMI-Entwicklung mittels automatischer Codegenerierung

A Domain Specific Language for Project Execution Models

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Präsentation Von Laura Baake und Janina Schwemer

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr.

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Internet Explorer Version 6

SDD System Design Document

Unterschiede zur Klassischen Software-Entwicklung. SPL versus klassische SE Tim Serowski 1

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

Software Engineering

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Semantic Web Technologies I! Lehrveranstaltung im WS10/11! Dr. Andreas Harth! Dr. Sebastian Rudolph!

IMS - Learning Design

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert

Installation & Konfiguration AddOn CopyObjects

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Kapitel 10: Dokumentation

R&I-Fließbilder in PLANEDS

Software Systems Engineering

Vgl. Kapitel 4 aus Systematisches Requirements Engineering, Christoph Ebert

Neuer Releasestand Finanzbuchhaltung DAM-EDV E Inhaltsverzeichnis. 1. Neuerungen Schnittstelle Telebanking mit IBAN und BIC...

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Information Systems Engineering Seminar

So richten Sie ein -Konto in Mozilla Thunderbird 3.x ein

Konzepte der Informatik

FACHHOCHSCHULE MANNHEIM

10 Erweiterung und Portierung

ArcObjects-Programmierung mit Delphi. Marko Apfel, Team Entwicklung

Kurzeinführung Excel2App. Version 1.0.0

Agile Software Development

WhiteStarUML Tutorial

Thin versus Fat Clients

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

Abschnitt 16: Objektorientiertes Design

Theoretische Grundlagen des Software Engineering

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Die Volljährigkeitsprüfung in [:lo.pro:]

white sheep GmbH Unternehmensberatung Schnittstellen Framework

Umfrage zum Informationsbedarf im Requirements Engineering

ITIL und Entwicklungsmodelle: Die zwei Kulturen

Stand vr bank Südthüringen eg 1 von 10. Smart TAN plus Umstellungsanleitung VR-NetWorld Software

Inhalt... 1 Einleitung... 1 Systemanforderungen... 1 Software Download... 1 Prüfdokumentation... 4 Probleme... 5 Hintergrund... 5

teischl.com Software Design & Services e.u. office@teischl.com

Branching und Merging mit Visual Studio Team System

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

Plümper, Thomas, 2003, Effizient Schreiben, München, Oldenbourg,

SAP NetWeaver Gateway. 2013

Softwarequalität: Zusammenfassung und Ausblick. 17. Juli 2013

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

GRS SIGNUM Product-Lifecycle-Management

Entwicklung des Dentalmarktes in 2010 und Papier versus Plastik.

AcQuickPrint / AcSetPrinter Publizieren leicht gemacht / Drucker in Layouts tauschen

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

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

QuickInfo Dienstplanerstellungund Dienstplanänderung. Erstellung eines Dienstplan bzw. Arbeitszeitmodell

User Manual Data 24. Login und Layout

SEMINAR Modifikation für die Nutzung des Community Builders

Print2CAD 2017, 8th Generation. Netzwerkversionen

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Professionelle Seminare im Bereich MS-Office

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

Wofür braucht man eine Tabellenkalkulation? Das Programm Microsoft Excel gehört in Softwarekategorie der Tabellenkalkulationen.

C++ im Web mit Tntnet

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Beispielhaft MDSD in der Praxis. Dr. Shota Okujava

Softwaretechnik. Fomuso Ekellem WS 2011/12

Anleitung zur Excel-Anwendung Basisprämienberechnung

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Klausur Software-Engineering SS 2005 Iwanowski

Anforderungen an die HIS

Medina-DynCmd-Schnittstelle

Reporting Services und SharePoint 2010 Teil 1

Menü auf zwei Module verteilt (Joomla 3.4.0)

Transkript:

Generatives Programmieren Seminar Produktlinien WS03/04 Tammo van Lessen 08.01.2004

Outline Einleitung Generatoren Generatives Programmieren Fazit

Einleitung Industrielle Entwicklung 1826 Austauschbare Teile 1901 1. Fließband 1981 Industrieroboter bauen automatisch Autos Software-Entwicklung 1942 1. Programmiersprache 70er Objektorientierung Zukunft Generatives Programmieren?

Einleitung (2) Zauberwort der heutigen Softwareentwicklung re-use Wiederverwendung Verschiedene Möglichkeiten Generisches Programmieren Generatives Programmieren

Einleitung (2) OOA/D unterscheidet nicht zwischen Design for Re-Use und Design with Re-Use. OOA/D nicht für Domain-Scoping ausgelegt. Generatives Programmieren soll hier Abhilfe bringen.

Software-Generatoren Aufgaben Klassifikation Bauen von Generatoren Beispiele Anwendung

Was ist ein Generator? Ein Generator ist ein Programm, das eine abstrakte Eingabe zu einer weniger abstrakten, feineren Ausgabe umwandelt. Compiler, Preprocessors, CASE-Tools, GUI- Builder, JavaDoc sind Generatoren. Es muss nicht nur Code generiert werden.

Aufgaben des Generators Prüfen der Spezifikation Vervollständigen der Spezifikation Optimierungen durchführen Implementierung generieren Eingabe Generator Ausgabe

Klassifikation Horizontal Manipulation der Struktur Abstraktionsebene bleibt Vertikal Manipulation der Abstraktion, Hierarchie wird aufgeschlüsselt (Decomposing) Struktur bleibt. Oblique Kombination aus beiden Klassen

Klassifikation (2) horizontal vertikal oblique

Klassifikation (2) Compositional Transformational

Erstellen von Generatoren Stand-alone Hoher Implementierungsaufwand Verwendung von Generator-Baukästen z.b. GenVoca, Draco Metaprogrammierung Nutzung von eingebetteten Generatoren in Programmiersprachen

Populäre Beispiele Aspect Oriented Programming (AOP) Generic Programming C++ STL Compiler-Makros JSP Model-Driven-Architecture (MDA)

Anwendungsbeispiele GMCL & CMFL Hochperformante Matrizenalgorithmen Hochkonfigurierbar 7.500 Zeilen C++ (Templates) Bordcomputer-Software von Sateliten Spezifikation in XML Velocity-ähnliche Templatesprache Erzeugt ADA83-Code

Sinnvolle Einsatzgebiete Produktlinien Erhöhung der Wartbarkeit Embedded-Systeme Lücken in Programmiersprachen schliessen

Generatives Programmieren Definition Generative Domain Model Prozess Pro und Kontra

Was ist GP? Generatives Programmieren modelliert Software- Systemfamilien so, dass ausgehend von einer Anforderungsspezifikation mittels Konfigurationswissen aus elementaren, wiederverwendbaren Implementierungskomponenten ein hochangepasstes und optimiertes Zwischen- oder Endprodukt nach Bedarf automatisch erzeugt werden kann. Ist ein Prozessmodell

Generative Domain Model (1) Problem Raum Features DSL Konfigurations Wissen Kombinationen Lösungs Raum Komponenten

Generative Domain Model (2) Problemraum Domänenspez. Begriffe und Merkmale Eigene Sprache (DSL) zum Spezifizieren Lösungsraum Potenzmenge aller Komponenten Maximale Kombinierbarkeit Minimale Redundanz

Generative Domain Model (3) Konfigurationswissen Mapping: Feature Komponente Welche Komponenten dürfen kombiniert werden? Welche nicht? Produktionsplan der Produktlinie

Der Prozess Domain Engineering Domänen-Engineering ist das Sammeln, Organisieren und Festhalten bisheriger Erfahrungen im Erstellen von Systemen [...] in einer bestimmten Domäne in Form von wiederverwendbaren Werten [...] Entwickeln von Mitteln zum Wiederverwenden dieser Werte zur Erstellung neuer Systeme. Application Engineering Produkte werden auf Knopfdruck aus einer DSL generiert.

Pro und Kontra Pro Einfaches erzeugen von Produkten aus einer Produktlinie. Kurze Analyse- und Entwicklungszeiten Wartung findet nie auf Produktebene statt. Weniger Code Kontra Unflexibel Lässt keine nachträglichen Erweiterungen zu. Die komplexe Komponentenbibliothek muss erst entwickelt werden.

Fazit Generatoren können sinnvoll verwendet werden. Generatives Programmieren setzt sehr aufwendiges Domain Engineering voraus. Hohes Risiko, aber auch hoher Effizienz und viel Gewinn. Software ist immateriell, muss als entwickelt und kann nicht gefertigt werden. GP wird konventionelle SE nie verdrängen, aber sehr wohl ergänzen.

Vielen Dank!