[Für die PDF-Version dieser Antwort sind die Abbildungen oder Diagramme interaktiv und dynamisch.]
Netzelemente und Anmerkungen: Eine visuelle Programmiersprache für allgemeine Zwecke
Ich verwende Grafiken, um JavaScript ™ -Programme zu organisieren, die die Acrobat® / JavaScript-API verwenden. Jedes Grafikobjekt repräsentiert ein Petri-Netz-Element (Ort, Übergang, Eingabe oder Ausgabe) oder repräsentiert mehr als ein Petri-Netz-Element. Jedes Grafikobjekt ist eigentlich eine Annotation des entsprechenden Netzelements. Wenn jedoch jedes Grafikobjekt einem und nur einem Netzelement zugeordnet ist, kann es zum Generieren des Netzelements verwendet werden. Wenn ein Grafikobjekt auf mehr als ein Netzelement abgebildet wird und das Mapping genau definiert ist, kann es auch zum Generieren der Netzelemente verwendet werden. Standard-Petri-Net-Elemente werden durch bestimmte Arten von Grafiken dargestellt: Ein Kreis ist ein Ort, ein Quadrat oder ein Rechteck oder eine Linie ist ein Übergang, ein Pfeil von einem Kreis zu einem Quadrat ist eine Eingabe und ein Pfeil von einem Quadrat zu einem Kreis ist eine Eingabe Ausgabe. Außerdem,
[Die Arten von Anmerkungen in einem "Standard-Petri-Netz" finden Sie in der PDF-Version dieser Antwort.]
Carl Adam Petri beschrieb die meisten dieser Ideen (einschließlich der Arten von Annotationen in einem "Standard Petri Net" in seiner Dissertation (Petri, 1966). Er wandte die Netzelemente und Annotationen auch auf die Beschreibung mehrerer Logikschaltungen an, wie z 6.
Vorteile und Herausforderungen
Eine visuelle Programmiersprache kann einem Computerprogrammierer helfen, Computerprogramme zu entwickeln (Menzies, 2002).
Ich habe mindestens drei Gründe, warum ich Netzelemente und Anmerkungen nützlich finde (Vorteile?).
Grund genug. Die Prozesslogik kann jeweils ein Element erstellt werden. Dies bedeutet, dass ein Netz durch Hinzufügen von Elementen zum vorhandenen Netz erweitert werden kann (Petri, 1966). Beispielsweise kann ein Modell eines Controllers in interne und externe Komponenten unterteilt werden. Die interne Komponente regelt das System. Die externe Komponente ist mit der Umgebung verbunden, indem sie Eingaben von der Umgebung akzeptiert. Abbildung 1 zeigt ein Petri-Net-Modell der internen Komponente. Sie können dem Petri-Net-Modell der internen Komponente ein Petri-Net-Modell der externen Komponente hinzufügen, indem Sie die entsprechenden Stellen und Übergänge hinzufügen (Abbildung 2).
Abbildung 1 Ein Petrinetzmodell einer internen Komponente eines Controllers (Halloway, Krogh und Giua, 1997)
Abbildung 2 Ein Petrinetzmodell einer internen und externen Komponente eines Controllers (Halloway, Krogh und Giua, 1997)
Zweiter Grund. Die jedem Netzelement zugeordneten Codes können aus mehr als einer „Programmiersprache“ stammen (Petri, 1973). Sie können aus einer Computersprache wie JavaScript, COBOL, ADA und einer Assemblersprache stammen. Sie können aus einer mathematischen Sprache wie algebraischen Symbolen stammen. Sie können aus Prosa stammen, die in Englisch, Deutsch, Französisch, Griechisch, Tagalog, Chinesisch usw. codiert ist. Sie können daher als Grundlage für die Kommunikation und Zusammenarbeit während des gesamten Lebenszyklus der Software- oder Systementwicklung verwendet werden. und unter verschiedenen Benutzern, Entwicklern und Interessengruppen (Petri, 1973).
Dritter Grund. Es ist möglich, sich auf bestimmte Grafikobjekte im Netz zu konzentrieren und die Code- oder Logikanmerkungen für die zugehörigen Grafikobjekte zu schreiben. Betrachten Sie ein Petri-Netz-Modell eines Kartenspiels in Abbildung 3. Wenn der Pfeil für die Eingabe P7 T4 eine Standardgrafik für eine Eingabe in einem Orts- / Übergangsnetz ist und wenn m_7 die Markierung für den Ort P7 ist, dann die logische Anmerkung für Das Aktualisieren der Marke des Eingabeorts ist m_7 = m_7-1. Wenn s_9 ^ - der Status des Eingangs ist, lautet die logische Anmerkung zum Aktualisieren des Status des Eingangs s_9 ^ - = ((m_7 <1)? False: true).
Abbildung 3 Ein Petri Net-Modell eines Kartenspiels
Ich habe mindestens drei Gründe, warum ich die Anwendung von Petri-Netzen als schwierig empfinde (Nachteile?)
Wenn zu viele Grafikobjekte vorhanden sind, ist es schwierig, das Netz zu erstellen oder zu lesen. Die Schwierigkeit kann gemindert werden, indem eine Teilmenge der Grafiken genommen und mit einem, zwei oder drei Grafiksymbolen dargestellt wird (Noe, 1973; Petri, 1966). Wenn beispielsweise das Petri-Net-Modell eines Kartenspiels in Abbildung 3 zu viele Grafikobjekte im Diagramm enthält, können einige der Grafiken kombiniert werden, und es bleiben immer noch genügend Informationen, um das Diagramm in ein Computerprogramm abzubilden. Betrachten Sie Abbildung 4, ein Petri-Net-Modell desselben Spiels aus Abbildung 3 mit Grafiken auf hoher Ebene (Chionglo, 2016a).
Abbildung 4 Ein Petri-Netz-Modell eines Kartenspiels mit High-Level-Grafiken (Chionglo, 2016a)
In einem anderen Beispiel können die externen Komponenten des Controllers in Abbildung 2 kombiniert werden, um eine übersichtlichere grafische Darstellung zu erstellen, wie in Abbildung 5 dargestellt.
Abbildung 5 Ein Petri-Netzmodell eines Controllers mit High-Level-Grafiken für externe Komponenten
Schließlich kann eine sich gegenseitig ausschließende Menge von Stellen oder eine sich gegenseitig ausschließende Menge von Übergängen auch unter Verwendung eines Grafikobjekts auf hoher Ebene dargestellt werden (Chionglo, 2015).
Zweiter Grund. Selbst bei Standardgrafiken kann es schwierig sein, Grafiken zu zeichnen und zu positionieren, insbesondere wenn erwartet wird, dass das endgültige Diagramm benutzer- oder leserfreundlich ist. Zu den Entscheidungen für die Erstellung eines benutzer- oder leserfreundlichen Diagramms gehören: die richtige Anordnung der Grafikobjekte, die geeigneten Abmessungen der Zeichenfläche und Formen, die Krümmung der Pfeile, die Art der Pfeilspitzen, die Größe und die Schriftart des Texts, und die Wahl der Farben für Grafiken und Text.
Dritter Grund. Es ist einfach, Anmerkungen von Netzelementen auf geordnete Weise zu erstellen, da jede Anmerkung direkt oder indirekt mit einem Netzelement zusammenhängt. Es ist jedoch möglicherweise keine gute Idee, jede Anmerkung zusammen mit den Grafiken aller Netzelemente anzuzeigen, da das Diagramm möglicherweise zu viele Informationen enthält. Betrachten Sie beispielsweise ein Diagramm eines Petri-Net-Modells einer Logikschaltung, das Verweise auf alle Eigenschafts- und Logikanmerkungen enthält (Abbildung 6). [Das ursprüngliche Modell enthielt eine Testbedingung für den Status von für jeden Ausgang (Abbildung 31 auf Seite 78 von (Petri, 1966)); Die Testbedingung wurde hier weggelassen, da sie dem Originalmodell für die angegebene anfängliche Kennzeichnung entspricht. Somit hat jeder Ausgang eine logische Annotation zum Berechnen der Markierung des Ausgabeorts.]
Abbildung 6 Ein Orts- / Übergangsnetz mit Anmerkungen - basierend auf Abbildung 31, Seite 78 einer englischen Übersetzung von Petris Dissertation (1966)
Eine Möglichkeit, diese Herausforderung zu mindern, besteht darin, die im Modell verwendeten Anmerkungstypen zu identifizieren und Grafikobjekte zu definieren, die Anmerkungen dieser Typen enthalten (Petri, 1966). Wenn sich ein Petri-Net-Diagramm aus Grafikobjekten aus den Definitionen zusammensetzt, sollte die Interpretation dieser Objekte die "unsichtbaren" Anmerkungen enthalten. Abbildung 7 sollte als Standard-Petri-Netz interpretiert werden (Definitionen siehe Anmerkungen zu einem Standard-Petri-Netz). daher kann die logische Anmerkung in dem Diagramm weggelassen werden.
Abbildung 7 Ein Orts- / Übergangsnetz - basierend auf Abbildung 31, Seite 78 einer englischen Übersetzung von Petris Dissertation (1966)
Eine andere Möglichkeit, diese Herausforderung zu mindern, besteht darin, Formularansichten der Anmerkungen zu verwenden, um die Diagramme zu ergänzen oder zu ergänzen (Chionglo, 2016b; 2014). Die Ansichten können weiter in kleinere Ansichten unterteilt werden, und jede Ansicht kann angezeigt und ausgeblendet werden.
Verweise
Chionglo, JF (2016a). Eine Antwort auf „Wie entwerfe ich einen Zustandsfluss für ein Reaktions- / Redux-Kartenspiel?“ Bei Stack Overflow. Verfügbar unter https://www.academia.edu/34059934/A_Reply_to_How_to_design_a_state_flow_for_a_react_redux_flashcard_game_at_Stack_Overflow .
Chionglo, JF (2016b). Zwei Formularansichten eines Petri-Netzes. Verfügbar unter http://www.aespen.ca/AEnswers/CAPDissF31P78-form.pdf .
Chionglo, JF (2015). Reduzieren der Anzahl der Netzelementgrafiken in einem Petri-Netzdiagramm mithilfe von Grafiken auf hoher Ebene. Verfügbar unter http://www.aespen.ca/AEnswers/WjTpY1429533268 .
Chionglo, JF (2014). Netzelemente und Anmerkungen für die Computerprogrammierung: Berechnungen und Interaktionen in PDF. Verfügbar unter https://www.academia.edu/26906314/Net_Elements_and_Annotations_for_Computer_Programming_Computations_and_Interactions_in_PDF .
Halloway, LE; Krogh, BH und Giua, A. (1997). Eine Übersicht über Petri-Net-Methoden für kontrollierte diskrete Ereignissysteme [elektronische Version]. Diskrete ereignisdynamische Systeme: Theorie und Anwendungen. 7. Boston: Kluwer Academic Publishers, S. 151 - 190.
Menzies, T. (2002). Evaluierungsprobleme für visuelle Programmiersprachen. In SK Chang (Hrsg.). Handbuch von Software Engineering & Knowledge Engineering, Vol. 2 Neue Technologien. World Scientific Publishing co. Pte. Ltd., S. 93 - 101.
Noe, JD und Nutt, GJ (1973). "Makro-E-Netze zur Darstellung paralleler Systeme", IEEE Transactions on Computers, vol. C-22, Nr. 8, August 1973, S. 718 - 727.
Petri, CA (1973). Konzepte der Netztheorie. In mathematischen Grundlagen der Informatik: Proc. of Symposium and Summer School, Hohe Tatra, 3. - 8. September 1973, S. 137 - 146. Math. Inst. der slowakischen Acad. of Sciences, 1973.
Petri, CA (1966). Kommunikation mit Automota [trans. CF Greene, Jr.]. Beilage I zum Technischen Bericht RADC-TR-65-377 (Band I). Griffiss Air Force Base, New York: Rome Air Development Center, Abteilung Forschung und Technologie, Kommando Luftwaffensysteme, Griffiss Air Force Base. Abgerufen am 31. August 2011 von http://www.informatik.uni-hamburg.de/TGI/mitarbeiter/profs/petri/doc/Petri-diss-engl.pdf .