Kurs:Wirtschaftsinformatik SS09/SE1/Lernskript/Konfigurationsmanagement
Konfigurationsmanagement:
[Bearbeiten]- nur für große Projekte sinnvoll
- Varianten / Versionen Verwaltung
- „Software Configuration Management is the discipline of managing the evolution of
large and complex software systems“
Ziele
- Sicherstellung von Sichtbarkeit, Verfolgbarkeit, Kontrollierbarkeit
- Überwachung der Konfigurationen (Zusammenhänge zwischen früheren und aktuellen Konfigurationen jederzeit erkennbar)
- Nachvollziehbarkeit und Überprüfbarkeit, damit jederzeit auf vorangegangene
Versionen zurückgegriffen werden kann
- Unterstützung der Teamarbeit (wichtigster Punkt) Æ Rechteverwaltung (Koordination von Tätigkeiten an identischen Objekten)
Begriffe:
[Bearbeiten]- Version: Status eines sich entwickelnden Gegenstandes (Entwicklungsstand)
- Versioniertes Objekt: Objekt, dass in Versionskontrolle aufgenommen wird
- Versionidentifikator: Eindeutiger Identifikator, der zur Kennzeichnung eines versionierten Gegenstands mit einer Version verwendet wird
- Invariante: Eigenschaft die von allen Versionen eines Gegenstandes geteilt wird
- Delta. Unterschied zwischen zwei Versionen v1 und v2
- Revision: Version die Vorgängerversion ersetzt
- Variante: Version, die gleichzeitig mit alternativen Versionen existiert
- Kooperierende Version: eine von vielen parallel existierenden Versionen, die das
gleichzeitige Arbeiten ermöglichen soll
- Release: ausgelieferte Version an einen Kunden
Funktionen des Konfigurationsmanagements:
[Bearbeiten]- Identifikation: Eindeutige Benennung der zu verwaltenden Softwareobjekte
- Herstellung: Verwaltung der Entwicklungsartefakte während der Erstellung des Produkts
- Kontrolle: Überwachung des Produkts und dessen Änderungen während der gesamten
Entwicklung
- Teamwork: Koordination der Arbeit zwischen mehreren Anwendern
- Statuserfassung: Erfassung und Dokumentation der Stati von Komponenten und Änderungsanfragen
- Prozessmanagement: Sicherstellung der Vorgehensweisen der Firma, der Vorschriften
und des Lebenszyklusmodells
Zugriffskontrolle:
[Bearbeiten]- Typischerweise durch Check – Out / Check – In Modell realisiert
- Bestandteile: Versionsbibliothek (Repository), Arbeitsbereich (Workspace),
versionierte Objekte (Konfigurationseinheiten)
- Pessimistische Zugriffskontrolle:
- Bei Check Out wird die jeweilige Konfigurationseinheit (Datei) gesperrt
- Eine Einheit kann nur einmal ausgechecked werden
- Die Konfigurationseinheit die ausgechecked wurde kann nicht von anderen Mitarbeitern bearbeitet werden
- Optimistische Zugriffskontrolle:
- Bei Check Out wird die jeweilige Konfigurationseinheit (Datei) nicht gesperrt
- Konfigurationseinheit die ausgechecked wurde kann trotzdem noch von anderen Mitarbeitern ausgechecked werden
- Ein Zusammenschmelzen (Merge) der unterschiedlichen Änderungen wird erforderlich
Speicherung von Revisionen und Varianten:
[Bearbeiten]- Würden alle Konfigurationseinheiten nach der Änderung neu gespeichert, so würden die Probleme des Speicherbedarfs und Identifikationsprobleme auftreten
- Lösung: Deltatechnik es werden nur die Änderungen abgespeichert um den Speicherbedarf zu minimieren und gleichzeitig werden Verbindungen zwischen den verschiedenen Deltas hergestellt, um Änderungen nachvollziehen zu können
Vorwärtsdeltatechnik:
[Bearbeiten]- Differenz zum Vorgänger wird gespeichert
- Basis: eingefügte und gelöschte Textzeilen
- Geringer Speicherbedarf
- Berechnungsaufwand erforderlich
- Rekonstruktionsaufwand erforderlich
Rückwärtsdeltatechnik:
[Bearbeiten]- Differenz zum Vorgänger, aber Speicherung des aktuellen Dokuments als vollständiges Dokument
- Geringer Speicherbedarf
- Berechnungsaufwand identisch zur Vorwärtsdeltatechnik
- Rekonstruktionsaufwand oft geringer als bei Vorwärtsdeltatechnik
- Überlappende Speicherung:
- In jedem Durchlauf wird die Version rekonstruiert
- Die Gesamtgröße der Datei steigt bei jedem Durchlauf
- Jede Zeile der Datei wird gekennzeichnet, in welcher Version sie vorkommt
Deltabestimmung: - Längste gemeinsame Subsequenz: (Hunt) o Strikt monoton steigend (Pfeile können sich nicht kreuzen) o Ausgangspunkt Quelle oder Ziel o Längste gemeinsame Subsequenz (LGS) wenn k (Subsequenz) maximal ist o Move(Anfangszeile Quelle, Anzahl Zeilen) o Add(TEXT)
HIER ABB. EINFÜGEN
Add(e), Add(f), Move(1,1), Move(3, 2), Move (7, 1)
Heckelalgorithmus
[Bearbeiten]- Gemeinsamkeit von Quelle und Ziel identifizieren ( = <math<Text2_j</math> und die beiden Zeilen tauchen nur genau einmal auf)
- Nächste Iteration, anliegende Zeilen werden erkannt, falls die gleich sind
- Nachteil: er scheitert, wenn Zeilen nicht in beiden Dateien eindeutig sind
- Algorithmus berücksichtig Blockverschiebungen (Add- und Move nicht unbedingt minimal)
Tichyalgorithmus
[Bearbeiten]- Block Move: Move(Anfangszeile Quelle, Anfangszeile Ziel, Anzahl Zeilen)
- Coverage Set ist ein Set von Block Moves
- Algorithmus:
start_2 := 0
while start_2 ≤ n do
begin
lange := 0; start_1 := 0; start_1_aktuelle := 0;
while start_1_aktuelle + laenge ≤ m //nicht größer als Länge von Text_1
start_2 +laenge ≤ n do //nicht größer als Länge von Text_2
begin
laenge_aktuell := 0
while (start_1_aktuelle + laenge_aktuelle ≤ m) and //nicht Ende von Text1
(start_2 + laenge_aktuell ≤ n) and //nicht Ende von Text 2
(Text_1[start_1_aktuell + laenge_aktuell] = Text_2[start_2 +
laenge_aktuell]) // Zeile on Text_1 = Zeile in Text_2
do laenge_aktuell := laenge aktuell + 1 //erhöhe aktuelle Block Move Länge um 1
if laenge_aktuell > laenge then
begin
laenge := laenge_aktuell
start_1 := start_1_aktuell
ende
start_1_aktuell := start_1_aktuell ü 1
end
if laenge > 0 then print (start_1, start_2, laenge)
start_2 := start_2 + Max(1, laenge)
end
Beispiele für Tichy:
[Bearbeiten]Quelle | a | b | b | c | d | d | e | f | f |
Ziel | e | f | b | c | d | f |
Move (2, 2, 3) Move (6, 0, 2) Move (7 5, 1)
Coverage Set: (Ziel) = {(2,2,3),(6,0,2),(7,5,1)}
- Iteratives LGS: o Nach Ermittlung der LGS wird diese von der Zieldatei gelöscht und die nächste LGS gesucht, diese wird erneut gelöscht, usw. o Beispiel: Iteration 1:
Quelle | a | b | b | c | d | d | e | f | f |
Ziel | e | f | b | c | d | f |
LGS = {bcd}
Iteration 2:
Quelle | a | b | b | c | d | d | e | f | f |
Ziel | e | f | f |
Iteration 3:
Quelle | a | b | b | c | d | d | e | f | f |
Ziel | f |
LGS = {f}
- Längster gemeinsamer Substring:
- Iterative Suche des längsten gemeinsamen Substrings
- Ein Substring beinhaltet gleiche aufeinander folgende Zeilen
- Iterativ wird der längste Substring gesucht, dieser wird in Text_2 gelöscht, dann wird der nächste Substring gesucht, usw.
Coverage Set vorgegeben, zwei Dateien erstellen:
Beispiel 1:
={(2, 2,3),(7,5,1),(6,0, 2)}
Quelle | f | g | a | b | c | h | e | d |
Ziel | e | d | a | b | c | d |
Beispiel 2: Q = Z = 5 ; = {}
Quelle | a | b | c | d | e |
Ziel | f | g | h | i | j |
Beispiel 3: Q = Z = 5 ; = {(0,0,5)}
Quelle | a | b | c | d | e |
Ziel | a | b | c | d | e |