[Per la versione PDF di questa risposta , le figure o i diagrammi sono interattivi e dinamici.]
Elementi e annotazioni netti: un linguaggio di programmazione visiva per tutti gli usi
Uso la grafica per organizzare i programmi JavaScript ™ che utilizzano l'API Acrobat® / JavaScript. Ogni oggetto grafico rappresenta un elemento Petri Net (luogo, transizione, input o output) o rappresenta più di un elemento Petri Net. Ogni oggetto grafico è in realtà un'annotazione dell'elemento netto corrispondente. Tuttavia, se ogni oggetto grafico viene mappato su un solo elemento net, può essere utilizzato per generare l'elemento net. E se un oggetto grafico si associa a più di un elemento di rete e la mappatura è ben definita, può anche essere utilizzata per generare gli elementi di rete. Gli elementi Petri Net standard sono rappresentati da alcuni tipi di grafici: un cerchio è un luogo, un quadrato o un rettangolo o una linea è una transizione, una freccia da un cerchio a un quadrato è un input e una freccia da un quadrato a un cerchio è un produzione. Inoltre,
[I tipi di annotazioni in una "Rete Petri standard" si trovano nella versione PDF di questa risposta.]
Carl Adam Petri ha descritto la maggior parte di queste idee (inclusi i tipi di annotazioni in una "Rete di Petri standard" nella sua tesi di dottorato (Petri, 1966). Ha anche applicato gli elementi e le annotazioni di rete alla descrizione di numerosi circuiti logici, come la Figura 6.
Vantaggi e sfide
Un linguaggio di programmazione visiva può aiutare un programmatore di computer a sviluppare programmi per computer (Menzies, 2002).
Ho almeno tre ragioni per cui trovo utili elementi di rete e annotazioni (vantaggi?).
La prima ragione. La logica di processo può essere creata un elemento alla volta. Ciò significa che una rete può essere estesa aggiungendo elementi alla rete esistente (Petri, 1966). Ad esempio, un modello di controller può essere diviso in componenti interni ed esterni. Il componente interno regola il sistema. Il componente esterno si interfaccia con l'ambiente accettando l'input dall'ambiente. La Figura 1 è un modello di Petri Net del componente interno. È possibile aggiungere un modello Petri Net del componente esterno al modello Petri Net del componente interno aggiungendo i punti appropriati e la transizione (Figura 2).
Figura 1 Un modello di Petri Net di un componente interno di un controller (Halloway, Krogh e Giua, 1997)
Figura 2 Un modello di rete di Petri di un componente interno ed esterno di un controller (Halloway, Krogh e Giua, 1997)
Secondo motivo I codici associati a ciascun elemento di rete possono provenire da più di un "linguaggio di programmazione" (Petri, 1973). Possono provenire da un linguaggio informatico come JavaScript, COBOL, ADA e un linguaggio assembly. Possono venire da un linguaggio matematico come i simboli algebrici. Possono provenire da prosa codificata in inglese, tedesco, francese, greco, tagalog, cinese, ecc. Pertanto, può essere utilizzata come base per la comunicazione e la collaborazione durante l'intero ciclo di vita dello sviluppo del software o del sistema; e tra diversi utenti, sviluppatori e stakeholder (Petri, 1973).
Terza ragione. È possibile concentrarsi su determinati oggetti grafici nella rete e scrivere il codice o le annotazioni logiche per gli oggetti grafici correlati. Si consideri un modello di Petri Net di un gioco di carte in Figura 3. Se la freccia per l'ingresso P7 T4 è una grafica standard per un ingresso in una rete Place / Transition e se m_7 è il segno per il posto P7, allora l'annotazione logica per l'aggiornamento del segno del luogo di input è m_7 = m_7-1. Se s_9 ^ - è lo stato dell'input, l'annotazione logica per l'aggiornamento dello stato dell'input è s_9 ^ - = ((m_7 <1)? False: true).
Figura 3 Un modello di Petri Net di un gioco di carte
Ho almeno tre motivi per cui trovo l'applicazione delle reti di Petri stimolante (svantaggi?)
Se ci sono troppi oggetti grafici, sarebbe difficile creare o leggere la rete. La difficoltà può essere mitigata prendendo un sottoinsieme della grafica e rappresentandola usando uno, due o tre simboli grafici (Noe, 1973; Petri, 1966). Ad esempio, se si considera che il modello di Petri Net di un gioco di carte nella Figura 3 abbia troppi oggetti grafici nel diagramma, è possibile combinare alcuni elementi grafici e mantenere comunque informazioni sufficienti per mappare il diagramma in un programma per computer. Considera la Figura 4, un modello di Petri Net dello stesso gioco trovato nella Figura 3 con grafica di alto livello (Chionglo, 2016a).
Figura 4 Un modello di Petri Net di un gioco di carte usando grafica di alto livello (Chionglo, 2016a)
In un altro esempio, i componenti esterni del controller nella Figura 2 possono essere combinati per creare una rappresentazione grafica più concisa, come mostrato nella Figura 5.
Figura 5 Un modello di Petri Net di un controller con grafica di alto livello per componenti esterni
Infine, un insieme di luoghi reciprocamente esclusivi o un insieme mutuo di transizioni esclusive possono anche essere rappresentati utilizzando un oggetto grafico di alto livello (Chionglo, 2015).
Secondo motivo Anche con la grafica standard, può essere difficile disegnare e posizionare la grafica soprattutto se ci si aspetta che il diagramma finale sia facile da usare per l'utente o per il lettore. Alcune delle decisioni per realizzare un diagramma user-friendly o di lettura includono: la corretta disposizione degli oggetti grafici, le dimensioni appropriate della tela e delle forme, la curvatura delle frecce, il tipo di punte di freccia, la dimensione e il carattere del testo, e la scelta dei colori per grafica e testo.
Terza ragione. È facile creare annotazioni di elementi di rete in modo ordinato perché ogni annotazione è direttamente o indirettamente correlata a un elemento di rete. Tuttavia, visualizzare ogni annotazione insieme alla grafica di ogni elemento di rete potrebbe non essere una buona idea perché potrebbero esserci troppe informazioni presentate nel diagramma. Ad esempio, si consideri un diagramma di un modello di Petri Net di un circuito logico che include riferimenti a tutte le annotazioni logiche e di proprietà (Figura 6). [Il modello originale includeva una condizione di prova per lo stato di per ogni uscita (figura 31 a pagina 78 di (Petri, 1966)); la condizione di prova è stata omessa qui perché è equivalente al modello originale per la marcatura iniziale data. Pertanto ogni output ha un'annotazione logica per calcolare il segno del luogo di output.]
Figura 6 Una rete di luoghi / transizioni con annotazioni - basata sulla figura 31 pagina 78 di una traduzione inglese della tesi di Petri (1966)
Un modo per mitigare questa sfida sarebbe identificare i tipi di annotazioni utilizzate nel modello e definire oggetti grafici che includano annotazioni di questi tipi (Petri, 1966). Pertanto, quando un diagramma di Petri Net è composto da oggetti grafici dalle definizioni, l'interpretazione di questi oggetti dovrebbe includere le annotazioni "invisibili". La figura 7 deve essere interpretata come una rete di Petri standard (per le definizioni, vedere Annotazioni di una rete di Petri standard); pertanto, l'annotazione logica può essere omessa dal diagramma.
Figura 7 A Place / Transition Net - basato sulla figura 31 pagina 78 di una traduzione inglese della tesi di Petri (1966)
Un altro modo per mitigare questa sfida sarebbe quello di utilizzare le viste del modulo delle annotazioni per integrare o integrare i diagrammi (Chionglo, 2016b; 2014). Le viste possono essere ulteriormente suddivise in viste più piccole e ciascuna vista può essere visualizzata e nascosta.
Riferimenti
Chionglo, JF (2016a). Una risposta a "Come progettare un flusso di stato per un gioco flashcard di reazione / redux?" Su Stack Overflow. Disponibile su 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). Due viste in forma di una rete di Petri. Disponibile su http://www.aespen.ca/AEnswers/CAPDissF31P78-form.pdf .
Chionglo, JF (2015). Riduzione del numero di elementi grafici netti in un diagramma di Petri Net mediante grafici di alto livello. Disponibile all'indirizzo http://www.aespen.ca/AEnswers/WjTpY1429533268 .
Chionglo, JF (2014). Elementi e annotazioni netti per la programmazione di computer: calcoli e interazioni in PDF. Disponibile su https://www.academia.edu/26906314/Net_Elements_and_Annotations_for_Computer_Programming_Computations_and_Interactions_in_PDF .
Halloway, LE; Krogh, BH e Giua, A. (1997). Un sondaggio sui metodi di Petri Net per sistemi di eventi discreti controllati [versione elettronica]. Sistemi dinamici di eventi discreti: teoria e applicazioni, vol. 7. Boston: Kluwer Academic Publishers, pagg. 151-190.
Menzies, T. (2002). Problemi di valutazione per linguaggi di programmazione visiva. In SK Chang (ndr). Manuale di ingegneria del software e ingegneria della conoscenza, vol. 2 Tecnologie emergenti. World Scientific Publishing co. Pte. Ltd., pagg. 93-101.
Noe, JD e Nutt, GJ (1973). "Macro reti elettroniche per la rappresentazione di sistemi paralleli", Transazioni IEEE su computer, vol. C-22, n. 8, agosto 1973, pagg. 718 - 727.
Petri, CA (1973). Concetti di teoria della rete. In Fondamenti matematici dell'informatica: Proc. di Simposio e Summer School, Alti Tatra, 3 - 8 settembre 1973, pagine 137 - 146. Matematica. Inst. dell'Acad slovacco. of Sciences, 1973.
Petri, CA (1966). Comunicazione con Automota [trans. CF Greene, Jr.]. Supplemento I alla relazione tecnica RADC-TR-65-377 (volume I). Base aeronautica Griffiss, New York: Centro di sviluppo aereo di Roma, Divisione Ricerca e tecnologia, Comando dei sistemi aeronautici, Base aeronautica Griffiss. Estratto il 31 agosto 2011 da http://www.informatik.uni-hamburg.de/TGI/mitarbeiter/profs/petri/doc/Petri-diss-engl.pdf .