Zum Inhalt springen

Kurs:Wirtschaftsinformatik SS09/SE1/Lernskript/Konfigurationsmanagement

Aus Wikiversity

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