[Prev] [Next] [Home DissOnline]


6.11. Implementationsstrategien und Anbindung der Regeln

Bei einer Umstellung des Reaktionsvorhersagesystems EROS6, das mit einer Darstellung der chemischen Strukturen als Bindungsliste arbeitet, auf eine MO-orientierte Datenstruktur hätte fast das gesamte System umgeschrieben werden müssen, da an vielen Stellen im Programm direkte Zugriffe auf die Datenstruktur enthalten waren. Deshalb wurde EROS7 auf der MO-orientierten Datenstruktur RICOS aufbauend von Grund auf neu geschrieben. Um in Zukunft nicht wieder in eine solche Situation zu kommen, wurde beschlossen, die einzelnen Teile des Systems durch Datenabstraktion voneinander zu trennen und nur Zugriffe über entsprechende Funktionen zuzulassen. Möchte man später beispielsweise erneut die Datenstruktur ändern, sind lediglich Zugriffsfunktionen nötig, die auf der neuen Datenstruktur die angeforderten Aktionen des Reaktionsgenerierungsteils ausführen. Die Reaktionsgenerierung selbst ist von der Umstellung dann nicht betroffen. Als Programmiersprache für das neue System hat sich C++ angeboten, da sie als objektorientierte Sprache die Datenabstraktion unterstützt. Desweiteren hat sie den Vorteil, daß ein sanfter Umstieg auf das neue System möglich ist. Es können Teile, wie die Berechnung der physikochemischen Parameter von EROS6, das in Fortran77 geschrieben ist, eingebunden werden. Darüber hinaus bietet C++ die Möglichkeit eine Reihe weiterer Programmiersprachen zu Programmsystem zu binden, da sie sowohl den objektorientierten als auch den algorithmischen Programmierstil zuläßt. So wurde für das neue System EROS7 für die Kodierung der Regeln auch ein Anschluß an einen Tcl-Interpreter erstellt. Tcl ist eine Programmiersprache [63], die nur den algorithmischen Programmierstil zuläßt und nur Variablen vom Typ String kennt. Tcl ist bezüglich der Funktionalität deutlich ärmer als C++ und stellt somit etwa den Fall größter anzunehmender Schwierigkeiten für den Anschluß dar.

Dadurch, daß EROS7 von Grund auf neu programmiert wurde, konnten auch neue Überlegungen bezüglich der Anbindung der Regeln angestellt werden. Die Regeln sind die Wissensbasis für EROS7, in denen die einzelnen Reaktionstypen inklusive der Beschränkungen, Bewertungen der Reaktionen und die zu verwendende Kinetik kodiert sind. Für EROS6 wurden die Regeln in einer eigenen Sprache (VERGIL, Versatile EROS Reactivity functions Generation and Interpretation Language [41]) geschrieben, die dann von selbstgeschriebenen Programmteilen ausgewertet werden mußten. Dies hat den Nachteil, daß man den Compiler bzw. Interpreter für die Regeln selbst erstellen muß, der dann alle gewünschten Funktionalitäten enthält, was durchaus aufwendig sein kann. Da liegt der Gedanke nahe, die Programmiersprache, in der das Programm selbst geschrieben ist, auch für die Formulierung der Regeln zu verwenden. So erhält man für die Regeln von ROS7 alle Möglichkeiten der mächtigen Programmiersprache C++. Wird die Sprache C++ erweitert, so ist im schlimmsten Fall das ganze Programm neu zu übersetzen und zu binden, um auch die Erweiterungen nutzen zu können. Der große Aufwand für die Implementation eines Compilers bzw. Interpreters für die Regeln bei Verwendung einer eigenen Sprache und die Aussicht auf die Möglichkeit einer flexiblen Weiterentwicklung der Regeln durch den Einsatz der Sprache C++ haben den Ausschlag gegeben, die Regelschnittstelle in C++ zu definieren. Nachteile hiervon sind, daß die Regeln in einer komplexeren, nicht unbedingt den chemischen Problemen angepaßten Sprache abgefaßt werden, sowie der Aufwand für eine Erklärkomponente, die für die Beurteilung, warum eine Reaktion stattfindet oder nicht, die Regeln analysieren muß. Auswege daraus sind die Erstellung eines Regeleditors mit grafischer Oberfläche, der für einen bestimmten Zweck immer nur eine Untermenge der möglichen Einstellungen in den Regeln verwendet und dies in immer gleicher Weise tut, oder der Anschluß einer geeigneten anderen Programmiersprache, was der Grund dafür ist, daß bei der Definition der Regelschnittstelle auf objektorientierte Ansätze weitestgehend verzichtet wurde. Zur Zeit existiert für EROS7 der Anschluß an den Tcl-Interpreter. Ob die Abfassung der Regeln in Tcl oder in C++ gewählt wird, macht einen geringen Unterschied. Tcl hat den Vorteil, daß die Regeln interpretiert werden können. Es wird, nachdem man die Regeln abgeändert hat, für einen erneuten Programmlauf kein zusätzliches Programm, wie etwa ein Compiler, benötigt. Die Abarbeitung der Regeln in Tcl und damit die Reaktionssimulation durch EROS7 dauert mit compilierten und nicht compilierten Regeln länger als mit den entsprechenden C++-Regeln. Interpretierte Tcl-Regeln sind dagegen flexibler, da sie geändert direkt ohne Compilation erneut getestet werden können. Insgesamt ist der Aufbau der Regeln gegenüber denen von EROS6 wegen der größeren Funktionalität um einiges komplexer. Deshalb sollte für einen breiteren Einsatz ein Regeleditor erstellt werden.



[Prev] [Next] [Home DissOnline]


Hoellering@CCC.Chemie.Uni-Erlangen.DE
Copyright © 1998, Höllering Universität Erlangen-Nürnberg. All rights reserved.