+ All Categories
Home > Documents > Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University...

Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University...

Date post: 05-Apr-2015
Category:
Upload: bartolomaeus-stober
View: 105 times
Download: 0 times
Share this document with a friend
23
Fachgebiet Software Engineering Übersicht © 22.06.22 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle? Sperrmechanismen Systeme Beispiel Besonderheiten CVS mit eclipse Tools
Transcript
Page 1: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Teamorganisation: Versionsverwaltung

Übersicht

• Wofür Versionskontrolle?

• Sperrmechanismen

• Systeme

• Beispiel

• Besonderheiten

• CVS mit eclipse

• Tools

Page 2: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Wofür Versionskontrolle?

Page 3: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Sperrmechanismen

pessimistische Sperren

• explizite Sperre pro Datei

• keine konkurrierenden Zugriffe keine Konflikte

Page 4: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Sperrmechanismen

optimistische Sperren

• Sperre nur beim einchecken

• update (Synchronisation) jeder Zeit möglich Konflikte (semiautomatische Behebung)

Page 5: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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

Page 6: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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

Page 7: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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

Page 8: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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 1.1

v 1.1.1.1

v 1.1.2.1

v 1.1.3.1

v 1.2 v 1.2.1.1

v 1.2.2.1

Page 9: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

CVS mit eclipse

Page 10: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Konflikte

Page 11: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Tools: cvsmail

Page 12: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Tools: cvsweb

Page 13: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Tools: cvsstat

Page 14: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Reverse Engineering

Aufgabe:

Wie funktioniert das alte Programm

Wo finde ich zu ändernde Funktionalität

Wo muss ich neue Funktionalität einbauen

Page 15: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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

Page 16: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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

Page 17: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Reverse Engineering Ergebnisdokumentformat

Eine gemeinsames Teamdokument

Doku im HTML Format (wegen CVS)

Kapitelstruktur wie Vorlage

Page 18: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

Reverse Engineering Ergebnisinhalte

Code Ausschnitte

Story Boards

Sequenzdiagramme

Klassendiagramm für wichtige Bausteine

Page 19: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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.

Page 20: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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.

Page 21: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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.

Page 22: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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.

Page 23: Fachgebiet Software Engineering Übersicht © 22.01.2014 Albert Zündorf, Kassel University Teamorganisation: Versionsverwaltung Übersicht Wofür Versionskontrolle?

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

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.


Recommended