Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Teamorganisation: Versionsverwaltung

Ähnliche Präsentationen


Präsentation zum Thema: "Teamorganisation: Versionsverwaltung"—  Präsentation transkript:

1 Teamorganisation: Versionsverwaltung
Übersicht Wofür Versionskontrolle? Sperrmechanismen Systeme Beispiel Besonderheiten CVS mit eclipse Tools Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

2 Wofür Versionskontrolle?
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

3 Sperrmechanismen pessimistische Sperren • explizite Sperre pro Datei
• keine konkurrierenden Zugriffe  keine Konflikte Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

4 Sperrmechanismen optimistische Sperren • Sperre nur beim einchecken
• update (Synchronisation) jeder Zeit möglich  Konflikte (semiautomatische Behebung) Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

5 Systeme RCS – Revision Control System, der Anfang
CVS - Concurrent Versions System, der Klassiker keine Verzeichnisse kein Umbenennen / Verschieben kein Check-In Begriff aber: gute Tool-Unterstützung SVN – Subversion, verbessertes CVS Git – verteilte Versionsverwaltung, Linux Kernel Entwicklung Mercurial - OpenSolaris, XEN, Kernel-Entwicklung Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

6 CVS Beispiel Alice, Bob arbeiten an einem Projekt
beide checken die Version 1.1 vom Server aus Alice bearbeitet die Datei Server.java, Client.java (Zeile 42) Bob bearbeitet Helper.java und Client.java (Zeile 23) Alice checkt ein Bob versucht einzuchecken  Fehler Bob führt ein Update durch neue Server.java Merge von Client.java, kein Konflikt Bob checkt ein Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

7 CVS Beispiel Teil 2 Bob ändert in HtmlPanel.java (Zeile 42)
Bob checkt ein Alice ändert in HtmlPanel.java (Zeile 42) Alice macht ein Update  Konflikt <<<<<<< HtmlPanel.java doc1 = (HTMLDocument) html.getDocument(); ======= doc = html.getDocument(); >>>>>>> 1.4 Alice behebt den Konflikt Alice checkt ein Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

8 Timestamps / Tags / Branches
CVS speichert (Rückwärts-)Deltas  Wiederherstellen alter Versionen möglich Versionen identifizierbar durch Timestamps Revision Numbers Markierungen (Tags) Verzweigungen (Branches) sind möglich v v 1.1 v v 1.2 v v v Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

9 CVS mit eclipse Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

10 Konflikte Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

11 Tools: cvsmail Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

12 Tools: cvsweb Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

13 Tools: cvsstat Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

14 Reverse Engineering Aufgabe: Wie funktioniert das alte Programm
Wo finde ich zu ändernde Funktionalität Wo muss ich neue Funktionalität einbauen Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

15 Reverse Engineering Z.B.:
In welchen Phasen läuft ein RedCode Wettkampf ab? Welcher Baustein macht dabei was? Wo und wie würde man Mult und Div Befehle realisieren Wo und wie würde man neue OpCode Modifier implementieren Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

16 Reverse Engineering Techniken
Doku lesen Java Docs Googlen Klassendiagramm generieren (Omondo, Fujaba, …) (Achtung man braucht nur „wichtige“ Klassen) Debuggen / EDobsen Eclipse „Show Declaration“ / „Show Usages“ Traces generieren Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

17 Reverse Engineering Ergebnisdokumentformat
Eine gemeinsames Teamdokument Doku im HTML Format (wegen CVS) Kapitelstruktur wie Vorlage Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

18 Reverse Engineering Ergebnisinhalte
Code Ausschnitte Story Boards Sequenzdiagramme Klassendiagramm für wichtige Bausteine Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

19 Aufgabe: Getting started
Die zu verwendende CoreWar-Version wird über das CVS-Repository eurer Gruppe bereit gestellt. Dort befindet sich auch ein Verzeichnis, das Beispieldokumente enthält. Auf der Vorlesungsseite ist eine Anleitung verlinkt, wie das auschecken mit Eclipse vorzunehmen ist. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

20 Aufgabe: CoreWars kennen lernen
Als erste einfache Übung spielen Sie mit dem gegebenen Programm. Geben Sie ein oder zwei einfache Kämpfer ein (Quelltexte finden sich in den Dokumenten bzw. im Internet). Hinweis: Das gegebene CoreWars-Framework erwartet entweder ein Label oder Whitespace am Beginn jeder Instruktions-Zeile. Also lautet der einfachste Kämpfer: "    MOV 0, 1" (statt "MOV 0, 1") Lassen Sie diese Kämpfer gegeneinander kämpfen. Führen sie den Kampf schrittweise aus. Das Menü dazu befindet sich unten links in der Kampf-Anzeige. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

21 Aufgabe: Struktur erkennen
Beschäftigen Sie sich nun mit dem Quellcode des CoreWars-Framework. Nach einigem Lesen sollte man schon eine grobe Aufteilung der Software in Subsysteme und Komponenten erkennen. Diese gilt es textuell und mit Hilfe von Package- bzw. Komponentendiagrammen zu dokumentieren. Kleine Klassendiagramme mit den wichtigsten Methoden für wichtige Ausschnitte der Funktionalität sind sinnvoll. Insbesondere soll die Redcode-Befehlsverarbeitung im MARS untersucht werden. Erstellen Sie einen Klassendiagramm(-Ausschnitt) der Klassen, die zum MARS und der Befehlsverarbeitung gehören (Hinweis: ca. 8-10) und führen Sie die wichtigsten Methoden auf. Beschreiben Sie den Ablauf in Sequenz- oder Aktivitätsdiagrammen. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

22 Aufgabe: Client-Server-Kommunikation
Untersuchen Sie die Kommunikation zwischen Client und Server im Existierenden Framework. Wie ist der Ablauf des Protokolls? Welche Daten werden ausgetauscht? Wie werden diese codiert? Die Kommunikation über Interfaces bzw. Oberklassen (sprich festgelegte Methodensignaturen) und die Ereignisse müssen im Reverse Engineering Dokument beschrieben werden. Zur Unterstützung für die Beschreibung des Austauschs von  Nachrichten bieten sich Sequenzdiagramme an. Unterstützend zu Beschreibungen der Spielabläufe können ein paar Screenshots helfen. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University

23 Aufgabe: 8 neue Befehle implementieren
In dieser Projektphase sind die acht neuen Befehle zu implementieren. Identifizieren Sie die Stellen im existierenden Code die geändert werden müssen, um den Befehlssatz zu erweitern. Erweitern sie auch den Test-Code um Testfälle für die neuen Befehle! Orientieren Sie sich hierbei an den existierenden Testfällen (Hinweis: Klasse CUTest, pro Befehl eine Methode test<neuerOpCode>() einfügen. Der Befehl JOI benötigt die weiteren Aufgabenteile. Implementieren sie nur das Grundgerüst, die Ausführung des Befehls soll den Sprung vorerst NICHT durchführen, also einfach den program counter inkrementieren). Dokumentieren Sie kurz, welche Änderungen Sie in welchen Klassen vorgenommen haben. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University


Herunterladen ppt "Teamorganisation: Versionsverwaltung"

Ähnliche Präsentationen


Google-Anzeigen