• Keine Ergebnisse gefunden

Einführung in die Softwaretechnik Konfigurationsmanagement

N/A
N/A
Protected

Academic year: 2022

Aktie "Einführung in die Softwaretechnik Konfigurationsmanagement"

Copied!
53
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Einführung in die Softwaretechnik Konfigurationsmanagement

Klaus Ostermann

(mit Folien von Christian Kästner)

1 Einführung in die Softwaretechnik

(2)

Agenda

Einführung in die Softwaretechnik 2

}  Verteiltes Arbeiten

}  Versionskontrolle

}  Konzepte

}  CVS / SVN

}  Git

}  Fehlerverwaltung mit Ticket-Systemen

(3)

Softwarekonfigurationsmanagement

Einführung in die Softwaretechnik 3

}  Übergreifende Disziplin

}  Definitionen und Prozesse

}  Versionierung und Konfliktbehandlung

}  Planung von Varianten

}  Dokumentieren von Fehlern und deren Behebung

}  Änderungsmanagement

}  Releaseplanung

}  Automatisiertes Kompilieren/Ausliefern/Testen

}  Zugriffskontrolle

Fokus

Fokus

(4)

Kooperation auf gleicher Datei

Einführung in die Softwaretechnik 4

(5)

Technische Zusammenarbeit

Einführung in die Softwaretechnik 5

}  Wo liegen Dateien?

}  Geänderte Dateien per Email zuschicken

}  Manuelles Synchronisieren bei Projekttreffen

}  Alle Dateien auf gemeinsamen Netzlaufwerk

}  Wer darf was?

}  Pro Datei ist ein Entwickler verantwortlich, nur er darf ändern

}  Jeder darf alles ändern

(6)

Änderungskonflikte

Einführung in die Softwaretechnik 6

aus „Version Control with Subversion“

(7)

Konfliktvermeidung durch Sperren

Einführung in die Softwaretechnik 7

(8)

Probleme beim Sperren

Einführung in die Softwaretechnik 8

}  Technische Probleme:

}  Technische Sperren vs. Ankündigung auf Mailingliste

}  Vergessen zu entsperren typisch

}  Unnötige Sequentialisierung der Arbeit:

}  Gleichzeitige Änderungen an unterschiedlichen Stellen nicht möglich

}  Falsches Gefühl von Sicherheit:

}  Zwei Nutzer arbeiten getrennt auf den Dokumenten A und B.

Was passiert, wenn A von B abhängig ist? A und B passen nicht mehr zusammen. Die Nutzer müssen dieses Problem

diskutieren.

(9)

Konfliktlösung durch Mischen (Teil 1)

Einführung in die Softwaretechnik 9

(10)

Konfliktlösung durch Mischen (Teil 2)

Einführung in die Softwaretechnik 10

(11)

Beispiel

Einführung in die Softwaretechnik 11

(12)

Beispiel

Einführung in die Softwaretechnik 12

(13)

Beispiel

Einführung in die Softwaretechnik

13 System kann nicht automatisch die Reihenfolge entscheiden

(14)

Eigenschaften des Mischens

Einführung in die Softwaretechnik 14

}  Ein Dokument liegt in zwei Versionen vor.

}  Überlappende Änderungen: Konflikt

}  Mischen nicht immer automatisierbar

}  Werkzeug (diff) zeigt Unterschiede an

}  Ein Nutzer integriert beide Versionen manuell (ggf. in Absprache)

}  In der Praxis: die meisten Änderungen sind konfliktfrei

(15)

Verwalten von Projekten

Einführung in die Softwaretechnik 15

(16)

Revisionen und Varianten

}  Revisionen ersetzen frühere Revisionen (Zeitlich)

}  Varianten koexistieren mit anderen Varianten (Inhaltlich)

}  Version als Oberbegriff

V1.0 V1.1 V2.0 V3.0

Basissystem (Windows)

Erweiterung für Kunde A Erweiterung für Kunde B Linux-Variante

Server-Variante

X X X X

X X

X X

X X X

X

(17)

Code und Nicht-Code Dateien

Einführung in die Softwaretechnik 17

}  Java Code

}  Dokumentation

}  Modelle

}  Build-Scripte: Ant/Makefile

}  Lizenzen

}  Grammatiken

}  Kompilierte Dateien

}  HTML, JavaScript, CSS

}  Bei Binärdateien ist Konfliktbehandlung schwieriger

(18)

Revisionen von Projekten

Einführung in die Softwaretechnik 18

(19)

Versionsverwaltung

}  Versionierung von Quelltextdateien

}  Repository: Archiv alter Quelltextversionen

}  Zeitstempel und Benutzerkennung

}  Tags: Benannte Revisionen z.B. Release_1_0

}  Änderungen als Delta

}  Typisch: Kommentar beschreibt Änderung

}  Jederzeit Änderungen nachvollziehen

}  Alte Versionen wieder herstellbar

(20)

Revision History

Einführung in die Softwaretechnik 20

Aus Eclipse Quelltext: org.eclipse.jdt.ui

(21)

Release

Einführung in die Softwaretechnik 21

}  Release identifiziert veröffentlichte Produktversion

}  Typisches Muster:

}  Hauptreleasenummer: Signifikante Änderungen

}  Nebenreleasenummer: Funktionserweiterungen

}  Revisionsnummer: Fehlerbehebungen

}  Buildnummer: weitere Details

}  Release 0.x für Beta-Releases (vorab)

}  Release-Versionen oft unabhängig von Revisionsnummern

}  Tags markieren Releases

Java 1.6.0_15

Eclipse Platform SDT 3.5.2.M20100211-1343

(22)

Branches (Verzweigen)

Einführung in die Softwaretechnik 22

}  Kopie des Quelltext

}  Wird getrennt versioniert

}  Kann wieder zusammengefügt werden (merge)

}  Typisches Vorgehen

}  Hauptbranch für Wartung oder Hauptentwicklung

}  Neuer Branch für experimentelle Funktionalität, wird zusammengefügt wenn erfolgreich

}  Neuer Branch für Wartungsaufgaben

}  Teils neuer Branch für Varianten

(23)

Branches – Beispiel

(24)

Varianten und Revisionen

[Staples&Hill, APSEC’04]

(25)

Variantenmanagement

Einführung in die Softwaretechnik 25

}  Variantenerstellung durch Branches skaliert nicht

}  Spezielle Mechanismen oder Werkzeuge benötigt

}  Komplexität muss geplant werden

}  Viele Lösungen

}  Konfigurationsdateien

}  Präprozessor

}  Build-System

}  Spezielle Sprachen

} 

}  -> Softwareproduktlinien

Analog Abhängigkeiten von Merkmalen oder Kunden

(26)

Versionsverwaltungssysteme

Einführung in die Softwaretechnik 26

}  Systeme für Sperren und Mischen verfügbar

}  Lokale Versionsverwaltung

}  Lokale Archivierung (meist einzelner) Dateien

}  Beispielsysteme: SCCS und RCS

}  Zentrale Versionsverwaltung

}  Revisionen liegen auf zentralem Server

}  Clients erfragen Updates, senden Änderungen

}  Beispielsysteme: CVS, SVN, Perforce, Visual SourceSafe

}  Verteilte Systeme

}  Verteilte Repositories (mit allen bekannten Revisionen) die synchronisiert werden können

}  Beispielsysteme: Git, Mercurial, ClearCase

(27)

CVS / SVN

Einführung in die Softwaretechnik 27

(28)

CVS und SVN

Einführung in die Softwaretechnik 28

}  Zentrale Versionsverwaltungssysteme

}  CVS seit 1990, SVN als inoffizieller Nachfolger seit 2004

}  Ein zentrales Repository

}  Benutzer erstellen lokale Kopie

}  Änderung der lokalen Kopie, Abgleich mit Repository

}  Update – Commit Zyklen

}  Unterstützt Branches und Tags

}  Zentrale Rechteverwaltung

(29)

Taentzer Einführung in die Softwaretechnik

29

Typischer Arbeitszyklus

}  Einmalig: Projekt lokal anlegen

}  svn checkout

}  Arbeitskopie auf den neuesten Stand bringen:

} svn update

}  Änderungen an der Ordner- struktur durchführen:

}  svn add

}  svn delete

} svn copy

} svn move

}  Änderungen prüfen:

}  svn status

} svn diff

}  Änderungen zurücknehmen (optional):

} svn revert

}  Konflikte auflösen:

} svn update

}  svn resolved

}  Änderungen in das Repository einlesen:

}  svn commit

(30)

CVS vs. SVN

CVS SVN

Einführung in die Softwaretechnik 30

}  Revisionsnummer pro Datei

}  Textdateien (Binärdateien mögl.)

}  Weiter verbreitet

}  Revisionsnummer für ganzes Projekt

}  Atomare Commits: alle Dateien oder keine

}  Dateien und Verzeichnisse

}  Umbenennungen

}  Metadaten möglich und versioniert

(31)

Git

Einführung in die Softwaretechnik 31

(32)

Git

Einführung in die Softwaretechnik 32

}  Verteilte Versionsverwaltung

}  Kein zentraler Server nötig

}  Kopie des gesamten Repository lokal

}  Lokale Funktionalität ähnlich SVN (update, commit, branches, diff)

}  Nicht-lineare Entwicklung: Spezieller Fokus auf verteiltes Verzweigen und Mischen

}  Datenabgleich zwischen Repositories möglich

}  Hohe Geschwindigkeit bei commit/diff/revert/…, da alle Daten lokal

(33)

Übersicht

Einführung in die Softwaretechnik 33

clone, push, pull checkout / update

commit

(34)

Verteilte Revisionen

Einführung in die Softwaretechnik 34

}  Revisionen nicht global koordiniert/sortiert

}  Revisionen und Branches global eindeutig durch HashIDs

}  z.B. 52a0ff44aba8599f43a5d821c421af316cb7305

}  Clonen eines Repositories jederzeit möglich

}  Merkt sich Ursprung (wichtig für Updates und Merging)

}  Normale Checkout/Commit Operationen

}  Commits möglich ohne ursprüngliches Repository zu ändern

}  Fetch und Pull-Operationen holen Updates aus entfernten Repositories (auch mehreren!)

}  Push-Operation kopiert lokale Änderung zu entferntem Repository (wenn Rechte vorhanden)

(35)

Beispiel

Einführung in die Softwaretechnik 35

Linux

Linux

Kernel-Entwickler

clone / pull

checkout / update

commit push

Linux

Neuer Entwickler

clone checkout

commit

edit

edit pull & merge

(36)

Repositories in mustache.js

Einführung in die Softwaretechnik 36

mustache.js Projekt

(37)

Beispiel Revisionshistorie

Einführung in die Softwaretechnik 37

(38)

Zentrale Repositories weiterhin möglich

Einführung in die Softwaretechnik 38

© Scott Chacon Buch “Pro Git”

(39)

“Social Coding” mit Github u.ae.

Einführung in die Softwaretechnik 39

(40)

Ticket-Systeme

Einführung in die Softwaretechnik 40

(41)

Wie verwaltet man Fehlermeldungen?

Einführung in die Softwaretechnik 41

}  Sofort bearbeiten

}  Email-/Text-/Zettelsammlung

}  Kommentare im Quelltext

}  Wiki

}  Typische Fragen:

}  Organisation?

}  Wer ist verantwortlich?

}  Hat sich jemand darum gekümmert?

}  Ist es noch aktuell?

}  Welche Module sind besonders fehleranfällig?

(42)

Ticket-Systeme

Einführung in die Softwaretechnik 42

}  Speichern Fehlermeldung in zentraler Datenbank

}  Meta-Informationen

}  In Open-Source-Projekten typischerweise öffentlich

}  Fehler können Gruppen/Listen/Personen zugeordnet werden

}  Prioritäten setzen

}  Fortschritt wird protokolliert

}  Alle Änderungen nachvollziehbar

(43)

Bugzilla für Eclipse

Einführung in die Softwaretechnik 43

(44)

Beispiel

Einführung in die Softwaretechnik 44

(45)

Vorgehen (grob)

Einführung in die Softwaretechnik 45

}  Fehlermeldung kommt an

}  Aufnehmen als Ticket (Status: new, Priorität setzen)

}  Prüfen ob der Fehler wirklich auftritt (Status: confirmed)

}  Projektmanager weist Ticket passendem Entwickler zu (Status: assigned)

}  Entwickler stellt ggf. Rückfragen oder gibt das Ticket weiter

}  Entwickler entfernt Fehler und schließt das Ticket (Status:

closed, Resolution: Fixed / Duplicate / Invalid / Won’t Fix)

}  Ggf. release neue Version, Information an Kunden

(46)

Nicht nur Fehlerverwaltung (Issue Tracking)

Einführung in die Softwaretechnik 46

}  Offene Aufgaben

}  Ideen

}  Kundenwünsche

}  Help-Desk-Anrufe

}  Automatische Ticketgenerierung von Alarmsystemen

}  Jeweils mit Möglichkeit zur

}  Diskussion

}  Priorisieren

}  Protokollierung von Zuständigkeiten und Fortschritt

(47)

Ticket-Systeme als Kontrollwerkzeug

Einführung in die Softwaretechnik 47

}  Erzwing vordefinierte Vorgehensprozesse (Workflows)

}  Alle Änderungen werden protokolliert

}  z.B. wer hat wann die Priorität geändert

}  Erlaubt diverse Statistiken

}  Bearbeitungsdauer und –Qualität

}  Welche Module sind besonders Fehleranfällig

}  ggf. hilfreich bei Ursachenforschung

}  Sammeln von häufigen Fragen (FAQs)

}  Nachvollziehbarkeit für Kunden

(48)

IDE Integration: Eclipse Mylyn

Einführung in die Softwaretechnik 48

}  Zeigt Tickets direkt in Eclipse an

}  Integration mit Versionsverwaltung

}  Automatische Kontextverwaltung

(49)

Software

Einführung in die Softwaretechnik 49

(50)

Server?

Einführung in die Softwaretechnik 50

}  Viele kostenlose Angebote für (Open-Source) Projekte

}  sourceforge.net

}  assembla.com

}  github.com

}  code.google.com

} 

}  Web-Oberfläche

}  Oft mit Bug-Tracker

}  Aufsetzen eines eigenen Servers gut dokumentiert

siehe auch http://en.wikipedia.org/wiki/

Comparison_of_open_source_software_hosting_facilities

(51)

Clients?

Einführung in die Softwaretechnik 51

}  Kommandozeilenwerkzeuge

}  Graphische Benutzeroberflächen, z.B.

}  TortoiseCVS/SVN/Git

}  gitk, giggle

}  rapidsvn

}  Integration in IDEs, z.B.

}  Native CVS Unterstützung in Eclipse

}  Subversion Plugin für SVN

}  EGit Plugin für Git

}  Webfrontends für Lesezugriff

(52)

Ticket-Systeme

Einführung in die Softwaretechnik 52

}  Bugzilla

}  Trac

}  SAP CRM

}  Lassen sich mit Versionsverwaltungssystemen kombinieren

}  In SourceForce, Assembla, Github, etc. mit angeboten

(53)

Zusammenfassung

Einführung in die Softwaretechnik 53

}  Revisionen und Varianten

}  Verzweigung und Behandeln von Konflikten

}  Verteilte Versionsverwaltung

}  Fehlerverwaltung mit Ticket-Systemen

Referenzen

ÄHNLICHE DOKUMENTE

Wenn in einem bestimmten Trie- Knoten die Bound berechnet werden soll, bedeutet das, dass für alle Cluster vom ak- tuellen Trie-Knoten bis hin zur Wurzel der Vorgänger

chende oder atemunab- Ausstrahlung), Hinweis auf akutes hängige Schmerzen Koronarsyndrom, Abdomen (krampf- (Vernichtungsschmerz) artig, schlagartig beginnend mit großer.

Die Jugendarbeitslosigkeit entschieden zu bekämpfen und ein Zukunftsinvestitionsprogramm auf den Weg zu bringen, sind die dringendsten Auf- gaben, die sofort angepackt werden müssen

a left edge represents a parent-child relationships in the original tree a right edge represents a right-sibling relationship in the original tree.. Binary Branch Distance

lower bound of the unit cost tree edit distance trees are split into binary branches (small subgraphs) similar trees have many common binary branches complexity O(n log n) time.

a left edge represents a parent-child relationships in the original tree a right edges represents a right-sibling relationship in the original tree. Augsten (Univ. Salzburg)

Fassade: Eine Schnittstelle für System aus mehreren Komponenten Kompositum: Komponenten, die Instanzen von sich enthalten 3.5.2 Schichten und Partitionen. Schicht ist

Die Student Branch (Studentenzweig) ist die lokale Vertretung des IEEE, ihre Aktivitäten (Exkursionen, Vorträ- ge) sind auf die Interessen ihrer Mit- glieder zugeschnitten, und