[Para a versão PDF desta resposta , as figuras ou diagramas são interativos e dinâmicos.]
Elementos de rede e anotações: uma linguagem de programação visual de uso geral
Uso gráficos para organizar programas JavaScript ™ que usam a API Acrobat® / JavaScript. Cada objeto gráfico representa um elemento Petri Net (local, transição, entrada ou saída) ou representa mais de um elemento Petri Net. Cada objeto gráfico é na verdade uma anotação do elemento líquido correspondente. No entanto, se todo objeto gráfico for mapeado para um e apenas um elemento líquido, ele poderá ser usado para gerar o elemento líquido. E se um objeto gráfico for mapeado para mais de um elemento da rede e o mapeamento estiver bem definido, também poderá ser usado para gerar os elementos da rede. Os elementos Petri Net padrão são representados por certos tipos de gráficos: um círculo é um lugar, um quadrado ou retângulo ou linha é uma transição, uma seta de um círculo para um quadrado é uma entrada e uma seta de um quadrado para um círculo é uma saída. Além disso,
[Os tipos de anotações em uma "Rede de Petri Padrão" são encontrados na versão PDF desta resposta.]
Carl Adam Petri descreveu a maioria dessas idéias (incluindo os tipos de anotações em uma "Rede de Petri Padrão" em sua tese de doutorado (Petri, 1966) .Ele também aplicou os elementos de rede e anotações na descrição de vários circuitos lógicos, como Figura 6
Benefícios e Desafios
Uma linguagem de programação visual pode ajudar um programador de computador a desenvolver programas de computador (Menzies, 2002).
Eu tenho pelo menos três razões pelas quais considero elementos líquidos e anotações úteis (vantagens?).
Primeira razão. A lógica do processo pode ser criada um elemento por vez. Isso significa que uma rede pode ser estendida adicionando elementos à rede existente (Petri, 1966). Por exemplo, um modelo de um controlador pode ser dividido em componentes internos e externos. O componente interno regula o sistema. O componente externo faz interface com o ambiente aceitando entrada do ambiente. A Figura 1 é um modelo de Petri Net do componente interno. É possível adicionar um modelo de Petri Net do componente externo ao modelo de Petri Net do componente interno adicionando os locais e a transição apropriados (Figura 2).
Figura 1 Modelo de rede de Petri de um componente interno de um controlador (Halloway, Krogh e Giua, 1997)
Figura 2 Modelo de rede de Petri de componentes internos e externos de um controlador (Halloway, Krogh e Giua, 1997)
Segunda razão. Os códigos associados a cada elemento da rede podem vir de mais de uma "linguagem de programação" (Petri, 1973). Eles podem vir de uma linguagem de computador como JavaScript, COBOL, ADA e uma linguagem de montagem. Eles podem vir de uma linguagem matemática, como símbolos algébricos. Eles podem vir de prosa codificada em inglês, alemão, francês, grego, tagalo, chinês etc. Assim, pode ser usada como base para comunicação e colaboração durante todo o ciclo de vida de desenvolvimento de software ou sistema; e entre diferentes usuários, desenvolvedores e partes interessadas (Petri, 1973).
Terceira razão. É possível focar em certos objetos gráficos na rede e escrever as anotações de código ou lógica para os objetos gráficos relacionados. Considere um modelo de Rede de Petri de um jogo de cartas na Figura 3. Se a seta para a entrada P7 T4 for um gráfico padrão para uma entrada em uma Rede de Locais / Transições e se m_7 for a marca do local P7, a anotação lógica para atualizar a marca do local de entrada é m_7 = m_7-1. Se s_9 ^ - é o status da entrada, a anotação lógica para atualizar o status da entrada é s_9 ^ - = ((m_7 <1)? False: true).
Figura 3 Um modelo de rede de Petri de um jogo de cartas
Tenho pelo menos três razões pelas quais considero a aplicação das redes de Petri desafiadora (desvantagens?)
Se houver muitos objetos gráficos, seria difícil criar ou ler a rede. A dificuldade pode ser atenuada ao pegar um subconjunto dos gráficos e representá-los usando um, dois ou três símbolos gráficos (Noe, 1973; Petri, 1966). Por exemplo, se o modelo de Petri Net de um jogo de cartas na Figura 3 for considerado como tendo muitos objetos gráficos no diagrama, é possível combinar alguns dos gráficos e ainda manter informações suficientes para mapear o diagrama em um programa de computador. Considere a Figura 4, um modelo de Rede de Petri do mesmo jogo encontrado na Figura 3 com gráficos de alto nível (Chionglo, 2016a).
Figura 4 Um modelo de rede de Petri de um jogo de cartas usando gráficos de alto nível (Chionglo, 2016a)
Em outro exemplo, os componentes externos do controlador na Figura 2 podem ser combinados para criar uma representação gráfica mais concisa, como mostrado na Figura 5.
Figura 5 Um modelo de rede de Petri de um controlador com gráficos de alto nível para componentes externos
Finalmente, um conjunto de locais mutuamente exclusivo ou um conjunto de transições mutuamente exclusivo também pode ser representado usando um objeto gráfico de alto nível (Chionglo, 2015).
Segunda razão. Mesmo com gráficos padrão, pode ser desafiador desenhar e posicionar gráficos, especialmente se se espera que o diagrama final seja fácil de usar ou de ler. Algumas das decisões para a tomada de um diagrama fácil de usar ou de ler incluem: o layout adequado dos objetos gráficos, as dimensões apropriadas da tela e das formas, a curvatura das setas, o tipo de ponta de seta, o tamanho e a fonte do texto, e a escolha de cores para gráficos e texto.
Terceira razão. É fácil criar anotações de elementos de rede de maneira ordenada, porque todas as anotações estão direta ou indiretamente relacionadas a um elemento de rede. No entanto, exibir todas as anotações junto com os gráficos de todos os elementos da rede pode não ser uma boa ideia, pois pode haver muitas informações apresentadas no diagrama. Por exemplo, considere um diagrama de um modelo de rede de Petri de um circuito lógico que inclua referências a todas as anotações de propriedades e lógicas (Figura 6). [O modelo original incluía uma condição de teste para o status de cada saída (figura 31 na página 78 de (Petri, 1966)); a condição de teste foi omitida aqui porque é equivalente ao modelo original para a marcação inicial especificada. Portanto, toda saída possui uma anotação lógica para calcular a marca do local de saída.]
Figura 6 Uma rede de lugar / transição com anotações - com base na figura 31, página 78 de uma tradução para o inglês da dissertação de Petri (1966)
Uma maneira de mitigar esse desafio seria identificar os tipos de anotações usadas no modelo e definir objetos gráficos que incluam anotações desses tipos (Petri, 1966). Assim, quando um diagrama de Petri Net é composto de objetos gráficos das definições, a interpretação desses objetos deve incluir as anotações "invisíveis". A Figura 7 deve ser interpretada como uma rede de Petri padrão (consulte as anotações de uma rede de Petri padrão para obter as definições); portanto, a anotação lógica pode ser omitida do diagrama.
Figura 7 Uma Rede de Locais / Transições - com base na figura 31, página 78 de uma tradução para o inglês da dissertação de Petri (1966)
Outra maneira de mitigar esse desafio seria usar visualizações de formulário das anotações para complementar ou complementar o (s) diagrama (s) (Chionglo, 2016b; 2014). As vistas podem ser divididas em vistas menores e cada vista pode ser exibida e oculta.
Referências
Chionglo, JF (2016a). Uma resposta a "Como projetar um fluxo de estado para um jogo de flashcard de reação / redux?" No Stack Overflow. Disponível em 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). Duas vistas de formulário de uma rede de Petri. Disponível em http://www.aespen.ca/AEnswers/CAPDissF31P78-form.pdf .
Chionglo, JF (2015). Reduzindo o número de elementos gráficos líquidos em um diagrama de Petri Net usando gráficos de alto nível. Disponível em http://www.aespen.ca/AEnswers/WjTpY1429533268 .
Chionglo, JF (2014). Elementos de rede e anotações para programação de computadores: cálculos e interações em PDF. Disponível em 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). Uma pesquisa dos métodos da Petri Net para sistemas controlados de eventos discretos [versão eletrônica]. Sistemas Dinâmicos de Eventos Discretos: Teoria e Aplicações, vol. 7. Boston: Kluwer Academic Publishers, pp. 151 - 190.
Menzies, T. (2002). Problemas de avaliação para linguagens de programação visual. Em SK Chang (Ed). Manual de Engenharia de Software e Engenharia do Conhecimento, vol. 2 Tecnologias Emergentes. World Scientific Publishing co. Pte. Ltd., pp. 93 - 101.
Noe, JD e Nutt, GJ (1973). “Redes eletrônicas macro para representação de sistemas paralelos”, IEEE Transactions on Computers, vol. C-22, n. 8, agosto de 1973, pp. 718 - 727.
Petri, CA (1973). Conceitos da Teoria da Rede. Em Fundamentos Matemáticos da Ciência da Computação: Proc. do Symposium and Summer School, High Tatras, 3 - 8 de setembro de 1973, páginas 137 - 146. Math. Inst. do Acad eslovaco. of Sciences, 1973.
Petri, CA (1966). Comunicação com a Automota [trad. CF Greene, Jr.]. Suplemento I ao Relatório Técnico RADC-TR-65-377 (Volume I). Base da Força Aérea de Griffiss, NY: Centro de Desenvolvimento Aéreo de Roma, Divisão de Pesquisa e Tecnologia, Comando de Sistemas da Força Aérea, Base da Força Aérea de Griffiss. Recuperado em 31 de agosto de 2011 em http://www.informatik.uni-hamburg.de/TGI/mitarbeiter/profs/petri/doc/Petri-diss-engl.pdf .