[home] [examples]

A-Netze - Modellieren komplexer Prozesse


Frequently Asked Questions

 



 

Was sind A-Netze?

A-Netze modellieren, simulieren und implementieren komplexe nebenläufige Prozesse. Sie sind geeignet, diese Prozesse über Netzwerke miteinander zu koppeln.
Dabei werden die Prozesse in mehrere (beliebig viele) Perspektiven aufgeteilt.

Zentral ist eine grafische Entwicklungsumgebung, die sich an Petri-Netze anlehnt.
Innerhalb dieser Umgebung lassen sich die A-Netz-Prozesse konzipieren, simulieren und können in Echtzeit reale Prozesse steuern und ausführen.
(Siehe Beispiel)
 

Welches sind die wesentlichen Besonderheiten?

A-Netze sind mehrdimensional strukturiert

Wir glauben, dass Menschen in Allerwelts-Situationen mehrdimensional denken. Das heißt, sie betrachten abhängig vom Standpunkt und dem Fokus unterschiedliche Abstraktionen von den verschiedenen Eigenschaften der modellierten Objekte und der Prozesse. Zum Beispiel gibt es bei einem Verkauf in einem Webshop unterschiedliche Perspektiven für die Lagerhaltung, die Rechnungstellung, den Versand, die Kundenbeziehung usw.  Menschen wechseln unbewusst und mühelos zwischen diesen Perspektiven und behalten dabei deren Abhängigkeiten untereinander im Blick.
Genauso werden Perspektiven als neues Strukturelement für das Programmieren mit A-Netzen verwendet und auch sehr komplexe Vorgänge sind so übersichtlich zu implementieren. Jede Perspektive kann getrennt bearbeitet und getestet werden. Die verschiedenen Perspektiven werden auf intuitive Weise synchronisiert und das Gesamtsystem verhält sich konsistent 

A-Netze sind hierarchisch strukturiert

In jeder Perspektive können Transitionen Unternetze enthalten um Details zu kapseln. Das Verhalten außerhalb dieser verfeinerten Transitionen wird dadurch nicht beeinflusst. Die Vorgänge in den anderen Perspektiven können je nach Bedarf mit nur der äußeren Transition oder mit Transitionen des Teilnetzes gekoppelt werden. 

A-Netze verwenden Objekte

Ähnlich wie bei bekannten Weiterentwicklungen von Petri-Netzen sind die "Token" in A-Netzen voll funktionsfähige Objekte. (In unserem Prototyp sind es Java-Objekte.) Diese können interne Zustände ändern oder Seiteneffekte bewirken und haben auf diese Anschluss zu allen traditionell programmierten Anwendungen für Berechnungen, Benutzerschnittstellen, Netzwerkaktionen, Sensoren, Aktoren etc.

Die einzelnen A-Netz-Token innerhalb einer Perspektive werden Aspekte genannt um zu unterstreichen, dass sie nur einen Teil der Eigenschaften und Methoden des aus mehreren Aspekten bestehenden modellierten Gesamtobjekts darstellen.

Aspekte die zum selben Gesamtobjekt gehören werden Siblinks genannt. Die Schreibweise bezieht sich darauf, dass sie miteinander verlinkt sind und damit die Vorgänge in den Perspektiven synchronisieren. In dem Webshop-Beispiel könnte es für einen Kunden je einen Siblink in der Rechnungsperspektive, der Versandperspektive und der Kundenbeziehungsperspektive geben, nicht aber in der Lagerhaltungsperspektive.

A-Netze modellieren Assoziationen

Transitionen mit dem gleichen Namen (Label) in verschiedenen Perspektiven symboliesieren den gleichen Vorgang. Solche assozieierten Transitionen schalten gleichzeitig. Die hierarchische innere Struktur dieser Transitionen kann in einer Perspektive ganz einfach sein und in einer anderen Perspektive sehr komplex. So kann in der Versandperspektive die Transition "RechnungErstellen" unstrukturiert sein und die damit in der Rechnungsperspektive assozierte komplexe Transition "RechnungErstellen" übersichtlich steuern.  

A-Netze lassen sich dynamisch ändern

A-Netze sehen vor, dass sie zur Laufzeit geändert werden. Dabei unterbrechen lokale Änderungen nicht die Vielzahl der Unterprozesse des Gesamtsystems, die damit nicht direkt in Verbindung stehen. Zum Beispiel könnte dem ein weitere Standort für die Lagerhaltung hinzugefügt werden, ohne dass das Shopsystem angehalten werden muss. Die grafische Darstellung der Perspektiven hilft dabei, dass die Änderungen keine unerwünschten Auswirkungen haben.
Es können für Testzwecke (Debugging) oder für geforderte Complience oder andere Restraints spezielle Perspektiven zur Laufzeit hinzugefügt werden, ohne das produktiv geschaltete System ungewollt zu behindern. 
(Das ist mit unserem Prototyp getestet worden.) 

A-Netze kommunizieren miteinander

Man kann A-Netze mit anderen Netzen zu sehr großen Strukturen verbinden, indem man Siblinks zwischen bisher getrennt vorhandenen (und laufenden) Netzen erzeugt. Dieser Link ähnelt einem Weblink und das verknüpfte Netz kann sich auf irgend einem anderen Rechner befinden. Damit lassen sich Prozesse genauso universell weltweit vernetzen wie Dokumente mit dem HTTP-Protokoll.
Der Datenfluss zwischen den verteilten Teilnetzen kann gut kontrolliert und sehr gering gehalten werden. Siblinks können dadurch keine vertraulichen Details aus ihrer Perspektive weitergeben.
(Dies ist im Prototyp noch nicht implementiert.) 

A-Netze sind Subjekt-orientiert

Anders als bei herkömmlichen Implementierungen von Petri-Netzen wird bei A-Netzen die Schaltmenge nicht aus der Sicht der Perspektive gesteuert, sondern von den Aspekten. Damit werden zwar bekannte Analysewerkzeuge für Petrinetze nicht mehr anwendbar, aber dies ermöglicht auf einfache Weise die verteilte nebenläufige Ausführung. Es kommt dabei zu einer automatischen Lastverteilung.)
(Das haben wir durch Simulieren von mehreren Prozessoren getestet.)

A-Netze vermeiden Konflikte

A-Netze garantieren nicht, dass bei Vorliegen der Voraussetzng eine bestimmte - oder gar eine optimierte - Schaltfolge ausgeführt wird. Stattdessen gibt es eine schwächere Garantie: Wenn es mögliche Schaltvorgänge gibt, wird eine davon ausgeführt. Die Prüfung geht von den Aspekten aus. Jeder Aspekt kann Prüfen, ob es Transitionen gibt, mit denen er eine Schaltmenge mit anderen Aspekten und Siblinks zum Schalten findet. Die Reihenfolge, in der diese Prüfung stattfindet wird durch Prioritäten gesteuert. Nur wenn ein anderer paralleler Prozess die gleichen Aspekte verwendet wird mit einem Timestamp entschieden, welcher Prozess zum Zuge kommt. Diese Konflikte sind selten und widersprechen nicht der oben genannten Garantie.
(Das wurde im Prototyp getestet.)

A-Netze sind persistent

Alle A-Netz-Strukturen (Perspektiven, Transitionen, Stellen, Kanten, Aspekte) können in einer bzw. mehreren Datenbanken gehalten werden. Ein Schaltvorgang kann dann als atomare Transaktion auf die Datenbank abgebildet werden. Das bedeutet, dass die Vorteile einer Datenbank bezüglich Ausfallsicherheit auf die A-Netze übertragen werden können.
(Im Prototyp wurde das noch nicht realisiert, sondern die Netze als serialized object gespeichert. Vermutlich sind die heute verfügbaren Graph-Datenbanken besonders geeignet.)

A-Netze sind einfach

Obwohl A-Netze sehr komplexe Aufgaben lösen können, ist die grafische Darstellung auch von Nicht-Experten sofort zu verstehen. Auch und besonders das Aufteilen auf Perspektiven scheint der intuitiven Vorstellung zu entsprechen.
Diese Erwartung hat sich bei  unseren Vorträgen bestätigt.

Was bedeutet das A in A-Netze?

Am Anfang sollte das A auf die Assoziationen zwischen Transitionen in verschiedenen Perspektiven hinweisen. Später bekamen die A-Netz-Token die Bezeichnung Aspekt. A-Netz könnte also als Abkürzung für Assoziatives Aspekt-Netz stehen. (Diese Namenswahl fand schon statt, bevor anderswo das so gennante "Aspect Oriented Programming" AOP entwickelt wurde. Die AOP-Konzepte haben durchaus einige ähnliche Ziele wir unsere A-Netze, erreichen diese aber auf ganz andere Weise.)

Welcher Lizenz unterliegt die A-Netz-Software?

A-Netze sollen Open Source sein. Wir hatten zunächst eine eigene Lizenz-Form vorgesehen, siehe unten. Zukünftige Entwicklungen sollen eine Lizenz bekommen, die zu unseren damaligen Ideen passt:

A-Nets are Open Source, underlying the GNU GPL and the A-fair-licence  ( www.a-fair.de)

 

Weitere Fragen oder Anregungen?:   


A-Netz-Entwicklungsgruppe
Last update: 01 May 01

Wolfgang Reinfeldt,
Holger Bringmann,

Hauke Duden,
Jan-Eric Duden,
Jochen Notholt.