Software Engineering. 13. Configuration Management. Franz-Josef Elmer, Universität Basel, HS 2012



Ähnliche Dokumente
Software Engineering. 14. Build und Deployment. Franz-Josef Elmer, Universität Basel, WS 2006/07

Versionsverwaltung mit SVN

Kurzanleitung zu. von Daniel Jettka

Moodle aktuell halten mit Git

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

Branching und Merging mit Visual Studio Team System

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

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

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

Lizenzen auschecken. Was ist zu tun?

Einführung in Subversion

Software Engineering in der Praxis

Praktikum Ingenieurinformatik (PI)

ecaros2 - Accountmanager

Formular»Fragenkatalog BIM-Server«

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

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

SharePoint Workspace 2010 Installieren & Konfigurieren

Deployment Deployment Seite 1 / 25

Wie benutzt man TortoiseSVN

Avira Server Security Produktupdates. Best Practice

OP-LOG

MailUtilities: Remote Deployment - Einführung

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

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

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

1 Installation QTrans V2.0 unter Windows NT4

Datensicherung. Beschreibung der Datensicherung

Anbindung des Onyx Editors an das Lernmanagementsystem OLAT Anwendungsdokumentation

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

How to do? Projekte - Zeiterfassung

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Quickstep Server Update

Workshop: Eigenes Image ohne VMware-Programme erstellen

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

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

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

Speicher in der Cloud

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

Internet Explorer Version 6

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

Benachrichtigungsmöglichkeiten in SMC 2.6

Information zur Durchführung von. Software-Updates

Einführung in TexMaker

OpenMAP WEBDrive Konfiguration. Oxinia GmbH , Version 1

Installation / Aktualisierung von Druckertreibern unter Windows 7

Installationsanleitung dateiagent Pro

Sourcecodeverwaltung

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

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

Bedienungsanleitung. Stand: Copyright 2011 by GEVITAS GmbH

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

Reporting Services und SharePoint 2010 Teil 1

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

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

Das Einzelplatz-Versionsupdate unter Version Bp810

DVD Version 9.1. Netzwerkinstallation + VDE-Admin-Tool.

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Software Qualität Übung 1

MSDE 2000 mit Service Pack 3a

Installationsanleitung für pcvisit Server (pcvisit 15.0)

Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen. Wir bringen Qualität. Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen

Kleines Handbuch zur Fotogalerie der Pixel AG

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Besprechung Übung 1 & Vorstellung Übung 2

Lokale Installation von DotNetNuke 4 ohne IIS

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

CVS-Einführung. Sebastian Mancke,

Task: Nmap Skripte ausführen

Benutzer Anleitung Manegger Tourenbuch

Installationsanleitungen

AnNoText. AnNoText Online-Update. Copyright Wolters Kluwer Deutschland GmbH

Windows 7 Winbuilder USB Stick

Automatische Installation (wenn das SSO-Applet nicht vorhanden ist)! Abbildung 1:Auswahldialog für Installationslaufwerk

Build-Pipeline mit Jenkins

SJ OFFICE - Update 3.0

Internet online Update (Mozilla Firefox)

Download, Installation und Autorisierung der Lasergene Software. Bitte unbedingt beachten!

Backup der Progress Datenbank

Sophia Business Leitfaden zur Administration

Exchange Export. Mailbox Export

Einrichten eines POP-Mailkontos unter Thunderbird Mail DE:

Installation der SAS Foundation Software auf Windows

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

Handbuch PCI Treiber-Installation

FRILO-Aktuell Ausgabe 2/2013

Installationsanleitung für pcvisit Server (pcvisit 12.0)

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten.

Prodanet ProductManager WinEdition

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Inhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters

Ihr Benutzerhandbuch AVIRA ANTIVIR EXCHANGE

Installationsanleitung Maschinenkonfiguration und PP s. Release: VISI 21 Autor: Anja Gerlach Datum: 18. Dezember 2012 Update: 18.

Kurzeinführung Excel2App. Version 1.0.0

Print2CAD 2017, 8th Generation. Netzwerkversionen

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

Avira Management Console Optimierung für großes Netzwerk. Kurzanleitung

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

Transkript:

Software Engineering 13. Configuration Management Franz-Josef Elmer, Universität Basel, HS 2012

Software Engineering: 13. Configuration Management 2 Übersicht Dokumentation, Installationssoftware, etc. Source Code Lauffähige Applikation Ausgelieferte Software Source Code Management Build Deployment

Software Engineering: 13. Configuration Management 3 Source Code Management (SCM) (Zentrale) Verwaltung des Quellcodes in einem Repository Verfolgung des Entwicklungsverlaufs Repository Originale check out check out check in check in check in check out PC: Entwickler 1 PC: Entwickler 2 PC: Entwickler 3 Kopie Kopie Kopie Zentrale SCM Tools: CVS, Subversion (SVN) Dezentrale SCM Tools: Git, Mercurial

Software Engineering: 13. Configuration Management 4 SCM: Pessimistic und Optimistic Locking Pessimistic Locking: 1.Entwickler checkt Datei aus. Ein Lock wird gesetzt Andere Entwickler können eine read-only Kopie auschecken aber keine Änderung einchecken. 2.Entwickler checkt veränderte Datei wieder ein. Jetzt kann ein anderer Entwickler die Datei auschecken und editieren. Optimistic Locking: 1.Entwickler checkt Datei aus. Es wird kein Lock gesetzt Andere Entwickler können die Datei ebenfalls auschecken und editieren. 2.Entwickler checkt veränderte Datei wieder ein. Locking nur während des Vorgangs des Eincheckens. Voraussetzung: Zwischen Aus- und Einchecken wurde die Datei im Repository nicht verändert.

Software Engineering: 13. Configuration Management 5 SCM: Pessimistic versus Optimistic Locking Pessimistic Locking: Vorteile: Sicherheit: Es wird garantiert, dass immer nur ein Entwickler an der Datei arbeitet. Entwickler müssen keine Merging Konflikte lösen. Optimistic Locking: Vorteil: Mehrere Entwickler können gleichzeitig an derselben Datei arbeiten. Optimistic Locking wird dem Pessimistic Locking vorgezogen, denn Nachteile: Es können nicht mehrere Entwickler gleichzeitig an derselben Datei arbeiten Ein Entwickler vergisst (z.b. vor dem Urlaub) die Datei einzuchecken: Alle anderen Entwickler sind in ihrer Arbeit blockiert. Nachteile: Entwickler muss sich selber darum kümmern, dass seine Änderungen eingecheckt werden können. Entwickler muss von Hand Merging Konflikte lösen. SCM Tools können Quellcode automatisch mergen. Vom Tool nichtlösbare Merging Konflikte sind selten.

Software Engineering: 13. Configuration Management 6 SCM: Optimistic Locking: Beispiel 1. Daniel checkt Contants.java aus: class Constants { static final int MAXSIZE = 100; static final double FACTOR = 0.2; } 2. Laura checkt dieselbe Datei aus und checkt folgende Änderung ein: 3. Daniel versucht seine Änderung einzuchecken und scheitert: 4. Daniel check Constants.java neu aus. Das SCM Tool (hier Subversion) mergt beide Versionen und findet einen Merging Konflikt: 5. Daniel löst Konflikt und checkt erfolgreich ein. class Constants { static final int MAX_SIZE = 100; static final double FACTOR = 0.3; } class Constants { static final int MAXSIZE = 50; static final double FACTOR = 0.2; } class Constants { <<<<<<<.mine static final int MAXSIZE = 50; ======= static final int MAX_SIZE = 100; >>>>>>>.r1263 static final double FACTOR = 0.3; } class Constants { static final int MAX_SIZE = 50; static final double FACTOR = 0.3; }

Software Engineering: 13. Configuration Management 7 SCM: Optimistic Locking: Handhabung 1. Synchronization der lokalen Codebasis mit dem Repository bevor man mit der Arbeit beginnt. Subversion: svn update 2. Synchronization der lokalen Codebasis mit dem Repository bevor man die eigenen Änderungen einscheckt. 3. Merging Konflikte lösen. 4. Änderungen einchecken und kommentieren. Subversion: svn commit

Software Engineering: 13. Configuration Management 8 SCM: Versionierung Das Repository hält alle Versionen der Dateien, die es verwaltet. Jede Version einer Datei hat eine Versionsnummer. Nach dem Einchecken steht eine neue Version der Datei zur Verfügung. Normalerweise wird nur die letzte Version ausgecheckt (in CVS und Subversion HEAD genannt). Man kann sich Unterschiede zwischen zwei Versionen anschauen. Subversion: svn diff Übersichten der Versionshistorie einer Datei sind möglich. Wer hat wann was mit welchem Kommentar eingecheckt? Subversion: svn log Man kann die komplette Codebasis zu einem bestimmten früherer Zeitpunkt auschecken. Wichtig um Bugs zu verifizieren, die bei einer älteren Version der Software aufgetreten sind.

Software Engineering: 13. Configuration Management 9 SCM: Branching Einfaches SCM: Sequenz von auf einander folgenden Versionen einer Datei bzw. einer Codebasis. Es gibt genaue eine aktuelle Version. Problem mit folgendem Szenario: Am 12. Januar wurde die Software V1.0.0 an den Kunden ausgeliefert. Seit dem wird für die Version V1.1 weiter entwickelt. Am 7. Februar meldet der Kunden einen kritischen Bug der unbedingt gefixt werden muss. Es stellt sich heraus, dass zum Fixen des Bugs 15 Dateien geändert werden müssen. Der Bugfix führt zu einer neuen Version V1.0.1 Natürlich soll der Fix auch in die Entwicklung V1.1 eingehen. Die Lösung für dieses Problem ist Branching: Es kann beliebig viele parallel laufende Sequenzen von Versionen einer Datei bzw. der Codebasis geben. Meistens ist eine Sequenz ausgezeichnet (Trunk genannt).

Software Engineering: 13. Configuration Management 10 SCM: Branching Beispiel 132 12.1.: V 1.0.0 ausgeliefert 145 146 7.2.: Schwerwiegender Bug 9.2.: Bug gefixt 13.2.: V 1.0.1 ausgeliefert Zeit 158 160 165 170 Branching merge 159 164 169 trunk branch

Software Engineering: 13. Configuration Management 11 SCM: Branching Strategien und Szenarios Release Branching: Jeder neuer Zweig ist ein neuer ausgelieferte Release. V1.0.x V1.2.x V1.1.x Experimental Branching: Neue Entwicklung ist experimentell. Merging wenn erfolgreich. experimental branch

Software Engineering: 13. Configuration Management 12 Build Build: Erzeugung einer lauffähigen Applikation aus dem Source Code im Source Code Repository. Build Tool: Software zur Erzeugung eines Builds: make Ant Maven Gradle NAnt Build Skript: Programm in der Skriptsprache des Tools welches einen Build erzeugt.

} Software Engineering: 13. Configuration Management 13 Make Build Tool in der Unix Welt. Aufruf: prompt> make <target> oder (wenn das Make File nicht 'makefile' oder 'Makefile' heisst) prompt> make -f <make-file> <target> Das Make File ist eine Mischung aus Shell Kommandos und speziellen Make Kommandos, den Target Rules: <target> : <file 1> <file 2>... <command 1> <command 2>... } Shell Target Rule Kommandos TAB Zeichen vor jedem Kommando

Software Engineering: 13. Configuration Management 14 Make Target Rule: <target> : <file 1> <file 2>... Regeln: Kommandos: <target> ist eine Datei, die mittels der Kommandos aus den Dateien <file 1> <file 2>... erzeugt wird. Regeln: Die Kommandos werden nur ausgeführt wenn mindestens eine der Dateien <file 1> <file 2>... jünger ist als <target>. Die Kommandos werden nur ausgeführt wenn mindestens eine der Dateien <file 1> <file 2>... jünger ist als <target>. Falls einige der Dateien <file 1> <file 2>... selber Targets im Make File sind, werden ersten deren Target Rules ausgeführt. Target Rule wird immer ausgeführt wenn es keine Datei mit Namen <target> gibt. Jedes Kommando wird in einer eigenen Shell ausgeführt. Die Kommandosequenz wird abgebrochen wenn der Exit Wert eines Kommandos nicht Null ist.

Software Engineering: 13. Configuration Management 15 Make: Beispiel # A simple make example program : main.o file1.o file2.o cc -o program main.o file1.o file2.o # Compiling source files main.o : main.c mydefs.h cc -c main.c file1.o : file1.c mydefs.h cc -c file1.c file2.o : file2.c command.h cc -c file2.c Dependency Graph command.h file2.o file2.c program file1.c file1.o mydefs.h main.o main.c Was passiert beim Aufruf make program? 1. Target Rule program wird ausgeführt. 2. Überprüfung, ob für abhängige Dateien Target Rules definiert sind. 3. Target Rule main.o wird ausgeführt. 4. Make stellt fest, dass main.o nicht von weiteren Target Rules abhängt. 5. Wenn mydefs.h oder main.c jünger sind als main.o wird cc -c main.c ausgeführt. 6. Auf dieselbe Art werden die Target Rules file1.o und file2.o ausgeführt. 7. Zum Schluss überprüft Make, ob nun mindestens einer der abhängigen Dateien der Target Rule program neueren Datums ist. Wenn ja wird das Link Kommando cc -o programm main.o file1.o file2.o ausgeführt.

Software Engineering: 13. Configuration Management 16 Make: Variable Variablen Definition: <name> = <wert> <name> ist der Name der Variablen. <wert> ist eine beliebige Zeichenkette sein. Referenz auf Variable: $(<name>) $(<name>) wird durch <wert> ersetzt. Beispiel: objs = main.o file1.o file2.o program : $(objs) cc -o program $(objs) Automatische Variablen sind spezielle Variable, deren Wert vom Kontext abhängt. Die beiden wichtigsten sind $@ Name des Targets $+ Liste der abhängigen Dateien Beispiel: objs = main.o file1.o file2.o program : $(objs) cc -o $@ $+

Software Engineering: 13. Configuration Management 17 Make: Pattern Rules Zusammenfassung von Target Rules zu einer Pattern Rule: Target und abhängige Dateien enthalten das Zeichen '%': Es steht für einen beliebige Zeichenkette, die in beiden Teilen der Regel denselben Wert hat. Beispiel: CC=gcc objs = main.o file1.o file2.o progam : $(objs) $(CC) -o $@ $+ %.o:%.c $(CC) -c $+ main.o : mydefs.h file1.o : mydefs.h file2.o : command.h

Software Engineering: 13. Configuration Management 18 Nightly Builds und Continuous Integration Nightly Builds: Jede Nacht wird aus dem Source Code Repository die aktuelle Version ausgecheckt, compiliert, alle Unit Tests ausgeführt und eine lauffähige Version der Software gebaut Continuous Integration: Nach jeder Änderung des Source Code Repositorys wird ein kompletter Build gemacht. Das Ergebnis des Builds wird als Report auf einer Web Site allen Entwicklern zur Verfüngung gestellt. Eventuell werden bei fehlerhaften Builds E-Mails verschickt. Open-Source Continuous Integrations Servers: Hudson/Jenkins (für Java): http://hudson-ci.org/ http://jenkins-ci.org/ Übersicht: http://confluence.public.thoughtworks.org/display/cc/ci+feature+matrix

Software Engineering: 13. Configuration Management 19 Deployment Auslieferung der Software an den Kunden bzw. Benutzer. Deployment kann folgendes mit einschliessen: Bündelung (Packaging): Erfolgt oft durch Build Skripte und umfasst: Die eigentliche Applikation Dokumentation (für Benutzer, Administrator, etc.) Installationsprogramm, -skript Installation und Konfiguration Integrationstests Verwaltung von Lizenzen Schulung Formen des Deployments: Auf CD/DVD: Konsumentensoftware wird meist in einer Schachtel eventuell mit Handbüchern ausgeliefert. Elektronisch: via E-Mail Als Datei (komprimiert mit/ohne Installer) aus dem Internet herunterladbar Automatischer Start und Update Mechanismus via Internet. z.b. Java Web Start

Software Engineering: 13. Configuration Management 20 Installation und Konfiguration Applikationen laufen in einer Umgebung. Dazu gehört: Betriebssystem Applikationsserver z.b. für Web Applikationen Datenbank(en) Andere Server bzw. Services wie z.b. LDAP für Benutzerauthentifizierung SMTP um E-Mails abschicken zu können Zusätzliche Software wie z.b. Java VM Spezielle Bibliotheken, die nicht zum Lieferumfang gehören Konfiguration: Anpassung an die Umgebung. Voraussetzung: Software ist so flexible, dass sie ohne zusätzlichen Build vor Ort angepasst werden kann. Automatische Konfiguration: Installationsprogramm erkundet die Umgebung und findet einige Dinge selber heraus. z.b. den Pfad zur Java VM Manuelle Konfiguration: Benutzer bzw. Administrator muss die Konfigurationsparameter selber herausfinden und eingeben z.b. im Installation Wizard (typisch für Consumer Products) in einer textbasierten Konfigurationsdatei (heute oft in XML)

Software Engineering: 13. Configuration Management 21 Release Management Release: Auslieferbare bzw. ausgelieferte Version eines Software Produkts inkl. Dokumentation und Installationssoftware. Release Stufen: Alpha: Version, die noch sehr unvollständig und wahrscheinlich voller Bugs ist. Beta: Version, die ziemlich vollständig ist aber wahrscheinlich noch Bugs hat, die unbedingt gefixt werden müssen. Release Candidate (RC): Vollständige Version kurz vor der Freigabe. Letzte Chance um schwerwiegende Bugs zu fixen. Final: Offizielle Version des Produkts. Bekannte, aber nicht mehr gefixte Bugs werden in einer known issue Liste aufgeführt. Release Typen: Major: Version mit vielen neuen Features im Vergleich zur vorherigen Version. Minor: Version mit wenig Änderungen im Vergleich zur vorherigen Version. Patch: Keine neuen Features. Nur Bugfixes und gestopfte Sicherheitslöcher.

Software Engineering: 13. Configuration Management 22 Release Management Release Bezeichnung: Extern: Name des Major Releases einer Software für den Kunden. Intern: Häufiges Schema für Nummerierung von Versionen: major.minor.patch[-build] dabei sind major, minor und patch Ziffern für jeden Release Typ. Optional findet man noch eine build ID. Diese erlaubt es eindeutig den zum Release gehörigen Sourcecode aus dem SCM auszuchecken. Alpha- und Beta-Releases werden meistens mit major = 0 gekennzeichnet. Beispiele: 0.9 Beta Release 1.0 Erster Final Release 1.0.1 Erster Patch Release nach dem Final Release 1.1 Erster Minor Release nach dem Final Release Release Richtlinien: Wann werden neue Major-, Minor-Releases und Patches herausgebracht? Beeinflusst Planung der Softwareentwicklung.

Software Engineering: 13. Configuration Management 23 Links Johannes Franken: Einführung in make http://www.jfranken.de/homepages/johannes/vortraege/make.de.html M. Fowler: Continuous Integration (2006) http://www.martinfowler.com/articles/continuousintegration.html