• Nenhum resultado encontrado

UMA FERRAMENTA PARA ESPECIFICAÇÃO E ANÁLISE DE SISTEMAS CONCORRENTES

N/A
N/A
Protected

Academic year: 2021

Share "UMA FERRAMENTA PARA ESPECIFICAÇÃO E ANÁLISE DE SISTEMAS CONCORRENTES"

Copied!
115
0
0

Texto

(1)Uma Ferramenta para Especificação e Análise de Sistemas Concorrentes Júnia Coutinho Anacleto. Orientação: Prof. Dr. Claudio Kirner. Dissertação apresentada ao Instituto de Ciências Matemáticas de São Carlos - USP, como parte dos requisitos para obtenção do título de Mestre em Ciências de Computação e Matemática Computacional.. USP - São Carlos Fevereiro de 1991.

(2) Aos meus pais, Rtiben e Heloina..

(3) Agradecimentos Ao Prof. Dr. Claudio Kirner, pela sua orientação, pelo apoio, dedicação e incentivo para que este trabalho fosse realizado. Ao Odney da Silva Júnior, pelo carinho, compreensão e incentivo. Às amigas e colegas de estudo Solange Rezende Rodrigues, Maria Ines Castineira, Júlia Sawaki e Valeria Maria D'Arezzo, pela preciosa colaboração, pelo companheirismo e amizade. À Sandra Medeiros Lacerda, especialmente, pela amizade e carinhosa participação. À Profa. Dra. Maria Carolina Monard, pelo interesse demonstrado e pelo apoio durante o desenvolvimento do trabalho. À Coordenadoria de Aperfeiçoamento de Pessoal de Nível Superior - CAPES, pelo auxílio financeiro, sem o qual não seria possível a realização deste trabalho. Aos professores, alunos e funcionários do Instituto de Ciência Matemáticas de São Carlos e do Departamento de Computação da Universidade Federal de São Carlos, que, direta ou indiretamente, colaboraram para o desenvolvimento deste trabalho..

(4) Resumo A utilização crescente da informática, em diversas áreas, vem aumentando o número de aplicações, que exigem maiores taxas de desempenho e rapidez de desenvolvimento. Nesse contexto, os sistemas concorrentes, pelo fato de explorarem o uso simultâneo 'de múltiplos recursos de um sistema, estão ficando mais atraentes, embora apresentem maior complexidade, implicando em desenvolvimento mais demorado e depuração mais difícil. Para superar estas dificuldades, é necessário que se disponham de ferramentas, que possam apoiar o projetista nas atividades de especificação, análise, e testes de sistemas. Este trabalho aborda a elaboração de uma ferramenta, baseada em Redes de Petri e programada com a linguagem Prolog, voltada para a especificação de sistemas concorrentes e a verificação de propriedades dinâmicas como: ausência de impasses, realização de progresso efetivo, minimidade, vivacidade, reiniciabilidade, limitabilidade, e recuperabilidade. Além disso, o trabalho mostra a potencialidade de uso da ferramenta em projetos para desenvolvimento de: hardware, sistemas de controle, sistemas operacionais, sistemas distribuidos, sistemas paralelos, sistemas de informação, etc..

(5)

(6)

(7)

(8) 4.3.2 Módulo de Análise . 43. 4.3.3 Módulo de Relatório . 46. 4.3.4 Módulo de Gravação . 47. 4.3.5 Módulo de Eliminação . 47. 4.4 Aspectos de Implementação da Ferramenta SISCOPE . 47. 4.5 Considerações Finais . 49. 5 Aspectos Funcionais da Ferramenta SISCOPE. 50. 5.1 Considerações Iniciais . 50. 5.2 Aspectos Funcionais do Módulo de Edição . 51. 5.3 Aspectos Funcionais do Módulo de Análise . 59. 5.4 Aspectos Funcionais do Módulo de Relatório. 65. 5.5 Considerações Finais Conclusões. 67 68. 6.1 Considerações Iniciais . 68. 6.2 Contribuições do Trabalho . 69. 6.3 Dificuldades Encontradas no Desenvolvimento do TrabalhoU, 69 6.4 Sugestões para Trabalhos Futuros . 70 71. Bibliografia. 111.

(9) A Glossário. 78. B Aspectos de Programação da Ferramenta SISCOPE. 80.

(10) Capitulo 1 Introdução 1.1 Considerações Iniciais A evolução da informática vem propiciando uma aplicação crescente dos sistemas computacionais nas mais diversas áreas do conhecimento. Muitas dessas aplicações referem-se a problemas altamente complexos, que exigem grande potência computacional, como simulação aerodinâmica, prospecção de petróleo, pesquisas avançadas no campo de energia atômica, física, química, economia, etc. Outras aplicações envolvem problemas complexos que requerem a obtenção de resultados em curtos períodos de tempo, como, por exemplo, a previsão meteorológica. Para muitos desses problemas, cujas soluções permitem viabilizar o progresso tecnológico e melhorar a segurança e o nível de vida das populações, existe a necessidade de equipamentos computacionais de grande potência, elevado desempenho, e alta confiabilidade. A necessidade desses equipamentos propiciou condições favoráveis ao aparecimento de métodos e técnicas de exploração de paralelismo em diversos níveis, envolvendo "software" e "hardware". Surgiram assim, diversos tipos de sistemas baseados na utilização concorrente de um ou mais processadores como sistemas multiprogramados, multiprocessadores, redes de computadores, sistemas de processamento não convencionais, etc.. 1.

(11)

(12) A representação de Redes de Petri é feita através de um grafo que modela as propriedades estáticas do sistema. O grafo contém dois tipos de nós: os círculos (ou lugares) e as barras (ou transições). Esses nós são concatenados através de arcos direcionados das transições para os lugares e vice-versa. A execução de uma Rede de Petri é controlada pela posição e movimentação de fichas ("tokens", senhas ou marcações) nos lugares da rede. Redes de Petri são apropriadas para modelar e analisar sistemas, revelando propriedades como inexistência de: bloqueio perpétuo, violação de exclusão mútua, ou adiamento indefinido de processos [Mendes-88]. Os Modelos Híbridos tentam combinar as vantagens dos modelos baseados em transição de estados e dos modelos baseados em linguagem de programação [Bochmann, Sunshine-80]. Essencialmente, utilizam um pequeno modelo de transição de estados, representando as características principais do sistema. Este modelo é incrementado com variáveis "de contexto" e rotinas de processamento adicionais para cada estado. Estas variáveis e rotinas são especificadas em uma linguagem de programação.. 1.2 Motivação do Trabalho A utilização concorrente de recursos de "hardware" e "software", ao mesmo tempo em que colabora com o desenvolvimento de sistemas com melhores características, implica também numa elevação substancial de sua complexidade, dificultando suas etapas de projeto. O desenvolvimento de sistemas concorrentes, na maioria das vezes, requer alta tecnologia, projetistas altamente especializados, e um enorme esforço de projeto. Nesse contexto, é de extrema importância o estudo da concorrência e• a disponibilidade de técnicas e ferramentas para análise de sistemas concorrentes, apoiando os projetistas em suas tarefas, ajudando-os, e até viabilizando suas atividades, no sentido de facilitar a elaboração de sistemas mais complexos. Isso permite uma redução de tempo de desenvolvimento e a melhoria de qualidade com reflexos positivos na confiabilidade do produto. Este trabalho faz considerações gerais sobre sistemas concorrentes, e apresenta a teoria de Redes de Petri, mostrando sua adequação e potencialidade 3.

(13) para modelagem e análise de sistemas com características de paralelismo e competição. Apresenta, também, o desenvolvimento de uma ferramenta para análise desses sistemas, utilizando o formalismo de Redes de Petri. A ferramenta foi implementada em Prolog, uma linguagem de programação lógica. Essa linguagem foi escolhida por apresentar características que auxiliam a verificação das propriedades gerais dos sistemas concorrentes, além de fornecer programas concisos, logicamente estruturados e auto-documentados.. 1.3 Organização da Dissertação A dissertação aqui apresentada, está organizada da seguinte maneira: O capítulo 2 trata a teoria de Redes de Petri, bem como algumas extensões do modelo, com suas principais características. Além disso, são apresentadas as principais técnicas para análise de Redes de Petri. No capítulo 3, faz-se uma análise das propriedades de Redes de Petri, juntamente com a discussão de alguns exemplos de análises de modelos de sistemas utilizando esse formalismo. O capítulo 4 faz um levantamento das ferramentas que utilizam o formalismo de Redes de Petri. É apresentada, também, a ferramenta SISCOPE, desenvolvida para auxiliar na especificação e na análise de sistemas concorrentes. No capitulo 5, são considerados os principais pontos sobre os aspectos funcionais da ferramenta SISCOPE desenvolvida. No capítulo 6, apresenta-se uma conclusão sobre o estudo realizado, o trabalho desenvolvido, as dificuldades encontradas e sugestões para trabalhos futuros.. 4.

(14)

(15)

(16) Assim, na figura 2.1, n = 5 e MO =< 0,0,1,1,0 >. A única transição habilitada é T3 que, se for disparada, resultará em M1 =< 1,1,1, 0,0 >, conforme figura 2.2.. LI. L3. Ti. T2. L4. L5. T3. T4. Figura 2.2: Marcação da Rede de Petri da figura 2.1 após disparo de T3 Nessa situação, Ti e T2 estão habilitadas e, quando uma das transições é disparada, a outra fica desabilitada, o que representa um conflito, resolvido arbitrariamente.. 2.3 Tipos de Redes de Petri No sentido de facilitar a modelagem dos sistemas computacionais, as Redes de Petri podem apresentar algumas extensões que permitem o tratamento de questões específicas não cobertas pelas Redes de Petri puras como, por exemplo, a representação de temporização, a manipulação de fichas diferentes, a utilização de funções estocásticas, etc. Assim, são apresentadas, a seguir algumas extensões de Redes de Petri como: Redes de Petri Predicado/Transição, Redes de Petri Coloridas, Redes de Petri Temporizadas, Redes de Petri Estocáticas, e Redes de Petri Numéricas. Além das considerações gerais sobre cada uma das extensões, são colocadas, também, as suas vantagens e desvantagens, e uma comparação entre elas..

(17)

(18)

(19)

(20)

(21)

(22)

(23)

(24)

(25)

(26)

(27)

(28)

(29)

(30)

(31)

(32)

(33)

(34)

(35)

(36)

(37)

(38)

(39)

(40)

(41)

(42)

(43)

(44)

(45)

(46)

(47)

(48)

(49)

(50)

(51)

(52)

(53)

(54)

(55)

(56)

(57)

(58)

(59)

(60)

(61)

(62)

(63)

(64) Figura 5.5: Tela para a Operação de Modificação de um Elemento Componente da Rede de Petri. Figura 5.6: Menu de Opções de Operações de Modificação de um Elemento Componente da Rede de Petri 54.

(65)

(66)

(67)

(68)

(69)

(70)

(71)

(72)

(73)

(74)

(75)

(76)

(77)

(78)

(79)

(80)

(81)

(82)

(83)

(84)

(85)

(86)

(87)

(88)

(89)

(90)

(91)

(92)

(93)

(94)

(95)

(96)

(97)

(98)

(99)

(100)

(101)

(102)

(103)

(104)

(105)

(106)

(107)

(108)

(109)

(110)

(111)

(112)

(113) reiniciavel(Lnao,Lsim,O,Aux,Aux,na0):- !. reiniciavel(Lnao,Lsim,[(N,A)1Lcaminho] ,Laux,[(N,A)1Laux],sim):traz_marcacao_filhos(A,N,M,Lf), traz_marcacao_arvoreaf,O,Lf1), pertence((0,_),Lf), !. reiniciavel(Lnao,Lsim,[(N,A)1Lcaminho] ,Laux,[(N,A)1Laux],nao):traz_marcacao_filhos(A,N,M,Lf), %na° ha filhos ou (Lf = (traz_marcacao_arvoreaf,O,Lf1), retira_repetidos(Lf1,[(N,A)ILaux],[],Lf2), '/.retira ja visitados Lf2 \= retira_repetidos(Lf2,Lnao,O,Lf3), '/.retira nao reiniciaveis Lf3 = E] ), !.. %nao ha filhos reiniciaveis. reiniciavelanao,Lsim,[(N,A)1Lcaminho] ,Laux,[(N,A)ILaux],sim):traz_marcacao_filhos(A,N,M,Lf), traz_marcacao_arvore(Lf,O,Lf1), retira_repetidos(Lf1,[(N,A)ILaux] ,O,Lf2), % retira ja visitados Lf2 \=0, retira_repetidos(Lf2,Lnao,O,Lf3) , % retira nao reiniciaveis retira_repetidos(Lf3,Lsim,O,Lf4) , % retira reiniciaveis % tem ao menos 1 filho reiniciavel Lf3 \= Lf4, !. reiniciavel(Lnao,Lsim,[(N,A)1Lcaminho] ,Laux,Ljavisitados,Resp):traz_marcacao,filhos(A,N,M,Lf), traz_marcacao_arvoreaf,O,Lf1), retira_repetidos(Lf1,[(N,A)ILaux],[],Lf2), retira_repetidos(Lf2,Lnao,O,Lf3), junta_listas(Lcaminho,Lf3,Lcaminhol), incrementa_visitados(Laux,(N,A),Laux1), reiniciavel(Lnao,Lsim,Lcaminhol,Lauxl,Ljavisitados,Resp).. se_reiniciavel(sim,L1,L2,L3,L1,L4):- !, junta_listas(L2,L3,L4). se_reiniciavel(nao,L1,L2,L3,L4,L2):- !, junta_listas(L1,L3,L4). 103.

(114) traz_marcacao_arvore(0,Aux,Aux):- !. traz_marcacao_arvore([(M,T,Tp,A)ILf],Aux,Lf1):traz_marcacao_arvoreaf,[(M,A)1Aux],Lf1). incrementa_visitados(L1,N,L1):pertence(N,L1), !. incrementa_visitados(L1,NÁNIL1]). informa_reiniciavelL,0):- !, define_window(reiniciavel,",(8,13),(13,66),(31,31)), current_window(„reiniciavel), escreve_move((1,15),(1,35),'A REDE E REINICIAVEL'), vai_mundo(trabalho), recordz(analise_r&A Rede e Reiniciavel'),R), vai_mundo(main). informa_reiniciavel(_,Lnr):traz_so_marcacao(Lnr,O,Lnr1), define_window(reiniciavel,' Marcacoes Nao Reiniciaveis (8,13),(13,66),(31,31)), current_window(„reiniciavel), escreve_naoreiniciaveis(Lnr1,1,1,0), transforma_lista_texto(Lnrl,",T), concatena('Marcacoes Nao Reiniciaveis : ',T,Mens), vai_mundo(trabalho), recordz(analise_r,(Mens),R), vai_mundo(main),!. escreve_naoreiniciaveis(0,L,C,_):- ! Cl is C-2, escreve_moveM,C1),(L,C),"). escreve_naoreiniciaveis([TILtm],L,C,Cont):Cont < 8, !, Cl is C+4, escrevejlovel((L,C),write(T),(L,C1),','), C2 is C+6, 104.

(115) Contl is Cont+1, escreve_naoreiniciaveis(Ltm,L,C2,Cont1). escreve_naoreiniciaveis(Ltm,L,C,Cont):escreveJmovel((L,C),'...',(3,1),'<ENTER> - continuar'), keyb(X,J, enter(X,Y), limpa_tela_reini, escreve_naoreiniciaveis(Ltm,1,1,0). limpa_tela_reini:escreve_movel((0,1),wc(52,0),(1,1),wc(52,0)), escreve_movel((2,1),vc(52,0),(3,1),wc(52,0))..

(116)

Referências

Documentos relacionados

Segundo o mesmo autor, a animação sociocultural, na faixa etária dos adultos, apresenta linhas de intervenção que não se esgotam no tempo livre, devendo-se estender,

O termo extrusão do núcleo pulposo aguda e não compressiva (Enpanc) é usado aqui, pois descreve as principais características da doença e ajuda a

O objetivo deste trabalho foi avaliar épocas de colheita na produção de biomassa e no rendimento de óleo essencial de Piper aduncum L.. em Manaus

Para esse fim, analisou, além do EVTEA, os Termos de Referência (TR) do EVTEA e do EIA da Ferrogrão, o manual para elaboração de EVTEA da empresa pública Valec –

Requiring a realignment of the EVTEA with its ToR, fine-tuning it to include the most relevant socio-environmental components and robust methodologies for assessing Ferrogrão’s impact

• The definition of the concept of the project’s area of indirect influence should consider the area affected by changes in economic, social and environmental dynamics induced

Nas leituras de falhas efetuadas, foram obtidos códigos de anomalia por meio de dois diferentes protocolos de comunicação: o ISO 14230 KWP (2000) e o ISO 15765-4 CAN. A seguir, no