Automatisiertes Programmverwaltungsmodell

1. Einleitung


In [1] wurde eine Antwort auf die Frage gegeben, was als automatisches Programmieren (AP) zu betrachten ist, das Modell einer Finite-State-Maschine (SC) wurde jedoch nicht im Detail als Steuerungsmodell fĂŒr automatische Programme beschrieben. Es ist klar, dass ein reiner abstrakter Automat fĂŒr diese Rolle nicht geeignet ist, weil begrenzt durch die Anzahl der KanĂ€le. Das Strukturmodell des Automaten sowie die ihm entsprechende Theorie der Strukturautomaten lassen jedoch noch keine Antwort auf die Wahl des Automatenmodells zu.

Das Problem beginnt mit der Tatsache, dass es unter den vielen Arbeiten zur Theorie der endlichen Automaten (TCA) nur wenige gibt, die das Modell eines strukturellen endlichen Automaten (SCA) definieren. Man kann zwar verstehen, dass ein struktureller Automat ein [strukturelles] Diagramm elementarer Automaten (Funktionselemente) ist, das ein Modell eines abstrakten Automaten [2] implementiert. Man erinnere sich, dass gemĂ€ĂŸ der Theorie alles damit beginnt, ein GerĂ€temodell in Form eines abstrakten Automaten zu erstellen, und dann besteht die Aufgabe darin, eine digitale Schaltung zu synthetisieren, die es implementiert [3].

Das Programmieren sieht auf den ersten Blick wie eine Synthese digitaler Schaltkreise aus. Aber nur am Anfang. Erstens beginnt hier und da alles mit einem Algorithmus. Zweitens haben die strukturellen Probleme der Organisation und Implementierung digitaler Schaltungen und der Programmierung viel gemeinsam, insbesondere im Zusammenhang mit der parallelen Programmierung. Aber wir werden das Thema ParallelitĂ€t separat diskutieren. In der Zwischenzeit besteht unsere Aufgabe darin, das Modell einer Finite-State-Maschine auszuwĂ€hlen und / oder zu modifizieren, was fĂŒr Programmierer, die mit verschiedenen Softwaretools verwöhnt sind, verstĂ€ndlich, praktisch und angenehm wĂ€re.

Die Frage ist natĂŒrlich sofort logisch - warum ein weiteres und eher ungewöhnliches „automatisches Toolkit“? Wir werden versuchen, diese Frage zu beantworten, indem wir ein Modell der [verschachtelten] automatischen Steuerung definieren und dabei auch die Vorteile im Vergleich zum ĂŒblichen Programmiermodell berĂŒcksichtigen.

2. Definition des Steuerungsmodells von Automatikprogrammen


Im Verlauf der Evolution hat die Programmierpraxis bestimmte Anforderungen an das Programmverwaltungsmodell gestellt. Es muss anerkannt werden, dass das Modell einer klassischen Finite-State-Maschine ihnen eher wenig entspricht. Und wenn die Aufgabe darin besteht, Automaten in der Programmierung zu verwenden, muss diese angepasst werden. Es ist wĂŒnschenswert, dies im Rahmen der Automatentheorie zu tun. Die HauptansprĂŒche an den bestehenden AP reduzieren sich auf die Tatsache, dass diese Bedingung verletzt wird.

Definition 1. Wir bezeichnen die disjunktive Normalform endlicher Automaten (DNFA) als vollstĂ€ndig definierte endliche Automaten, deren ÜbergĂ€nge durch elementare Konjunktionen logischer Variablen gekennzeichnet sind.

Das DNA-Modell basiert auf formalen Modellen vollstÀndig (vollstÀndig) definierter Automaten mit einem abstrakten Zustand [4] und logischen Automaten [5].

Definition 2. Wir nennen die disjunktive Form eines endlichen Automaten (DFA) einen Automaten in Form eines DFA, der nur resultierende ÜbergĂ€nge enthĂ€lt .

Die mit Ausgangssignalen gekennzeichneten ÜbergĂ€nge und ÜbergĂ€nge mit einem Strich anstelle der Ausgangssignale, die den aktuellen Zustand des Automaten Ă€ndern, werden als effektive ÜbergĂ€nge klassifiziert. ÜbergĂ€nge, die nicht in der Beschreibung des disjunktiven Automaten enthalten sind, stellen eine HinzufĂŒgung des DKA (DDA) zu dem vollstĂ€ndig definierten DFA-Automaten dar. Eine solche Addition ist ein Automat, der aus isolierten ZustĂ€nden mit ÜbergĂ€ngen in Form von Schleifen und mit Strichen anstelle der Ausgangssignale besteht.

3. Das Speichermodell fĂŒr das Berechnungsmodell AP


Das Vorhandensein vieler Ein- und AusgĂ€nge des DFA legt die ParallelitĂ€t der damit verbundenen Software-Operatoren / Funktionen fest. FĂŒr die korrekte Implementierung ist ein Speichermodell vom Typ CREW (Concurrent Read Exclusive - Write) erforderlich [6]. Innerhalb seines Rahmens ist das Lesen aktueller Datenwerte seitens der Menge aller Funktionen (PrĂ€dikate und Aktionen) erlaubt, und nur eine von ihnen darf allgemeine Daten fĂŒr parallel ausfĂŒhrbare Aktionen Ă€ndern.

Das automatische Steuerungsmodell beschrĂ€nkt im Gegensatz zum Multi-Thread-Rechenmodell die AusfĂŒhrung der Operatoren / Funktionen des automatischen Programms eindeutig auf die Grenzen eines diskreten Zeitzyklus. In einer solchen Situation können Änderungen des Speichers durch Aktionen, die im aktuellen Taktzyklus ausgefĂŒhrt werden, in den "Schattenspeicher" geschrieben werden , so dass er nach Abschluss und vor dem Start des nĂ€chsten diskreten Taktzyklus seine neuen Werte annimmt.

Die Interaktion von Automatenprogrammierern mit dem Speicher wird als Schattenspeichermodell bezeichnet . Dieses Modell ist ein wesentlicher Bestandteil des allgemeinen Modells der automatischen Programmierung. Es stellt die Richtigkeit des Parallelbetriebs der AP-Bediener sicher und vereinfacht die Programmierung von Parallelprozessen.

Im Rahmen des Speichermodells werden komplexe und wenig zuverlĂ€ssige Mechanismen zur Multithread-Synchronisation der Prozesse eigentlich nicht benötigt (Details siehe [7]). Aufgrund der Äquivalenz von Automaten und Algorithmenschemata (GAW) [8] schrĂ€nkt das automatische Programmiermodell die Anwendung jedoch nicht ein.

4. Verschachtelte und TrÀgheitsmodelle von Automaten


Die Aufgabe, ein Modell des logischen Elements der Verzögerung zu erstellen, das weiter als Beispiel gewĂ€hlt wurde, demonstriert einerseits die Probleme des klassischen Automatenmodells und spiegelt andererseits die Eigenschaften des DFA-Modells wider, das algorithmische Probleme mit visuelleren und bequemeren Mitteln löst. Das eingefĂŒhrte Modell verschachtelter Automaten erzeugt eine Unterklasse von Automatenmodellen, im Folgenden als Inertialautomaten bezeichnet , und eine entsprechende Unterklasse von Inertialalgorithmen .

Es sei also die Aufgabe, ein diskretes Modell eines Verzögerungslogikelements zu erstellen, das die Übertragung eines binĂ€ren Eingangssignals implementiert. DarĂŒber hinaus fallen die Zeiten ihrer Verzögerungen t01 bzw. t10 zum Einheits- und Nullzustand im allgemeinen Fall nicht zusammen.

Das einfachste Modell einer einzelnen Verzögerung in Form eines mehligen Automaten ist in Abb. 1 dargestellt. 1 (siehe zum Vergleich das Verzögerungsmodell in [2]). Seine Verzögerungen werden durch einen einzelnen diskreten Taktzyklus bestimmt. Komplexere Modelle von Transportverzögerungen (Einzelheiten zu den Verzögerungsarten siehe [9]) in Form eines Miley-Automaten bzw. eines kombinierten Miley-Moore-Modells sind in Abb. 1 dargestellt. 2a und fig. 2b.

Bild
Abb. 1. Einheitsverzögerungsmodell in Form eines Meilenautomaten

Bild
Abb. 2. Das TransportverspÀtungsmodell von Miles (a) und Miles-Moore (b)

Das Eingangssignal x3 (wir erinnern uns, dass es im automatischen Programm dem PrĂ€dikat [1] entspricht) nimmt einen wahren Wert an, wenn der Wert des TaktzĂ€hlers gleich dem Wert der Variablen t gleich der Verzögerung t01 oder t10 ist. Der Wert der Variablen t wird den Signalen y3 und y4 zugeordnet (im Programm die gleichnamigen Aktionsfunktionen wie die Ausgangssignale). Die Signale y1, y2 setzen den Wert der Variablen, die die Modellausgabe darstellt. Das Signal y5 erhöht den TaktzĂ€hler, der durch das Signal y6 zurĂŒckgesetzt wird.

Bemerkung 2. Die internen ZustĂ€nde des Modells in Abb. In 1 ist es zweckmĂ€ĂŸig, einen Ausgabezustand eines Elements zuzuordnen. Dadurch können wir nicht nur die Operatoren y1 und y2, sondern auch die Ausgabevariable selbst ausschließen.

Die Implementierung der Einbettung von Automaten Ă€hnlich wie beim Aufrufen von Unterprogrammen bildet die Technologie der modularen Automatisierungsprogrammierung. Gleichzeitig ist dies auf Software-Ebene im Gegensatz zu Ă€hnlichen Versuchen auf Hardware-Ebene (siehe [10] zum Vergleich) viel einfacher. Dazu mĂŒssen Sie den Programmaufruf des verschachtelten Automaten einfĂŒgen, und dann organisiert der Kern der Implementierung von Automaten wie ein normaler Prozessor die RĂŒckkehr der Steuerung zur aktuellen Ebene der Verschachtelung.

Definition 3. Verschachtelte Automaten werden Automaten mit einem Endzustand genannt, dessen Übergang den Vorgang der RĂŒckkehr zur vorherigen Ebene (Rang) der Verschachtelung startet.

Die korrekte Implementierung der Verschachtelung von Automaten schrĂ€nkt die Prozedur fĂŒr deren Erstellung ein. Erstens kann ein verschachtelter Automat nur untergeordnet sein. DarĂŒber hinaus kann ein Top-Level-Automat mit Ausnahme von Rang Null auch ein verschachtelter Automat sein. Zweitens kann bei jedem Übergang nur ein verschachtelter Automat erstellt werden. Der Mechanismus verschachtelter Automaten schafft auch die Grundlage fĂŒr die Implementierung rekursiver Algorithmen, die auf automatischer Steuerung basieren.

Bild
Abb. 3. Verzögerungsmodell in Form verschachtelter Automaten

Fig. 3 zeigt das Verzögerungsmodell, wobei Fig. 3a das Modell der oberen Ebene darstellt, und Fig. 3b und Fig. 3b das Verzögerungsmodell. 3c - Varianten verschachtelter Automaten fĂŒr Transport- und TrĂ€gheitsverzögerungen (Einzelheiten zu Verzögerungsarten siehe [8]). Gleichzeitig sind dies Beispiele fĂŒr zwei Arten von verschachtelten Automaten - gewöhnliche und TrĂ€gheit . Der Typ eines verschachtelten Automaten wird durch den Namen seiner EndzustĂ€nde definiert: Ein Zustand mit dem Namen "00" bestimmt den ĂŒblichen Austritt aus dem verschachtelten Automaten, und ein Zustand mit dem Namen "XX" Ă€ndert den aktuellen Zustand des Automaten der obersten Ebene nicht.

Eine wichtige ErklĂ€rung fĂŒr das VerstĂ€ndnis des TrĂ€gheitsverzögerungsalgorithmus. Der Wert des PrĂ€dikats x1 hĂ€ngt dafĂŒr (siehe Fig. 3c) von dem Übergang ab, auf dem der eingebettete Automat erzeugt wird. Mit anderen Worten, das PrĂ€dikat im Zustand "0" steuert die Beibehaltung von "Null" am Eingang und im Zustand "1" im Gegensatz zu "Einheiten". Wenn der Wert am Eingang Null ist, mĂŒssen Sie den wahren Wert zurĂŒckgeben. Wenn ferner die StabilitĂ€t des Eingangs verletzt wird (der Wert x1 ist falsch) und die Verzögerungszeit nicht abgelaufen ist (der Wert x3 ist falsch), wird der Austritt aus der eingebetteten Maschine durch den TrĂ€gheitszustand realisiert (siehe Fig. 3c).

Definition 4. Automaten, einschließlich des Aufrufs verschachtelter Automaten mit einem endgĂŒltigen TrĂ€gheitszustand, werden als TrĂ€gheitsautomaten bezeichnet .

In dem Modell in Fig. 3a erzeugt die Aktion z1 (das Symbol z ist fĂŒr die Namen von Aktionen ausgewĂ€hlt, die einen Aufruf eines verschachtelten Automaten enthalten) einen verschachtelten Automaten, wenn ein Verzögerungswert definiert ist. Als Teil dieser Aktion wird der spezifizierte Verzögerungstyp bestimmt, in Übereinstimmung mit dem eine der verschachtelten Automaten erzeugt wird, wie in Fig. 3b oder Fig. 4 gezeigt. 3c.

Auf der obersten Ebene der Hierarchie stimmt die Ansicht des Automaten in Fig. 3a in der Struktur vollstĂ€ndig mit dem Modell in Fig. 1 ĂŒberein und unterscheidet sich nur durch das Vorhandensein von Aktionen auf den ÜbergĂ€ngen. Verzögerungen mit verschachtelten Automaten haben eine einfachere Form als das einstufige Modell in Abb. 2. Ein verschachtelter Automat kann auch als eine Art "Bibliotheksautomat" betrachtet werden, der von jedem anderen Automaten aufgerufen werden kann.

3. Programmierung der Objektautomaten


Das automatische Steuerungsmodell verfĂŒgt neben der grafischen Form auch ĂŒber eine einfache tabellarische Form - eine Übergangstabelle (TP), die in C ++ effektiv interpretiert werden kann. Innerhalb seines Rahmens kann ein separates Automatenprogramm (oder ein Teil davon) und dementsprechend dessen Definition in Form einer Programmschaltung S durch eine Klasse dargestellt werden. In diesem Fall entsprechen die Speichermodelle den Eigenschaften der Klasse, die Menge der Operationen den Methoden der Klasse und die automatische Steuerung in Form eines TP beschreibt das Verhalten der Klasse. Die EinfĂŒhrung der Kontrolle in die Klasse ermöglicht es uns, ĂŒber aktive Objekte, oft auch Agenten genannt, usw. zu sprechen.

Viele Objekte mit Verhalten in Form einer Automatensteuerung formalisieren das Konzept eines Objektautomaten-Parallelprogramms . In diesem Fall kann das Modell eines beliebigen parallelen Programms durch ein Programmdiagramm dargestellt werden, in dem die Steuerung C in Form eines Automatennetzwerks dargestellt wird, wobei Komponentenautomaten das Verhalten aktiver Objekte beschreiben, der Speicher M durch eine Kombination von Eigenschaften von Objekten dargestellt wird und viele Operatoren A durch eine Kombination von Methoden von Programmobjekten dargestellt werden.

In der VKPA-Umgebung wird die Rolle der automatisierten Programmiersprache der C ++ - Sprache zugewiesen. In „automatischem C ++“ sind Objekte mit AktivitĂ€t / Verhalten ausgestattet und können ParallelitĂ€t beschreiben und implementieren, sowohl auf der Ebene der Methoden einzelner Objekte als auch auf der Ebene der Beschreibung der ParallelitĂ€t vieler Objekte.

Bestehende Objektimplementierungen von AP sind ziemlich kompliziert. In VKPa basiert die Objektimplementierung auf der Interpretation von Automaten und der dedizierten Steuerung des Programms. Im Gegensatz zur direkten Implementierung von Automaten, wie sie beispielsweise in der SWITH-Technologie verwendet werden, entfÀllt hierdurch die Konvertierung eines Automatenmodells in ein Flussdiagrammmodell. Der in VKPa verwendete Interpretationsalgorithmus Àhnelt der Methode zur Interpretation von Entscheidungstabellen von E. Hamby [12].

Sofern nicht anders angegeben, werden wir das Konzept eines Automatenprogramms weiter mit dem Konzept eines Automatenobjekts (AO) im Sinne von OOP verknĂŒpfen, wobei wir jedoch das oben eingefĂŒhrte Konzept eines Objektautomaten-Parallelprogramms berĂŒcksichtigen. Aus diesem Grund werden die Operatoren und der Speicher des AP durch die Methoden und Eigenschaften der aktiven Objekte bestimmt. Automatenobjekte unterscheiden sich von gewöhnlichen Objekten durch das Vorhandensein von Verhalten, das durch das Zustandsmaschinenmodell bestimmt wird.

4. Schlussfolgerungen


Das Erstellen eines Modells verschachtelter Automaten ist ein Schritt in Richtung eines qualitativen Wandels in der Programmiertechnologie. Das beschriebene Inertialmodell des Automaten Ă€hnelt dem Konzept historischer ZustĂ€nde in der UML. Das ĂŒbliche Einbetten von Automaten hat eine analoge Programmierung, das "Inertial Embedding" hat es nicht, weil In einem Programm können Sie nicht zu einem Befehl zurĂŒckkehren, der einem Unterprogrammaufruf vorausgeht. Und dies sind Elemente eines qualitativen Unterschieds zwischen automatischer Programmierung und gewöhnlicher Programmierung.

NatĂŒrlich können Sie den Schattenspeicher in die gewöhnliche Programmierung einfĂŒhren und die ParallelitĂ€t von Funktionen bezeichnen. Aber im Rahmen des Automatenmodells hat all dies eine organische Form, sowohl in Bezug auf die Beschreibung als auch in Bezug auf die Leistung. Alles wird durch die natĂŒrliche ParallelitĂ€t des Modells bestimmt. Das Blockdiagrammmodell verfĂŒgt nicht ĂŒber solche Funktionen.

Aktive Objekte erweitern auch die Programmiermöglichkeiten. Der „Objekt-Wrapper“ wirkt sich jedoch qualitativ auf die automatische Programmierung aus und vereinfacht die Prozeduren zum Aufrufen und Implementieren verschachtelter Automaten. Die Verwendung von [lokalen] Klasseneigenschaften ermöglicht es Ihnen, nicht nur Einbettungsalgorithmen, sondern auch beliebige rekursive Algorithmen zu implementieren.

Referenzliste
1. Turing-Maschine als Modell von automatischen Programmen. [Elektronische Ressource], Zugriffsmodus: habr.com/de/post/481998 , kostenlos. Yaz. Russisch (Datum der Behandlung 07.01.2020).
2. KUDRYAVTSEV VB, Aleshin S.V., PODKOLZIN A.S. EinfĂŒhrung in die Theorie der Automaten - M .: Wissenschaft. Ch. ed. Phys.-Math. Lit. 1985 .-- 320 p.
3. GLUSHKOV V.M. Synthese digitaler Maschinen. M .: Fizmatgiz, 1962.
4. ZAKREVSKY A.D. Logische Synthese von Kaskadenschemata. - M .: Wissenschaft. Ch. ed. Phys.-Mat. Lit. 1981. - 416 p.
5. KUZNETSOV O.P. Graphen logischer Automaten und ihrer Transformationen // Automation and Telemechanics. - 1975. - Nr. 9.– S. 149-158.
6. Kormen T., Leiserson Ch., Rivest R. Algorithmen: Konstruktion und Analyse - M .: MCCMO, 2001. - 960 p.
7. Buch G., RAMBO J., Jacobson I. UML. Benutzerhandbuch. Zweite Auflage. IT Academy: Moskau, 2007 .-- 493 p.
8. BARANOV S.I. Synthese der Firmware - L.: Energy, 1979.- 232s.
9. ARMSTRONG J.R. Modellierung digitaler Systeme in der VHDL-Sprache: Aus dem Englischen / M .: Mir, 1992. - 175 p.
10. HAMBARTSUMYAN A.A., ZAPOLSKYH E.N. Über einen Ansatz zur temporĂ€ren Zerlegung von Automaten. Ich, Avtomat. und Telemech., 1981, Ausgabe 2, 135-144
11. SHALYTO A. A. Das Paradigma der automatischen Programmierung. Wissenschaftliches und technisches Bulletin der Staatlichen UniversitĂ€t fĂŒr Informationstechnologien, Mechanik und Optik St. Petersburg. Vol. 53. Automatisierte Programmierung. 2008, p. 3-23.
12. HAMBI E. Programmieren von Entscheidungstabellen. M .: Mir, 1976 .-- 86 p.

Source: https://habr.com/ru/post/de484588/


All Articles