Informationen zur Vorlesung FASOOP WS 05/06

Aktuelle Informationen

Aktuelle Informationen zur Vorlesung – bitte regelmäßig beachten!

Inhalt

Die Veranstaltung vermittelt vertiefte Kenntnisse und Fähigkeiten für die objektorientierte Programmierung und über objektorientierte Programmiersprachen. Schwerpunkte liegen in den Bereichen operationelle Semantik von OO-Sprachen, Modularität und Kapselung, Typisierung und Typsysteme, Spezifikation von Programmeigenschaften sowie bei Techniken zum Prüfen und zur Verifikation.

Voraussetzungen

Entwicklung von Softwaresystemen I+II

Einordnung

  • Informatik (Diplom)
  • Angewandte Informatik (Diplom)
  • Technoinformatik (Diplom)
  • Informatik (Lehramt Gymnasien)
  • Masterstudiengang Informatik (Vertiefung)

Umfang

Die Vorlesung hat einen Umfang von 2 V + 1 Ü. Für den Masterstudiengang werden 4 ECTS-LP angerechnet.

Ansprechpartner

Dipl.-Inform. Nicole Rauch

Termine der Vorlesung

Freitag, 08:15 Uhr - 09:45 Uhr Raum 42-110
Erste Veranstaltung: 11.11.2005

Übungsgruppen

Nummer Tag Zeit Raum Tutor
1 Do. 17:15 Uhr - 18:15 Uhr 13-305 Dipl.-Inform. Nicole Rauch

Materialien zur Vorlesung

Weitere Informationen

Verwendung der JML Tools

Die JML Tools können entweder selbst installiert werden (Download via http://www.jmlspecs.org) oder im SCI auf den Rechnern poker und poker2 benutzt werden.

Folgendes ist hierbei zu beachten (die Anleitung gilt für die Installation im SCI bei Verwendung der bash; bei eigener Installation bitte sinngemäß anpassen):

  • die Umgebungsvariable JAVA_HOME muss auf das Wurzelverzeichnis des JDK 1.4.1 oder 1.4.2 zeigen:
    export JAVA_HOME/usr/j2se=

  • Pfad und Bibliotheksladepfad müssen angepasst werden:
    export PATHJAVAHOME/jre/bin:JAVA_HOME/bin:PATH = <br > <code > exportLDLIBRARYPATH < /code>JAVA_HOME/jre/lib:$LD_LIBRARY_PATH=

  • Damit die JML Tools alle mitgelieferten Spezifikationen finden, kann man einen speziellen Klassenpfad für sie setzen:
    export JMLPATH/opt/JML=
    export JMLCLASSPATHJMLPATH:JMLPATH/specs:$JMLPATH/bin/jmlruntime.jar:.=

  • Man kann entweder ein GUI-Programm starten, von dem aus man die einzelnen JML Tools aufrufen kann:
    java -jar /opt/JML/bin/jml-release.jar
    oder man kann die Tools in der Kommandozeile starten, wozu der Klassenpfad noch erweitert werden muss:
    export CLASSPATHJMLCLASSPATH:JMLPATH/bin/jml-release.jar:$CLASSPATH=

Name des Tools Skript in /opt/JML/bin
JML Type Checker jml-unix oder jml-gui-unix
JML Runtime Assertion Checker Compiler jmlc-unix oder jmlc-gui-unix
JML Documentation jmldoc-unix oder jmldoc-gui-unix
JML Skeleton Spec Generator jmlspec-unix oder jmlspec-gui-unix
JML/JUnit Test Oracle Generator jmlunit-unix oder jmlunit-gui-unix
  • Anschließend kann man die vom JML Runtime Assertion Checker Compiler erzeugten Classfiles ausführen mit
    java -cp $JMLCLASSPATH <class>

Benutzung von COM/DCOM

Im SCI ist eine DCOM-Umgebung auf tux3.informatik.uni-kl.de installiert. Um sie benutzen zu können, muss man folgendermaßen vorgehen:

  1. Man muss als Shell die bash benutzen (falls dies nicht schon der Fall ist, kann man sie mit bash starten).
  2. Die Umgebungsvariable SAG muss auf das Verzeichnis /opt/sag/ zeigen (=export SAG=/opt/sag=).
  3. Dann die Datei /opt/sag/exx/v721/INSTALL/exxenv laden (=source /opt/sag/exx/v721/INSTALL/exxenv=).
  4. Zur Authentifizierung mit dem Server muss man einen Account anlegen. Dies geschieht mit ntpasswd <accountname>. Man wird zur zweimaligen Eingabe eines Passworts aufgefordert. Der Accountname muss mit dem Unix-Loginnamen identisch sein.

Eine detaillierte Dokumentation der DCOM-Umgebung findet sich in /home/rauch/DCOM/dcomlinux721_tcm16-5287.pdf.

Zum Übersetzen global notwendige Einstellungen finden sich in /opt/sag/exx/v721/include/makefile.incl. Diese Datei sollte in einem Makefile zuerst geladen werden, danach kann man die dort definierten Konstanten verwenden.

Wichtig beim Übersetzen der Komponente !BasicServer: Der auf tux3 installierte Compiler hat ein Problem mit den von midl generierten Files. Dies äußert sich in Fehlermeldungen der Art

obj/basic_p.c:379: error: static declaration of 'Object_StubDesc' follows non-static declaration
obj/basic_p.c:218: error: previous declaration of 'Object_StubDesc' was here
obj/basic_p.c:417: error: static declaration of '__MIDL_ProcFormatString' follows non-static declaration
obj/basic_p.c:53: error: previous declaration of '__MIDL_ProcFormatString' was here
obj/basic_p.c:438: error: static declaration of '__MIDL_TypeFormatString' follows non-static declaration
obj/basic_p.c:52: error: previous declaration of '__MIDL_TypeFormatString' was here

Ich vermute, dass der Compiler dies in der aktuellen Version nicht mehr toleriert. Abhilfe schafft hier nur das Entfernen von static an den kritisierten Stellen. (Oder kennt jemand eine bessere Lösung?)

Weiterführende Literatur:

  • Arnd Poetzsch-Heffter:
    Konzepte objektorientierter Programmierung.
    Springer-Verlag, 2000.
  • Kim B. Bruce:
    Foundations of Object-Oriented Languages. Types and Semantics.
    MIT Press, 2002.
  • Sophia Drossopoulou, Susan Eisenbach:
    Java is Type Safe - Probably.
    ECOOP, 1997 (LNCS 1241).
  • Tobias Nipkow, David von Oheimb:
    Java light is Type Safe - Definitely
    Principles of Programming Languages, 1998.
  • Atsushi Igarashi, Benjamin Pierce, Philip Wadler:
    Featherweight Java: A Minimal Core Calculus for Java and GJ.
    OOPSLA, 1999.
  • Gilad Bracha, Martin Odersky, David Stoutamire, Philip Wadler:
    Making the future safe for the past: Adding Genericity to the Java Programming Language.
    OOPSLA, 1998.
  • Kresten Krab Thorup:
    Genericity in Java with Virtual Types.
    ECOOP, 1997.
  • Kim B. Bruce, Martin Odersky, Philip Wadler:
    A statically safe alternative to virtual types.
    ECOOP, 1998.
  • Boris Bokowski, Jan Vitek:
    Confined Types.
    OOPSLA, 1999.
  • Paulo Sergio Almeida:
    Balloon Types: Controlling Sharing of State in Data Types.
    ECOOP, 1997.
  • David G. Clarke, John M. Potter, James Noble:
    Ownership Types for Flexible Alias Protection.
    OOPSLA, 1998.
  • David G. Clarke, John M. Potter, James Noble:
    Simple Ownership Types for Object Containment.
    ECOOP, 2001.
  • Peter Müller, Arnd Poetzsch-Heffter:
    A Type System for Controlling Representation Exposure in Java.
    Formal Techniques for Java Programs, 2000.
  • K. Rustan M. Leino, Greg Nelson:
    Data abstraction and information hiding.
    Transactions on Programming Languages and Systems 24(5): Seiten 491-553, 2002.
  • Barbara H. Liskov, Jeannette M. Wing:
    A Behavioral Notion of Subtyping.
    Transactions on Programming Languages and Systems 16(6), Seiten 1811-1841, 1994.
  • Erich Gamma, Richard Helm, Ralph Johnosn, John Vlissides:
    Design Patterns.
    Addison Wesley, 1995.
  • Maurice Naftalin, Philip Wadler:
    Generics and Collections in Java 5.
    Download.