##entfällt: LE 11 | VF - Versions- und Fehlermanagement Flashcards
1
Q
Continous Integration
A
Continous Integration
- Mehrere Aufgaben die von folgenden Tools unterstützt werden können:
- Quellen ziehen, sichern und verwalten: CVS, Gít
- Vorgänge automatisieren und in den Buildprozess integrieren: Ant
- Codequalität mittels Tests sicherstellen: lunit
- Fehler- und Anforderungsverwaltung: BugZilla
- Ziel ist es jederzeit lauffähigen Code bereit stellen zu können
- Source ist immer an einer zentralen Stelle gehalten
- Entwickler fühlt sich weniger als Einzelkämpfer sondern als Teil eines Teams
- Entwicklungsarbeit gilt als erfolgreich wenn der gesamte Zyklus durchlaufen wurde und das Produkt oder der Prototyp fehlerfrei arbeitet und erfolgreich integriert ist
- Integrationsbuilds können mit einem Klick durchgeführt werden
- Cl spart viel Geld, Fehler werden früher erkannt und behoben, Prototypen einfacher integriert und ausreichend getestet werden
2
Q
Versionsmanagement
A
Versionsmanagement
- Bezeichnet allgemein den Vorgang der Verwaltung von Sourcecode in verschiedenen Versionen durch Softwarewerkzeuge
- Geordnete und zentrale Datenhaltung
- Release- und Entwicklungsmanagement um bestimmte Entwicklungsstände jederzeit geordnet ausgeben zu können oder zu verfolgen
- Kann selbst Teil des Konfigurationsmanagements sein
- Change-Management ist die Summe folgender Systeme:
- Versionsmanagement
- Release-Management
- Konfigurationsmanagement
- Versionsmanagement ohne Werkezuge im großen nicht möglich
- Verwaltung von Versionszweigen
- Fehlersuche
- Etc
- Anforderungen für Versionskontrollsystem
- Snapshots müssen vorgenommen werden können
- Sourcecode muss in das zentrale Repo übertragen werden können
- Verantwortungen und Kontrolle über den Code muss transparent sein
- Nachvollziehbar sein wer welche Änderung vorgenommen hat und welche Features integriert sind
- Konflikte sollten aufgelöst oder zumindest transparent gemacht werden
- Muss leicht zu handhaben sein
3
Q
Grundlegende Konzepte der Versionsverwaltung
A
Grundlegende Konzepte der Versionsverwaltung
- Entwickler entwickelt in seiner lokalen Sandbox W
- Code wird entweder initial neu „eingecheckt” oder für die Arbeit „ausgecheckt”
- Kern bei allen Versionsvenıvaltungen ist ein „Repository“ das idR eine Serveranwendung darstellt
- Einchecken von Code wird mit einem Log-Eintrag versehen (unter anderem für Revisions-Dokumentation)
- Jede Datei bekommt eine Revisionsnummer zur eindeutigen Identifizierung und zum
- Nachvollziehen der Änderungen
- Dateien können für Bearbeitung gesperrt werden
- Versionskontrollsysteme müssen Konflikte auflösen oder diese zumindest transparent machen
- Checkout: aktuelle Version laden und lokal sichern. Die lokale Version ist dann die
- Arbeitsversion die erstmal niemand sieht
- Checkin: die Arbeitsversion wird wird zur offiziellen Projektversion und allen beteiligten zur Verfügung gestellt
- 2x Checkout führt nach Änderung und Checkin zu Parallelversionen. Konfigmanager muss entscheiden was geschehen soll (verwerfen, beide zusammenführen, etc.)
4
Q
Branches und Tags
A
Branches und Tags
- Aufgabe der Versionsverwaltung ist es, sich alle Versionen aller Dateien zu merken
- Bei Update werden z.B. immer nur die neuesten Daten/geänderten übertragen
- „Tag“ beschreibt einen symbolischen Namen/frei wählbaren Bezeichner der quasi eine Momentaufnahme des Arbeitsstandes einer Datei darstellt
- Ein „Branch” (Fork), Zweig, ist eine Abspaltung von einer anderen Version, so dass unterschiedliche Versionen parallel weiterentwickelt werden können.
- Der Hauptentwicklungszweig wird idr „Trunk” oder „Master” genannt Branches können wieder in den Master integriert werden
- Revision: Bei einzelnen Dateien spricht man von einer Version oder Revision
- Release: Bei einer Menge von Dateien, die ausgezeichnet wurden, spricht man von einem Release
5
Q
Vorteile der Versionsverwaltung
A
Vorteile der Versionsverwaltung
- Mehrere Versionen einer Anwendung können verwaltet werden
- Im Fehlerfall kann auf eine frühere Version zurückgegriffen werden
- Integrität der Dateien gewährleistet, da alle zu einem Versionsstand passen
- Dokumentation der Änderungen kann direkt für ein ChangeLog und für offizielle Dokumentationen genutzt werden
- Aggressive Codeänderungen wie in agilen Modellen wird unterstützt und passiert auf sicherem Boden
6
Q
Locking Strategien
A
Locking Strategien
- Locking meint das Sperren von Dateien
- Pessimistic Locking/ Lock-Modify-Unlock
- Die Datei an der gearbeitet wird, wird gesperrt
- Sperren werden vergessen und führen zu Problemen
- Disjunktes Arbeiten an verschiedenen Stellen in der gleichen Datei wird dadurch unmöglich
- Optimistic Locking / Copy-Modify-Merge
- Fast immer wird Optimistic Locking angewendet
- Erlaubt gleichzeitiges Arbeiten an der gleichen Datei
- Selten werden gleiche Codezeilen parallel bearbeitet
- Einchecken meist sehr einfach (ein Klick) wodurch häufig eingecheckt wird und die Wahrscheinlichkeit von Konflikten stark minimiert wird
- Auftretende Konflikte lassen sich idr durch Differenzdarstellung schnell beheben
7
Q
zentrale Versionskontrolle
A
zentrale Versionskontrolle
- Zentral:
- CVS, Subversion
- Es gibt ein zentrales Repo zur Bereitstellung der Revisionen
- Lokale Arbeitskopie für Anwender
- Historie wird zentral vorgehalten
- Operationen die auf Daten des Repos zugreifen oder Daten überführen sollen benötigen eine Verbindung zum Repository
8
Q
Verteilte Versionskontrolle
A
Verteilte Versionskontrolle
- Verteilt:
- Git, Mercurial
- Jeder Anwender besitzt sein eigenes, lokales Repository
- Die einzelnen Repositories tauschen über bestimmte Operationen Informationen aus (push, pull)
- Lokale, eigene Repos ermöglichen weitgehend unabhängiges Arbeiten
- Gemeinsame Plattform durch Remote-Repository
- Jedes eigene Repo hat eigene Branches und Historien
- Push: transfer von lokal zu externem Repo
- Pull: transfer von externen ins lokale Repo
- Vorteile/ Nachteile
- Vorteile:
- Unabhängiges und schnelles Arbeiten wird möglich
- Keine Netzwerkanbindung erforderlich
- Alle nötigen Informationen in der lokalen Sandbox
- Demokratisch und kommunikativ
- Nachteile:
- Jeder Entwickler muss die Infrastrukturdes verteilten Netzes kennen
- Revisionsnummer müssen durch global eindeutige Hashwerte ersetzt werden, was als aufwendig bewertet wird
- Vorteile: