PROGRES

from Wikipedia, the free encyclopedia

PROGRES (for PROgrammed GRaph Replacement Systems or PROgrammed Graph REwriting Systems) is a programming language and an integrated development environment for the same. It has been developed since 1989 at Chair 3 for Computer Science at RWTH Aachen University .

It is particularly suitable for developing CASE tools. So are tools, for example

  • for the support of authors (CHASID),
  • for the analysis of communication systems (E-CARES),
  • for the conceptual building design (ConDes) and
  • for the management of complex processes (AHEAD) has been implemented using PROGRES.

PROGRES is based on directed, attributed and typed graphs . With the help of graphs, extensive and complicated facts can be represented in a clear and structured manner (see also abstract syntax trees and Petri nets ). PROGRES consists on the one hand of a specification language and on the other hand of a complex, integrated environment.

The language

In order to develop a tool with PROGRES, a suitable graph schema with the specification language is first determined, since the nodes and edges of the graphs are typed in PROGRES . It is a two-tier type system , i. H. there are node classes and types, but only types can be instantiated. For example, you could define a node class “Animal” and derive a type “Wolf” from this class. Of this type, you can in turn generate a corresponding object in a work graph, the so-called host graph. Since PROGRES supports object orientation , attributes and methods can be defined for all node classes and types . In contrast to the nodes, the edges in PROGRES are only typed and not attributed.

In addition to the graph schema, graph transformations can be specified graphically and textually. These can be linked to a class and a type of the schema or stand on their own. A simple graph transformation consists of a left and right rule page, whereby a graph pattern is specified in the left side, which is replaced by the right side. When a graph transformation is to be applied, the current host graph is searched until the corresponding pattern on the left is found. This application point is then replaced by the right side. If there are several different application locations in the host graph, one of these locations is selected nondeterministically.

example

As an example, consider the well-known FerryMan problem , where there is a river with two banks and a boat. With the help of the boat, three cargoes (a cabbage, a goat and a wolf) are to be driven to the other bank of the river, whereby the boat can only load one cargo at a time. The problem is that the wolf and the goat are not allowed to be on one side of the bank without the boat driver, otherwise the wolf will eat the goat. The same applies to the goat and the cabbage. This example can be specified with a GuidedTour that is included in the PROGRES release. In addition, preconditions and postconditions, attribute assignments, input and output parameters, etc. can be specified for each graph transformation. In addition to simple transformations, complex transformations can also be modeled. These can e.g. B. be composed of several simple transformations and contain various control structures such as loops and conditions. Because of the underlying database, each transformation fulfills the ACID properties. In addition to the transformations, graph tests and paths can also be defined.

The development environment

The PROGRES environment consists of three integrated tools:

  • a syntax-controlled editor with an analyzer that checks all violations of the static semantics of the language,
  • an interpreter with a corresponding graph browser that supports the specifier in troubleshooting by incrementally executing the specification and
  • a compiler that automatically translates the specification into C or Java source text.

In addition, the UPGRADE framework for PROGRES was developed. With the help of this framework, a graphic tool can be generated from the generated code, which provides the user with a graphic surface and can be adapted according to the requirements of the user.

Web links