Programming-in-the-many: Java (``PEST'')
Wintersemester 1998/99
Ort: Haus II, 324
Vorbesprechung: Montag, 19. Okt 1998, Zimmer 324 13 ct, Haus II, Preußerstr. 1-9
Termin: Montags, 13:30 ct
Raum: 230, 2ter Stock
interne Vorführung: 12. Februar, 14.00.
Vorführung: 19. Februar, 14.00
Scheine sind fertig. Bitte bei Erich Mikk (Zimmer 317 in
Haus II) abholen, jedoch nicht am 26. oder 25.4.!
[Inhalt]
[Organisatorisches]
[Gruppen]
[Unterlagen]
[Handouts]
[Aufgaben]
[Baselines]
[PEST]
[SAFER Fallstudie]
[Literatur]
[Software]
[Links]
Inhalt
Java ist eine moderne, objektorientierte Programmiersprache. Ihre
Strukturierungskonzepte unterstützen modularen, strukturierten Entwurf von
Programmen, Datenkapselung und Wiederverwendung von Code durch Vererbung.
Daneben bietet Java umfangreiche Klassenbibliotheken. Die erwähnten
Strukturierungsmöglichkeiten erleichtern es, größere Programmieraufgaben in
logische getrennte und getrennt implementierbare Teilprobleme
aufzuteilen. Diese getrennte Entwicklung einzelner Komponenten ist in der
Praxis von überragender Bedeutung.
Gegenstand des Praktikums wird eine Aufgabe sein, die von Größe und
Zeitaufwand her nur im Team gelöst werden kann. Sie wird unter den
Teilnehmern verteilt, indem zu Beginn die Aufgabe von den Übungsleiten in
Module unterteilt und die Schnittstellen zwischen den Gruppen festgelegt
werden. Anschließend werden die Gruppen an ihren Teilaufgaben arbeiten,
wobei die Schnittstellen zu anderen Gruppen zu beachten sind. Entsprechend
dem modularen Programmierstil zerfällt die Programmieraufgabe in
- Programmierung der Module, auch als programming-in-the-small
bezeichnet und
- Zusammenbau und Verwendung der Module, auch als
programming-in-the-large bezeichnet.
Die Verwirklichung beider Konzepte in Teamarbeit bezeichnet man als
programming-in-the-many. Konkret werden folgende Bereiche der
Java-Programmierung benutzt:
- Strukturierungskonzepte wie Klassen und Objekte, Vererbung,
Interfaces
- Verwendung des Java AWT (abstract windowing toolkit)
- Nebenlaufigkeit (threads)
- Interface zu existierenden C code (Java Native Interface Programming)
Die Veranstaltung schließt sich das Praktikum ``Java &
Rhapsody'' des Sommersemesters 98 an. ``Quereinsteigen'' ist möglich,
jedoch werden Java-Kenntnisse vorausgesetzt.
Organisatorisches
Anmeldung:
Wir bitten um schriftliche (per email)
Anmeldung für den Kurs. Wir bitten um die Angabe folgender Daten:
- Name,
- Email-Adresse
- Semesterzahl
Nachbereitung:
Für die Rückmeldung in Bezug auf die Inhalt und Durchführung des
Kurses haben wir folgenden Bewertungszettel vorbereitet.
Übungsgruppen
Jede der Übungsgruppen bekommt einen account (swtechxx) und damit
die Möglichkeit, an der Uni zu rechnen. Für den Rechnerzugang haben wir den
Rechnerraum im 2ten Stock in der Zeit nach der Vorlesung
reserviert. Hier die Liste der Übungsgruppen
Unterlagen
Handouts
Aufgaben
Programming Environment for Statecharts: PEST
Hier können Sie die ausführbare Version
von
PEST1
und
PEST2
und
PEST1 mit der Simulation von PEST2
runterladen. Um ein PEST ausführen zu können, brauchen sie folgende
Software:
- JDK 1.1.6
- PerlTools 1.1
Sie müssen die Variable CLASSPATH setzen, so dass der java Interpreter
die Klassen von JDK, Perltools und der PEST ihre Wahl finden
kann. Z.B. für PEST1 (t)csh:
setenv CLASSPATH ".:$JDKHOME/lib/classes.zip:$PERLTOOLSHOME/PerlTools.jar:$PESTHOME/pest1.jar"
wo die Variablen
- $JDKHOME auf Ihre lokale Installation von jdk1.1.6 zeigt,
- $PERLTOOLSHOME auf Ihre lokale Installation von PerlTools 1.1
zeigt,
- $PESTHOME auf Ihre lokale Installation von PEST zeigt.
Dann können Sie PEST in Ihre Shell starten:
$ java gui.pest
Für Experimente empfehlen wir auch unsere eigene Fallstudie.
SAFER Fallstudie
Das im Praktikum konstruierte Werkzeug wurde auf die NASA SAFER
Fallstudie angewandt. Die Aufgabe war eine Statecharts Spezifikation
von SAFER zu erstellen. Als Pflichtenheft wurde die NASA Spezifikation aus
NASA Formal Methods Guidebook, Vol. II
benutzt.
Die Fallstudie zeigt, daß man PEST in der Tat für Spezifikation und
Simulation von Statecharts benutzen kann.
Die Quellen der Spezifikation
sind für weitere Experimente verfügbar.
Literatur
Aus der unübersehbaren Fülle an Büchern über Java, hier eine kleine
subjektive Auswahl (siehe auch Handout 1):
- Java:
Software Solutions , John Lewis und William Loftus. Addison-Wesley, 1997.
- Gutes einführendes Lehrbuch
- Java in a Nutshell. David Flanagan, O'Reilly, 1997. Auch als online Reference Manual for Java 1.1
- Hervorrangend zum Nachschlagen
- Das Java Tutorial von Sun, Mary Campione und Kathy Walrath
- The Java Language Specification, James Gosling, Bill Joy und Guy Steele, Addison-Wesley, 1996
- Die Referenz für alle, die es genau wissen wollen.
Information zu im Kurs verwendeter Software
Links
Ein ungeordnete Sammlung von Links
- Generic Java:
Eine kompatible Erweiterung von Java um generische Typen
- Pizza, eine
verwandter Sprachentwurf zur Erweiterung von Java
-
Increasing Java's expressiveness with ThisType and match-bounded polymorphism , Kim Bruce, 1997
- Java Workshop
- Weitere
Buchempfehlungen, nach Themen geordnet
- Gamelan
- einer der umfangreichsten Java-sites
-
Modern Comiler Construction in Java, Andrew Appel, Cambridge University Press, 1998
- Dort kann man sich kundig machen, wie man abstrakte Syntax,
Parser u. ä. in Java implementiert
-
Thinking in Java, Bruce Eckel, Prentice Hall, 1998
- Ein weiteres fettes Lehrbuch, vollständig online
- Geschichte von Java
- Große Sammlung von Java-Links
- Eine detaillierte Kritik an C++, Ian Joyner, 1996 (HTML hier )
- Ein paar
kritische Bemerkungen zu Java
-
Typsicherheit von Java?
- A Little Java, a Few Patterns, M. Felleisen und D. P. Friedmann, MIT Press, 1998
- Das etwas andere Javabuch, das einzige ohne API, ohne Applets,
ohne Windowing Toolkit.
[Inhalt]
[Organisatorisches]
[Gruppen]
[Unterlagen]
[Handouts]
[Aufgaben]
[Literatur]
[Software]
[Links]
Bei Fragen, email an {bwe|erm|ms}@informatik.uni-kiel.de (Bernd Weber, Erich Mikk, Martin Steffen)
Maintained by:
Martin Steffen
Thu Apr 8 11:38:53 MET DST 1999