Mittel der regelbasierten Programmierung reichen oft nicht aus:

Objekt-orientierter Stil bringt Shells auf Vordermann

02.10.1987

Expertensystem-Shells sind inzwischen auch im PC-Bereich längst keine Rarität mehr. Die meisten dieser Systeme basieren auf einem Regelwerk, das jedoch bei der praktischen Arbeit oft zu wünschen übrigläßt. Annette Stamsat* plädiert deshalb für einen Objekt-orientierten Programmieransatz.

Bei genauer Betrachtung der Expertensystem-Shells für den PC zeigt sich, daß die überwiegende Anzahl dieser Systeme ausschließlich auf dem Konzept der Regeln basiert. Das bedeutet, der Entwickler muß sein Wissen in Regeln fassen, aus denen die Inferenzkomponente, zusammen mit der Wissensbasis das Herzstück eines Expertensystems, neues Wissen ableitet, beziehungsweise Probleme löst. Regeln sind aber nicht die einzige und sicher nicht immer die am besten geeignete Möglichkeit, einen Problembereich zu strukturieren. Neben einer Fülle von Wissensrepräsentationsformalismen und Methoden zur Darstellung von Wissen, gewinnt der Objekt-orientierte Ansatz, der bei den Expertensystemschalen für spezielle Workstations zum Standard gehört, auch bei den PC-Shells an Bedeutung. Das hängt sicher auch nicht zuletzt mit der zunehmenden Leistungsfähigkeit der PCs zusammen.

Der Objekt-orientierte Programmierstil wurde Anfang der 70er Jahre in den Xerox-Laboratorien entwickelt. Diese sehr intuitive Form der Programmierung beschreibt die "Welt" als eine Sammlung von Objekten mit bestimmten Eigenschaften, die miteinander über den Austausch von Nachrichten kommunizieren. Objekte werden nach gemeinsamen Eigenschaften zu neuen Objekten, sogenannten Klassen, zusammengefaßt, die ihrerseits zu weiteren Klassen verallgemeinert werden können. Es entsteht eine hierarchische Struktur, entlang der sich Eigenschaften auf Unterklassen vererben. Eine Klasse ist also ein Schema für gleichartige Objekte. Eine weitere Besonderheit von Objekten ist, daß diese die Prozeduren zur Verarbeitung ihrer Daten bereits enthalten. Die starre Trennung zwischen Daten und ihrer Verarbeitung in der herkömmlichen Programmierung ist hier aufgehoben. Eine besonders häufige Fehlerquelle, das Nichtzusammenpassen von Programmen und Datenstrukturen, wird damit ausgeschaltet.

Ein Vorzug dieser Einteilung in Objekte ist sicher eine starke Modularisierung von Programmsystemen, in denen die Objekte Systemkomponenten bilden. Man kann sich vorstellen, wie neue Programme aus bereits vorhandenen Objekten zusammengebaut werden können. Da Daten und Prozeduren in den Objekten gebunden sind, braucht sich der Programmierer über deren Verwaltung keine Gedanken zu machen. Er sorgt nur noch dafür, daß einem Objekt die richtige Botschaft geschickt wird, auf die es zum Beispiel durch den Aufruf einer Prozedur reagiert. Wird ein Objekt dieser Art aktiviert, übernimmt es die vollständige Kontrolle über das System, bis es diese über eine Nachricht an ein anderes Objekt weitergibt. Objekt-orientierte Programmierung bietet somit einen guten Ansatz zur Wiederverwendbarkeit von Programmcodes.

Was hat nun aber die Objekt-orientierte Programmierung mit Expertensystem-Shells zu tun? In der Terminologie der KI entspricht die Form der Wissensrepräsentation einem Programmierstil. Wissensrepräsentationsformalismen sind für Professor Stoyan von der Universität Konstanz gleich Programmiersprachen. So besagt etwa regelorientierte Programmierung, daß Wissen in Form von Regeln dargestellt wird und Objekt-orientierte Programmierung daß Wissen in Form von Objekten repräsentiert ist. Es liegt nun nahe, verschiedene Repräsentationsformen in einem Expertensystem zu verbinden. Eine Shell, die auf einem solchen Ansatz beruht, nennt man hybride Shell. Die für Workstations, oft mit dedizierten Prozessoren, konzipierten Shells fallen meist in diese Kategorie.

Inzwischen gibt es auch einige hybride Shells für den PC. Sie bieten eine Objekt-orientierte Repräsentation, meist basierend auf "Frames", neben der Möglichkeit, Regeln zu definieren, die auf diesen Frames operieren können. Frames entsprechen in der Terminologie der Objektsprache den Klassen, wobei die Eigenschaften hier "SIots" heißen. In einem Slot können Daten, aber auch Prozeduren oder andere Frames verborgen sein. Slots können Fragetexte für Benutzeranfragen, erwartete Antwortbereiche, Defaultwerte, Kommentartexte, Evidenzwerte und Prozeduren enthalten, die automatisch aufgerufen werden, wenn der Wert eines Parameters geändert wird. Eine solche Prozedur kann zum Beispiel in der graphischen Darstellung dieses Werts auf dem Bildschirm bestehen.

Darüber hinaus hat der Benutzer bei einigen dieser Schalen die Möglichkeit, sogenannte Metaregeln zu definieren, das heißt Regeln nach Ähnlichkeitsmerkmalen zu Gruppen zusammenzufassen und damit die Idee der Klassifizierung auch auf Regeln anzuwenden. Solche "Regeln über Regeln" werden Kontexte genannt. Dieser Sprachgebrauch impliziert auch schon ihre Bedeutung. Es geht darum, die Regelmenge zu strukturieren und in Gruppen einzuteilen, auf die die Suche in einem bestimmten Zusammenhang eingeschränkt werden kann. Gegenüber dem vollständigen Durchsuchen der gesamten Regelbasis bringt dieses Vorgehen einen erheblichen Performence-Vorteil mit sich.

Die meisten dieser hybriden Shells sind wie ihre größeren Schwestern in einem Lisp-Dialekt implementiert. Lisp-Programmierkenntnisse sind unerläßlich, wenn man die Möglichkeit der Definition von Prozeduren nutzen will. Trotz dieser und weiterer Einschränkungen, unter anderem die manchmal schlechtere Performance in Lisp implementierter Systeme, bietet der Objekt-orientierte Darstellungsformalismus eine interessante Erweiterung der bisherigen ausschließlich regelverarbeitenden Systeme.