Softwarepraktikum WS 2007/08 Vorlesung 01 – 24. 10. 07 Prof. Dr Softwarepraktikum WS 2007/08 Vorlesung 01 – 24.10.07 Prof. Dr. Reinhard v. Hanxleden AG Echtzeitsysteme/Eingebettete Systeme Institut für Informatik Christian-Albrechts-Universität zu Kiel
Vorlesung 01 Einführung, Logistik CVS Rosenkönig - Spielregeln Gruppeneinteilung
Personen Vorlesung: Prof. Dr. Reinhard von Hanxleden rvh@informatik.uni-kiel.de Assistenten: Dipl. Inf. Claus Traulsen (ctr@...) Dipl. Inf. Kristine Haase (haase@mip...) Wissenschaftliche Hilfskraft: Oliver Fleischmann (ofl@...)
Allgemeines Ziel des Praktikums ist der Gewinn praktischer Erfahrungen in der Durchführung eines größeren, zusammenhängenden SW-Projektes Die Bearbeitung erfolgt in Gruppen von jeweils (möglichst) vier Personen Jede Gruppe wird einem Betreuer/einer Betreuerin zugeordnet Die Vorlesung liefert unterstützendes Wissen für die Durchführung des Praktikums Weiterführende Grundlagen zum SW-Engineering allgemein: Informatik III
Aufgabenstellung Projektinhalt: Erstellung einer Client-Server-Applikation in Java, die das Spiel “Rosenkönig” funktionalisiert Server koordiniert Spielzüge, hält Daten bereit, synchronisiert Kommunikation Einzelne Spieler sind Clients Evolution der Funktionalität: Bedienung über Kommandozeile Bedienung per GUI (Java Swing) Automatischer Spieler Abschluss: Wettkampf der Spieler untereinander
Ablaufplanung I Das Praktikum ist in 5 Meilensteine gegliedert UML Klassendiagramm für den prinzipiellen Aufbau und UML Sequenzdiagramme für die Kommunikation (3 Wochen, bis 12.-16.11.07) Implementierung des Servers sowie der GUI mit menschlichem Spieler (4 Wochen, bis 10.-14.12.07) Implementierung des Spielers (3 Wochen, bis 14.-18.1.08) Implementierung des Spieler für einen fremden Server (2 Wochen, bis 28.1.-1.2.08) Ausarbeitung und Abschlusspräsentation (2 Wochen, bis 11.2-15.2.08)
Ablaufplanung II Zu jedem Meilenstein ein Aufgabenzettel Nach jedem Meilenstein: Vorstellung der Ergebnisse Einzelne Gruppen + Betreuer Individuelle Termine Zusammenfassung der Ergebnisse durch die Betreuer Alle gemeinsam Mittwöchlicher Vorlesungstermin Nach dem 2. und dem 5. Meilenstein Benotete Präsentation Jeweils ca. drei Gruppen gemeinsam + mind. 2 Betreuer
Bewertung Scheine sind benotet Kriterien: Präsentationen (nach 2. und 5. Meilenstein) Qualität von Code und Dokumentation
Vorlesung etc. Vorlesung: Mittwochs, 14:15 – 15:45 Betreute Rechnerzeiten: Mittwochs, 16:00 – 18:00, GAP Durchsprache mit Betreuer: 45 min/Woche, Termin nach Vereinbarung
Homepage http://www.informatik.uni-kiel.de/rtsys/teaching/ws07-08/swprak/ Diese Folien Aufgabenstellungen etc. Weiterführende Links
Studierendendatenbank Anmeldung zu diesem Praktikum http://www.informatik.uni-kiel.de/ifi/studium-lehre/studidb/ Siehe Link auf Homepage
Die Mailingliste p-software@informatik.uni-kiel.de Wird in erster Linie zur Informationsweiterleitung seitens Dozent/Assistent genutzt Anmeldung über https://lists.informatik.uni-kiel.de/mailman/listinfo/p-software Sie sollten sich hier mit ihrem @informatik.uni-kiel.de account anmelden Falls Sie nicht wissen, wie Sie Mails von diesem Account lesen/weiterleiten, siehe http://www.informatik.uni-kiel.de/rbg/mail/mailweiterleitung
Das Forum http://www.infmath.de/ Wird durch Fachschaft verwaltet Dient primär dem Informationsaustausch unter Praktikumsteilnehmern Gutes Posting: Ich habe Problem xyz mit Eclipse – weiß jemand eine Lösung? Weniger gutes Posting: Der Source code für den nächsten Meilenstein ist ... Hinweis: Sie sollten sich nicht darauf verlassen, dass der Dozent/die Assistenten regelmäßig das Forum lesen. Bei dringenden Fragestellungen senden Sie bitte eine Mail!
Versionskontrolle mit CVS Concurrent Versions System Die nachfolgende Präsentation basiert auf Folien von Prof. Dr. Thomas Wilke, CAU Kiel
CVS protokolliert die Entwicklung eines Dateibaums eines Projekts (mehrerer Projekte) unterstützt die Zusammenführung von verteilt vorgenommenen Veränderungen vieles mehr
Grundlegende Idee auf einem Server: zentrales Lager (repository) mit allen Versionen bei jedem Nutzer: eine Arbeitsversion (working copy) des Dateibaums Kommunikation des Nutzers mit dem Server Auslesen (checkout): aktuelle Version des Dateibaums aus dem Lager abrufen Abgleichen (update): aktuelle Version aus dem Lager in die eigene Arbeitsversion einbringen Ablegen (commit): eigene Arbeitsversion ins Lager übertragen Hinzufügen (add): neue Dateien und Verzeichnisse anlegen
Konflikte Normalfall: cvs verschmelzt beim Abgleich die aktuelle Version im Lager mit der Arbeitsversion des Nutzers. Problemfall: Es werden miteinander unvereinbare Abschnitte gefunden. Benachrichtigung des Nutzers Markierung der problematischen Bereiche manuelle Nachbehandlung durch den Nutzer nötig
Befehle und Umgebungsvariablen cvs checkout [<file>|<directory>] cvs update [<file>|<directory>] cvs commit [<file>|<directory>] cvs add <file>|<directory> Umgebungsvariablen CVSROOT: Wurzel des Lagers CVS_RSH: Programm zur Kommunikation mit dem Server (Hier: ssh)
Erste Schritte SSH Schlüssel generieren $ ssh-keygen -t rsa Und öffentlichen Schlüssel an den Betreuer schicken (Datei id_rsa.pub liegt im Verzeichnis .ssh) $ export CVS_RSH =ssh $ export CVSROOT= \ :ext:sopra01@cvs.informatik.uni−kiel.de:/cvs/sopra01 (sopra01 durch eigene Gruppennummer ersetzen) Neues Modul anlegen (genau einmal) $ cvs import [MODULE-NAME] [vendor−tag][release−tag] z.B.: $ cvs import my-code my-login my-release Modul auschecken (jeder in der Gruppe) $ cvs checkout [MODULE-NAME]
CVS – Weiterführende Links http://kj.uue.org/papers/cvs-handout.pdf (Mini-Tutorial) http://refcards.com/docs/forda/cvs/cvs-refcard-a4.pdf (Quick Reference Card) http://de.wikipedia.org/wiki/Concurrent_Versions_System
Rosenkönig Vorstellung, Spielregeln
Spielaufbau Zwei Spieler: Rot und Weiß 9x9 Felder mit Token für die aktuelle Position Beim Start ist der Code in der Mitte maximal 5 Machtkarten pro Spieler Beim Start genau 5 Karten Zusätzlich 4 Heldenkarten Machtkarten: Richtung: Norden, Nord-Osten, Osten, … Länge: 1-3 Kartenstapel enthält jede Kombination
Züge Karte nehmen: Ziehen: Aussetzen: Maximal 5 Karten pro Spieler Nehme oberste Karte vom Stapel und lege sie offen aus Wenn der Stapel leer ist: gemischter Ablagestapel wird der neue Stapel Ziehen: Bewege Token gemäß einer Karte Karte wird abgelegt Das Zielfeld erhält die eigene Farbe Wenn das Zielfeld bereits vom Gegner besetzt ist: Spiele eine Heldenkarte um das Feld zu besetzen Aussetzen: Falls bereits 5 Machtkarten vorhanden sind, von denen keine gezogen werden kann.
Wertung Das Spiel ist zu Ende, wenn kein Spieler mehr ziehen kann oder es wurden 52 Felder besetzt. Für jedes zusammenhängende Gebiet quadriere die Anzahl der enthalten Felder Verbindungen über Eck zählen nicht Die Punkte für alle Felder werden aufaddiert. Gewonnen hat der Spieler mit der höchsten Punktzahl!
Organisatorisches Gruppeneinteilung