Zu vergebende Diplomarbeitsthemen im Pro.M.D.-Projekt
Stand 30.11.2000


1. Thema:
Codegenerator für den FunLog++-Compiler nach JavaVM-Code.
B e s c h r e i b u n g :
Die objektorientierte, logische, funktionale Programmiersprache FunLog++ wird im Pro.M.D.-System als Zwischensprache zur Repräsentation von medizinischen Wissensbasen eingesetzt. Der FunLog++-Compiler erzeugt bisher lauffähigen Objektcode als Prolog-Programm, welches dann mit einem Prolog-Interpreter ausgeführt werden kann. Darüberhinaus wurde von Herrn D. Schmidt im Rahmen seiner Diplomarbeit ein Codegenerator entwickelt, der für eine Untermenge von FunLog++ auf der Basis der Semantikliste lauffähigen Objektcode als Java-Quellprogramm erzeugt. Dieses wird dann mit einem Javacompiler (z.B. JavaC.Exe) in entsprechende Class-Dateien übersetzt werden. Ziel der zu vergebenden Arbeit ist es (1) die in FunLog++ vorhandenen, jedoch im vorliegenden Codegenerator nach Java noch nicht realisierten Konstrukte (wie Backtracking, Mehrfachvererbung, Funktionen als Parameter (first class functions), JDBC-Anbindung, externe Unterwissensbasen) zu implementieren und (2) in Anlehnung an den bereits vorhandenen Java-Codegenerator nach Java-Assemblercode oder direkt Class-Dateien mit dem Code der Java Virtual Machine (Java-VM) zu erzeugen.


2. Thema:
Semantische Analyse von Pro.M.D./FunLog++-Wissensbasen  zur erweiterten Fehlererkennung und Codeoptimierung zur Compile- und Ladezeit.
B e s c h r e i b u n g :
Der FunLog++-Compiler generiert bisher einen Objectcode der Zielsprache (Prolog oder Java), der das Auffinden der Receiverklasse einer Nachricht sowie die Auswahl der passenden Methode zur Laufzeit durchführt. FunLog++ kennt keine Typdeklarationen zur Charakterisierung von Parametern und lokalen Variablen. Anstatt dessen sorgen die FunLog++-spezifische Receiverkaskade und Typprädikate im Methodenrumpf für die eindeutige Erkennung geeigneter Bearbeitungsmethoden. Der im Rahmen der Diplomarbeit zu entwickelnde Compilerpass ist zwischen Syntaxanalyse und  Codegenerierung anzusiedeln. Er soll durch semantische Globalanalyse des FunLog++-Programmes logische Widersprüche, nicht berechenbare Ausdrücke und nicht erreichbare Funktionsdefinitionen erkennen. Rechenschritte der Laufzeit sollen, soweit möglich, in die Compilezeit bzw. Ladezeit vorverlagert werden. Die abstrakte Schnittstelle zum Codegenerator, die Semantikliste, soll hierfür gegebenenfalls um zusätzlich notwendige Funktionen erweitert werden.


3. Thema:
Pflegewerkzeug für Pro.M.D./FunLog++-Wissensbasen mit Browser und Editor unter Einsatz von HTML und JAVA.
B e s c h r e i b u n g :
Wartbarkeit und Weiterentwicklung von medizinischen Wissensbasen stellt eine Hauptvoraussetzung für deren Routineeinsatz dar. Bisher werden FunLog++-Wissensbasen mit ASCII-Texteditoren erstellt und ausgedruckt. Gerade bei umfangreicheren Wissensbasen werden jedoch effiziente Navigations-, Editier- und Testfunktionen benötigt um erkannte Fehler zu beheben und notwendige Erweiterungen durchführen zu können. Ziel der zu vergebenden Arbeit ist deshalb (1) eine Listing-Funktion zu erstellen, welche die Wissensbasis als "aufbereitete" HTML-Datei ausgibt. Die "aufbereitete" Wissensbasis kann dann mit HTML-Browsern (z.B. Netscape Navigator 4.0) exploriert werden. Hierbei sollen Bezüge von der Applikation zur Definition, auch über Wissensbasis-Grenzen hinweg als Hyperlink realisiert werden. (2) Über eine baumartige Grafik sollen selektiv nur momentan interessante Wissensbasisteile dargestellt werden. (3) Weiterhin soll mit diesem Werkzeug die Wissensbasis textuell (in einem Text-Editierfenster) oder strukturell (Verschiebung ganzer Teilregelwerke mit Anpassung der Bezüge, konsistente Umbenennung von Variablen, ...) realisiert werden. (4) Das Pro.M.D.-Frontend, welches von Herrn Amadou im Rahmen seiner Diplomarbeit als Java-Applet implementiert wurde, soll um Funktionen erweitert werden, mit denen dann auch Pro.M.D./FunLog++-Wissensbasen über ein TCP/IP-Netz von anderen Computern aus gepflegt werden können. (5) Die lexikalische Analyse und die Syntaxanalyse des FunLog++-Compilers sollen so erweitert werden, daß auch "aufbereitete" Wissensbasen (d.h. im HTML-Format) eingelesen werden können.


4. Thema:
Fallabhängige Erklärungsfunktion für Ergebnisse des FunLog++-Interpreters unter Einsatz von HTML.
B e s c h r e i b u n g :
Da FunLog++-Programme (bzw. Wissensbasen) seiteneffektfrei abgearbeitet werden, spielt die Reihenfolge der einzelnen Schlußfolgerungsschritte, im Gegensatz zu imperativen Sprachen, nur eine geringere Rolle. Deshalb kann zur Überprüfung der Korrektheit oder zur Fehlersuche ein statisches Hypertext-Dokument verwendet werden - die Erklärungsdatei. Im Rahmen der Diplomarbeit soll ein Zusatzmodul zur Standardbibliothek implementiert werden, welches ein FunLog++-Programm in ein Datenobjekt umwandelt und Zugriffsfunktionen auf alle FunLog++-Programmkonstrukte anbietet. Auf der Basis dieser Zugriffsfunktionen soll dann ein Meta-FunLog++-Interpreter implementiert werden, der zusätzlich zur Berechnung der FunLog++-Nachrichten auch ein Protokoll der Ableitungsschritte als HTML-Datei erzeugt, die Erklärungsdatei.


5. Thema:
FunLog++-Klassenbibliothek zur Definition und Anwendung dynamischer Modelle.
B e s c h r e i b u n g:
Dynamische Modelle werden in der Medizin zur Beschreibung biochemischer und physiologischer Abläufe verwendet. Technisch gesehen handelt es sich hierbei um Differentialgleichungssysteme (DGS), mit denen die Änderungsgeschwindigkeit eines Kompartiments in Abhängigkeit vom Niveau anderer Kompartimente berechnet werden kann. In FunLog++ können  Objekte erzeugt werden, die ein ganzes Differentialgleichungssystem repräsentieren. Im obigen Beispiel erzeugt die Methode coag_dynamics/0 als Ergebnis ein DGS-Objekt, welches das Differentialgleichungssystem beinhaltet. Der Operator =+/2 definiert eine einzelne Differentialgleichung, deren rechte Seite nicht sofort berechnet wird, sondern als first class function im DGS-Objekt gespeichert wird. Der Verlauf der Kompartimente Y1 und Y2 kann mit Hilfe der Modellkonstanten k1, k2 und k3 (durch kontinuierliche Simulation bei gegebenen Startwerten y1 und y2) berechnet werden.  Im Rahmen der zu vergebenden Arbeit sollen für die dem DGS-Objekt zugrundeliegende Klasse Funktionen zur kontinuierlichen Simulation und zur Parameteranpassung implementiert und erprobt werden.


6. Thema:
FunLog++-Klassenbibliothek zur Verarbeitung von Zeichenketten mit semibekannten Werten (Grammatiken) und Syntaxanalysealgorithmen.
B e s c h r e i b u n g:
In FunLog++ gibt es für Zeichenkettenoperationen bisher nur den Konkatenationsoperator #/2 und den Unifikationsoperator =/2. So weist z.B. die Nachricht (Anweisung) X = "Fun" # "Log" # "++" die Zeichenkette "FunLog++" an X zu. Die Funktionalität dieser beiden Operatoren soll im Rahmen dieser Arbeit so erweitert werden, daß auch Grammatiken definiert werden können und damit alle gängigen zerlegenden Zeichenkettenoperationen effizient realisiert werden können. Beispiel: "FunLog++" = "Fun" # Y # "++". Hierbei dient #/2 nicht mehr der Konkatenation von Zeichenketten, sondern dem Zugriff auf eine Teillkette Y. Mit Uhrzeit = Std # ":" Min # ":" Sek (bei unbekannten Std, Min und Sek) würde an die Variable UhrzeitMuster als Wert eine (sehr einfache) Grammatik zugewiesen, welche die Menge solcher Zeichenketten definiert, die zwei Doppelpunkte beinhalten. In FunLog++ werden Grammatiken als (semibekannte) possibilistische Datenobjekte dargestellt. Die anschliessende Unifikation Uhrzeit = "14:22:58" würde dann Stunde, Minute und Sekunde an die entsprechenden Variablen zuweisen.

Interessenten für eines der Themen wenden sich bitte an Bernhard Pohl.
 


Abgeschlossene Diplomarbeitsthemen im Pro.M.D.-Projekt



 Stand 30.11.2000