Zielsetzung, Definition und Klassifikation:

Kurze Einordnung der dritten bis fünften Softwaregeneration

08.11.1991

Ausgehend von einem uniformen Modell für die Informationsverarbeitung werden im folgenden verschiedene Softwaregenerationen betrachtet. Die dritte Generation wird charakterisiert als maschinenunabhängige und prozedurale Formulierung von Problemlösungen. Als wesentliches Merkmal der vierten Generation wird die Integration von Datenbanksystemen und Werkzeugen hervorgehoben. Das Kennzeichen der fünften Softwaregeneration ist die Verarbeitung von Wissen.

Das Prinzip der Informationsverarbeitung läßt sich in einfachen Modellen darstellen (siehe Abbildung 1). Wie schon der Name besagt, stehen dabei die zwei Begriffe Information und Verarbeitung im Mittelpunkt. Es ist deshalb naheliegend, informationsverarbeitende Systeme in zwei Komponenten zu zerlegen, eine zur Speicherung von Information und eine zur Bereitstellung von Verarbeitungsoperationen. Der Anstoß zur Verarbeitung von Information wird dadurch gegeben, daß ein Problem auftritt, das Ziel der Verarbeitung ist, eine Lösung zu finden.

Fünf Generationen von Software

Heutzutage ist Informationsverarbeitung fast untrennbar mit Computern verbunden. Im Verlauf von deren zirka 40jähriger Entwicklungsgeschichte sind verschiedene Ausprägungen des obigen Modells entstanden. Verschiedene Entwicklungsstufen wurden schlagwortartig als Generationen benannt. Man spricht derzeit von fünf unterschiedlichen Softwaregenerationen, die in den nachfolgenden Abschnitten etwas näher betrachtet werden. Dabei wird stets eine die jeweilige Generation kennzeichnende Ausprägung des allgemeinen Modells der Informationsverarbeitung (siehe Abbildung 1) als Ausgangspunkt verwendet.

Noch ein Hinweis vorneweg: Keine Modellierung und keine Klassifikation ist unantastbar und unumstößlich. Es wird stets Fälle geben, welche das vorgegebene Modell nicht genau überdeckt und bei welchen eine Zuordnung zu mehr als einer Kategorie nötig oder zuverlässig wäre. Die größten Schwierigkeiten bereitet dabei die vierte Softwaregeneration! Während die dritte und fünfte dieser Generationen sehr genau durch

einige wenige Merkmale zu charakterisieren sind, fehlen der vierten Generation solche Kennzeichen weitgehend.

Die ersten drei Generationen von Programmiersprachen orientieren sich alle an der auf John v. Neumann zurückgehenden Architektur von Computern. Diese ist gekennzeichnet durch die Ablage von Information in einem Speicher und ihre Verarbeitung durch einen Prozessor (siehe Abbildung 2).

Der Speicher enthält sowohl die zur Bearbeitung des Problems benötigten Daten als auch das die Bearbeitung steuernde Programm. Die Aufgabe des Entwicklers zerfällt in die Festlegung

- der Speicherbelegung durch die Vereinbarung von Daten

- geeigneter Operationen durch die Vereinbarung von Prozeduren

- der Reihenfolge, in der Operationen anzuwenden sind ("Kontrollfluß")

- welche Daten welcher Operation zuzuleiten sind ("Datenfluß").

Mit anderen Worten, der Entwickler hat einen Prozeß zu beschreiben, dessen Einzelschritte aus Operationen zur schrittweisen Änderung der Speicherbelegung bestehen. Man spricht deshalb in diesem Zusammenhang auch häufig von prozeduraler Programmierung.

In den ersten beiden Softwaregenerationen war die Beschreibung von Daten und Programmen zugeschnitten auf einzelne Rechner oder Rechnerfamilien. Dabei war in der ersten Generation die gesamte Information binär (oder dezimal) verschlüsselt. Der Übergang zur dritten Softwaregeneration wurde durch die symbolische Darstellung von Programmelementen wie Konstanten, Variablen, Marken, Operationscodes etc. vollzogen. Man bezeichnet diese Form der Softwareerstellung auch heute noch als Assemblerprogrammierung. Jeder Rechnertyp besitzt seine eigene Assemblersprache, die zumeist mit der einer anderen Computerfamilie nicht verträglich ist.

Erst die dritte Generation von Softwaresystemen brachte die Unabhängigkeit von Maschinentypen mit sich. Daten und Programme konnten von nun an in einer Form dargestellt werden, in welcher Details verschiedenartiger Computer, wie etwa

- Speicherstruktur, Wortlänge

- Adressierungsarten

- Aufbau und Funktion von Registern

- Aufruf-/Rückkehr-Mechanismen bei Unterprogrammen verborgen bleiben. Programme müssen aber vor ihrer eigentlichen Abwicklung auf einem Computer in eine für diesen verständliche Form übersetzt werden. Diese Aufgabe übernehmen sogenannte Compiler.

Zusammenfassend lassen sich Softwaresysteme der dritten Generation durch zwei Merkmale charakterisieren:

1. Die Darstellung von Programmen ist losgelöst von Architekturdetails der sie abwickelnden Computer (Maschinenunabhängigkeit).

2. Die Wirkung von Programmen entspricht einem aus Transformationen der Speicherbelegung zusammengesetzten Prozeß (prozedurale Programmierung).

Neuartige Programmierkonzepte

Fortran war die erste bedeutende Programmiersprache der dritten Generation. Weitere Meilensteine in deren Entwicklungsgeschichte sind

- Algol-60, Cobol (Anfang der sechziger Jahre)

- PL/I, Algol-68 (Ende der sechziger Jahre)

- Pascal (Anfang der siebziger Jahre)

- Modula, ADA (Anfang der achtziger Jahre)

Die Anzahl der heutzutage existierenden Sprachen der dritten Generation ist unüberschaubar. Sie enthalten die verschiedenartigsten Ausdrucksmittel für die Beschreibung von Programmen. Ihrem prozeduralen Charakter entsprechend besitzen sie alle aber Konstruktionen für die Strukturierung von Daten (Felder, Verbunde, Mengen, Dateien, Zeiger etc.) sowie für die Steuerung des Kontrollflusses (Schleifen, Verzweigungen, Sprünge, Unterprogrammaufrufe). Der Datenfluß kann durch verschiedene Arten der Parameterübergabe festgelegt werden, die durch die Bezeichnungen call-by-value, call-by-copy, call-by-name, call-by-reference charakterisiert sind. In der Literatur sind diese Bestandteile prozeduraler Programmiersprachen ausführlich beschrieben.

Kennzeichen der dritten Generation

Moderne Vertreter der dritten Softwaregeneration enthalten Ausdrucksmittel für die Erstellung von Programmen, die weit über die Ausstattung früher Sprachen, wie Fortran oder Cobol, aber auch Pascal, hinausgehen. Solche neuartigen Programmierkonzepte sind unter anderem die

- Bildung abstrakter Datentypen

- Beschreibung paralleler Prozesse

- Behandlung asynchron auf tretender Ausnahmesituationen

- Verwendung von Programmschablonen.

Sie sollen hier kurz skizziert werden.

Ein Datentyp legt eine Menge von Werten sowie die Gesamtheit der darauf anwendbaren Operationen fest. Abstrakte Datentypen besitzen zwei typische Merkmale: Erstens, es ist ausgeschlossen, daß mit anderen als den explizit festgelegten Operationen auf Werte des Typs zugegriffen wird.

Zweitens, die Struktur der Werte und die Einzelschritte der Zugriffsoperationen bleiben dem Benutzer eines abstrakten Datentyps verborgen. Dies alles wird erreicht durch eine strenge Zweiteilung zwischen sichtbaren und unsichtbaren Bestandteilen. Man spricht hierbei im allgemeinen von der Spezifikation (sichtbar) und Implementierung (unsichtbar) abstrakter Datentypen. Die Vorteile dieser Vorgehensweise liegen, in der damit erzielbaren Informationsabkapselung und der daraus resultierenden Modularität, Sicherheit und Änderbarkeit von Softwaresystemen.

Häufig läßt sich die Lösung eines Problems in mehrere voneinander weitgehend unabhängige Prozesse zerlegen. Diese Prozesse stimmen lediglich von Zeit zu Zeit ihr weiteres Vorgehen ab, indem sie zum Beispiel an vereinbarten Treffpunkten aufeinander warten oder durch den Austausch von Signalen und Daten miteinander kommunizieren. In alten Sprachen der 3. Generation wird die vorhandene Parallelität in Berechnungen durch sequentielle Steuerung des Kontrollflusses verdeckt. Moderne Sprachen hingegen enthalten Konzepte, wie Monitore, Coroutinen, Rendezvous und Botschaften, welche die Beschreibung und Synchronisation nebenläufiger Kontrollflüsse erlauben.

Die Sicherheit von Softwaresystemen wird wesentlich erhöht, wenn der Entwickler die Möglichkeit hat, für eventuell eintretende Ausnahmesituationen geeignete Reaktionen festzulegen. Sollte eine solche Situation tatsächlich beim Lauf eines Programms eintreten, verzweigt die Kontrolle zu einer dafür vorbereiteten Behandlungsroutine. Das Programm bricht also nicht einfach ab, sondern versucht durch Beseitigung des aufgetretenen Fehlers eine sinnvolle Fortsetzung zu finden. Nach Abschluß der Fehlerbehandlung verläßt der Kontrollfluß im allgemeinen diejenige Programmeinheit, bei deren Durchführung die Ausnahmesituation auftrat.

Programmbausteine, wie etwa Prozeduren, gleichen sich häufig sehr stark. So können zum Beispiel Sortierprozeduren für Zahlen, Zeichenketten und Datensätze über Personen weitgehend identisch aufgebaut sein. Unterschiede bestehen lediglich in den verschiedenen Typbezeichnungen für die Parameter. Sprachen wie Fortran und Pascal erzwingen vom Programmierer die Bereitstellung dreier Routinen mit verschiedenen Namen. In modernen Sprachen, etwa ADA, würde der geübte Programmierer statt dessen eine Schablone (generic unit) für die Sortierprozedur bereitstellen. Diese Schablone kann nicht zum Sortieren von Daten verwendet werden, es können aber von ihr beliebig viele Exemplare aufrufbarer Sortierprozeduren hergestellt werden. Dieses Prinzip ist in Abbildung 3 grafisch dargestellt.

Programmiersprachen der dritten Generation haben ganz entscheidend zu den heutigen weitverzweigten Anwendungen von Computern beigetragen. Sie abstrahieren im Laufe ihrer zirka 30jährigen Entwicklungsgeschichte immer mehr von den Architekturdetails verschiedener Computersysteme. Geblieben ist aber ihre VerwurzeIung in der prozeduralen Lösung von Problemen. Das bedeutet, daß Sprachen der dritten Generation nur dann zur Erstellung von Programmen verwendet werden können, wenn für das zu lösende Problem ein Algorithmus bekannt ist. Die meisten Methoden des modernen Software Engineering sind auf die systematische Entwicklung von Algorithmen und ihre Umsetzung in Sprachen der dritten Generation ausgerichtet.

Bereiche, in denen für die Lösung von Problemen keine Algorithmen bekannt sind oder in denen die Anwendung von Algorithmen unnatürlich ist, eignen sich nicht für den Einsatz von Systemen der dritten Generation. Ein solcher immer mehr an Bedeutung gewinnender Problembereich ist die Wissensverarbeitung. Für sie sind Programmiermethoden der fünften Generation weitaus besser geeignet. Auch andere Aufgabenstellungen der sogenannten Künstlichen Intelligenz, wie Verarbeitung natürlicher Sprache, Robotik, lernende Systeme, Interpretation von Bildern, Analyse und Diagnose, Überwachung von Systemen, Konfigurierung und andere, sind für den Einsatz von Sprachen der dritten Generation nur bedingt geeignet.

In Abbildung 4 ist die für die fünfte Softwaregeneration typische Ausprägung eines informationsverarbeitenden Systems dargestellt. Information entspricht Wissen, ihre Verarbeitung setzt sich zusammen aus

- dem Wissenserwerb

- der Wissensdarstellung

- der Wissensherleitung.

Die Art der Herleitung von Wissen ist stark abhängig von der gewählten Form der Wissensdarstellung. Auf die wichtigsten Varianten davon wird im nächsten Abschnitt ausführlicher eingegangen.

Merkmale der fünften Generation

Das wesentliche Merkmal der fünften Softwaregeneration ist die Verarbeitung von Wissen. Bei den Systemen der dritten und vierten Generation setzt sich die zu verarbeitende Information aus Zahlen und Zeichenketten zusammen. Diese Art von Information ist deskriptiv, das heißt, sie beschreibt gewisse Attribute eines Objekts, wie etwa Farbe, Leistung, Fabrikat, Modell und Baujahr eines Autos. Neben deskriptivem Wissen enthält eine Wissensbasis auch sogenanntes operationales Wissen. Dadurch wird beschrieben, wie aus bereits bekanntem Wissen neues Wissen hergeleitet werden kann. Näheres dazu wird im folgenden Abschnitt erläutert.

Neben der Feststellung, daß Wissen im Mittelpunkt der fünften Softwaregeneration steht, ist die nichtprozedurale Lösung von Problemen ein zweites typisches Merkmal. Die Aufgabe des Entwicklers besteht in der Formulierung dessen, was er zu einem Problem weiß und nicht wie ein Algorithmus schrittweise eine Lösung erreicht. Anders ausgedrückt, die in Abb. 4 als Wissensherleitung gekennzeichnete Komponente eines wissensverarbeitenden Systems arbeitet unabhängig vom Inhalt der Wissensbasis stets nach dem gleichen Prinzip. Der Herleitungsmechanismus kann deshalb fest in dem System verankert werden. Dies ist vergleichbar mit einem Motor in einem Auto, der dort, unabhängig von Geschlecht und Alter des Fahrers, der Zahl der Insassen, der Fahrtrichtung sowie der Geschwindigkeit, stets nach dem gleichen Prinzip arbeitet. Sowenig wie der Käufer eines Autos für den Bau eines Motors verantwortlich ist, sowenig hat sich der Entwickler eines wissensverarbeitenden Systems um die Implementierung eines Mechanismus für die Herleitung neuen Wissens zu kümmern.

Grundlagen der Wissensverarbeitung

Die heutzutage am häufigsten verwendeten Arten der Wissensverarbeitung beruhen auf

- Produktionsregeln

- Prädikatenlogik

- Rahmen (frames).

In regelbasierten Systemen wird Wissen dargestellt in der Form

wenn ... Bedingungen ... dann... Aktionen...

Die Aktionen können darin bestehen, Schlußfolgerungen zu ziehen, oder aber Änderungen von Systemzuständen bewirken. Man spricht im ersten Fall von Analysesystemen, im zweiten Fall von Synthesesystemen.

Die Herleitung von Wissen in regelbasierten Systemen beruht auf der Verkettung von Produktionsregeln. Dies kann entweder vorwärts oder rückwärts erfolgen. Bei der Vorwärtsverkettung kommen für die Herleitung weiteren Wissens solche Regeln in Betracht, deren Bedingungen alle erfüllt sind. In der linken Hälfte von Abbildung 5 ist diese Art der Verkettung für zwei Regeln dargestellt, nämlich

wenn A und B dann D

wenn C und D dann E

Schlußfolgerungen als Hypothesen formuliert

Bei Analysesystemen ist zumeist die Rückwärtsverkettung von Regeln anzutreffen. Schlußfolgerungen werden zunächst als Hypothesen formuliert und danach bestätigt oder wieder verworfen. Ausgehend von den zuletzt genannten Regeln ist die Bestätigung einer Hypothese E in der rechten Hälfte von Abbildung 5 veranschaulicht.

In rahmenbasierten Systemen zur Verarbeitung von Wissen wird dieses durch Zusammenfassung von Attribut-Wert-Paaren dargestellt. Jedes solche Paar füllt ein Fach. Logisch zusammengehörige Fächer ergeben einen Rahmen. Abbildung 6 veranschaulicht diesen Ansatz.

Die Wertebereiche für Attribute können sehr verschiedenartig sein, insbesondere auch Operationen umfassen, die beim Zugriff auf Attribute angestoßen werden. Die Formulierung von Wissen über einen Ball kann zunächst etwa aus den Fächern

(Form: rund)

(Material: Leder)

(Durchmesser: 30)

bestehen. Im Zusammenhang mit Bällen ist jedoch auch Wissen nützlich, wie man sie fängt und wirft. Dieses könnte durch Fächer

(Fangen: ...Prozedur-Fangen...)

(Werfen: ...Prozedur-Werfen...)

dem obigen deskriptiven Wissen über Form, Material und Durchmesser eines Balles hinzugefügt werden.

Rahmen können hierarchisch angeordnet werden. Dies geschieht mittels Attributen, deren Werte Verweise auf andere Rahmen sind. So könnte etwa aus einem anderen Rahmen zur Beschreibung eines Kindes heraus mittels eines Fachs (spielt - mit: "Ball") auf den gerade beschriebenen Rahmen "Ball" verwiesen werden. Die gesamte Wissensbasis nimmt somit die Gestalt eines Netzes von Rahmen ein. Die Herleitung von Wissen geht über in das Durchsuchen eines Netzwerkes. Dabei häufig verwendete Suchstrategien sind: Tiefensuche (depth-first), Breitensuche (breadth-first) oder heuristische Suche (etwa best-first, hill-climbing, constraint-satisfaction, means-ends-analysis).

Wissensverarbeitung auf der Basis von Prädikatenlogik (6) verwendet zur Darstellung von Wissen logische Formeln:

A falls B und C und ...

Diese besagen, daß die Aussage A zutrifft, falls die Aussagen B, C,... alle zutreffen. Einen Spezialfall davon stellen Formeln dar, deren Wahrheit von keinerlei Voraussetzung abhängt.

Man bezeichnet sie als Tatsachen. Ein ebenso einfaches wie mächtiges Verfahren zur Herleitung neuer logischer Formeln ist die sogenannte Resolution. Angewandt auf die beiden Formeln

(1) A falls B und C und D

(2) C falls E und F

ergibt sie die neue Formel

(3) A falls B und E und F und D

Letztere entstand durch Ersetzung der Aussage C in Formel (1) durch die in Formel (2) festgelegten Voraussetzungen für die Wahrheit von C.

Zwischen regelorientierter und logikorientierter Programmierung besteht eine enge Verwandtschaft. Logische Formeln der oben beschriebenen Art können als Regeln verstanden werden, deren Aktionsteil aus genau einer logischen Schlußfolgerung besteht. Die Herleitung von Formeln durch Resolution entspricht der Rückwärtsverkettung von Produktionsregeln.

Es gibt außer den hier beschriebenen Varianten der Wissensdarstellung und -herleitung noch weitere, wie etwa semantische Netze, Objekte und Skripts.

Naturgemäß finden Systeme der fünften Softwaregeneration hauptsächlich dort ihre Anwendung, wo es um die Verarbeitung von Wissen geht. Dies ist in erster Linie eine Domäne der Künstlichen Intelligenz, insbesondere der von Expertensystemen. Darunter versteht man Programme, die in der Lage sein sollen, in bestimmten Bereichen der Leistungsfähigkeit menschlicher Experten bei der Lösung von Problemen zu entsprechen. Es ist wohl unmittelbar einsichtig, daß dabei der richtigen Implementierung des Expertenwissens entscheidende Bedeutung zukommt.

Die von derzeitigen Expertensystemen mehr oder weniger gut beherrschten Aufgabenstellungen verteilen sich auf mehrere Kategorien, zum Beispiel

- Interpretation von Meßdaten

- Diagnose von Krankheiten und fehlerhaftem Verhalten technischer Systeme

- Entwurf von Systemen

- Planung von Aktionen

- Überwachung von Prozessen

- Vorhersage zukünftiger Ereignisse.

Derlei Aufgabenstellungen fallen in den verschiedensten Gebieten an, etwa in der Chemie, Elektronik, Geologie, Jura, Maschinenbau, Mathematik, Medizin, Meteorologie, Physik, Weltraumforschung und selbstverständlich in Hardware- und Softwarebereichen der modernen Datenverarbeitung.

4GL: Entstehung und Merkmale

Die Zahl der Computeranwendungen hat in den letzten beiden Jahrzehnten explosionsartig zugenommen. Lange Zeit wurden in Betrieben die anfallenden Aufgaben jeweils in einem zentralen Rechenzentrum abgewickelt, wohin die Fachabteilungen ihre Problemstellungen leiteten. Da die Mitarbeiter dieser Abteilungen zumindest keine oder nur wenige EDV-Kenntnisse besaßen, wurden häufig die Problemstellungen in einer mißverständlichen und für die Bearbeitung durch den Computer ungeeigneten Form beschrieben. Die vom Rechenzentrum schließlich erstellte Lösung entsprach in den meisten Fällen nicht den Erwartungen der Auftraggeber. Die teilweise mehrfache Überarbeitung der Lösung durch das Rechenzentrum führte zu riesigen Rückstaus in den Fachabteilungen und zu einer totalen Überlastung des zentralen Rechenzentrums.

Einen Ausweg aus dieser Misere versuchte man auf dem Wege zu erreichen, möglichst viele der anfallenden Probleme direkt in den betroffenen Fachabteilungen mittels Computern erledigen zu lassen. Dieser Trend wurde durch die Entwicklungen auf dem Hardwaresektor in Form von billigen Terminals, Personal Computern und Arbeitsplatzrechnern unterstützt. Auf einmal hatten die Mitarbeiter in Fachabteilungen leichten Zugang zu Computern. Was aber immer noch fehlte, waren Kenntnisse zur sinnvollen und wirksamen Ausnutzung der sich so eröffnenden Möglichkeiten. Benötigt wurden Softwaresysteme, die leicht verständliche und gut handhabbare Werkzeuge für den Umgang mit Computern darstellten.

Einfache Bearbeitungsprozeduren

Softwaresysteme der dritten Generation konnten diese Dienste nicht bieten, da ihre Beherrschung einen Arbeitsaufwand erforderte, der oft in keinem sinnvollen Verhältnis zur Komplexität des zu lösenden Problems mehr stand.

In Abbildung 7 ist das Modell der vierten Softwaregeneration dargestellt. Die meisten Anwendungen in den Fachabteilungen von Unternehmen erfordern die Bearbeitung großer Datenbestände. Gemessen am Umfang der zu betrachtenden Datenmengen, sind die Bearbeitungsprozeduren recht einfach aufgebaut. Beispiele dafür sind

- Erstellung von Diagrammen und Tabellen

- Lohnabrechnung

- Verwaltung von Personaldaten

- Auftragsüberwachung.

Es gibt verschiedene Kategorien von Softwaresystemen der vierten Generation, auf die im nächsten Abschnitt ausführlicher eingegangen wird. Leider gibt es, im Gegensatz zur dritten und fünften Softwaregeneration, keine Merkmale, weiche ein Produkt eindeutig als einen Vertreter der vierten Generation prägen könnten.

Allzu häufig erfolgt deshalb eine entsprechende Zuordnung ausschließlich nach Marketing-Gesichtspunkten! Dennoch soIlen nachfolgend einige Eigenschaften erwähnt werden, die dabei normalerweise anzutreffen sind.

Systeme der vierten Generation sollten dialogorientiert sein. Eben da ihre Benutzer im allgemeinen keine umfangreichen EDV-Kenntnisse besitzen, ist eine interaktive Führung angebracht. Fenstertechnik und Menüsteuerung erleichtern zudem den Umgang mit dem Computer. Die Manipulation der Datenbasis erfolgt häufig nichtprozedural, um den Benutzer nicht mit den Details des Ablaufs einer Operation zu belasten. Allerdings besteht dabei die große Gefahr, daß der allzu sorglose Anwender mittels harmlos aussehender Kommandos aufwendige Prozesse auslöst, deren Wirkung bei näherer Betrachtung auf einfacherem Wege auch anders zu erreichen wäre. Ein weiteres Merkmal von Systemen der vierten Generation ist das Vorhandensein von Spezialpaketen zur Erledigung sehr spezifischer Aufgaben, wie etwa

- Finanzplanung

- Fertigungsplanung

- Lagerhaltung

- Terminplanung

- statistische Analysen.

Zusammenspiel der Komponenten

Das Zusammenspiel der in Abbildung 8 dargestellten Komponenten sollte sehr gut koordiniert ablaufen. Es hat sich dabei bewährt, die Anwendung von Werkzeugen auf eine Datenbasis mittels eines Datenkatalogs (data directory, data dictionary) zu steuern. Damit kann wirkungsvoll für eine Überwachung von Zugriffsrechten, Einhaltung von Konsistenzbedingungen, Voreinstellung von Datenformaten, Gestaltung von Berichten und Bildschirmmasken, grafische Darstellung von Datenbeständen gesorgt werden.

Manche Systeme, die der vierten Generation zugerechnet werden (zumindest seitens ihres Herstellers!), besitzen im wesentlichen nur die Fähigkeit, einfache Anfragen an Datenbestände formulieren zu können. Dabei gibt es gewisse Unterschiede dahingehend, ob die Zugriffe in textueller oder grafischer Form angegeben werden können, ob beliebige oder fest vorgegebene Felder von Datensätzen als Schlüssel verwendet werden können und ob Suchoperationen durch die Abgrenzung von Wertebereichen ausgelöst werden können.

Operationen zur Datenmanipulation nötig

Häufig sind Anfragesprachen für die Lösung von Problemen nicht leistungsfähig genug. Man benötigt vielmehr Operationen zur Datenmanipulation, wie etwa das Einfügen, Entfernen und Anpassen von Datensätzen.

Eine weitere Kategorie von Systemen der vierten Generation umfaßt Entscheidungshilfen. Diese erlauben dem Benutzer die Formulierung von Fragen der Art "Was wäre, wenn ... ?". Daten werden in zwei- oder mehrdimensionale Formulare eingetragen, deren Felder durch Formeln miteinander verknüpft werden.

Jede Änderung eines Datenfeldes wird automatisch an die davon betroffenen Felder weitergereicht.

Die bisher erwähnten Anfragesprachen, Datenmanipulationssprachen und Entscheidungshilfen bilden eigentlich nur die ersten Schritte auf dem Wege zu solchen Systemen, die man mit Fug und Recht oberhalb der dritten Generation anordnet. Stellvertretend für eine Vielzahl solcher Produkte seien hier genannt.

Diese und ähnliche Systeme bezeichnet man häufig als Anwendungsgeneratoren. Ihre Leistungsfähigkeit übersteigt bei weitem die von Anfrage- und Datenmanipulationssprachen sowie von Entscheidungshilfen. Ihrer Mächtigkeit wegen ist es aber oft zweifelhaft, ob sie von Sachbearbeitern in Fachabteilungen richtig genutzt werden können.