Progres


Progres

PROGRES (für PROgrammierte GRaph ErsetzungsSysteme bzw. PROgrammed Graph REwriting Systems) ist eine Programmiersprache und eine integrierte Entwicklungsumgebung für selbige. Es wird seit 1989 am Lehrstuhl 3 für Informatik an der RWTH Aachen entwickelt.

Es eignet sich besonders für die Entwicklung von CASE-Werkzeugen. So sind beispielsweise Werkzeuge

  • für die Unterstützung von Autoren (CHASID),
  • für die Analyse von Kommunikationssystemen (E-CARES),
  • für den konzeptionellen Gebäudeentwurf (ConDes) und
  • für das Management von komplexen Prozessen (AHEAD) mittels PROGRES realisiert worden.

PROGRES basiert dabei auf gerichteten, attributierten und getypten Graphen. Mit Hilfe von Graphen können umfangreiche und komplizierte Sachverhalte übersichtlich und strukturiert dargestellt werden (siehe auch abstrakte Syntaxbäume und Petrinetze). PROGRES besteht zum einen aus einer Spezifikationssprache und zum anderen aus einer komplexen, integrierten Umgebung.

Inhaltsverzeichnis

Die Sprache

Um ein Werkzeug mit PROGRES zu entwickeln, wird zunächst ein geeignetes Graphschema mit der Spezifikationssprache festgelegt, da in PROGRES die Knoten und Kanten der Graphen getypt sind. Es handelt sich hierbei um ein zweistufiges Typsystem, d.h. es gibt Knotenklassen und Typen, wobei nur Typen instanziiert werden dürfen. Zum Beispiel könnte man sich eine Knotenklasse „Animal“ definieren und von dieser Klasse einen Typ „Wolf“ ableiten. Von diesem Typ kann man sich wiederum ein entsprechendes Objekt in einem Arbeitsgraphen, dem so genannten Wirtsgraphen, erzeugen. Da PROGRES die Objektorientierung unterstützt, kann man zu allen Knotenklassen und Typen Attribute und Methoden definieren. Im Gegensatz zu den Knoten sind die Kanten in PROGRES nur getypt und nicht attributiert.

Neben dem Graphschema können Graphtransformationen grafisch und textuell spezifiziert werden. Diese können an eine Klasse und einen Typ des Schemas gebunden sein oder für sich allein stehen. Eine einfache Graphtransformation besteht aus einer linken und rechten Regelseite, wobei in der linken Seite ein Graphmuster angegeben wird, dass durch die rechte Seite ersetzt wird. Wenn eine Graphtransformation angewendet werden soll, wird der aktuelle Wirtsgraph solange durchsucht, bis das entsprechende Muster der linken Seite gefunden wird. Diese Anwendungsstelle wird anschließend durch die rechte Seite ersetzt. Falls es in dem Wirtsgraphen mehrere verschiedene Anwendungsstellen gibt, wird eine dieser Stellen nichtdeterministisch ausgewählt.

Beispiel

Als Beispiel kann man das bekannte FerryMan-Problem betrachten, in dem es einen Fluss mit zwei Uferseiten und ein Boot gibt. Mit Hilfe des Bootes sollen drei Frachten (ein Kohlkopf, eine Ziege und ein Wolf) auf die andere Uferseite des Flusses gefahren werden, wobei das Boot immer nur eine Fracht laden kann. Das Problem liegt darin, dass der Wolf und die Ziege nicht ohne den Bootsführer auf einer Uferseite sein dürfen, da ansonsten der Wolf die Ziege frisst. Analoges gilt für die Ziege und den Kohlkopf. Dieses Beispiel kann mit einer GuidedTour, die im PROGRES-Release enthalten ist, spezifiziert werden. Zusätzlich können zu jeder Graphtransformation Vor- und Nachbedingungen, Attributzuweisungen, Eingabe- und Ausgabeparameter usw. angegeben werden. Neben einfachen Transformationen können auch komplexe Transformationen modelliert werden. Diese können z.B. aus mehreren einfachen Transformationen zusammengesetzt sein und verschiedene Kontrollstrukturen wie Schleifen und Bedingungen enthalten. Durch die unterliegende Datenbank erfüllt jede Transformation die ACID-Eigenschaften. Neben den Transformationen können auch Graphtests und Pfade definiert werden.

Die Entwicklungsumgebung

Die PROGRES-Umgebung besteht aus drei integrierten Tools:

  • einem syntaxkontrollierten Editor mit einem Analysator, der alle Verstöße gegen die statische Semantik der Sprache prüft,
  • einem Interpreter mit einem entsprechenden Graph-Browser, der den Spezifizierer bei der Fehlersuche durch inkrementelles Ausführen der Spezifikation unterstützt sowie
  • einem Compiler, der die Spezifikation automatisch in C- oder Java-Quelltext übersetzt.

Überdies wurde das UPGRADE-Rahmenwerk für PROGRES entwickelt. Mit Hilfe dieses Rahmenwerks lässt sich aus dem generierten Code ein grafisches Tool erzeugen, das dem Benutzer eine grafische Oberfläche zur Verfügung stellt und gemäß den Ansprüchen der Benutzer angepasst werden kann.

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • progrès — [ prɔgrɛ ] n. m. • 1611; « développement » 1532; lat. progressus « action d avancer », de progredi « aller en avant » 1 ♦ Vx Mouvement en avant; action d avancer. ♢ Mod. Avance (d une troupe, d une armée). « Il marque, avec de petits drapeaux,… …   Encyclopédie Universelle

  • Progres — Progrès Le terme de progrès vient du latin progressus qui renvoie à l action d avancer. Ainsi le progrès désigne un passage à un degré plus important, à un état meilleur. Le concept de progrès est utilisé et discuté dans différentes disciplines… …   Wikipédia en Français

  • progrés — PROGRÉS. s. m. Il signifie proprement Avancement, mouvement en avant. Le progrés du Soleil dans l Ecliptique. le progrez journalier du Soleil. arrester le progrés du feu, de l incendie. Il se dit particulierement d une suite de conquestes, d une… …   Dictionnaire de l'Académie française

  • progres — PROGRÉS, (2) progrese, s.n. 1. Dezvoltare, în linie ascendentă; mers înainte, evoluţie. 2. Dezvoltare, schimbare în bine datorită căreia se ajunge la un rezultat scontat ori se atinge un anumit scop. – Din fr. progrès, lat. progressus. Trimis de… …   Dicționar Român

  • PROGRES — (Programme of Research on the Service Economy) is a research programme set up by the Geneva Association, also known as the International Association for the Study of Insurance Economics. It focuses on questions related to regulation, supervision… …   Wikipedia

  • Progrès — (frz. „Fortschritt“) ist der Name von Progrès Versicherungen, eine auf die Krankenversicherung spezialisierte Schweizer Versicherungsgesellschaft mit Sitz in Dübendorf Le Progrès (Lyon), eine französische Regionalzeitung Toyota Progrès, ein… …   Deutsch Wikipedia

  • progres — prògres m DEFINICIJA 1. kretanje prema naprijed; napredak, napredovanje 2. postupan, ali siguran razvoj koji s vremenom donosi boljitak, koji donosi bolje, savršenije, vrednije ili bogatije [tehnički progres] ETIMOLOGIJA lat. progressus ≃… …   Hrvatski jezični portal

  • progres — {{/stl 13}}{{stl 8}}rz. mnż I, D. u, Mc. progressie, zwykle w lp {{/stl 8}}{{stl 7}} rozwój, wzrost, postęp : {{/stl 7}}{{stl 10}}Obserwować, odczuwać progres w rolnictwie, przemyśle. <fr. z łac.> {{/stl 10}} …   Langenscheidt Polski wyjaśnień

  • progrès — PROGRÈS: Toujours mal entendu et trop hâtif …   Dictionnaire des idées reçues

  • prògres — m 1. {{001f}}kretanje prema naprijed; napredak, napredovanje 2. {{001f}}postupan, ali siguran razvoj koji s vremenom donosi boljitak, koji donosi bolje, savršenije, vrednije ili bogatije [tehnički ∼] ✧ {{001f}}lat …   Veliki rječnik hrvatskoga jezika