Software Engineering II



Ähnliche Dokumente
Software Engineering II

Einführung in Subversion

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

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

Konfigurationsmanagement mit Subversion, Ant und Maven

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

IT-Projekt-Management

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

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

Einführung in Subversion. Tutorium SWP

Praktikum Ingenieurinformatik (PI)

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Moodle aktuell halten mit Git

Deployment Deployment Seite 1 / 25

Konfigurationsmanagement mit Subversion, Maven und Redmine

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

Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme

Software Engineering in der Praxis

Versionskontrolle mit Subversion

Sourcecodeverwaltung

Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle

Konfigurationsmanagement

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

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

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

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

Migration von Subversion nach Mercurial und Einsatz dezentraler Versionskontrolle in Unternehmen

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Versionsverwaltung mit git. Christoph Knabe FB VI

Nach der Installation des FolderShare-Satellits wird Ihr persönliches FolderShare -Konto erstellt.

Git. Dezentrale Versionsverwaltung im Team Grundlagen und Workflows. Rene Preißel Björn Stachmann. 2., aktualisierte und erweiterte Auflage

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Die Projek*ools. Files, Git, Tickets & Time

WinVetpro im Betriebsmodus Laptop

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

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

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

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

Erfolgreicher Ums9eg auf Git

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Sonnenfinsternis in der Technischen Redaktion

Abschluss Version 1.0

Medieninformatik Praktikum. Jens Rademacher

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Inhaltsverzeichnis.

Werkzeuge für das Softwarekonfigurationsmanagement

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

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

FIREBIRD BETRIEB DER SAFESCAN TA UND TA+ SOFTWARE AUF MEHR ALS EINEM COMPUTER

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

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

Programmierung im Grossen. Vorlesung 22: Konfigrationsmanagement. Themenübersicht. Bertrand Meyer. Bernd Schoeller

Versionsverwaltung für r Visual Studio.NET mit Subversion

Christian Kühnel, BMW Group AGILE ENTWICKLUNG VON FAHRERASSISTENZSOFTWARE. AGILE CARS 2014.

Versionsverwaltung mit Mercurial für Einsteiger

Wine - Windows unter Linux

desk.modul : ABX-Lokalisierung

Installation OMNIKEY 3121 USB

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

SharePoint Workspace 2010 Installieren & Konfigurieren

Informationen zum neuen Studmail häufige Fragen

Windows Vista Security

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Einrichtung einer eduroam Verbindung unter dem Betriebssystem Android

Versionsverwaltung mit SVN

Anbindung des Onyx Editors an das Lernmanagementsystem OLAT Anwendungsdokumentation

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

teamsync Kurzanleitung

PROJEKTVERZEICHNIS EINRICHTEN

Workshop: Eigenes Image ohne VMware-Programme erstellen

Versionsverwaltung. Seminar Softwareentwicklung in der Wissenschaft Robert Wiesner

Collaboration Management. Software Collaboration Management mit Trac FrOSCon 24./25. Juni 2006

Einrichtung von Mozilla Thunderbird

Kurzanleitung zu. von Daniel Jettka

Consulting. Dokumentenmanagement. Stand: jwconsulting GmbH Caspar-David-Friedrichstr Walldorf

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Umzug der Datenbank Firebird auf MS SQL Server

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Softwareanforderungsanalyse

Prodanet ProductManager WinEdition

Evaluation eines kooperativen Entwicklungswerkzeuges zur Unterstützung von Projektteams am Beispiel von IBM Rational Team Concert.

Installationsbeschreibung Import / ATLAS / PV Zollsystem für die EDV-Abteilung

ecaros2 - Accountmanager

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt.

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

FRILO-Aktuell Ausgabe 2/2013

Git in großen Projekten

Bedienerhandbuch Toleranztabellen Version 1.2.x. Copyright Hexagon Metrology

MS Outlook Integration

E-Sourcing einfach, effizient und erfolgreich

PDF-Druck und PDF-Versand mit PV:MANAGER

Installationsanleitung für Update SC-Line

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

Dokumentation für das Checkoutsystem von Freshworx

CVS-Einführung. Sebastian Mancke,

Einreichung zum Call for Papers

SPI-Seminar : Interview mit einem Softwaremanager

Transkript:

Software Engineering II 2 Konfigurationsmanagement Prof. Dr. Dirk Müller

Konfigurationsmanagement KM als Oberbegriff für Versionsmanagement Release-Management Änderungsmanagement System Building immer größere Bedeutung David Parnas beschrieb SW-Technik als multi-person construction of multi-version programs verteiltes, paralleles Arbeiten an Projekten gute Werkzeugunterstützung ist grundlegend Beispiel: Linux-Kernel-Versionen durch Git verwaltet Ursprünge und weitere Verwendung in anderen Branchen Militär, Automobilbau [4], S. 5 hier: Software Configuration Management (SCM) 2/29

Motivation und Grundidee keine stabilen Anforderungen => verschiedene Versionen Ergebnis der Nutzung agiler Entwicklungsmethoden: verschiedene Versionen der Implementierung, der Testfälle, des Handbuchs, etc. bei komplexen Systemen, Gefahr vergeblichen Aufwands beim Ändern der falschen Version der Auslieferung einer falschen Version an Kunden nicht mehr auffindbaren benötigten Quellcodes im Speicher Configuration management is the management of an evolving software system. [Som10], S. 702 Fokus auf die Evolution, nicht auf Prozessmanagement oder Qualitätssicherung Änderung von SW in einer kontrollierten Art Logging (Metadaten zu durchgeführten Änderungen) 3/29

Aktivitäten Zusammenbau von Komponenten, Daten und Bibliotheken; Kompilieren und Linken zu einem ausführbaren System make, Ant, Maven Änderungsvorschläge Kosten & Wirkung von Änderungen; Ja/nein? Falls ja, wann? System Building Änderungs- Management Bugzilla, Jira, ClearQuest Komponenten- Versionen System- Versionen System- Releases Versions- Management Release- Management -Logging von Versionen -Möglichkeit der Verzweigung -Handhabung von Zugriffskonkflikten (parallele Entwicklung) Subversion, Git, Mercurial -Vorbereitung auf ein Release -Logging Quelle: [Som10], S. 682f. 4/29

Was soll gemanagt werden? Software-Element maschinenlesbares Artefakt (Datei) zugehörig zu einem SW-Projekt (Entwurf, Quellcode, Testdaten, Handbuch, etc.) Quell-Element manuell erstellt, typischerweise mittels eines Editors Abgeleitetes Element sollte gemanagt werden normalerweise nicht gemanagt vollautomatische Erstellung durch Werkzeuge Konfigurations-Item Artefakt, das unter Konfigurationskontrolle gestellt wurde eindeutiger Name typischerweise verschiedene Versionen Version Instanz eines Konfigurations-Items mit einem Zeitstempel eindeutige ID: Name des Konfigurations-Items + Versionsnummer auch: Build-Skripte 5/29

Konfigurationen und Baselines Konfiguration Menge von Versionen mit kompatiblen Schnittstellen für einen bestimmten Zweck neue Version eines einzigen Konfigurations-Items führt zu einer neuen Konfiguration Baseline bewährte Konfiguration, i.e., Stabilität bestätigt ermöglicht einfache Wiederherstellung eines früheren Systemstatus Release Konfiguration mit dem Zweck der Auslieferung an den Kunden, typischerweise eine Baseline 6/29

Verwaltung der Konfigurations-Items Instanzen der Konfigurations-Items in einem Repository (spezialisierte Datenbank, verwaltetes Verzeichnis) Aufbau eines Repository entspricht der Projektstruktur, aber ohne temporäre Ordner/Dateien effektive Arbeit nur mittels herstellerspezifischer Formate im Repository möglich Repositorys oft über eine Schnittstelle direkt in die Entwicklungswerkzeuge (IDEs) integriert Repositorys setzen häufig intern Versionskontrolle ein: nach jeder Änderung an einer Datei wird eine neue Version im Repository gespeichert nach und nach entsteht eine Versionshistorie, alle jemals vorgenommenen Änderungen werden dokumentiert Löschen als Spezialfall einer Änderung 7/29

Typische Arbeitsschritte Arbeit im Projekt nicht mit Dateien im Repository, sondern mit Arbeitskopien in einem lokalen Arbeitsbereich (ebenfalls vom Versionsverwaltungssystem verwaltet) Repository liefert auf Anforderung eine Arbeitskopie (Check-out) Repository aktualisiert die Arbeitskopie bei Bedarf (Update) Bestätigung von Änderungen zur Übertragung in das Repository (Check-in, Commit) 8/29

Versions-Management Zweck Identifikation von Versionen und Releases Speicher-Management Aufzeichnung der Änderungshistorie unabhängige Entwicklung (parallel) Projektunterstützung Prinzipien Delta-Kodierung pessimistisch vs. optimistisch Typen lokal zentral verteilt 9/29

Versionierungs-Schemata auf Systemebene am gebräuchlichsten release.level Zweige große Änderung kleine Änderung release.level.branch.sequence V1.2.1.0 Zweig eines Zweigs release.level.branch.sequence.branch.sequence V1.2.1.1.1.0 V1.0 V1.1 V1.2 V1.3 V2.0 V1.2.2.0 V1.2.1.1 V1.2.2.1 feinste Granularität: Build-Nummer (oder Build-Datum) Reifegrad Alphaversion, Betaversion, Release-Kandidate (RC), Release (Endversion) Markennamen mit Versionen können Lücken/Sprünge haben Aufholen von Nummerierungsvorsprüngen der Konkurrenz V1.2.1.1.1.0 V1.2.1.1 Quelle: [Bal08], S. 436f. 10/29

Delta-Codierung neuste Version vollständig gespeichert (Rückwärtsdelta) ältere Versionen durch schrittweise Anwendung der inversen Delta-Operation zu erhalten main.c 1.0 main.c main.c D1 1.1 D2 1.2 D3 main.c 1.3 main.c 1.0 main.c main.c D1-1 1.1 D2-1 1.2 D3-1 main.c 1.3 gute Kompressionsrate nur für sich wenig unterscheidende aufeinanderfolgende Versionen => für Binär-Dateien zunächst nicht geeignet aber: moderne Algorithmen in neueren Tools wie z.b. Subversion 11/29

Pessimistisch vs. optimistisch Optimistisch: Copy-Modify-Merge Nutzer können jederzeit eine Arbeitskopie erhalten bei sich widersprechenden Änderungen: Varianten müssen verschmolzen werden manuell automatisch, problematisch für Binärdateien 12/29

Drei-Wege-Merge traditioneller Ansatz des automatischen Verschmelzens zwei Versionen einer Datei mit 1 gemeinsamen Vorfahren mögliche Resultate: Anzahl der Änderungen bzgl. des Vorfahrens 0 keine: bleibt wie bisher 1 eine: nutze geänderte Version 2 beide: gleiche Änderungen: nutze geänderte Version unterschiedliche Änderungen: typischerweise manuelle Konfliktauflösung (Nutzereingriff) Rekursives Drei-Wege-Merge [3] komplizierte Situation mit mehr als 1 gemeinsamen Vorfahren Konstruktion eines virtuellen Vorfahrens durch Verschmelzung zweier Vorfahren als Vorverarbeitung Versionsbaum muss vollständig bekannt sein z.b. in Git verwendet [2] a b c branch merge d e 13/29

Lokal zentral verteilt lokal meist nur auf einzelnen Dateien, Delta-Codierung in Datei selbst pessimistisch/optimistisch hier nicht relevant z.b. Source Code Control System (SCCS, 1972), Revision Control System (RCS, 1985) zentral Client-Server-Architektur Repository mit einer linearen Versionshistorie auf dem Server pessimistisch and optimistisch unterstützt z.b. Concurrent Versions System (CVS, 1989), Subversion (2004) verteilt verteiltes Repository mit DAG als Historie offizielles Repository (z.b. auf https://github.com) nur optimisch, schnelles fein-granulares Verschmelzen möglich z.b. Git (2005) [2], BitKeeper (2000), Mercurial (2005) Praxis der agilen SW-Entw. der kontinuierlichen Integration gut unterstützt 14/29

Zentraler und verteilter Ansatz zentral verteilt Sequenzialisierung anhand von Zeitstempeln geänderte Dateien anhand von Checksummen (Hash-Werten) erkannt Quelle: [5] 15/29

Verteilt vs. zentral Vorteile verteilter Versionskontrolle gegenüber zentraler Verzweigungen und Zusammenführungen (Merges) einfacher Projektmitarbeit ohne explizite Schreibrechte auf Server möglich Arbeit kann offline erledigt werden, da gesamte Historie lokal vorhanden => unabhängiger vom Netzwerk, schneller robuster, zentrales Repository nicht mehr Single Point of Failure Nachteile Verzweigungen zu einfach, Gefahr der übermäßigen Anwendung Netzwerk wird anfangs stärker beansprucht, da gesamte Historie mit heruntergeladen werden muss evtl. unübersichtlich mit (zu) vielen Repositories Quelle: [5] 16/29

IBM Rational ClearCase 1992 Atria Software für Unix, jetzt auch Windows, Linux Integratiertes kommerzielles Werkzeug für Versions-, Build- und Release-Management zentrale Versionskontrolle 2 Modi for Anfänger und Experten Base ClearCase Unified Change Management (UCM), Teil des RUP weg vom Repository-Ansatz (Snapshot-Sicht) jetzt: dynamische Sicht Zugriff auf Versioned Object Base (VOB) durch ein sogenanntes Multi Version File System (MVFS) kontinuierlichen Integration gut unterstützt Terminologie nicht intuitiv und verwirrend [1] 17/29

ClearCase Branches Quelle: [1] 18/29

ClearCase View LATEST View aka Konfiguration noch nicht bezeichnet noch nicht bezeichnet Quelle: [1] 19/29

ClearCase View V1.0.1 View aka Konfiguration, evtl. eine Baseline Quelle: [1] 20/29

ClearCase View V1.0.2 View aka Konfiguration, evtl. Baseline oder sogar Release Quelle: [1] 21/29

ClearCase Merging -ähnlich zu UNIX-Kommandos diff und patch -nicht nur zeilenweise, Nachbarzeilen (Kontext) mit berücksichtigt -Konflikte liefern Fragen, aber auch ohne Fragen falsche Resultate mgl. Quelle: [1] 22/29

System Building Kompilieren und Linken von Komponenten, Daten und Bibliotheken zu einem ausführbaren System enge Zusammenarbeit mit Versionsverwaltung sinnvoll Auschecken entsprechender Konfigurations-Items kompliziert, potenziell 3 Plattformen möglich Entwicklungssystem Entwicklungstools privater Arbeitsbereich Check-in Zielsystem ausführbares System Zielplattform Vers.-verw. & Build-Server Check-out Versionsverwaltung co Build-Server Quelle: [Som10], S. 694 23/29

Ablauf eines Build-Prozesses 1. Quellelemente ermitteln 2. Produkt aus den Quellelementen erstellen Aufrufe von Compiler und Linker, ggf. Generatoren (modellgetrieben) 3. Produkt prüfen automatisierte Modultests mit Mock-Objekten (noch kein Integrationstest möglich) Minimalforderung an jeden Build-Prozess 4. Produkt ausliefern Erstellen eines Auslieferungspakets (z.b. EAR-/WAR-Dateien) ggf. Installation und Integrationstests 5. Ergebnisse dokumentieren Schritte des Build in Log-Datei dokumentieren ggf. Konfiguration anlegen sowie Benachrichtigung über E-Mail und Projekt-Homepage Quelle: [4], S. 46 24/29

Button in IDE auf der Kommandozeile, imperativ, regelbasiert oder deklarativ 3 Arten von Builds Entwickler-Build im privaten Arbeitsbereich schnell und einfach, manches teilweise oder übersprungen oft in IDEs (z.b. Eclipse) integriert, im 5-Minutentakt möglich Integrations-Build Frage nach Verträglichkeit der Änderungen automatisches oder manuelles Testen für alle parallel aktiven Entwicklungspfade agile Methoden: alle 30 min, plangetrieben: täglich Release-Build Zweck ist die Auslieferung an Kunden manchmal explizite Werkzeugunterstützung (Maven) manchmal nur Umdeklarierung eines Integrations-Builds (Ant) Quelle: [4], S. 47f. 25/29

Button in IDE auf der Kommandozeile, imperativ, regelbasiert oder deklarativ 3 Arten von Builds Entwickler-Build im privaten Arbeitsbereich schnell und einfach, manches teilweise oder übersprungen oft in IDEs (z.b. Eclipse) integriert, im 5-Minutentakt möglich Integrations-Build Frage nach Verträglichkeit der Änderungen automatisches oder manuelles Testen für alle parallel aktiven Entwicklungspfade agile Methoden: alle 30 min, plangetrieben: täglich Release-Build Zweck ist die Auslieferung an Kunden manchmal explizite Werkzeugunterstützung (Maven) manchmal nur Umdeklarierung eines Integrations-Builds (Ant) Quelle: [4], S. 47f. 26/29

Signaturen Zweck: Zuordnung von Objekt-Code zu Quellcode, um unnötige Kompilierläufe zu sparen Ansätze Zeitstempel (Timestamp, TS) sekundengenauer Zeitpunkt des Schreibens in Dateisystem Regel: Falls TS(Quelle) > TS(Ziel), dann Neukompilierung. Checksummen der Quell-Elemente Checksumme (CS) einer Datei mit Quellcode wird unmittelbar vor Kompilierung berechnet, möglichst schnell und änderungssensitiv Markierung (Tagging) des Quellcodes und des zugehörigen Ziels mit dieser Checksumme Regel: Falls NOT Ziel: CS(Quelle)==CS(Ziel), dann Neukompilierung. Vorteil: parallele Kompilierung verschiedener Versionen möglich Quelle: [Som10], S. 696 27/29

Zusammenfassung KM als Mgmt. eines sich entwickelnden SW-Systems Versions-, Release-, Änderungs- und Build-Management Versionsmanagement pessimistisch mit Locks, optimistisch mit (automatischem) Merge Drei-Wege-Merge von 2 Dateien durch gemeinsamen Vorfahren lokal, zentral, verteilt; entscheidende Vorteile bei verteiltem Ansatz System Building bis zu 3 verschiedene Plattformen, 3 Arten von Builds automatisierte Modultests als Minimalforderung Automatisierung in IDE und auf Kommandozeile Signaturen, um unnötiges Kompilieren zu vermeiden Trend agile Praktiken wie kontinuierlicher Integration durch verteilte Versionskontrolle (e.g. Git), Mehrversionen-Dateisystem (ClearCase) oder automatisierte Builds immer besser unterstützt 28/29

Literatur [1] Jan Labanowski: ClearCase lingo demystified, 2009 http://www.ccl.net/cca/software/unix/clearcase/index.shtml, Download am 4/5/2014 [2] Lars Vogel: Git Tutorial, Version 5.6, 2014 http://www.vogella.com/tutorials/git/article.html, Download am 4/5/2014 [3] Pablo: Merge recursive strategy, The Plastic SCM blog, 2011, http://codicesoftware.blogspot.com/2011/09/merge-recursive-strategy.html Download am 5/5/2014 [4] Gunther Popp: Konfigurationsmanagement mit Subversion, Maven und Redmine, dpunkt-verlag, 4. Auflage, 2013 [5] Carl Fredrik Malmsten: Evolution of Version Control Systems, Bachelor of Applied Information Technology Thesis, University of Gothenborg, 2010 29/29