Dr. Holger Schwichtenberg

Transcription

Dr. Holger Schwichtenberg
Varianten und Versionen verwalten
in .NET-Anwendungen
Dr. Holger Schwichtenberg
Version 1.2 / 22.01.2007
Softwarearchitekt Berater Dozent Fachjournalist
Dr. Holger Schwichtenberg
[email protected]
•
•
•
•
•
•
•
•
•
•
Dr. Holger Schwichtenberg
Dr. rer. pol. Diplom-Wirtschaftsinformatiker
MVP, .NET Code Wise Member, MCSD
seit 1996 Softwareentwicklung mit Windows COM/.NET
Heute: Firma www.IT-Visions.de (Sitz: Essen)
– 50%: Architektur, Design, Entwicklung (.NET!)
– 50%: Beratung, Schulungen, Coaching,
Fachartikel, Fachbücher, Konferenzvorträge
Fachjournalist iX, DOTNETpro, Computer Zeitung, Windows
IT Pro, OBJEKTSpektrum, PC Magazin, MSDN Online, u.a.
Buchautor Addison-Wesley, Microsoft Press, WEKA Media
Vortragender nationale und internationale Fachkonferenzen
(TechEd, OOP, ADC, BASTA, IT Forum, STC, WI, Net.Object
Days, etc.)
Kontakt [email protected]
Community Website http://www.dotnetframework.de
Weblog http://www.dotnet-doktor.de
Seite 2
1
Dr. Holger Schwichtenberg
[email protected]
Vortrags-FAQ
Folienpräsentation?
Ja
Download der Präsentation?
http://www.IT-Visions.de/v4544.aspx
Live-Vorführungen?
Download der Beispiele?
Zwischenfragen?
Zeit für Fragen am Ende?
Fragen, die mir erst später einfallen?
Schulung, Beratung, Support
Ja
Keine Beispiele, die sich zum Download
lohnen würden… ☺
Bitte nicht, wenn möglich ☺
Ja!
http://www.IT-Visions.de/Foren oder
[email protected]
http://www.IT-Visions.de/Produkte
Seite 3
Dr. Holger Schwichtenberg
[email protected]
•
•
•
•
•
Inhalt
Was ist Versionsverwaltung?
Konzepte der Versionsverwaltung
Versionsverwaltungswerkzeuge
Subversion
Team Foundation Version Control
Ziele:
• Überzeugen, Versionsverwaltung einzusetzen
• Kriterien für Werkzeugentscheidung
• Ihnen helfen, die eigene Strategie zu validieren
Seite 4
2
Dr. Holger Schwichtenberg
[email protected]
Eine kleine Geschichte…
• Es war einmal ein einzelner Softwareentwickler
• Der war mit seiner Software Q&D (Quick&Dirty) sehr
erfolgreich.
• Jeden Abend erstellte er ein auf einem von sieben
Magnetbändern ein rollierendes Backup seiner Sourcen
• Als er schon längst an Version 3.0 arbeitete, rief ein
Kunden, der Version 1.0 verwendete: Er hatte einen
Fehler gefunden.
• Der Entwickler hatte aber den Quellcode von Version
1.0 nicht mehr und musste daher auf Version 2.0
aktualisieren.
Seite 5
Dr. Holger Schwichtenberg
[email protected]
Wer sind Sie?
Nutzen Sie Versionsverwaltung?
O Ja, seit 2 oder mehr Jahren Jahren
O Ja, seit weniger als 2 Jahren
O Nein, noch nicht
Seite 6
3
Dr. Holger Schwichtenberg
[email protected]
Versionsverwaltung
Versionsverwaltungssystem
Version Control System - VCS
Seite 8
Dr. Holger Schwichtenberg
[email protected]
Variantenverwaltung
Seite 9
4
Dr. Holger Schwichtenberg
[email protected]
Ziele der Versionsverwaltung
• Sicherstellen der Verfügbarkeit der Dateien
• Gewährleisten der Integrität, insbesondere bei
gleichzeitiger Nutzung
• Verhinderung unberechtigter Zugriffe
• Sicherstellen der Nachvollziehbarkeit
Seite 10
Dr. Holger Schwichtenberg
[email protected]
Geschichte der ("freien")
Versionsverwaltung
• Anfang der 70er: Marc Rochkind, AT&T:
Source Code Control System (SCCS)
• 1985: Walter Tichy, Purdue University:
Revision Control System (RCS)
• 1986: Dick Grune:
Concurrent Versions System (CVS) auf Basis von ShellSkripten
• 1989: Jeff Polk und Brian Berliner:
Concurrent Versions System (CVS) in C
• 2000-2004: Karl Fogel, CollabNet:
Subversion
Seite 11
5
Konzepte
(auch: Kriterien für die Auswahl von
Versionsverwaltungssystemen)
Dr. Holger Schwichtenberg
[email protected]
•
•
•
•
•
•
Konzepte (1)
Versionsverfolgung (Archivierung, Wiederherstellen)
Repository vs. Arbeitskopie
Check-Out / Check-In (Commit)
Exportieren
Revisionsnummern (lokal | global)
Geschichte (History)
– Dateiebene
– Zeilenebene
• Vergleichen der Versionen (Diff-Tool)
• Kommentieren der Versionen
• Attributieren (Metadaten)
Seite 13
6
Dr. Holger Schwichtenberg
[email protected]
Konzepte (2)
Paralleles Arbeiten
• Koordinierung des gemeinsamen Zugriffs
– Sperren (Lock Modify Write – LMW )
aka. Pessimistischer Checkout
– Mischen (Copy Modify Merge - CMM)
aka. Optimistischer Checkout
• Mischen:
– Keine gegenseitige Behinderung
– Konflikte können auftreten (nur zum Teil automatische
Lösung)
• Sperren
– Keine Konflikte zu lösen
– Aber möglicherweise Behinderung
Seite 14
Dr. Holger Schwichtenberg
[email protected]
Merging
Seite 15
7
Konzepte (3)
Konfigurationselemente
Dr. Holger Schwichtenberg
[email protected]
• Was kann man unter Versionsverwaltung stellen?
– Nur nicht Quellcode, beliebige Dateien
– Einzelne Dateien oder ganze Verzeichnisse
• Was sollte man unter Versionsverwaltung?
– Quellcode inkl. Tests
– Anforderungsdokumente, Buildskripte, Schnittstellenverträge, …
• Was könnte man unter Versionsverwaltung stellen?
– Generierte Dokumentation
– Andere Artefakte, die aus dem Code gewonnen werden können
– Werkzeuge, Bibliotheken
• Was sollte man nicht unter Versionsverwaltung stellen?
– Kompilate
• Was macht Probleme?
– Entwicklertools, die binären Dateien/Datenbanken häufig ändern (z.B.
Datenbanken von Codegeneratoren)
Seite 16
Dr. Holger Schwichtenberg
[email protected]
Konzepte (4)
Markierungen und Verzweigen
• Wichtige Punkte
– Tags/Labels
– Baseline
– Release
• Branching (Verzweigen) für
– Varianten/Produktversionen
– Experimentelle Entwicklungen
– Bugfixing
Seite 17
8
Dr. Holger Schwichtenberg
[email protected]
Tagging und Baselines
Quelle: G. Popp: Konfigurationsmanagement, S. 41
Dr. Holger Schwichtenberg
[email protected]
Seite 18
Branching
Seite 20
9
Dr. Holger Schwichtenberg
[email protected]
Konzepte (5)
Zentrale vs. Verteilte Versionsverwaltung
• Shelving
• Zugang zum Repository
– Online / Offline arbeiten
– Protokoll
• Zentrale Versionsverwaltung:
– Ein Repository
– n Arbeitskopien
• Verteilte Versionsverwaltung
–
–
–
–
Jeder Entwickler hat sein eigenes Repository
Ein priviligertes Master-Repository
"Remote Repository Replication"
"Propagating Changes to Parent Repositories"
Dr. Holger Schwichtenberg
[email protected]
Seite 21
Konzepte (6)
• Nachverfolgbarkeit
– Verbindung mit Aufgaben, Bugreports und Builds
• Eincheckrichtlinien
• Genehmigung, z.B. Anforderungen des SarbanesOxley-Act (SOX)
• Berechtigungen (Zugriffsrechte)
• Change Sets / Transaktionen
• Effizientes Speichern der Versionen
– Deltaalgorithmen nur Unterschiede, um Plattenplatz zu
sparen
– Rückwärts vs. Vorwärtsdelta
– Kopieren oder Verlinken
– Kompression
Seite 22
10
Dr. Holger Schwichtenberg
[email protected]
Herausforderungen
• Versionsgeschichte erhalten beim
– Umbenennen
– Bewegen
– Kopieren
Seite 23
Dr. Holger Schwichtenberg
[email protected]
Typische Operationen für Nutzer von
Versionsverwaltungsystemen
• Externe Dateien einspielen (Import)
• Dateien auschecken
•
•
•
•
•
•
•
•
•
– Letzte Version
– Bestimmte Version
Dateien sperren / entspreen
Änderungen einchecken
Änderungen rückgängig machen
Dateioperationen: Löschen, Bewegen, Hinzufügen
Aktualisierungen abrufen / Dateien zusammenfügen
Dateien vergleichen
Änderungskonflikte lösen
Versionsgeschichte anzeigen
Metadaten setzen
Seite 26
11
Dr. Holger Schwichtenberg
[email protected]
Der CheckIn-Vorgang
• Falsch:
– Ändern
– Kompilieren
– Einchecken
• Besser:
–
–
–
–
Ändern
Kompilieren
Testen
Einchecken
• Richtig:
–
–
–
–
–
–
–
–
–
Ändern
Kompilieren
Testen
Aktualisieren
Konflikte lösen
Kompilieren
Testen
Aktualisieren
Einchecken
Seite 27
Dr. Holger Schwichtenberg
[email protected]
•
•
•
•
•
•
Ergänzende Konzepte
Anforderungsmanagement
Statische Codeanalyse
Modultests (Unit Tests)
Übersetzungsmanagement (Build Management)
Continous Integration
Fehlermanagement (Bugtracking)
Seite 28
12
Dr. Holger Schwichtenberg
[email protected]
•
•
•
•
Was lernen wir?
Ohne Versionsverwaltung geht es nicht
Mit Versionsverwaltung viele Punkte zu beachten
Versionsverwaltung erledigt sich nicht nebenbei
Zeit in Projektplan einplanen, um Projekt zu
konfigurieren und Versionsverwaltungssystem zu
warten
Seite 30
Werkzeuge
13
Dr. Holger Schwichtenberg
[email protected]
• Open Source
Werkzeuge (Beispiele)
–
–
–
–
–
–
–
–
CVS
Subversion
OpenCM
Arch
Monotone
Superversion
Git (Linux Torvalds)
…
–
–
–
–
–
–
–
–
–
Perforce
BitKeeper
CMSynergy
IBM Rational ClearCase
Borland Starteam
Serena Version Manager
Microsoft Visual SourceSafe (VSS)
Microsoft Team Foundation Version Control (TFVC)
…
Architekturunterschiede:
Client-Server (z.B. Perfore, Subversion)
Filesharing (z.B. Subversion oder VSS)
• Kommerziell
Dr. Holger Schwichtenberg
[email protected]
Seite 32
Visual SourceSafe
Seite 33
14
Dr. Holger Schwichtenberg
[email protected]
Source Code Control API (SCC)
• Schnittstelle für Versionsverwaltung
• Definiert von Microsoft
• Server
– VSS
– TFVC
– Andere Hersteller auch für Unix und Mac
• Clients
–
–
–
–
Visual Studio
Borland
Macromedia
Diverse Editoren (PrimalScript, Slick Edit, etc.)
Seite 34
Dr. Holger Schwichtenberg
[email protected]
Subversion (SVN)
• Quellcodeversionsverwaltungssystem
• Open Source / Nachfolger von CVS
• Funktionen:
–
–
–
–
–
–
Windows, Linux, Unix, Mac
Zugriff lokal, über TCP (3690) oder HTTP (Apache)
Datenbanksystem Berkeley DB oder fsfs
Platzsparende Verwaltung von Binärdaten
Zahlreiche Clients (Windows Explorer, VS, Eclipse, Emacs, …)
Atomare Check-Ins
• Vergleich: Subversion vs. MS VSS vs. Perforce siehe
iX 9/2004!
Seite 35
15
Dr. Holger Schwichtenberg
[email protected]
Subversion-Clients
• Svn.eve
– Kommandozeilenclient (svn.exe)
• TortoiseSVN (http://tortoisesvn.tigris.org/)
– Client für Windows Explorer
– Integration mit "beliebigen" Bug/Issue Tracking System
• AnkhSVN:
Client für Visual Studio (http://ankhsvn.tigris.org/)
– Einchecken/Auschecken
– Exportieren eines Projekts nach SVN
– Integration eines bereits unter SVN-Verwaltung stehenden
Verzeichnisses in VS
• Visual SVN
– Basiert auf Tortoise SVN
– $49
Seite 36
Dr. Holger Schwichtenberg
[email protected]
svn.exe
Quelle: G. Popp: Konfigurationsmanagement, S. 103
Seite 37
16
Dr. Holger Schwichtenberg
[email protected]
Tortoise SVN
Seite 38
Dr. Holger Schwichtenberg
[email protected]
AnkhSVN
Seite 39
17
Dr. Holger Schwichtenberg
[email protected]
Schritte
DEMO
• Anlegen eines SVN-Repositories
• Starten des SVN-Servers | Starten des SVN-Servers als WindowsSystemdienst
•
•
•
•
•
Festlegen der Exclude-Pattern
Import der Basis-Verzeichnisstruktur
Auschecken
Hineinkopieren vorhandener Dateien
Einchecken!
• Ändern – Kompilieren – Aktualisieren – Konflikte lösen –
Kompilieren – Aktualisieren – Einchecken
Seite 40
Dr. Holger Schwichtenberg
[email protected]
CruiseControl.NET (CCNet)
• Integration als Teil der täglichen Aktivitäten
• wenigstens einmal am Tag
• CruiseControl.NET Server = Automated Integration Server
•
•
•
•
– Überwachen des Quellcodeverwaltungssystems
– Kompilieren der Anwendungen
– Benachrichtigung der Entwickler über den Erfolg (EMail oder CCTray)
Hersteller: ThoughtWorks, Open Source
Version 2.5
http://sourceforge.net/projects/ccnet/
http://confluence.public.thoughtworks.org/display/CCNEt/
Seite 41
18
Dr. Holger Schwichtenberg
[email protected]
CruiseControl.NET (CCNet)
Seite 42
Dr. Holger Schwichtenberg
[email protected]
• Quellcodeverwaltung
–
–
–
–
–
–
–
–
–
–
Integrierbare Werkzeuge
CVS
Subversion
VSS
Perforce
Rational ClearCase
SoureGead Vault
PVCS
StarTeam
MKS Source Integriry
Telelogic Synergy
• Build
– NAnt
– VSNET
– MSBuild
• Test
–
–
–
–
–
–
–
NUnit
MSTest
FxCop
NCover
Vil
Simian
MBUnit
Seite 43
19
Dr. Holger Schwichtenberg
[email protected]
Trigger
• Trigger bestimmen, wann CCNet einen neuen
Integrationszyklus startet
–
–
–
–
–
Interval Trigger (alle x Sekunden, Standard: 60)
Schedule Trigger (Wochentag, Uhrzeit)
Filter Trigger (verhindern zu bestimmten Zeiten)
Project Trigger (ein anderes Projekt wurde erfolgreich erzeugt)
URL Trigger (wenn eine Webseite sich geändert hat, reduziert
Last für Quellcodeverwaltungssysteme, die automatisch
Websites erzeugen können)
Seite 44
Dr. Holger Schwichtenberg
[email protected]
Server
• ccnet.exe (optional als Windows Dienst)
• Anwendungskonfigurationsdatei
• ccnet.config
Seite 45
20
Dr. Holger Schwichtenberg
[email protected]
CCTray
Seite 46
Dr. Holger Schwichtenberg
[email protected]
Web Dashboard
Seite 47
21
Process and Architecture Guidance
Quelle:Microsoft
Visual Studio
Visual Studio
Visual Studio
Team Architect
Team Developer
Team Test
Application Modeling
Dynamic Code Analyzer
Load Testing
Logical Infra. Modeling
Static Code Analyzer
Manual Testing
Deployment Modeling
Code Profiler
Test Case Management
Unit Testing
Code Coverage
Class Modeling
Visio and UML Modeling
Team Foundation Client
VS Pro
Visual Studio
Team Foundation
Dr. Holger Schwichtenberg
[email protected]
•
•
•
•
•
•
•
Change Management
Reporting
Integration Services
Work Item Tracking
Project Site
Project Management
Visual Studio Industry Partners
Visual Studio 2005
Team System
Dr. Holger Schwichtenberg
[email protected]
Seite 49
Team Foundation Version Control
(TFVC)
Nicht zu verwechseln mit Visual Source Safe (VSS)
Teil des Team Foundation Server
TFVC ist eine komplette Neuentwicklung
VSS: "bis zu 5 Benutzer"
TFVC: "5 bis 500 Benutzer"
Migration von VSS wird unterstützt
Werkzeuge
– Visual Studio
– Kommandozeilenwerkzeug tf.exe
– Team Foundation Object Model Source Control API
• Interessante Funktionen:
– Shelving
– Eincheckrichtlinien
– Nachverfolgbarkeit (Verbindung mit Aufgaben und Bugreports)
Seite 50
22
Dr. Holger Schwichtenberg
[email protected]
TFVC
Seite 51
Dr. Holger Schwichtenberg
[email protected]
Bücher
Seite 52
23
Dr. Holger Schwichtenberg
[email protected]
Links & Artikel
• H. Schwichtenberg, M. Weidner: Geschichtsschreiber Versionsverwaltungssysteme im Vergleich, iX 9/2004
• Liste von Werkzeugen
http://de.wikipedia.org/wiki/Liste_der_Versionsverwaltungsprogra
mme
• Subversion
http://subversion.tigris.org/
• Team Foundation Server
http://www.microsoft.com/germany/msdn/vstudio/products/team
system/team/default.mspx
• Version Control System Comparison
http://better-scm.berlios.de/comparison/comparison.html
• Subversion vs. Clearcase
http://www.pti.co.il/clearcase_vs_subversion.html
Seite 53
Dr. Holger Schwichtenberg
[email protected]
Fragen?
Seite 54
24
Dr. Holger Schwichtenberg
[email protected]
•
•
•
•
•
Brauchen Sie Unterstützung
bei .NET/ASP.NET?
Beratung bei Einführung, Migration und Betrieb
(Vor-Ort-)Schulungen, Workshops
Coaching (Vor-Ort | Telefon | E-Mail | Online-Meeting)
Support (Vor-Ort | Telefon | E-Mail | Online-Meeting)
Entwicklung von Prototypen und Lösung
http://www.it-visions.de/produkte
Telefon 0201/7490700
[email protected]
Seite 55
25

Documents pareils