1 Software Configuration Management mit Microsoft SourceSafe Ein Erfahrungsbericht zum...
-
Upload
eike-fuerst -
Category
Documents
-
view
215 -
download
1
Transcript of 1 Software Configuration Management mit Microsoft SourceSafe Ein Erfahrungsbericht zum...
1
Software Configuration Management mit Microsoft
SourceSafe
Ein Erfahrungsbericht zumKonfigurationsmanagement
der Danet GmbH
Klaus Schröter, Danet GmbHWeiterstadt, 06151 868 112
Folien und weitere Infos:www.te.danet.de/scm
Danet GmbH
Software und Beratung z.Zt. ca. 400 Mitarbeiter gegründet 1981 Eigentümer sind Mitarbeiter, SAIC,
Deutsche Telekom Flache Hierarchie,
12 eigenständige Einheiten www.danet.de
Wo ist das Problem?
Jeder PC Benutzer kennt das: Fehler können schnell korrigiert werden Dokumente im Computer sind leicht zu ändern Der Kollege braucht gerade mal einen Ausdruck Zur Sicherheit macht man lieber eine Kopie der Datei Auch auf Diskette, und auf diese Diskette …
Wo ist das Problem?
Aber … Welche Version ist eigentlich aktuell?
“Auf Seite 7 unten ist ein Fehler” “Bei mir steht was anderes”
Dateien werden mit alten Version überschrieben oder verwechselt
Software Entwicklung im Team
Software ist leicht zu ändern Fehler müssen schnell korrigiert werden Der Kollege braucht die Datei Besser die Funktion X modifizieren, als die ganze Datei
xyz.c neu schreiben Der Kunde braucht schnell eine
(Zwischen-)Lieferung
Software Entwicklung im Team Potenzierte Probleme
Änderungen von Kollegen gehen verloren
Module, die noch nicht zusammen-passen werden ausgeliefert
Module, die nicht mehr zusammen-passen werden ausgeliefert
Offene Fragen Wer müßte über einen Update
der Funktion X informiert werden?
Wer bearbeitet zur Zeit die Datei?
Wer ist der Autor? Was wurde geändert? Wann?
Warum? Von Wem? Welche Version ist das
eigentlich?
Software Configuration Management
SCM ist: so alt wie die Softwarekrise wie Teflon ein Produkt der Raumfahrt eine Disziplin des Software Engineering Gegenstand vieler Bücher, Aufsätze, Standards zum Teil kompliziert und abschreckend von zahlreichen Werkzeugen unterstützt
Software Configuration Management SCM of the 70ies
Mainframe Repository, CASE schwierig, kompliziert kostenintensiv
SCM heute PC Flexibel, unabhängig von
CASE oder Methoden einfach, pragmatisch preiswerter
SCM als Disziplin Planen des Vorgehens im Team,
der eigenen Arbeitsweise Identifikation der configuration items
Titel des Dokuments, Dateiname, Autor, etc. Definition von Konfigurationen
Was gehört dazu? aka Project, Release, Baseline, Produkt, Build, Systemversion
Identifikation von Versionen 1, 2, 3 oder “3.1”, “3.11”, “95”, “summer”, ...
Verringern der Anzahl der Versionen
d [email protected] 10
SCM Definitionen Configuration Item (SourceSafe: file)
Zumeist source code Dateien. Allgemeiner: nicht abgeleitetes atomares Objekt
Konfiguration (SourceSafe: project) Definierte Menge von Dateien und
Subprojekten
Version Definierter Zwischenstand einer Datei
oder eines Projekts in der zeitlichen Abfolge der Bearbeitung
Variante Änderung einer Datei oder eines Projekts
für einen neuen Zweck (keine Weiterentwicklung)
Release Eine freigegebene und ausgelieferte
Version
d [email protected] 11
SCM als Disziplin
Änderungkontrolle Wie soll der Freigabeprozeß einer neuen Version
ablaufen?
Autor ist verantwortlich Review durch Kollegen Übergabe an Library-Manager in Protected Library
d [email protected] 12
Software Entwicklung - Projektbibliothek Der Library Manager
beschützt dieProtected Library
Kontrollierter Zugriff zur Bearbeitung oder zum Lesen
Kontrollierte Aktualisierung und Erweiterung der Bibliothek
d [email protected] 13
SCM als Disziplin Änderungsplanung
Was soll / darf überhaupt geändert werden? Wann? Warum? Von Wem?
CCB - Change Control Board
CAPTT - Change and Problem Tracking Tool
SCM ist ein Teil der ISO 9000 Zertifizierung
d [email protected] 14
SCM mit Safe Jede Lieferung wird auf
Band kopiert Das Band kommt in den
Safe Vorteile:
Geschützt vor ungewollter Modifikation
Geschützt vor Verlust durch Diebstahl, Erdbeben, Brand, …
Nachteile: Zugriff schwierig und langsam Kein Überblick über
Zusammenhänge Bänder sind HW/SW spezifisch Kein gemeinsames Archiv Bandlaufwerke und Formate
sind schnell veraltet
d [email protected] 15
SCM mit RCS
Unix Tool Revision Control System Viele ähnliche tools: SCCS, PVCS, …. Vorteile:
Locking: Zur gleichen Zeit kann nur einer die Datei bearbeiten History: Ältere Versionen der Datei können noch extrahiert
werden History-Diff: Was hat sich geändert? Meta-Daten: Kommentare zu den Versionen, zur Datei selbst,
Autor, Bearbeitungszustand etc.
d [email protected] 16
SCM mit RCS
Nachteile: Benutzung relativ schwierig Bei falscher Konfiguration mehrere Historien derselben Datei Datenverluste bei der Windows Version (MKS) Platzbedarf
d [email protected] 17
SCM Automatisierung Integration von SCM
Aufgaben
z.B. individuelle scripts, die RCS aufrufen
Verwaltung von Versionen und Varianten
Integration von Problem Reports Change Control make Testautomatisierung Freigabe Release Tape Erzeugung,
… Workflow Konzepte
d [email protected] 18
SCM Automatisierung Nachteile:
Starre Arbeitsweise, inflexibel Festlegung der SW-Technologie, z.B. UNIX und C Programme Hoher Anpassungsaufwand bei geänderten Anforderungen
d [email protected] 19
SCM mit Microsoft SourceSafe
Einfach zu beherrschendes Tool Nur ein Zweck: SCM Für alle Arten von Dateien und Projekten geeignet Integration und Anpassung nicht notwendig aber möglich
d [email protected] 20
SourceSafe
Ein Safe für Sourcen Alle Dateien können in SourceSafe gespeichert werden:
Source Code, DLLs, Graphics, Dokumente, help files, icons, *.xls…
d [email protected] 21
Arbeiten mit SourceSafe Check out aus dem
SourceSafe Bearbeiten der Datei in einem
privatenworking directory
Check in der neuenVersion der Datei
d [email protected] 22
SourceSafe File check-out Eine Datei wird aus dem
Safe geholt (Repository, Protected
Library, Project Library, Archiv, ….)
Gesperrt für andere Benutzer
d [email protected] 23
SourceSafe check-in
d [email protected] 24
SourceSafe Historie einer Datei
d [email protected] 25
SourceSafe und Working Directories Alle Dateien und ihre Historie werden in
der zentralen SourceSafe Database gespeichert
Die Bearbeitung (edit, compile, ...) erfolgt in einem normalen Verzeichnis (i.A. privat)
keine unbeabsichtigte Aktualisierung
Workspace, sandbox, etc. Die Werkzeuge (Editor, Compiler, ...)
müssen nichts von SourceSafe wissen und umgekehrt
d [email protected] 26
SourceSafe Projekte Ein SourceSafe Projekt ist
eine Liste von Dateien und Unterprojekten
Ein SourceSafe Projekt ist eine Konfiguration
Auch die Geschichte des Projekts wird gespeichert
Wann gehörte welche Datei mit welchem Namen dazu?
d [email protected] 27
SourceSafe Projekte Projekte sind das wichtigste
Feature von SourceSafe Basis für Operationen wie z.B.:
Label Get History ... Difference
d [email protected] 28
SourceSafe Project Difference Was hat sich in einem Projekt
geändert: Zwischen zwei Versionen Zwischen einem
Working Directory und dem SourceSafe Projekt
Ebenso für einzelne Dateien
Individuelle Anpassung
Viele Aspekte können individuell eingestellt werden
Einstellungen werden für jeden Benutzer zentral gespeichert (ss.ini)
Vorgaben sind in srcsafe.ini möglich
SourceSafe Automatisierung
Alle Funktionen sind auch auf der Kommandozeile möglich ss get demo.cpp Sinnvoll für Batch Files, Integration in eigene
Umgebung möglich Neu in Version 5.0: OLE Automation
SourceSafe durch Visual Basic steuerbar
d [email protected] 31
Andere SourceSafe Clients Win16 Visual Basic Visual C++ Visual J++ Visual FoxPro 5.0 Microsoft Access 97 FrontPage
Microsoft Word Microsoft Excel Macintosh UNIX
Delphi Visual Intercept Track Record
d [email protected] 32
SourceSafe survival guide kein blindes Vertrauen, aber auch keine Paranoia Fehlermeldungen beachten Windows sauber konfiguriert halten, Virenschutz betreiben Externe Archivierung wichtiger Releases (echter Safe) Regelmäßiges Backup des SourceSafe Data Verzeichnisses Analyze.exe (5.00.2327) regelmäßig laufen lassen
d [email protected] 33
Multiplattform Support
Für alle Dateien geeignet Dateien dürfen nicht den gleichen Namen haben wie z.B.:Readme README readme
Textdateikonversion CR/LF, CR, LF
Effiziente Nutzung gemeinsamer Teile Effiziente Verwaltung von Varianten
d [email protected] 34
SourceSafe in der Praxis
Konfigurationen definieren Abhängigkeiten und Beziehungen verwalten Source Code wiederverwenden Varianten erstellen Freigabeprozeduren Auslieferungen Probleme und Änderungswünsche verfolgen
d [email protected] 35
Konfigurationen definieren Ein SourceSafe Projekt ist eine Konfiguration
Menge von Dateien, „Release“, ...
SourceSafe selbst ist völlig flexibel
Wie soll man seine SourceSafe Projekte strukturieren? z.B. Spiegelbild der Entwicklungsumgebung
d [email protected] 36
Organisation der SourceSafe Projekte Toplevel:
Organisatorische Projekte
Darunter: Produkte, ergänzende Infos
Darunter Zielsysteme Darunter Programme,
deliverables Darin: die zur
Erzeugung benötigten Dateien
d [email protected] 37
Abhängigkeiten und Beziehungen Objekte (Dateien) des SCM bestehen untereinander in
verschiedenen Beziehungen “A spezifiziert B” “A ist ein Testfall für B” “A verwendet B”
In anderen SCM Tools werden diese Beziehungen explizit als Meta-Daten gespeichert
Mit SourceSafe kann Zugehörigkeit durch Unterprojekte modelliert werden
d [email protected] 38
Abhängigkeiten und Beziehungen Bewährte Organisation:
Jedes Produkt (Liefereinheit, Target) wird ein SourceSafe Projekt
Jedes SourceSafe Projekt ist abhängig von seinem Inhalt und seinen Unterprojekten
Erzeugbare Dateien (z.B. exe files) werden Unterprojekte
d [email protected] 39
SourceSafe File Sharing Dieselbe Datei wird in zwei
(oder mehr) Projekten verwendet
Eine Änderung der Datei in Projekt A wird gleichzeitig in Projekt B wirksam
d [email protected] 40
Software Wiederverwendung
Das SourceSafe File Sharing hilft bei der Wiederverwendung Sharing definierter Versionen: “Pin” Lokale Modifikation: “Branch”
Auch die normale Verwendung kann damit dokumentiert werden: “Welches Projekt verwendet Oracle?”
d [email protected] 41
File Sharing Möglichkeiten
Änderungen an $/B/demo.cpp sind zugleich in $/C wirksam und umgekehrt.
Änderungen an $/D/demo.cpp sind nur in diesem Projekt sichtbar. Seit Version 4 ist die Datei eigenständig.
Änderungen an $/A/demo.cpp sind nicht möglich. Die Datei ist auf Version 2 eingefroren.
5
4
3
2
1
$/A
6
5
4
$/B $/C $/D
demo.cpp
pinbranch
share
d [email protected] 42
Variantenverwaltung
Ausgangslage: Ein Programm-Modul für AIX
democ.c 2.000 LOC
Aufgabe: Portierung nach VMS und Windows NT
d [email protected] 43
Varianten: Copy and Modify demo.c. 2.000 LOC demo_nt.c, 2.010 LOC demo_vms.c 2.183 LOC
Nachteile: Informationsverlust Spätere Updates müssen mehrfach nachgezogen
werden SourceSafe kann die Information “A entstand aus B”
speichern
d [email protected] 44
Varianten: Single Source Concept demo.c 2.220 LOC #ifdef überall im Code
conditional compilation Nachteile:
schwer lesbar (Geschmackssache) kombinatorische Explosion enormer Testaufwand oder ungetesteter Code
d [email protected] 45
Varianten: Spezialisierung / Vererbung Drei Projekte:
AIX demo.c 1905
LOC d_aix.c 23 LOC
NT demo.c 1905
LOC d_nt.c 67 LOC
VMS demo.c 1905
LOC d_vms.c 176 LOC
Definition von Funktionen (Methoden, Makros, …) für die unterschiedlichen Ausprägungen der gemeinsamen Aufgabe
Nachteil: Werkzeuge wie SourceSafe erforderlich
d [email protected] 46
Freigabeprozeduren Problem: Wie ist der Stand des
Projekts? Welche Datei ist fertig? Welche getestet?, ...
Jeder Datei kann Status zugeordnet werden (Promotion Level)
Initial, Reviewed, Tested, OK In SourceSafe könnten dafür Label auf
Files gesetzt werden Ist aber nicht sinnvoll, da im SourceSafe
Explorer kein Überblick angezeigt wird
d [email protected] 47
Freigabeprozeduren und Releases Vorgehen für Dateien
Jeder Entwickler hat ein privates Working Directory. Hier kann er entwickeln, experimentieren und und lokale Tests durchführen
Ist eine Datei fertig, so wird sie reviewed
Anschließend erfolgt der check in mit Kommentaren
Vorgehen für Projekte Das Projekt erhält ein Label Alle Dateien werden in ein
separates Build Verzeichnis geholt
Ist der Build erfolgreich wird die erzeugte Software getestet
Sind alle Tests erfolgreich wird die Software zur Auslieferung freigeben (release)
d [email protected] 48
Reproduzierbare Softwareerzeugung Alle notwendigen Dateien
müssen im Projekt sein Der Build Prozeß darf nur von
diesen Dateien abhängen no links, environment
variables, registry entries
Steps to perform Set external build
identification Label the project Get the project files Run “build all” command
d [email protected] 49
Probleme und Änderungswünsche verfolgen
Viele Tools verfügbar, z.B. individuelle Access Lösungen wie CAPTT,MS ATS, MS Team Manager, Track Record, Visual Intercept
Einige Tools bieten direkte SourceSafe Integration
d [email protected] 50
Was SourceSafe noch fehlt Rekursiver Vergleich
parametrisierbar Anzeige von weiteren Daten
im SourceSafe Explorer
Roll-back für Projekte Verschiedene Namen für
shared files
Eigentümer oder home project für shared files
Öffentliche Liste bekannter Fehler
Vielleicht: Asynchrone Replikation
für verteilte Entwicklung
d [email protected] 51
Vorteile von SourceSafe Offenes Werkzeug Einfach zu benutzen Einfach zu lernen
Einfacher Einstieg Dateinamen und Struktur
können nachträglich geändert werden
Flexibel, unabhängig von Programmiersprache Entwicklungsumgebung Methode Zielplattform Reifegrad des SW-
Entwicklungsprozesses Hohe Performanz Für große Projekte und Dateien
geeignet
d [email protected] 52
Fazit SCM lohnt sich immer Mit SourceSafe ist der
Einstieg einfach Sehr nützlich:
Projekthistorie File Sharing Reproduzierbare Builds