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.
coag_dynamics ::=
Y1 =+ k1,
Y2 =+ k2*Y1 + k3*Y2.
k1 ::= 6.2 / 1s.
k2 ::= 0.3 / 1s.
k3 ::= 0.04 / 1s.
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
-
Bubser S: Syntaxgesteuertes Werkzeug zur inkrementellen Generierung
und Modifikation von Wissensbasen. Diplomarbeit, Universität Heidelberg
(1988)
-
Müller R: Entwurf und Implementierung einer Dialogkomponente
für ein medizinisches Expertensystem. Diplomarbeit, Universität
Heidelberg (1989).
-
Walther S: Ein Konzept zur Verarbeitung eines Gewißheitsmaßes
in einem regelbasierten Diagnosesystem. Diplomarbeit, Johann Wolfgang Goethe-Universität
Frankfurt am Main (1992)
-
Melzer J: Analyse der Abhängigkeitsstrukturen von Variablen
in Pro.M.D.-Wissensbasen zur Fehlererkennung und Codegenerierung. Diplomarbeit,
Johann Wolfgang Goethe-Universität Frankfurt am Main (1993)
-
Burow F: Ein objektorientierter Ansatz für die Behandlung von
Wissensbasen in der Expertensystemschale Pro.M.D. Diplomarbeit, Johann
Wolfgang Goethe-Universität Frankfurt am Main (1994)
-
Schmidt D: Entwurf und Implementierung eines Crosscompilers von FunLog++
nach Java - unter besonderer Berücksichtigung von logischen Variablen,
Unifikation, Lazy Evaluation und der Unterschiede der beiden objektorientierten
Technologien. Diplomarbeit, Johann Wolfgang Goethe-Universität Frankfurt
am Main (1998, in Vorbereitung)
-
Galic K: Implementierung von Arithmetik, Ordnungsrelation und Unifikation
für semibekannte Werte - unter besonderer Berücksichtigung stochastischer
Variablen in Momentdarstellung. Diplomarbeit, Johann Wolfgang Goethe-Universität
Frankfurt am Main (1998, in Vorbereitung)
-
Amadou: Eine Entwicklungsumgebung für verteilte Wissensverarbeitung
in der Labormedizin am Beispiel von Pro.M.D./WILAS. Diplomarbeit, Universität
Bremen (1998, in Vorbereitung)
Stand 30.11.2000