Softwareversion

Softwareversion

Eine Versionsverwaltung ist ein System, das zur Versionierung und Aktualisierung von Quelltexten verwendet wird. Hierzu werden Änderungen erfasst und alle Versionsstände der Dateien in einem Archiv mit Zeitstempel und Benutzerkennung gesichert. Versionsverwaltungssysteme werden typischerweise in der Softwareentwicklung eingesetzt, einige Systeme können auch Zugriffsrechte verwalten. Die Versionsverwaltung ist eine Form des Variantenmanagements. Die übergreifende Disziplin ist das Software Configuration Management (SCM). Sie ermöglicht auf die aktuelle Version oder auf die archivierten Stände zuzugreifen.

Ein Beispiel ist auch die Wikipedia, hier erzeugt die Software nach jeder Änderung eines Artikels eine neue Version. Da zu jedem Versionswechsel die grundlegenden Angaben wie Verfasser und Uhrzeit festgehalten werden, kann genau nachvollzogen werden, wer wann was geändert hat. Bei Bedarf – beispielsweise bei versehentlichen Änderungen – kann man zu einer früheren Version zurückkehren.

Für Versionsverwaltungssysteme sind die Abkürzungen VCS (Version Control System) oder SCM (Source Code/Control Managementsystem) gebräuchlich.

Inhaltsverzeichnis

Hauptaufgaben eines Versionsverwaltungssystems

  • Protokollierungen der Änderungen: Es kann jederzeit nachvollzogen werden, wer wann was geändert hat.
  • Wiederherstellung von alten Ständen einzelner Dateien: Somit können versehentliche Änderungen jederzeit wieder rückgängig gemacht werden.
  • Archivierung der einzelnen Release-Stände eines Projektes: Dadurch ist es jederzeit möglich, auf alle ausgelieferten Versionen zuzugreifen.
  • Koordinierung des gemeinsamen Zugriffs von mehreren Entwicklern auf die Dateien
  • Gleichzeitige Entwicklung mehrerer Entwicklungszweige (engl. Branches) eines Projektes (z. B. stabile Release-Version und Entwicklerversion mit größeren, nicht getesteten Änderungen): Hier wird der Entwickler bei der Übernahme von einzelnen Änderungen zwischen den Zweigen und der Hauptversion unterstützt.

Funktionsweise

Damit die eingesetzten Programme wie z. B. Texteditoren oder Compiler mit den im Repository (engl. Behälter, Aufbewahrungsort) abgelegten Dateien arbeiten können, ist es erforderlich, dass jeder Entwickler sich den aktuellen (oder einen älteren) Stand des Projektes in Form eines Verzeichnisbaumes aus herkömmlichen Dateien erzeugen kann. Ein solcher Verzeichnisbaum wird als Arbeitskopie bezeichnet. Ein wichtiger Teil des Versionsverwaltungssystems ist ein Programm, das in der Lage ist, diese Arbeitskopie mit den Daten des Repositorys zu synchronisieren. Das Übertragen einer Version aus dem Repository in die Arbeitskopie wird als Checkout oder Aktualisieren bezeichnet, während die umgekehrte Übertragung Check-in oder Commit genannt wird. Solche Programme sind entweder kommandozeilenorientiert, mit grafischer Benutzeroberfläche oder als Plugin für integrierte Softwareentwicklungsumgebungen ausgeführt. Häufig werden mehrere dieser verschiedenen Zugriffsmöglichkeiten wahlweise bereitgestellt.

Es gibt drei Arten der Versionsverwaltung, die älteste funktioniert lokal, also nur auf einem Computer, die nächste Generation funktionierte mit einem zentralen Archiv und die neueste Generation arbeitet verteilt, also ohne zentrales Archiv. Allen gemein ist, dass die Versionsverwaltungssoftware dabei üblicherweise nur die Unterschiede zwischen zwei Versionen speichert, um Speicherplatz zu sparen. Die meisten Systeme verwenden hierfür ein eigenes Dateiformat oder eine Datenbank. Dadurch kann eine große Zahl von Versionen archiviert werden. Durch dieses Speicherformat kann jedoch nur mit der Software des Versionsverwaltungssystems auf die Daten zugegriffen werden, die die gewünschte Version bei einem Abruf unmittelbar aus den archivierten Versionen rekonstruiert.

Lokale Versionsverwaltung

Bei der lokalen Versionsverwaltung wird oft nur eine einzige Datei versioniert, diese Variante wurde mit Werkzeugen wie SCCS und RCS umgesetzt. Sie findet auch heute noch Verwendung in Büroanwendungen, die Versionen eines Dokumentes in der Datei des Dokuments selbst speichern. Auch in technischen Zeichnungen werden Versionen zum Beispiel durch einen Änderungsindex verwaltet.

Zentrale Versionsverwaltung

Diese Art ist als Client-Server-System aufgebaut, sodass der Zugriff auf ein Repository auch über Netzwerk erfolgen kann. Durch eine Rechteverwaltung wird dafür gesorgt, dass nur berechtigte Personen neue Versionen in das Archiv legen können. Die Versionsgeschichte ist hierbei nur im Repository vorhanden. Dieses Konzept wurde vom Open Source Projekt CVS populär gemacht, mit SVN neu implementiert und von vielen kommerziellen Anbietern wie ClearCase oder Perforce verwendet.

Verteilte Versionsverwaltung

Die verteilte Versionsverwaltung verwendet kein zentrales Repository mehr. Jeder, der an dem verwalteten Projekt arbeitet, hat sein eigenes Repository und kann dieses mit jedem beliebigen anderen Repository abgleichen. Die Versionsgeschichte ist dadurch genauso verteilt. Änderungen können lokal verfolgt werden, ohne eine Verbindung zu einem Server aufbauen zu müssen.

Im Gegensatz zur zentralen Versionsverwaltung kommt es nicht zu einem Konflikt, wenn mehrere Benutzer dieselbe Version einer Datei ändern. Die sich widersprechenden Versionen existieren zunächst parallel und können weiter geändert werden. Sie können später in eine neue Version zusammengeführt werden. Dadurch entsteht ein gerichteter azyklischer Graph (Polyhierarchie) anstatt einer Kette von Versionen. Unter anderem setzen Bazaar, Darcs, Git, Mercurial und Monotone dieses Konzept um.

Eine Unterart der Versionsverwaltung bieten einfachere Patchverwaltungssysteme, die Änderungen nur in eine Richtung in Produktivsysteme einspeisen.

Befehle der Versionsverwaltung

Lock Modify Write

Dies ist die traditionelle Arbeitsweise eines Versionsverwaltungssystems und wird auch als Lock Modify Unlock bezeichnet. Die zugrundeliegende Philosophie wird auch Pessimistic Revision Control (engl., Pessimistische Versionskontrolle) genannt. Einzelne Dateien müssen vor einer Änderung durch den Benutzer gesperrt und nach Abschluss der Änderung wieder freigegeben werden. Während sie gesperrt sind, verhindert das System Änderungen anderer Benutzer. Bekanntester und ältester Vertreter dieser Arbeitsweise ist das Revision Control System (kurz: RCS) von Walter F. Tichy. Verteilte Versionsverwaltungssysteme kennen systembedingt diese Arbeitsweise nicht mehr.

Copy Modify Merge

Ein solches System lässt gleichzeitige Änderungen mehrerer Benutzer an einer Datei zu. Anschließend werden diese Änderungen automatisch oder manuell zusammengeführt (Merge). Somit wird die Arbeit des Entwicklers wesentlich erleichtert, da Änderungen nicht im Voraus angekündigt werden müssen. Insbesondere, wenn mehrere Entwickler räumlich getrennt arbeiten, wie es beispielsweise bei Open-Source Projekten der Fall ist, ermöglicht dies deutlich flüssigeres Arbeiten. Die zugrundeliegende Philosophie wird als Optimistic Revision Control (engl., Optimistische Versionskontrolle) bezeichnet und wurde entwickelt, um die Schwächen der Pessimistic Revision Control (engl., Pessimistische Versionskontrolle) zu beheben. Bekanntester Vertreter ist das Concurrent Versions System (kurz: CVS). Subversion (kurz: SVN) wurde als Alternative und zur Ablösung von CVS entwickelt.

Branching und Tagging

Die Entwicklung komplexer Software erfordert fast zwangsläufig eine Strategie von Branching und Tagging:

  • vor komplexen Änderungen erzeugt man einen sog. Branch, also eine Verzweigung, auf der die Entwicklung fortgesetzt wird, bis die komplexe Änderung fertig ist; dabei kann auf diesem Branch committet werden, ohne dass die Hauptentwicklungslinie (der sog. Trunk) davon beeinflusst wird. Abschließend erfolgt üblicherweise die Reintegration in den Trunk, der sog. Merge
  • ein Tag kennzeichnet einen konkreten Entwicklungsstand, z. B. eine zur Auslieferung bestimmte Version; er erhält einen Namen, über den er später noch verfügbar ist. Auf einem Tag finden keine Änderungen statt; stattdessen erzeugt man für einen neuen Versionsstand ein neues Tag.

Objekt-basierte Versionierung

Über die Grenze des abspeichernden Mediums, der Datei, hinaus geht die Objekt-basierte Versionierung. Objekte werden in der Informatik als sogenannte Instanzen, also Ausprägungen eines Schemas, erzeugt. Auch diese können versioniert gespeichert werden. Die Versionsverwaltung, welche die unterschiedlichen Objektversionen abspeichert, muss mit den entsprechenden Objekttypen umgehen können. Aus dem Grund liest ein solches System nicht allein die Datei und überprüft diese auf Veränderungen, sondern kann die darin enthaltene Semantik interpretieren. Üblicherweise werden Objekte dann nicht dateibasiert, sondern in einer Datenbank abgespeichert. Produktdatenmanagement-Systeme (PDM-Systeme) verwalten ihre Daten nach diesem Prinzip.

Übersicht über Versionsmanagementsysteme

Open Source

Closed Source

Siehe auch

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • iPod — Die iPod Produktlinie (von links): iPod shuffle (4. Generation) iPod nano (6. Generation) iPod classic (6. Generation) …   Deutsch Wikipedia

  • Apple iPod touch — iPod touch (4. Generation) iPod touch der vierten Generation Hersteller Ap …   Deutsch Wikipedia

  • Downgrade — (englisch downgrade = zurückstufen) ist der gegenteilige Vorgang zum Upgrade. Er bezeichnet die Rücknahme einer bereits durchgeführten technischen Verbesserung. Sehr verbreitet ist dieser Vorgang im Zusammenhang mit Computer Software.… …   Deutsch Wikipedia

  • Eso GmbH — Elektronik Service Organisation Rechtsform GmbH Gründung 1. Juli 1977 Sitz Tettnang, Deutschland Leitung Erwin Münz, Firmengründer und Geschäftsführer Christoph Benjamin Mü …   Deutsch Wikipedia

  • Software-Krise — Die Softwarekrise bezeichnet ein Mitte der 1960er Jahre auftretendes Phänomen: Erstmals überstiegen die Kosten für die Software die Kosten für die Hardware. In der Folge kam es zu den ersten großen gescheiterten Software Projekten.… …   Deutsch Wikipedia

  • 1-Klick-Hoster — Dieser Artikel oder Abschnitt ist nicht hinreichend mit Belegen (Literatur, Webseiten oder Einzelnachweisen) versehen. Die fraglichen Angaben werden daher möglicherweise demnächst gelöscht. Hilf Wikipedia, indem du die Angaben recherchierst und… …   Deutsch Wikipedia

  • 8800 Sirocco — Diese Liste bietet eine Übersicht über verschiedene Nokia Mobiltelefone. Inhaltsverzeichnis 1 Nokia 1xxx 1.1 Nokia 1100 1.2 Nokia 1110 1.3 Nokia 1200 1.4 Nokia 1208 …   Deutsch Wikipedia

  • Annotation (Programmierung) — Annotationen sind ein Mittel zur Strukturierung von Programmquelltexten, bei der die Erzeugung von Programmtexten und mit der Programmierung verbundener Hilfsdateien teilweise automatisiert wird. Als Informationsgrundlage für die automatische… …   Deutsch Wikipedia

  • AppleTV — Apple TV Apple TV ist die Bezeichnung einer Set Top Box, die von Apple Inc. entwickelt wurde. Sie wird an ein Fernsehgerät oder an einen Bildschirm angeschlossen und kann auf diesem verschiedene Medieninhalte wiedergeben, die sie über ein lokales …   Deutsch Wikipedia

  • Apple TV — Apple TV, zweite Generation (2G) Apple TV ist eine Set Top Box vom Hersteller Apple. Sie wird an ein Fernsehgerät oder an einen Bildschirm angeschlossen und kann auf diesem verschiedene Medieninhalte wiedergeben, die sie über ein lokales Netzwerk …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”