Release-Management. Softwareentwicklung in der Wissenschaft. Sebastian Schulz



Ähnliche Dokumente
Release-Management. Softwareentwicklung in der Wissenschaft. Sebastian Schulz

Release-Management Softwareentwicklung in der Wissenschaft

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

Sehr geehrte Faktor-IPS Anwender,

Praktikum Ingenieurinformatik (PI)

Massendigitalisierung mit Goobi

Deployment Deployment Seite 1 / 25

Branching und Merging mit Visual Studio Team System

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

peer-to-peer Dateisystem Synchronisation

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

IT-Projekt-Management

EIDAMO Webshop-Lösung - White Paper

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

Open Source Software. Workshop : Open Source Software 3. Mannheimer Fachtag Medien Referent : Christopher Wieser (

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

Moodle aktuell halten mit Git

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Installation und Inbetriebnahme von Microsoft Visual C Express

Release Notes. NCP Local License Server (Win32/64) 1. Neue Leistungsmerkmale und Erweiterungen. 3. Bekannte Einschränkungen

Anleitung zum Prüfen von WebDAV

Versionsverwaltung mit SVN

Software Engineering in der Praxis

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

Software-Validierung im Testsystem

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

Version 0.3. Installation von MinGW und Eclipse CDT

Lokale Installation von DotNetNuke 4 ohne IIS

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand Copyright

EOS goes JIRA. Jens Backmeier, EOS IT Services. Ein Erfahrungsbericht aus erster Hand. With head and heart in finance

Quick Reference Historie des Dokuments

Handbuch zur Installation des Smart Card- Lesegerätes MiniLector USB

FAQ The FAQ/knowledge base. Version 2.1.1

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

Copyright & Copyriot

DGQ Regionalkreis Hamburg ISO Konfigurationsmanagement

TUSReport Installationsanleitung

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

PCC Outlook Integration Installationsleitfaden

INSTALLATIONSANLEITUNG

Dr. Klaus Körmeier BlueBridge Technologies AG

Freie Software. Karin Kosina Free Software Foundation Europe.

Behebung des sog. Heartbleed-Bugs (CVE ) in der Krypto-Bibliothek OpenSSL.

Installationsanleitung

Python SVN-Revision 12

Step by Step Webserver unter Windows Server von Christian Bartl

Installation EPLAN Electric P8 Version Bit Stand: 07/2014

(1) Mit dem Administrator Modul werden die Datenbank, Gruppen, Benutzer, Projekte und sonstige Aufgaben verwaltet.

Installation SQL- Server 2012 Single Node


Business Application Framework für SharePoint Der Kern aller PSC-Lösungen

Freie Software: Was bringt s mir? Peter Bubestinger, David Ayers. 17. Mai 2008

Installation der kostenlosen Testversion

Windows Server 2008 (R2): Anwendungsplattform

Internet Explorer Version 6

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

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

HSR git und subversion HowTo

Swisscom TV Medien Assistent

Die vorliegende Arbeitshilfe befasst sich mit den Anforderungen an qualitätsrelevante

Umfrage zum Informationsbedarf im Requirements Engineering

Installation Microsoft SQL Server 2008 Express

Workshop: Eigenes Image ohne VMware-Programme erstellen

Collaboration Manager

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

OP-LOG

Jura Eine verteilte Bibliothek von SAS 1 -Makros - Abstract -

Updatehinweise für die Version forma 5.5.5

SQL Server 2008 Standard und Workgroup Edition

Konfigurationsmanagement

Content Management System mit INTREXX 2002.

Java Entwicklung für Embedded Devices Best & Worst Practices!

Sonnenfinsternis in der Technischen Redaktion

Installation und Inbetriebnahme von SolidWorks

Installationsanleitung SSL Zertifikat

Installation & Konfiguration AddOn AD-Password Changer

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

Versionskontrolle mit Subversion

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Clientkonfiguration für Hosted Exchange 2010

kurz erklärt Dokumentenmanagement & Archivierung 3 Schritte mit ELO QuickScan

ESD einfach, schnell, digital. Electronic Software Distribution

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

«PERFEKTION IST NICHT DANN ERREICHT, WENN ES NICHTS MEHR HINZUZUFÜGEN GIBT, SONDERN DANN, WENN MAN NICHTS MEHR WEGLASSEN KANN.»

novapro Open Audittrail Report

PROJEKTVERZEICHNIS EINRICHTEN

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Gliederung. 1. That s Radiant 2. User Interface 3. Rollen 4. Installation 5. Extensions 6. Fazit

ANLEITUNG GERÄTEREGISTRATION AN KRZ.SMK

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Kurzanleitung zu. von Daniel Jettka

Installation und Dokumentation juris Smarttags 1.0

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

PC-Kaufmann Supportinformation - Proxy Konfiguration für Elster

1 Objektfilterung bei der Active Directory- Synchronisierung

Warum beschäftigt sich ein Linux-Systemhaus mit der Installation von OTRS mit einem Microsoft SQL Server?

Transkript:

Release-Management Softwareentwicklung in der Wissenschaft Sebastian Schulz Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Universität Hamburg 14. Februar 2011 1 / 36

Ausblick 1 Definition 2 Motivation 3 Release-Management 4 Beispiele aus der Freien-Software-Szene Linux Kernel Subversion Apache HTTP Server 5 Bezug zur Softwareentwicklung in der Wissenschaft 6 Zusammenfassung 2 / 36

Ausblick 1 Definition 2 Motivation 3 Release-Management 4 Beispiele aus der Freien-Software-Szene Linux Kernel Subversion Apache HTTP Server 5 Bezug zur Softwareentwicklung in der Wissenschaft 6 Zusammenfassung 3 / 36

Definition Wechselwirkung zwischen Änderungs-, Konfigurations- und Release-Management Abbildung: Zusammenhang von Release-, Änderungs- und Konfigurations-Management 4 / 36

Definition Was ist Release-Management? Definition Release-Management ist der Prozess, durch den Software zur Verfügung gestellt wird. [HW03] Aufgaben von Release-Management Funktionsumfang festlegen Zeitplan festlegen Qualitätskontrolle Umfang und Änderungen dokumentieren Reproduzierbarkeit sicherstellen 5 / 36

Definition Was ist Änderungs-Management? Definition Änderungs-Management stellt sicher, dass alle Änderungen bewertet, erprobt, implementiert und überprüft werden. [ISO05] Aufgaben von Änderungs-Management Änderungen initiieren, dokumentieren und autorisieren Wirkung der Änderungen abschätzen/risiko abwägen Implementierung koordinieren Abschließend Änderung überprüfen 6 / 36

Definition Was ist Konfigurations-Management? Definition Konfigurations-Management koordiniert Maßnahmen um Konfigurationen zu lenken und zu kontrollieren.[iso04] Aufgaben von Konfigurations-Management Definition und Verfolgung von Prozessen Dokumentation aller Vorgänge Versionierung und Konfliktbehandlung Verwaltung von Voraussetzungen 7 / 36

Ausblick 1 Definition 2 Motivation 3 Release-Management 4 Beispiele aus der Freien-Software-Szene Linux Kernel Subversion Apache HTTP Server 5 Bezug zur Softwareentwicklung in der Wissenschaft 6 Zusammenfassung 8 / 36

Motivation Meine Fragestellungen am Anfang Was sind Anforderungen an ein Release-Management? Was sind Anforderung an ein wissenschaftliches Release-Management? Wie ist das Vorgehen bei freien Software-Projekten? 9 / 36

Ausblick 1 Definition 2 Motivation 3 Release-Management 4 Beispiele aus der Freien-Software-Szene Linux Kernel Subversion Apache HTTP Server 5 Bezug zur Softwareentwicklung in der Wissenschaft 6 Zusammenfassung 10 / 36

Release-Manager Was ist ein Release-Manager? Verantwortlich für das Release Letzte Entscheidungsinstanz Mehrere Personen für mehrere Releases denkbar Aufgaben delegieren (z.b.: Dokumentation, Release-Notes) 11 / 36

Vorgehen Planen des zeitlichen Ablaufs Meilensteine definieren Fristen setzen Auf verschiedenen Plattformen übersetzen und testen Check-Liste abarbeiten Nach der Veröffentlichung das Feedback rückfließen lassen 12 / 36

Der Weg zur Freigabe Test vor der Veröffentlichung Code einfrieren Kriterienkatalog erfüllen Automatisierte Testabläufe Freigabe Release-Manager gibt Software frei Abnahme durch eine unabhängige Gruppe denkbar Release-Notes (Abhängigkeiten, Installation) Ankündigung (z.b.: Mailingliste, Website) Zugriff über Webserver und Spiegelserver Prüfsummen und Signierung der Archive garantiert Integrität Archivierung der Software Leitfaden wie das Release gepackt wird Für möglichst viele Benutzer verwendbar Aufwand für den Benutzer gering halten (Unix, Windows) 13 / 36

Inbetriebnahme Umgebungen Entwicklungsumgebung Testumgebung Vorschau Produktionsumgebung Installation Verteilungsprozess in Cluster Unterstützung durch Build-Skripte Handarbeit (z.b. Datenbank anpassen) 14 / 36

Versionierung I Was ist die Idee? Release identifizierbar durch Versionsnummern Stabilität des Releases kennzeichnen (z.b. 0.95 ) Schlagwörter ( alpha, beta, Branching) Unterstützung durch Versionsverwaltung ( Git) Wie kann Versionsverwaltung unterstützen? Meilensteine als Schlagwörter (Tags) Parallele Softwareentwicklung durch Branching und Merging Leitfaden für Versionierung Wann wird das Release als stabil bzw. nicht stabil bezeichnet Welche Abstufungen gibt es Kriterien für den entsprechenden Status notwendig 15 / 36

Versionierung II Schemata Iterierbare Abfolgen major.minor[.build[.revision]] Nummeriert (0.9, 1.0, 1.2) Alphabet (1.1a, 1.1b, 1.1c) Status ( alpha, beta, rc ) negative Versionsnummern Datum ( Wine 20040505 ) Snapshots, Nightly Build Jahreszahl ( Windows 98, Ubuntu 11.04 ) Sonstige Schemata π ( Tex 3.1415926 ) Marketing ( Microsoft Office XP ) 16 / 36

Versionierung mit Git Beispiel für Schlagwörter in Git $ git tag -a "v1.1beta" $ git tag -l v1.1beta $ git tag -d "v1.1beta" Deleted tag v1.1beta (was e4ee032) 17 / 36

Kleine Projekte Was ist bei kleinen Projekten anders? Größe des Teams entscheidet über den Aufwand Wie kann das Vorgehen bei kleinen Projekten sein? Aufwand gering halten Versionierung verwenden Dokumentation (README.txt, Changelog.txt) Werkzeuge Makefile Apache Ant GNU Build System Waf 18 / 36

Was ist Waf Auf Python basierendes Framework zum konfigurieren, compilieren und installieren von Software-Projekten Wichtige Funktionen Erkennt selbstständig die Abhängigkeit Aufgaben werden parallelisiert Einfach erweiterbar Gut dokumentiert ( The Waf book ) Vordefinierte Phasen configure: Sucht nach Bibliotheken, Compiler, etc. build: Übersetzt das Projekt dist: Erstellt ein Archiv mit dem gesamten Quelltext clean: Entfernt alle mit build erzeugten Dateien 19 / 36

Beispiel mit Waf I [Tho10] 1 #i n c l u d e <s t d i o. h> 2 i n t main ( v o id ) 3 { 4 p u t s ( " H e l l o World! " ) ; 5 r e t u r n 0 ; 6 } Listing 1: main.c Listing 2: wscript 1 APPNAME = w a f h e l l o 2 VERSION = 1. 0 3 def o p t i o n s ( opt ) : 4 opt. l o a d ( compiler_c ) 5 def c o n f i g u r e ( c n f ) : 6 c n f. l o a d ( compiler_c ) 7 def b u i l d ( b l d ) : 8 b l d ( f e a t u r e s= c cprogram, s o u r c e= main. c, \ 9 t a r g e t= h e l l o ) 20 / 36

Beispiel mit Waf II [Tho10] $ waf configure build Setting top to :. Setting out to :./build Checking for gcc (c compiler) : ok configure finished successfully (0.026s) Waf: Entering directory./build [1/2] c: main.c -> build/main.c.0.o [2/2] cprogram: build/main.c.0.o -> build/hello Waf: Leaving directory./build build finished successfully (0.061s) $./build/hello Hello World! $ waf dist New archive created: wafhello-1.0.tar.bz2 (sha= 10d691febb5f87e32f3f599749be12df737158a7 ) dist finished successfully (0.012s) 21 / 36

Ausblick 1 Definition 2 Motivation 3 Release-Management 4 Beispiele aus der Freien-Software-Szene Linux Kernel Subversion Apache HTTP Server 5 Bezug zur Softwareentwicklung in der Wissenschaft 6 Zusammenfassung 22 / 36

Linux Kernel Übersicht und Versionierung Was ist der Linux Kernel? Projekt 1991 durch Linus Torvalds gegründet Er ist heute noch hauptverantwortlich GNU GPL lizenziert Versionierung (2.{Major}.{Minor}[.Revision]) Major: Nur bei Änderung der Systemarchitektur Minor: Hinzunahme von neuen Funktionen Revision: Wird zur Fehlerbehebung verwendet Verantwortliche Personen Hauptzweig verantwortet Linus Torvalds Entwickler übernehmen später die Pflege für stabile Versionen 2.4-Zweig wird nach wie vor gepflegt 23 / 36

Linux Kernel Test, Abnahme, Veröffentlichung Test und Abnahme Entwicklerversion ( -mm Kernel ) Nach zwei Wochen keine Aufnahme von neuen Features Positives Feedback von der Mailingliste Freigabe Ankündigung auf der Mailingliste Verfügbar auf kernel.org und zahlreichen Spiegelserver Dateien werden signiert mit GnuPG Tarball, Patch Linux-Distributoren pflegen teilweise eigene Versionen 24 / 36

Subversion Übersicht Was ist SVN? Versionsverwaltung Als Nachfolger von CVS entwickelt Entwickelt durch CollabNet Seit 2009 unterstützt durch die Apache Software Foundation Apache License v2.0 lizenziert Verantwortliche Organisation und Personen Committers Release-Manager Patch Manager 25 / 36

Subversion Release-Management im Projekt Versionierung Alle Versionen sind grundsätzlich stabil Versionsnummer mit alpha, beta oder rc sind nicht stabil Minor Releases bleiben zueinander kompatibel Test und Abnahme Regressionstests müssen erfolgreich sein Punkte im Issue-Tracking-System müssen erledigt sein Build-Farm Veröffentlichung Quellcode wird als Archiv(.tar.bz2,.zip) zur Verfügung gestellt Nur auf den Servern von collabnet verfügbar Dritte Distributoren stellen binäre Pakete bereit Dokumentation zum Release-Prozess auf der Website verfügbar 26 / 36

Apache HTTP Server Übersicht und Versionierung Webserver Apache License v2.0 lizenziert Projekt ist meritokratisch 1 organisiert Gremium für das Projekt-Management Release-Manager wird ein Freiwilliger aus dem Gremium Eingaben aus der Community gewünscht Drei Klassifizierungen (Alpha, Beta, General Availability (GA)) Stabile Version (2.{gerade-Zahl}.{revision}) Keine experimentell Erweiterungen Kompatibilität zu höheren Versionen wahren Nicht stabile Version (2.{ungerade-Zahl}.{revision}) Entwicklern von Erweiterungen frühes Feedback ermöglichen Projekt-Management Gremium entscheidet über den Status und die zukünftige Versionsnummer 1 Aufnahme in die Community aufgrund von Leistungen 27 / 36

Apache HTTP Server Test, Abnahme, Veröffentlichung Test und Abnahme Ankündigung auf Entwickler- und Test-Mailingliste automatisierte Tests stabiler Release-Kandidat läuft auf apache.org Freigabe durch Wahl der Projekt-Mitglieder Veröffentlichung Quellcode wird als Archiv bereitgestellt Binäre Pakete für diverse Plattformen verfügbar Weltweit verteilte Spiegelserver Dateien sind mit GnuPG signiert 28 / 36

Ausblick 1 Definition 2 Motivation 3 Release-Management 4 Beispiele aus der Freien-Software-Szene Linux Kernel Subversion Apache HTTP Server 5 Bezug zur Softwareentwicklung in der Wissenschaft 6 Zusammenfassung 29 / 36

Bezug zur Softwareentwicklung in der Wissenschaft Kontext von Wissenschaftler Wissenschaftler haben häufig keine oder eine geringe Ausbildung im Bereich der Software-Entwicklung Software-Entwickler müssen sich in die Thematik einarbeiten Oft kleine Projekte Andere Produktionsumgebung in der Wissenschaft Entwickler ist häufig auch Endbenutzer Verteilungsprozess in Cluster Gute Dokumentation sehr wichtig Ergebnisse müssen reproduzierbar sein Archivierung und Verfügbarkeit müssen gewährleistet sein Release-Notes (Installation der Software) Von freien Software-Projekten lernen Seit vielen Jahren erfolgreiche Konzepte vorhanden Wissen nachhaltig gesichert 30 / 36

Ausblick 1 Definition 2 Motivation 3 Release-Management 4 Beispiele aus der Freien-Software-Szene Linux Kernel Subversion Apache HTTP Server 5 Bezug zur Softwareentwicklung in der Wissenschaft 6 Zusammenfassung 31 / 36

Zusammenfassung Release-Management muss geplant und dokumentiert werden Was muss ich an meinem System konfigurieren Wie bekomme ich die Software zum Laufen Versionierung ist wichtig und notwendig Werkzeuge können auf dem Weg sehr hilfreich sein (Git, Waf) Freie Software-Projekte können als gutes Vorbild dienen 32 / 36

Vielen Dank! 33 / 36

Literatur I [CSK02] [EJ09] [Ere03] [Goo11] [HW03] Clement-Smith, L. ; Kerkhoff, W.: Software Release Management. (2002) Easterbrook, S.M. ; Johns, T.C.: Engineering the software for understanding climate change. In: Computing in Science & Engineering 11 (2009), Nr. 6, S. 65 74. ISSN 1521 9615 Erenkrantz, J.R.: Release management within open source projects. In: Proc. 3rd. Workshop on Open Source Software Engineering Citeseer, 2003 Google Project Hosting: Waf. http://code.google.com/p/waf/, Februar 2011 Hoek, A. Van d. ; Wolf, A.L.: Software release management for component-based software. In: Software: Practice and Experience 33 (2003), Nr. 1, S. 77 98. ISSN 1097 024X 34 / 36

Literatur II [ISO04] [ISO05] ISO, DIN: 10007. In: Qualitätsmanagement Leitfaden für Konfigurationsmanagement (ISO 10007: 2003) (2004) ISO, DIN: 20000-1. In: Service Management: Specification (ISO/IEC 20000 Part 1: 2005) (2005) [MHP07] Michlmayr, M. ; Hunt, F. ; Probert, D.: Release management in free software projects: Practices and problems. In: Open Source Development, Adoption and Innovation (2007), S. 295 300 [The09] The Apache Software Foundation: Subversion Submitted to Become a Project at The Apache Software Foundation. http://www.apache.org/foundation/press/pr_2009_11_04.html, 4. November 2009 [The11a] The Apache Software Foundation: Apache HTTP Server Release Guidelines. http://httpd.apache.org/dev/release.html, Februar 2011 35 / 36

Literatur III [The11b] The Apache Software Foundation: Community Roles. http://subversion.apache.org/docs/community-guide/roles.html, Februar 2011 [The11c] [Tho10] The Apache Software Foundation: Getting Involved with Apache Subversion. http://subversion.apache.org/contributing.html, Februar 2011 Thomas Nagy: Waf tutorial. http://waf.googlecode.com/svn/docs/apidocs/tutorial.html, 2. Dezember 2010 [Wik11a] Wikimedia: Release Management. http://de.wikipedia.org/w/index.php?title=release_ Management&oldid=83836978, 1. Februar 2011 [Wik11b] Wikimedia: Software versioning. http://en.wikipedia.org/w/index.php?title=software_ versioning&oldid=409736919, 6. Februar 2011 36 / 36