Software Engineering in der Praxis

Ähnliche Dokumente
Software Engineering in der Praxis

Tool-Chain. Übung. Eclipse, SVN, Ant, Cobertura, Metrics Labor "Software Engineering Experiment" Sebastian Meyer und Kai Stapel

Versionsverwaltung. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009

Einführung in Subversion

Versionskontrolle mit Subversion

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN)

Subversion. Einstieg in die. Versionskontrolle

Versionsverwaltung mit SVN

Klicken Sie, um das Format des Titeltextes zu bearbeiten

Einführung in Subversion

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Thomas Rau (mit Material von Peter Brichzin) Repositories zur Unterstützung von kollaborativen Arbeiten in Softwareprojekten

Sourcecodeverwaltung

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

Subversion - Versionsverwaltungssystem

Crashkurs Subversion / Trac / Provisioning. Jan Zieschang, , Berlin

Einfu hrung in Subversion mit TortoiseSVN

Einführung in Subversion. Tutorium SWP

Versionsverwaltung. Seminar Softwareentwicklung in der Wissenschaft Robert Wiesner

CVS. The open standard for version control. (Concurrent Versions System) Maik Zemann CVS

Praktikum Ingenieurinformatik (PI)

SVN-Einführung für das SEP DS und CM. Julian Timpner, Stefan Brenner, Stephan Rottmann

Subversion. Quellcodeverwaltung a la Opensource. Matthias Fischer. Technical Expert.NET Tieto, JOSI / Microsoft Matthias.Fischer@tieto.

Versionsverwaltung von Softwareartefakten. Dr. Thorsten Arendt Marburg, 06. November 2014

Subversion als Werkzeug in der Software-Entwicklung Eine Einführung. Tobias G. Pfeiffer Freie Universität Berlin

Enterprise PHP Tools

Arbeiten mit dem Versionsverwaltungssystem. Jannik Kramer Proseminar Werkzeuge für das wissenschaftliche Arbeiten

Versionsverwaltung für r Visual Studio.NET mit Subversion

Subversion und Trac. Michael Trunner. 23. Januar Fachschaft Informatik und Softwaretechnik Universität Stuttgart

Versionskontrollsysteme. Uwe Berger & Markus Dahms <bralug@bralug.de>

8. Dokumentenverwaltung mit CVS eine Einführung

Enes Kurnaz, Oliver Nagel Institut für Mathematik und Informatik. Versionsverwaltung mit Git

Software(technik)praktikum: SVN-Tutorial

Frank Budszuhn. Subversion ~ --.. Galileo Press

CVS-Einführung. Sebastian Mancke,

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

Software Configuration Management (SCM)

Versionsmanagement. Software(technik)praktikum: Vorlesung 2: Versionsmanagement

git Änderungen verwalten mit git

Versionsverwaltung von Softwareartefakten. Dr. Thorsten Arendt Marburg, 05. November 2015

Versionsverwaltung mit git

Versionskontrolle mit Subversion

Softwareentwicklung I (IB) Versionsverwaltung mit Git

Copyright (C) Open Source Press

Versionskontrolle mit Subversion

Einführung in Subversion

an Hand eines Beispiels Konsole

Quellcodeverwaltung mit SubVersion

Programmieren 1 11 Versionsverwaltung mit Git - Grundlagen -

Versionierung und Dateistruktur

Moodle aktuell halten mit Git

Subversion. von Stefan Arndt, Christian Autermann und Dustin Demuth. 5. November 2009

Versionsverwaltung mit Mercurial für Einsteiger

CVS - Begriffe. Einführung in CVS

Versionskontrolle mit Subversion

Versionsmanagement mit Subversion

Konfigurationsmanagement mit Subversion, Ant und Maven

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

Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle

Adios CVS! Markus Schade

2 Einführung in das Konfigurationsmanagement 11

3. Versions- und Konfigurationsmanagement. Typischer Weg der Software-Entwicklung

Softwareprojekt - Einführung

Versionierung und Bugtracking mit Git(Hub)

Apache Subversion (SVN)

Versionsverwaltung mit Subversion

SVN Windows Howto. Inhaltsverzeichnis. 1 Revisionsgeschichte

... Vorwort Vorwort zur 2. Auflage Vorwort zur 3. Auflage Der Autor... 17

Proseminar Unix-Tools CVS Daniel Weber & Zhen Zhang Betreuer: Volker Baier

Concurrent Versions System (CVS)

Kurzanleitung zu. von Daniel Jettka

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

Wie benutzt man TortoiseSVN

Deployment Deployment Seite 1 / 25

Multisite Setup. mit Nutzung von Subversion. Drupal Voice Chat

Informationen zur Installation und Nutzung von Subversion (SVN)

Programmieren 2 05 Versionsverwaltung mit Git

Versionsverwaltung mit git. Christoph Knabe FB VI

Git. Dezentrale Versionsverwaltung im Team - Grundlagen und Workflows. von René Preißel, Bjørn Stachmann. 2., aktualisierte und erweiterte Auflage

Transkript:

Software Engineering in der Praxis Praktische Übungen

Josef Adersberger Marc Spisländer Lehrstuhl für Software Engineering Friedrich-Alexander-Universität Erlangen-Nürnberg 19. Januar 2009

Inhalt Versionskontrolle Einführung Paradigmen der Versionskontrolle Subversion Einführung Architektur Subversion auf der Serverseite einrichten Subversion auf der Clientseite Die Versionsverwaltung von Subversion Konflikte Literatur

Einführung Was ist Versionskonstrolle? System zur: Kontrolle von gleichzeitigem Zugriff auf gemeinsam genutzten Dateien eines Projektes Verwaltung verschiedener Projekt-Versionen Verwaltung von Projekt-Aufspaltungen (Forks)

Paradigmen der Versionskontrolle Zwei Paradigmen Lock-Modify-Unlock Copy-Modify-Merge

Paradigmen der Versionskontrolle Das Lock-Modify-Unlock-Paradigma

Paradigmen der Versionskontrolle Das Lock-Modify-Unlock-Paradigma Probleme Gleichzeitiges Arbeiten an der gleichen Datei ist nicht möglich. Ein Benutzer kann die Arbeit am ganzen Projekt blockieren, wenn er die von ihm gesperrte Datei nicht mehr frei gibt.

Paradigmen der Versionskontrolle Das Copy-Modify-Merge-Paradigma

Paradigmen der Versionskontrolle Das Copy-Modify-Merge-Paradigma Probleme Es wird vorausgesetzt, dass das Zusammenführen von Änderungen an einer Datei einen»gültigen«dateiinhalt ergibt. Das gilt meistens nur für Textdateien. Änderungen an der gleichen Datei können sich überlappen. Konfliktsituation

Einführung Subversion Copy-Modify-Merge-System Unterstützt auch Sperren von Dateien Open Source Als vollwertiger Ersatz für CVS gedacht Abkürzung: SVN http://subversion.tigris.org/

Architektur Subversion-Architektur

Subversion auf der Serverseite einrichten Subversion auf der Serverseite einrichten 1. Repository anlegen: svnadmin create Repository-Pfad 2. Server starten. Zwei Möglichkeiten: Apache mit entsprechenden Modulen starten svnserve starten Im Praktikum verwenden wir svnserve.

Subversion auf der Serverseite einrichten Svnserve Starten mit svnserve -d -r Repo-Pfad Konfigurierbar über Repo-Pfad/conf/svnserve.conf: [general] password-db = userfile realm = repository name # Specific access rules authz-db = authzfile

Subversion auf der Serverseite einrichten Svnserve Userfile Definiert Benutzernamen und Passwörter für den Zugriff auf das Repository: [users] harry = foopassword sally = barpassword

Subversion auf der Serverseite einrichten Svnserve Authzfile Definiert Benutzerrechte für den Zugriff auf das Repository: [groups] calc-developers = harry, sally, joe paint-developers = frank, sally, jane allusers = @calc-developers, @paint-developers [/projects/calc] @calc-developers = rw jane = r [/projects/paint] @paint-developers = rw jane = r

Subversion auf der Clientseite Subversion auf der Clientseite Die wichtigsten Operationen Neues Projekt ins Repository aufnehmen: svn import PfadZumProjekt svn://servername/pfad Projekt aus dem Repository kopieren: svn checkout svn://servername/pfad LokalerPfad Der Inhalt von svn://servername/pfad wird nach LokalerPfad kopiert. Lokale Änderungen ins Repository übertragen: svn commit -m "Beschreibung der Änderungen" Lokale Kopie (Working Copy) auf Repository-Version (HEAD-Version) aktualisieren: svn update Alte Änderungen Rückgängig machen: svn merge -r 303:302 svn://svn.example.com/repos/calc/trunk

Subversion auf der Clientseite Änderungen an der Working Copy vornehmen Vorhandene Dateien oder Verzeichnisse ins Versionierungs-System aufnehmen: svn add Pfad Dateien oder Verzeichnisse löschen: svn delete Pfad Dateien oder Verzeichnisse kopieren: svn copy Quelle Ziel Dateien oder Verzeichnisse verschieben: svn move Quelle Ziel Änderungen widerufen: svn revert Pfad Die Änderungen werden erst nach svn commit im Repository widergespiegelt.

Subversion auf der Clientseite Status der Working-Copy abfragen Den Status der Working-Copy im Vgl. zum letzen Update liefert svn status. Diese Operation listet Dateien/Verzeichnisse aus der Working-Copy auf, die wie folgt markiert sein können: A Zum Versionierungssystem hinzugefügt D Aus dem Versionierungssystem entfernt C Inhalt konnte nicht konfliktfrei zusammengeführt werden? Nicht zum Versionierungssystem hinzugefügt

Die Versionsverwaltung von Subversion Die Versionenverwaltung von Subversion Der Status bzw. die Version (Revision) einer Repository ist definiert durch die Verzeichnisstruktur und den Inhalt der Dateien in der Repository. Subversion verwaltet pro Repository eine ganze Zahl, die den aktuellen Status der Repository repräsentiert. Diese Zahl wird bei jedem erfolgreichen Commit um eins erhöht. Zugriff auf ältere Versionen möglich

Die Versionsverwaltung von Subversion Die Versionsverwaltung von Subversion

Die Versionsverwaltung von Subversion Die Versionsverwaltung von Subversion Abstrakte Versionsnamen HEAD Die aktuelle Versionnummer im Repository BASE Die Versionnummer nach der letzten Update- oder Checkout-Operation

Konflikte Konfliktsituationen Nach einem Update können sich in einer Datei Änderungen aus der Repository mit Änderungen in der Working Copy überschneiden. Subversion behandelt solche Konflikte wie folgt: Die Datei wird als Conflict markiert. Der Inhalt der Datei wird so strukturiert, dass die sich überlappenden Änderungen sichtbar werden. Es werden lokal folgende Dateien erzeugt:.mine Die lokale Version der Datei.rOLDREV Die BASE-Version der Datei.rNEWREV Die HEAD-Version der Datei

Konflikte Konflikte lösen Kommunikation zwischen Autoren notwendig Nach der Einigung: svn resolve Datei Die Conflict-Markierung wird entfernt und die drei erzeugten Dateien werden gelöscht.

Man betrachte folgendes Szenario der Softwareentwicklung: Projekt A wird gestartet Ist die Funktionalität für Release 1 erreicht, wird eine Kopie von A zu Testzwecken erzeugt. Während der Testphase von Release 1, wird Projekt A weiterentwickelt. Beim Testen von Release 1 beseitigte Fehler sollen auch bei der Weiterentwiklung berücksichtigt werden, und umgekehrt. Erreicht Release 1 in der Testphase einen ausreichenden Reifegrad, wird eine Kopie davon erzeugt und diese an den Kunden ausgeliefert.

Man betrachte folgendes Szenario der Softwareentwicklung: Projekt A wird gestartet Ist die Funktionalität für Release 1 erreicht, wird eine Kopie von A zu Testzwecken erzeugt. Während der Testphase von Release 1, wird Projekt A weiterentwickelt. Beim Testen von Release 1 beseitigte Fehler sollen auch bei der Weiterentwiklung berücksichtigt werden, und umgekehrt. Erreicht Release 1 in der Testphase einen ausreichenden Reifegrad, wird eine Kopie davon erzeugt und diese an den Kunden ausgeliefert.

Man betrachte folgendes Szenario der Softwareentwicklung: Projekt A wird gestartet Ist die Funktionalität für Release 1 erreicht, wird eine Kopie von A zu Testzwecken erzeugt. Während der Testphase von Release 1, wird Projekt A weiterentwickelt. Beim Testen von Release 1 beseitigte Fehler sollen auch bei der Weiterentwiklung berücksichtigt werden, und umgekehrt. Erreicht Release 1 in der Testphase einen ausreichenden Reifegrad, wird eine Kopie davon erzeugt und diese an den Kunden ausgeliefert.

Man betrachte folgendes Szenario der Softwareentwicklung: Projekt A wird gestartet Ist die Funktionalität für Release 1 erreicht, wird eine Kopie von A zu Testzwecken erzeugt. Während der Testphase von Release 1, wird Projekt A weiterentwickelt. Beim Testen von Release 1 beseitigte Fehler sollen auch bei der Weiterentwiklung berücksichtigt werden, und umgekehrt. Erreicht Release 1 in der Testphase einen ausreichenden Reifegrad, wird eine Kopie davon erzeugt und diese an den Kunden ausgeliefert.

Man betrachte folgendes Szenario der Softwareentwicklung: Projekt A wird gestartet Ist die Funktionalität für Release 1 erreicht, wird eine Kopie von A zu Testzwecken erzeugt. Während der Testphase von Release 1, wird Projekt A weiterentwickelt. Beim Testen von Release 1 beseitigte Fehler sollen auch bei der Weiterentwiklung berücksichtigt werden, und umgekehrt. Erreicht Release 1 in der Testphase einen ausreichenden Reifegrad, wird eine Kopie davon erzeugt und diese an den Kunden ausgeliefert.

mit Subversion Erzeuge im Projektverzeichnis Unterverzeichnisse: trunk Für die Hauptlebenslinie des Projektes branch Enthält z. B. Unterverzeichnisse»Release 1«,»Release 2«,»Release 3«,..., die Nebenzweige der Hauptlinie sind. tag Enthält z. B. Unterverzeichnisse»Auslieferung 1.0«,»Auslieferung 1.0.1«,..., die Nebenzweige der»branch«-unterverzeichnisse sind Erzeugung von Nebenzweigen mit svn copy Übernehmen von Änderungen: svn merge

mit Subversion Erzeuge im Projektverzeichnis Unterverzeichnisse: trunk Für die Hauptlebenslinie des Projektes branch Enthält z. B. Unterverzeichnisse»Release 1«,»Release 2«,»Release 3«,..., die Nebenzweige der Hauptlinie sind. tag Enthält z. B. Unterverzeichnisse»Auslieferung 1.0«,»Auslieferung 1.0.1«,..., die Nebenzweige der»branch«-unterverzeichnisse sind Erzeugung von Nebenzweigen mit svn copy Übernehmen von Änderungen: svn merge

mit Subversion Erzeuge im Projektverzeichnis Unterverzeichnisse: trunk Für die Hauptlebenslinie des Projektes branch Enthält z. B. Unterverzeichnisse»Release 1«,»Release 2«,»Release 3«,..., die Nebenzweige der Hauptlinie sind. tag Enthält z. B. Unterverzeichnisse»Auslieferung 1.0«,»Auslieferung 1.0.1«,..., die Nebenzweige der»branch«-unterverzeichnisse sind Erzeugung von Nebenzweigen mit svn copy Übernehmen von Änderungen: svn merge

mit Subversion

Nebenzweige erzeugen svn copy Quelle Ziel Kopiert Quelle nach Ziel, wobei sich die Kopie die Vergangenheit mit dem Original teilt:

Änderungen übernehmen svn merge Quelle1[@N] Quelle2[@M] Ziel Vergleicht Quelle1 in der Revision N mit Quelle2 in der Revision M und wenden die Unterschiede auf Verzeichnis Ziel der Working Copy an. Die Unterschiede sind die Liste der Operationen, die durchgeführt werden müssen, um die Verzeichnisstruktur Quelle1 in die Struktur Quelle2 zu überführen.

Literatur Subversion-Handbuch: http://svnbook.red-bean.com/

Viel Spaß!