Search:
Lehrstuhl  |  Institut  |  Fakultät  |  LMU
print

Softwareentwicklungspraktikum im WS 2011/12



Aktuelles

  • 19.03.2012: Wer für das Praktikum einen Schein bekommt, kann diesen im Sekretariat bei Frau Grienberger abholen. Bitte beachten Sie die Öffnungszeiten!
  • 23.12.2011: Webseite der Woche: H07 sorgt für weiße Weihnachten - allen Praktikumsteilnehmern frohe Weihnachten und guten Rutsch!
  • Einteilung der Gruppen für das Hauptprojekt in zwei Sortierungen:
  • Beachten sie die Hinweise im Abschnitt "Projekte" (unter anderem zum Subversion-Repository).
  • Einteilung der Gruppen für Vorprojekt und Referate in zwei Sortierungen:
  • Entnehmen Sie die Zuteilung der Gruppen zu Tutoren bitte dem Merkblatt.
    Nehmen Sie bitte als komplette Gruppe, nicht alle einzeln, mit Ihrem Tutor schnellstmöglich Kontakt auf.
  • Voraussetzung für die Teilnahme am Softwareentwicklungspraktikum ist die Vorlesung 'Einführung in die Programmierung' (bzw. für Kunst- und Multimedia-Studenten: 'Einführung in die Informatik: Programmierung und Software-Entwicklung'). Wenn Sie sich noch unsicher in Java fühlen, sei zur Vorbereitung die Teilnahme am Kursangebot von Laith Raed wärmstens empfohlen.
  • Zur Teilnahme an dieser Lehrveranstaltung ist eine CIP-Kennung am Institut für Informatik sowie eine elektronische Anmeldung erforderlich. Die Anmeldung erfolgt gemeinsam mit der Anmeldung zum System-Praktikum, auch wenn für manche nur das Softwareentwicklungspraktikum in Frage kommt.

Anmeldung

Bitte benutzen Sie das Anmeldeformular, das auf der Seite zum Systempraktikum zu Verfügung gestellt wird: http://www.nm.ifi.lmu.de/teaching/Praktika/2011ws/sysprak/anmeldung.php

  • Sie können sich für beide oder auch nur für eine der beiden Veranstaltungen anmelden. Es bringt ihnen keine Vorteile, wenn Sie sich nur für eine der beiden Veranstaltungen anmelden, jedoch ist in manchen Prüfungsordnungen nur eines der beiden Praktika zugelassen!
  • Die kombinierte Anmeldung ist notwendig, um eine Doppelanmeldung und anschließenden Rücktritt in einer der beiden zu vermeiden. Durch den doppelten Abiturjahrgang werden so die verfügbaren Plätze besser ausgenutzt, die Platzvergabe fairer.
  • Für das Softwareentwicklungspraktikum brauchen Sie sich keine Gruppen ID ausdenken, da wir diese bei der Gruppenbildung nicht berücksichtigen können.
  • Falls Sie nach ihrer Studienordnung das Systempraktikum nicht nutzen können, so setzen Sie bitte Präferenz und die folgende Option entsprechend, damit Sie keinen Platz im Systempraktikum belegen.

Inhalt

In dem Praktikum sollen die Teilnehmer unter Anleitung ein größeres Programm entwerfen, spezifizieren und implementieren und dabei die in den Vorlesungen "Einführung in die Programmierung" und Programmierung und Modellierung" erlernten grundlegenden Konzepte und Techniken praktisch einsetzen.

In Gruppen von 3 Teilnehmern sollen in Vorprojekten grundlegende Fähigkeiten in der Programmentwicklung im Team und hinsichtlich bestimmter Programmanforderungen erworben werden. In Teams von 5-6 Teilnehmern soll dann eine größere Java-Applikation entwickelt werden.


Organisation

  • Umfang: 11 Semesterwochenstunden
  • Betreuung: Dr. Arthur Zimek, Erich Schubert
  • Tutoren: Timo Becker, Sarah Breining, Frederik Brudy, Marcel v. Maltitz, Florian Nücke, Philipp Zormeier

Zeit und Ort

Veranstaltung Zeit Ort Beginn
Plenum Mo, 16.00 - 18.00 Uhr Raum B 001 (Oettingenstr. 67) 17.10.2011

Jede Gruppe trifft sich wöchentlich mit ihrem Tutor, die Termine dieser Treffen sind selbständig zwischen Gruppe und Tutor auszumachen.

In den Plenum-Sitzungen sowie in den Gruppen-Treffen besteht Anwesenheitspflicht.


Zeitplan

Datum Themen Aufgaben/Milestones/Material
17.10.2011 Model-View-Controller

Game of Life 1
Gardner-Artikel

Konfigurationsdateien:

24.10.2011
  • T1: Dateien als Gruppe verwalten - Was ist und kann Subversion? Grundlegende Kommandos und Regeln für Subversion (V09)
  • T2: "Malen nach Zahlen" - Graphikprogrammierung mit AWT: Koordinatensystem, geometrische Figuren, Bilder etc. (V15)
  • T3: Einführung in GUIs - Was sind Windows, Frames, Panels etc.? Wie ist eine GUI aufgebaut? (V06)
  • T4: GUI Layout in AWT - Welche Elemente plaziert man wie wo und wie sieht es dann aus? (V31)
  • T5: GUI Layout in Swing - Unterschiede zwischen Swing und AWT (in Absprache mit dem Referat T3), Layoutmanager in Swing (V05)

Game of Life 2

31.10.2011
  • T6: Wissen, wo was los ist - Das Designpattern "Observer", Ausblick auf das Event-Listener-Modell in Java (V13)
  • T7: Was passiert, wenn ich da drauf drücke? - GUI-Kontroll-Items: Buttons, Slider, Radiobuttons, Menü, Dialogfelder, Textelemente, ... : Events und Listener (V02)
  • T8: Die Klasse ist da, wo sie hingehört - Innere Klassen, lokale innere Klassen, anonyme Klassen, statische verschachtelte Klassen (V10)
  • T9: Parallel oder sequentiell? - Nebenläufigkeit, Prozesse und Threads, Probleme bei nebenläufigen Prozessen/Threads, Synchronisation mit Monitoren (V16)
  • T10: Mehrgleisig auch in Java? - Die Klasse Thread, das Interface Runnable, Synchronisation von Threads in Java (V20)

Game of Life 3

07.11.2011
  • T11: Kleine Applikationen im Web - Applets: Lebenszyklus, Einbinden, Einschränkungen (V14)
  • T12: Wie stelle ich eine Anwendung mit vielen Klassen zu Verfügung? - Jarfile mit Manifest, Ant als Deployment-Tool (V30)
  • T13: Dokumentation eines Projektes – Javadoc: Tags, Overview-Seiten, Stil-Konventionen, Erzeugen der HTMLDokumentation von Hand und durch Ant (in Absprache mit T12) (V28)
  • T14: Eine mächtige, freie Entwicklungsumgebung – Eclipse: Überblick über die Funktionalität, Einbindung von cvs/Subversion und Ant-build-files (V18)
  • T15: "Das gehen wir noch mal durch" – Das Design-Pattern "Iterator" und die Verwendung von Iteratoren im Java-Collections-Framework (V26)

Game of Life 4

14.11.2011
  • T16: Netzwerk: Einführung - Netzwerkschichtmodelle, Client-Server Modell, Protokolle (IP, TCP, UDP) (V29)
  • T17: CGI und Servlets - was ist CGI, was sind Servlets? Verwendung von Servlets, Aufruf von CGI-Skripten (V08)
  • T18: Sockets - Das Konzept der Sockets, Client-Sockets, Server-Sockets (V11)
  • T19: RMI - Prinzipielle Arbeitsweise von RMI, Remote-Interface, Remote-Object, Remote-Referenz, RMI-Registry, Stub, Skeleton (V27)
  • T20: Design-Pattern: Proxy - Motivation, Struktur, Anwendung (V33)

Netzwerkapplikation

15.-17.11.2011

Abnahmen

Falls Ihnen ein Termin sehr unangenehm ist, suchen Sie sich bitte selbständig einen Tauschpartner (z.B. über das Forum). Wir nehmen einen Termintausch vor, sofern uns der Wunsch per E-Mail mit CC an alle Gruppenteilnehmer beider betroffener Gruppen und die Tutoren bis Montag, 14.11., 16:00 Uhr mitgeteilt wird.

Die Deadline ist aber für alle Termine gleich, wir betrachten die Version, die zur Deadline eingecheckt ist.

Abnahmetermine
21.11.2011
  • T21: Wer? Wie? Was? Warum? - Überblick über die Spielregeln und den Spielablauf "Siedler von Catan" (V32)
  • T22: UML: Statische Modellierung, Klassendiagramme - Wiederholung und Ergänzung des Kapitels aus EIP zum Thema statische Modellierung in UML (Klassendiagramme), Umsetzung der Konzepte in Java (V12)
  • T23: Use-Case-Analyse - Was sind Use-Cases? Wie stellt man Use-Cases in UML dar? (V17)
  • T24: UML: Dynamische Modellierung, Sequenzdiagramme und Zustandsübergangsdiagramme - Was sind Sequenzdiagramme/Zustandsübergangsdiagramme? Wozu kann man Sequenzdiagramme/Zustandsübergangsdiagramme benutzen? Wie entwirft man Sequenzdiagramme/Zustandsübergangsdiagramme? (V01)

Milestone 1: Entwurf

28.11.2011
  • T25: Nicht wieder alle kopflos drauflos laufen bitte! - Verschiedene Software-Entwicklungsprozess-Modelle (z.B. Extreme Programming), typische Schritte im SWE-Prozess (V03)
  • T26: Deutsch, Englisch, Bayerisch? Unterstützung von Mehrsprachigkeit in Java (V25)
  • T27: "Keiner hört mir zu" - Logging: Botschaften so ausgeben, dass man sie auch lesen kann, aber nur lesen muß, wenn man auch will (V34)
  • T28: Unikate im ganz großen Stil herstellen - das Design-Pattern "Singleton" (V19)

Milestone 2: Implementierung

05.12.2011
  • T29: "Nein, wir machen das noch anders" - Was sind Refactoring Patterns? Häufige Patterns (z.B. Extract Interface, Extract Superclass, Extract Subclass, Push Up Field/Method/Contructor Body, Push Down Field/Method, Collapse Hierarchy, Form Template Method) (V22)
  • T30: "Wir machen nicht, wir lassen machen" - das Design-Pattern "Factory" (V21)
  • T31: Fehlerreduktion durch planvolles und systematisches Testen (Beispiel: JUnit) (V04)
  • T32: Und was kommt jetzt? - Das Desing-Pattern "State" (V24)

Milestone 3: Server

12.12.2011
  • T33: Die Frage ist nicht "Was?", sondern "Wie?" - das Design-Pattern "Strategy" (V23)
  • T34: Spieltheorie, Spielstrategien: Anregungen für "Siedler von Catan"-KIs (V07)

Vorprojekt-Abschlussbesprechung

Milestone 4: Client



Nikolaus-Preistraeger.pdf

09.01.2012

kein Plenum

Milestone 5: Debugging

16.01.2012

kein Plenum

Milestone 6: Cheat

23.01.2012

kein Plenum

Beta-Test

30.01.2012

kein Plenum

Endabnahme

06.02.2012

kein Plenum

27.-29.02.2012

Abnahmen (Takla-Makan)




Projekte

Alle Projekte sollen über ein gemeinsames Subversion Repository verwaltet werden. Bitte hierzu die Hinweise beachten.


Vorprojekt

In den ersten Wochen wird in Gruppen von 3 Teilnehmern eine Modellierung des Game of Life vorgenommen sowie eine kleine Netzwerkapplikation erstellt. Hierbei sollen unterschiedliche Möglichkeiten der Benutzerinteraktion vorgesehen werden.

Ziel des Vorprojektes ist es, die wichtigsten Konzepte, die auch für das Hauptprojekt benötigt werden, in einem kleinen, übersichtlichen Projekt einzuüben.


Hauptprojekt

In Gruppen von 5-6 Teilnehmern wird eine netzwerkfähige JAVA-Applikation entwickelt.

Dieses Programm soll das beliebte Spiel Die Siedler von Catan mit einer Client-Server-Architektur realisieren. Dabei soll das Serverprogramm den Spielzustand repräsentieren und mit den Clientprogrammen der einzelnen Mitspieler kommunizieren. Der Spielzustand soll auf Klientenseite graphisch dargestellt werden und Spielzüge sollen über Mausklicks eingegeben werden. Der Server überwacht die Einhaltung der Regeln. Computergesteuerte Spieler (KI) können abschließend eine interessante Erweiterung bilden.


catan.gif © Franckh Kosmos Verlags-GmbH 1995


Hilfsmittel

Wir verwenden die Java Standard Edition 6.0, die auch am CIP-Pool installiert ist. Falls Sie zuhause arbeiten möchten, benötigen Sie das Java Development Kit (JDK 6), das Sie hier frei herunterladen können.

Die Standardbibliothek, die mit der Standard-Edition zu Verfügung steht, ist vollständig dokumentiert und hier erhältlich.


Nützliche Links


Vorhergehende Semester

WS 14/15, WS 11/12, WS 10/11, WS 09/10

blank