Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme

Ähnliche Dokumente
Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme

Software Product Lines

Entwicklungswerkzeuge

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Comparing Software Factories and Software Product Lines

Deployment Deployment Seite 1 / 25

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

Einführung in Subversion

Application Requirements Engineering

Versionsverwaltung GIT & SVN. Alexander aus der Fünten. Proseminar: Methoden und Werkzeuge, SS Lehrstuhl i9, Prof. Dr. T.

Versionskontrolle mit Subversion

Softwareanforderungsanalyse

Praktikum Ingenieurinformatik (PI)

Versionsverwaltung mit git. Christoph Knabe FB VI

Einführung in die Softwaretechnik 10. Konfigurationsmanagement

Continuous Integration mit Jenkins

Generatives Programmieren

Einführung in Generatives Programmieren. Bastian Molkenthin

Iterativ. Inkrementell

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]

Branching und Merging mit Visual Studio Team System

Apache - Maven. Java-Erstellung auf Plugin-Basis. Martin Hoffmann

Design Patterns 2. Model-View-Controller in der Praxis

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

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Abhängigkeiten und Git

Git in großen Projekten

Versionsverwaltung von Softwareartefakten. 21. Oktober 2014

Informatik-Sommercamp Mastermind mit dem Android SDK

So#ware Engineering Konfigura0onsmanagement

Software Systems Engineering

Von Continuous Integration zu Continuous Deployment

Versionsverwaltung mit SVN

Software Engineering in der Praxis

Moodle aktuell halten mit Git

Subversion. 17. Oktober Subversion. Norbert Perk. Warum Versionsverwaltung? Wie funktioniert. Was ist Subversion? Subversion- Server.

Einführung in Maven und GWT

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Java: Vererbung. Teil 3: super()

Product Line Engineering (PLE)

Requirements Engineering im SPL-Umfeld

eprints-anwendertreffen 2013

Versionsverwaltung für die KU Betriebssysteme. Eine Einführung

Git II. Dezentrale Versionsverwaltung im Team

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

Einführung in die Informatik Tools

IT-Projekt-Management

Integration Billpay in Intershop 7

Framework zur Unterstützung von Unit-Tests

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

Implementierung v. Software-Produktlinien - Einführung und Überblick

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

LEHRSTUHL FÜR DATENBANKEN

Transfer von Prozessen des Software-Produktlinien Engineering in die Elektrik/Elektronik- Architekturentwicklung von Fahrzeugen

Mercurial. or how I learned to stop worrying and love the merge. Ted Naleid IAIK

Webseitenintegration. Dokumentation. v1.0

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Praktische Informatik 1

Medieninformatik Praktikum. Jens Rademacher

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

SMART Newsletter Education Solutions April 2015

HOWTO Update von MRG1 auf MRG2 bei gleichzeitigem Update auf Magento CE 1.4 / Magento EE 1.8

Software Engineering Klassendiagramme Assoziationen

Software-Engineering Grundlagen des Software-Engineering

Verknüpfung von kombinatorischem Plattformund individuellem Produkttest für Software-Produktlinien

Kurzanleitung zu. von Daniel Jettka

Objektorientiertes JavaScript

Schüler-E-Tutorial für mobile Endgeräte. Ein Folgeprojekt des Netzwerks Informationskompetenz Berlin/Brandenburg mit der HdM

GEONET Anleitung für Web-Autoren

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

Von SVN zu Git. Daniel Willmann cbna

Bekannte Tools in einem agilen Ansatz. Frank Schwichtenberg SourceTalkTage 2013 Göttingen,

Taking RM Agile. Erfahrungen aus dem Übergang von traditioneller Entwicklung zu Scrum

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

git & git-flow Jens Sandmann Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow / 31

peer-to-peer Dateisystem Synchronisation

Quellcodeverwaltung mit SubVersion

Konfigurationsdateien mit Git verwalten

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

Versionsverwaltung mit Mercurial für Einsteiger

JCoverage. Uni Kassel Projektarbeit Software Engineering Markus Pilsl & Marko Medved

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Der Einsatz von Open-Source-Produkten im Unternehmen, dargestellt am Beispiel von OpenOffice

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle

Software Configuration Management. Referat von Jens Zastrow Software Engineering Projekt WS 2001/2002

Änderungsbasiertes Requirements Management mit agosense.requirements und Atlassian JIRA

Continuous Integration im medizinischen Bereich

Softwareproduktlinien Teil 1: Einführung und Überblick

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte!

Einführung Git Interna Workflows Referenzen. Git. Fast Version Control System. Michael Kuhn

Generative Prozessmodelle Patrick Otto MDD Konferenz

Konfiguration Management System. Konfiguration Management System. Versionierung Parallele Entwicklung Workspace

Softwareproduktlinien Teil 12: Analyse von Produktlinien

B12-TOUCH VERSION 3.5

Upload auf den Server. MegaZine3 MZ3-Tool3. Training: Server Upload Video 1-4

Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment. Henning Blohm

Transkript:

Softwareproduktlinien - Versionsverwaltungs- und Buildsysteme Christian Kästner (Carnegie Mellon University) Sven Apel (Universität Passau) Gunter Saake, Martin Kuhlemann (Universität Magdeburg) 1

Application Eng. Domain Eng. Wie Variabilität implementieren? Feature-Modell Wiederverwendbare Implementierungsartefakte 2 Feature-Auswahl Generator Fertiges Program

Wiederholung: Variabilität zur Laufzeit Parameter Globale Konfiguration vs. propagierte Parameter Design Patterns Observer (Observer und Subject) Template Method (Vererbung) Strategy Pattern (Context + Interface für alternative Algorithmen) Decorator Pattern (Delegation + Interface) 3

Variabilität zur Übersetzungszeit Ziel: Nur benötigter Quelltext wird mit übersetzt Kleine, optimierte Varianten Quelltext wird passend ausgewählt und zusammengebaut Wie Optionen oder Alternativen implementieren? Hier einfache Mittel für wenig Varianten 4

5 Versionsverwaltungssysteme

Versionsverwaltung Teil des Konfigurationsmanagments Versionierung von Quelltextdateien Gemeinsame Entwicklung Archiv alter Quelltextversionen Zeitstempel und Benutzerkennung Änderungen als Delta Prozess: Checkout Change Commit Update Change Commit - Beispielsysteme: CVS, SVN, Visual SourceSafe, Perforce, SCCS, Git, Mercurial 6

Branching & Merging 7

Release-Planung 8

Varianten Graph-Bibliothek Variante 3 ohne Gewichte und ohne Farben Schnellere Suche Variante 2 ohne Gewichte Basis-Variante (mit Farben und Gewichten) 9 NullPointer- Exception abgefangen

Code und Nicht-Code Dateien Java Code Dokumentation Modelle Build-Scripte: Ant/Makefile Lizenzen Grammatiken Kompilierte Dateien HTML, JavaScript, CSS Bei Binärdateien ist Konfliktbehandlung und Mischen schwieriger 10

Varianten vs. Revisionen 11 [Staples&Hill, APSEC 04]

Varianten vs. Revisionen Revisionen V1.0 V1.1 V2.0 V3.0 Varianten Sensor-DB (Auto) Sensor-DB (Habitat Monitoring) Sensor-DB (Erdbeben) SmartCard-DB GPS-DB X X X X X X X X X X X X X X 12

Application Eng. Domain Eng. Produktlinien mit Versionsverwaltung Entwicklung von Varianten in Branches Mergen von Änderungen zwischen Branches Mapping von Variante zu Branch Varianten-Liste Sensor-DB (Auto) Sensor-DB (Habitat Monitoring) Sensor-DB (Erdbeben) SmartCard-DB GPS-DB Versionsverwaltung mit Branches Sensor-DB (Auto) Sensor-DB (Habitat Monitoring) Sensor-DB (Erdbeben) SmartCard-DB GPS-DB Variante als Eingabe 13 Varianten-Auswahl Checkout des passenden Branches Fertiges Program

Produktlinien mit Versionsverwaltung Diskussion Vorteile Etablierte, stabile Systeme Bekannter Prozess Gute Werkzeugintegration Nachteile Vermischen von Revisionen und Varianten Entwicklung von Varianten, nicht Features: flexible Kombination von Features nicht direkt möglich Keine strukturierte Wiederverwendung (Copy & Edit) Hoher Aufwand für Wartung (Merging) 14

15 Build-Systeme

Build-Systeme Automatisierung des Build-Prozesses Kopiert Dateien, ruft Compiler auf, startet weitere Tools Mehrere Schritte mit Abhängigkeiten/Bedingungen Werkzeuge: make, ant, maven, 16

Produktlinien mit Build-Systemen Pro Variante eine Konfigurationsdatei/ein Build-Skript Dateien beim Übersetzen einbeziehen/ausschließen Dateien mit produktspezifischen Varianten überschreiben 17

Beispiel: Graph-Bibliothek Basis- Implementierung build.xml src Graph.java class Edge { Node a, b; Edge(Node _a, Node _b) { a = _a; b = _b; } void print() { a.print(); b.print(); } } Edge.java Variante mit Gewichten 18 build.xml src Edge.java class Edge { Node a, b; Weight weight; Edge(Node _a, Node _b) { a = _a; b = _b; } void print() { a.print(); b.print(); weight.print(); } }

Alternatives Beispiel: Graph-Bibliothek Basis- Implementierung build.xml src Graph.java class Edge { Node a, b; Edge(Node _a, Node _b) { a = _a; b = _b; } void print() { a.print(); b.print(); } } Edge.java Variante mit Gewichten 19 build.xml src WEdge.java class WEdge extends Edge { Weight weight; void print() { super.print(); weight.print(); } } und alle new-aufrufe anpassen; ggf. Factory Pattern verwenden

Application Eng. Domain Eng. Produktlinien mit Build-Systemen Feature-Modell Basis-Implementierung Sensor-DB (Auto) Sensor-DB (Habitat Monitoring) Sensor-DB (Erdbeben) SmartCard-DB GPS-DB Build-Skript pro Variante + spezifische Dateien Standard Build (make, ant, ) Fertiges Program 20

Produktlinien mit Build-Systemen Bewertung Relativ einfacher Mechanismus Hohe Flexibilität beliebige Änderungen für Varianten Wenig Vorplanung nötig Entwicklung für jede Variante getrennt, ggf. hoher Aufwand im Application Engineering Änderungen nur auf Dateiebene (überschreiben ganzer Dateien) Änderungen an der Basisimplementierung schwierig 21

Ausblick Weitere Methoden zur Implementierung von Variabilität zur Übersetzungszeit Aber: Features statt Varianten entwickeln 22

Literatur S. Apel, D. Batory, C. Kästner, and G. Saake. Feature- Oriented Software Product Lines - Concepts and Implementation. Springer, 2013. Section 5.1/5.2: Version Control Systems, Build Systems M. Staples, D. Hill. Experiences adopting software product line development without a product line architecture. Proceedings APSEC, pp. 176 183, 2004 [Industrielle Erfahrung zu Versionsverwaltung und Build-Systemen für die Produktlinienentwicklung] T. Dhaliwal, F. Khomh, Y. Zou, A. Hassan. Recovering commit dependencies for selective code integration in software product lines. Proceedings ICSM, 202 211, 2012 [Zuordnung von Commits zu Features; Abhängigkeitsanalyse] 23

Quiz Sollte man Branches zur Entwicklung von ganzen Produktvarianten benutzen oder zur Entwicklung individueller Features? Nenne Vor- und Nachteile. Wie spielen Versionsverwaltung, Build-System und Laufzeitparameter zusammen? Welche Rolle spielen die Granularität von Änderungen in Versionsverwaltungsund Build-Systemen? 24