03.05.2007 Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung.

Slides:



Advertisements
Ähnliche Präsentationen
Forschungszentrum Informatik
Advertisements

Blue J.
Kohonennetze für Information Retrieval mit User Feedback
Entwicklung UnivIS-Anbindung auf Basis von PHP und DOM-XML
Einführung in die Programmierung Zusammenfassung
Fortgeschrittenenpraktika WS 2003/04 Database Research Group, Prof. Dr. Bernhard Seeger Department of Mathematics and Computer Science University of Marburg.
Vergleichende Untersuchungen zur effizienten VHDL-Simulation
Vorstellung von PaderWAVE Generierung von Web-Anwendungen aus visuellen Spezifikationen, SS04 Projektgruppe der AG Kastens.
Windows auf öffentlichen PCs
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Sortierverfahren Richard Göbel.
Agenda Einführung Haskell QuickCheck Zusammenfassung
Modularisierungstechniken
Portierung von Java nach C
Visual FoxPro Objektorientierte Programmierung. © 1999 TMN-Systemberatung GmbH Grundbegriffe n Objekte n Eigenschaften n Methoden n Objektnamen n Klasse.
1 Dienstbeschreibung mit DAML Ein graphischer Editor für DAML - Ting Zheng Betreuer: Michael Klein, Philipp Obreiter.
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
René Castillo Björn Bollensdorff Analysetechniken in der Softwaretechnik SS 2007 Featherweight Java Inside every large language is a small language struggling.
Simulation komplexer technischer Anlagen
Best Fit Matching von Punktewolken
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
Übersicht Motivation Konzeption Umsetzung/ Implementierung
Proseminar an der TU München Martin Levihn
ReSy4 Das schlanke System für Ihre Rezepturen
Logo Externer Zugang und Verknüpfungen zu easyLEARN Wissensobjekten.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Software-Technik „Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige.
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
Agenda Rückblick 2. Aufbau der Software Benutzeroberfläche 4. Ausblick
Java Programmierung.
CMS-Kolloquium am 10. Januar 2006
EPROG Tutorium #5 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Verweis in der Entwicklungsumgebung Herbers Excel-Server - der Workshop Angebote des Excel-Servers: Die Excel/VBA-Beispiele Die Excel/VBA-BeispieleDie.
Objektorientierung.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Eike Schallehn, Martin Endig
2. Kommunikation und Synchronisation von Prozessen 2
1 Projekt: Wertungsschiessen Markus Zwickl, Bernhard Riess Im Fach PMS bei Prof. Dr.-Ing. Josef Schneeberger Deggendorf,
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Einführung in die Programmierung mit Java
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
- Studienarbeit - Entwurf und Umsetzung von kombinierten Anfragen für die Ähnlichkeitssuche auf digitalen Bilder auf der Basis von Regionen und Features.
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
SS 2015 – IBB4C Datenmanagement Fr 17:00 – 18:30 R Vorlesung #1 Datenmanagement.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Technische Universität München Praktikum Mobile Web Teil Kollaboratives Bewerten und Filtern am Touchscreen Robert Eigner
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Praktikum Mobile Web 2.0 – 2.Teil Wolfgang Wörndl, Robert Eigner.
2 Elektrische Maschinen in Kraftfahrzeugen
Einführung in Web- und Data-Science
MasterBAV© Die neue Generation BAV
PSG II Neuer Pflegebedürftigkeitsbegriff und dessen Begutachtung (NBA)
Microsoft® Office PowerPoint® 2007-Schulung
Mathematik 10.
Betriebliche Gesundheitsförderung 2
Sortieren auf Multiprozessorrechnern
Generative Posenschätzung
Metrik Sondermaschinenbau e. K.
File Objekt
 Präsentation transkript:

Marko Rosenmüller Universität Magdeburg 1 Software Produktlinien und Featureorientierte Programmierung

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Agenda Featureorientierte Programmierung (FOP) Produktlinienentwicklung Abgrenzung von OOP Abstrakte Sicht auf Refinements Large Scale Refinements Jak und FeatureC++

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Featureorientierte Programmierung Schrittweise Erweiterung einer Software um neue Features (Stepwise Refinement) Feature: Für den Anwender wesentliche Funktionalität einer Software. Z.B.: Sortierung einer Liste Suche in einer Liste Beliebige weitere (doppelt verlinkt, synchronisiert, etc.) Anwender sucht sich gewünschte Features aus

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Vergleich – Automobilbau Ähnliche Herangehensweise: Käufer sucht sich gewünschte Merkmale (Features) aus: Automatik- / Schaltgetriebe Klimaanlage Navigationssystem Zum Teil beliebig Kombinierbar z.B. Klimaanlage und Navigationssystem Zum Teil gegenseitig ausschließend z.B. Automatik- / Schaltgetriebe

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Produktlinienentwicklung Automobilbau: Vielzahl möglicher Modelle erstellbar Produktlinie Anwendung auf Software Software Produktlinien Bsp.: Bibliothek von Container-Klassen (Liste, Array, etc.): Sortierung Suche Synchronisation etc. Umsetzung mit Hilfe von FOP

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Wo ist das Problem? Problem: Was ist, wenn wir beide Eigenschaften wollen?

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Wo ist das Problem? Problem: Was ist, wenn wir beide Eigenschaften wollen? Codereplikation

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg OOP Abgrenzung von OOP

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg FOPOOP Abgrenzung von OOP Schrittweise Erweiterung der Basisimplementierung durch Verfeinerungen (Refinements)

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Abstrakte Sicht auf Refinements Features Refinements

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Abstrakte Sicht auf Refinements Beliebige Merkmalskombinationen erstellbar Sortierte Liste

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Large Scale Refinements Für Software Produktlinien Skalierung auf ganze Software (mehrere Klassen) notwendig Large Scale Refinements Gleichzeitige Erweiterung mehrerer Klassen Bsp.: Bibliothek von Container-Klassen Klassen (List, Array, etc.), werden um Features (Sortierung, Suche, etc.) erweitert.

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Large Scale Refinements

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Jak und FeatureC++ Jak: Umsetzung von FOP für Java Teil der AHEAD Toolsuite FeatureC++: Umsetzung von FOP für C++ Beide Ansätze basieren auf Codetransformation: Umwandlung des FOP Quelltextes (Jak, FeatureC++) in OOP Quelltext (Java, C++)

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Liste mit FeatureC++ Basis: Herkömmliche Implementierung einer Liste mit OOP (C++)

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Liste mit FeatureC++ Feature Sort Feature Base

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Liste mit FeatureC++ Feature Base Feature Sort Methodenverfeinerung Super-Aufruf

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Liste mit FeatureC++ Feature Base Neu eingeführte Methode Feature Sort

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Feature Base Liste mit FeatureC++ Konfiguration durch Auswahl der benötigten Features in einer Datei Base Sort [SortedList.equation] Base Sort Find [SortFindList.equation] Feature Sort

Produktlinien und Featureorientierte Programmierung Marko Rosenmüller Universität Magdeburg Zusammenfassung FOP zur Entwicklung von Produktlinien: Analogie zu anderen Industriezweigen Software Produktlinie: Menge ähnlicher Programme, die erstellt werden können Erstellung einer konkreten Instanz einer Software entsprechend Auswahl notwendiger Features durch den Anwender Umsetzungen Jak als Teil von AHEAD FeatureC++