Top Banner
Utilizando Gram ´ atica de Grafos para o Desenvolvimento de Sistemas Embarcados Baseado em Modelos UML * ıcolas N. Bisi, Vin´ ıcius Pazzini, Luciana Foss, Simone A. C. Cavalheiro, Lisane B. de Brisolara 1 Centro de Desenvolvimento Tecnol´ ogico – Universidade Federal de Pelotas (UFPEL) Caixa Postal 354 – 96010-900 – Pelotas, RS - Brasil {nnbisi,vspazzini,lfoss,simone.costa,lisane}@inf.ufpel.edu.br Abstract. UML and Simulink models are widely used in embedded systems de- sign. UML offers proper high-level abstractions to software-oriented models specification, while Simulink allows a better dataflow description. The featu- res of each model motivates the development of proposals unifying and creating mappings between them. This article proposes a formal definition for a transla- tion from UML to Simulink model, previously proposed, using the graph gram- mar formalism. This mapping was previously described in natural language and a prototype implemented in Java. The formal definition using graph grammars not only eliminated possible ambiguities in the mapping, but also allowed the use of Groove to automate the translation. Resumo. Modelos UML e Simulink s ˜ ao amplamente utilizados no projeto e de- senvolvimento de sistemas embarcados. UML fornece abstrac ¸˜ oes de alto n´ ıvel adequadas para a modelagem de software orientado a modelos, j´ a Simulink permite uma melhor descric ¸˜ ao de fluxo de dados. As especificidades de cada modelo motivam propostas de unificac ¸˜ ao e mapeamento entre eles. Este artigo prop˜ oe uma definic ¸˜ ao formal para uma traduc ¸˜ ao de modelos UML em mode- los Simulink, previamente proposta, utilizando o formalismo de gram´ atica de grafos. Esta traduc ¸˜ ao foi previamente definida em linguagem natural e um prot´ otipo implementado em Java. A definic ¸˜ ao formal utilizando gram´ atica de grafos n˜ ao s´ o eliminou poss´ ıveis ambiguidades no mapeamento, como tamb´ em permitiu o uso da ferramenta Groove para a automatizac ¸˜ ao da traduc ¸˜ ao. 1. Introduc ¸˜ ao ecnicas que partem de modelos de alto n´ ıvel de abstrac ¸˜ ao s˜ ao requeridas para lidar com a complexidade encontrada nas novas gerac ¸˜ oes de sistemas embarcados, sendo cruciais para o sucesso do projeto. Uma grande reduc ¸˜ ao do esforc ¸o no desenvolvimento de sistemas embarcados pode ser obtida com o uso de modelos, quando o c´ odigo de uma linguagem de programac ¸˜ ao ´ e gerado automaticamente a partir desses modelos. Por´ em, ferramentas dispon´ ıveis para modelagem e gerac ¸˜ ao de c ´ odigo normalmente s˜ ao dependen- tes de dom´ ınio e o software embarcado normalmente possui comportamento heterogˆ eneo, requerendo suporte a m ´ ultiplos modelos de computac ¸˜ ao. Na ´ area de engenharia de software, UML [OMG 2010] ´ e uma das linguagens mais utilizadas, por fornecer abstrac ¸˜ oes de alto n´ ıvel adequadas para a modelagem de software * Trabalho financiado pelo CNPq e FAPERGS
12

Using Graph Grammars to Develop Embedded Systems Based on UML Models

Feb 27, 2023

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Using Graph Grammars to Develop Embedded Systems Based on UML Models

Utilizando Gramatica de Grafos para o Desenvolvimento deSistemas Embarcados Baseado em Modelos UML∗

Nıcolas N. Bisi, Vinıcius Pazzini,Luciana Foss, Simone A. C. Cavalheiro, Lisane B. de Brisolara

1Centro de Desenvolvimento Tecnologico – Universidade Federal de Pelotas (UFPEL)Caixa Postal 354 – 96010-900 – Pelotas, RS - Brasil

{nnbisi,vspazzini,lfoss,simone.costa,lisane}@inf.ufpel.edu.br

Abstract. UML and Simulink models are widely used in embedded systems de-sign. UML offers proper high-level abstractions to software-oriented modelsspecification, while Simulink allows a better dataflow description. The featu-res of each model motivates the development of proposals unifying and creatingmappings between them. This article proposes a formal definition for a transla-tion from UML to Simulink model, previously proposed, using the graph gram-mar formalism. This mapping was previously described in natural language anda prototype implemented in Java. The formal definition using graph grammarsnot only eliminated possible ambiguities in the mapping, but also allowed theuse of Groove to automate the translation.

Resumo. Modelos UML e Simulink sao amplamente utilizados no projeto e de-senvolvimento de sistemas embarcados. UML fornece abstracoes de alto nıveladequadas para a modelagem de software orientado a modelos, ja Simulinkpermite uma melhor descricao de fluxo de dados. As especificidades de cadamodelo motivam propostas de unificacao e mapeamento entre eles. Este artigopropoe uma definicao formal para uma traducao de modelos UML em mode-los Simulink, previamente proposta, utilizando o formalismo de gramatica degrafos. Esta traducao foi previamente definida em linguagem natural e umprototipo implementado em Java. A definicao formal utilizando gramatica degrafos nao so eliminou possıveis ambiguidades no mapeamento, como tambempermitiu o uso da ferramenta Groove para a automatizacao da traducao.

1. IntroducaoTecnicas que partem de modelos de alto nıvel de abstracao sao requeridas para

lidar com a complexidade encontrada nas novas geracoes de sistemas embarcados, sendocruciais para o sucesso do projeto. Uma grande reducao do esforco no desenvolvimentode sistemas embarcados pode ser obtida com o uso de modelos, quando o codigo de umalinguagem de programacao e gerado automaticamente a partir desses modelos. Porem,ferramentas disponıveis para modelagem e geracao de codigo normalmente sao dependen-tes de domınio e o software embarcado normalmente possui comportamento heterogeneo,requerendo suporte a multiplos modelos de computacao.

Na area de engenharia de software, UML [OMG 2010] e uma das linguagens maisutilizadas, por fornecer abstracoes de alto nıvel adequadas para a modelagem de software

∗Trabalho financiado pelo CNPq e FAPERGS

Page 2: Using Graph Grammars to Develop Embedded Systems Based on UML Models

orientado a modelos. Ja na area de sistemas embarcados um modelo largamente adotadopor engenheiros de hardware e de controle e o de blocos Simulink [Mathworks 2011].Uma comparacao feita entre as linguagens UML e modelos Simulink mostra que UML ebaseada em eventos e nao e adequada para modelar sistemas dataflow. Por outro lado, osmodelos Simulink suportam dataflow e geracao de codigo, porem eles provem abstracoesde mais baixo nıvel, quando comparados a UML. Conclui-se que tanto UML como Simu-link possuem vantagens e desvantagens para a sua adocao, o que motiva a integracao deambas as linguagens em um unico fluxo de projeto [Brisolara et al. 2008].

Neste sentido, um mapeamento de modelos UML para modelos Simulink foi pro-posto por Brisolara em [Brisolara et al. 2008], com o objetivo de permitir que desen-volvedores utilizem UML como linguagem de modelagem e ao mesmo tempo se be-neficiem com as facilidades de Simulink para simulacao e geracao de codigo. No en-tanto, a definicao deste mapeamento foi feita em linguagem natural e um prototipo foiimplementado com Java. Este artigo propoe uma definicao formal para esta traducaopreviamente proposta, utilizando o formalismo de gramatica de grafos [Rozenberg 1997,Ehrig et al. 1999]. A definicao formal utilizando gramatica de grafos nao so eliminoupossıveis ambiguidades na definicao em linguagem natural, como tambem permitiu o usoda ferramenta Groove [Rensink 2004] para a automatizacao da traducao.

A utilizacao de gramatica de grafos se mostra adequada para especificar lingua-gens visuais, como e o caso das linguagens UML e Simulink, por especificar um modeloa partir de regras de transformacao de grafos. Uma gramatica de grafos e definida por umgrafo inicial, que modela o estado inicial da especificacao, um grafo tipo, o qual limita osdiferentes tipos de vertices e arcos da especificacao e um conjunto de regras, que descre-vem as possıveis mudancas de estados que podem ocorrer. Na especificacao da traducaoem gramatica de grafos, uma representacao de UML como grafo define o estado inicial domapeamento e o conjunto de regras definiu formalmente o mapeamento proposto. O graforesultante da transformacao, obtido apos a aplicacao das regras ao grafo UML, constituiuma representacao de grafo para o correspondente modelo Simulink.

O restante deste artigo esta organizado como segue. A secao 2 descreve o forma-lismo de gramatica de grafos. A secao 3 define formalmente a conversao da linguagemUML para a linguagem Simulink. A secao 4 apresenta as conclusoes finais.

2. Gramatica de grafos

Nesta secao sao apresentados os principais conceitos de gramatica de grafos, se-guindo a abordagem Single Pushout [Rozenberg 1997]. Gramatica de grafos e uma lin-guagem de especificacao formal na qual grafos sao usados para representar estados deum sistema e mudancas no estado do sistema sao descritas por regras (mapeamento entregrafos).

Pesquisas na area de gramaticas de grafos iniciaram nos anos 70[Ehrig et al. 1973], e metodos, tecnicas e resultados nesta area ja foram estudadose aplicados em uma grande variedade de campos da Informatica, como teoria delinguagens formais, reconhecimento e geracao de imagens, construcao de compiladores,engenharia de software, modelagem de sistemas concorrentes e distribuıdos, projeto eteoria de bancos de dados, entre outros [Ehrig et al. 1999].

Page 3: Using Graph Grammars to Develop Embedded Systems Based on UML Models

2.1. Sintaxe de gramatica de grafos

Os conceitos basicos desta abordagem sao os de grafo e morfismo de grafos. Gra-fos sao estruturas compostas por vertices e arestas, que permitem descrever situacoescomplexas de forma visual, compacta, clara e intuitiva.

Um grafo G = (VG, AG, LVG, LAG, oG, dG, lV , lA) consiste de um conjunto devertices VG, um conjunto de arestas AG, um conjunto de rotulos de vertices LVG, umconjunto de rotulos de arestas LAG, duas funcoes totais, oG, dG : AG → VG, denominadasfuncoes origem e destino, as quais associam cada aresta ao seu vertice origem e destino,respectivamente, e duas funcoes totais lV : VG → LVG, lA : AG → LAG que rotulamvertices e arestas.

Na abordagem usada neste artigo, atributos de algum tipo de dado podem serassociados aos vertices. Esse tipo de grafo, chamado de grafo com atributos, e definidocomo um grafo cujos conjuntos VG e AG sao compostos de dois subconjuntos disjuntos:VG = V rG]V aG, onde V rG e um conjunto de vertices regulares e V aG e um conjunto devertices de atributos; e AG = ArG ] AaG, onde ArG e um conjunto de arestas regularese AaG e um conjunto de arestas de atributos. Os vertices de atributos sao rotulados porconstantes de algum tipo de dado, por exemplo constantes numericas ou literais, e asarestas de atributos conectam vertices regulares a vertices de atributos. Deste modo, umgrafo com atributos G′ = (G,AlgG) e definido por um grafo G mais uma algebra AlgG, aqual define os rotulos dos vertices V aG, isto e, AlgG ⊆ LVG e para todo v ∈ V aG, tem-seque lV (v) ∈ AlgG.

A Figura 1 exibe um exemplo de grafo, onde os vertices sao representados porretangulos e as arestas por setas conectando os vertices de origem aos vertices de destino.Os rotulos dos vertices regulares estao inscritos nos retangulos e os das arestas regularessao escritos sobre as setas. Os atributos, tanto dos vertices quanto das arestas, nao sao re-presentados explicitamente, eles aparecem inscritos nos vertices regulares aos quais estaoassociados. Por exemplo, o vertice regular com rotulo IO (no canto esquerdo superior daFigura 1) tem o atributo id = “IODevice”, onde id e uma aresta de atributo que conecta IOao vertice de atributo “IODevice”.

SASchedResid = ”T3”

get

set

SFunctionid = ”calc”

set

SFunctionid = ”calc”

set

SAengineid = ”CPU1”

SASchedResid = ”T1”

varid = ”b”

varid = ”y”

get

varid = ”r1”

setIOgetIO

libid = ”mult”

varid = ”r2”

IOid = ”IODevice”

IOid = ”IODevice”

SFunctionid = ”dec”

getIO

SFunctionid = ”calc”

varid = ”r3”

IOid = ”Sensor”

SASchedResid = ”T2”

varid = ”a”

varid = ”x”

SAengineid = ”CPU2”

varid = ”r4”

SFunctionid = ”calc”

get

src

result

result

tgt

arg

in

in

arg

result

src

arg

tgt

in

src

in

in

arg

arg

result

result

src

src

arg

tgt

src

tgt

tgt

tgt

src

arg

argin

result

in

tgt

arg

result

in

src

src

result

arg

resultin

tgt

result

arg

tgt

result

Figura 1. Exemplo de grafo.

Page 4: Using Graph Grammars to Develop Embedded Systems Based on UML Models

Um morfismo f : L → R de um grafo L para um grafo R e definido por tresfuncoes parciais, uma funcao fv : VL → VR que mapeia vertices do grafo L em verticesno grafo R, tal que para todo v ∈ V rL.fv(v) ∈ V rR e para todo v ∈ V aL.fv(v) ∈V aR; uma funcao fa : AL → AR que mapeia as arestas do grafo L em arestas no grafoR, tal que para todo a ∈ ArL.fa(a) ∈ ArR e para todo a ∈ AaL.fa(a) ∈ AaR; euma funcao fl : LVL → LVR, que faz o mapeamento dos rotulos entre os respectivosgrafos, tal que para todo x ∈ AlgL.fl(x) ∈ AlgR. Estas funcoes devem obedecer algumasregras de compatibilidade. Compatibilidade aqui significa que cada vez que um arco dografo L for mapeado em um arco do grafo R, entao, em relacao ao arcos mapeados, overtice origem (respectivamente destino) do arco de L deve ser mapeado para o verticeorigem (respectivamente destino) do arco em R. Alem disso, o mapeamento dos rotulostambem deve ser compatıvel, isto e, se um vertice (ou arco) de L e mapeado em umvertice (ou arco) de R, seu rotulo deve ser mapeado para o rotulo do vertice (ou arco) emR. Um morfismo e total/injetivo se todas as funcoes que o definem sao totais/injetivas,respectivamente.

Regras especificam possıveis mudancas de estado em uma especificacao. Umaregra r : L → R em gramatica de grafos consiste de dois grafos, L (lado esquerdo) e R(lado direito), e um morfismo de grafos entre eles. O morfismo especifica elementos quedevem ser preservados, deletados ou criados pela aplicacao da regra. Regras podem serenriquecidas com NACs (Condicoes de Aplicacao Negativas).

Condicoes de aplicacao negativas (NACs, do ingles negative application conditi-ons) restringem a utilizacao de uma regra ao afirmar que uma determinada estrutura naopode estar presente no grafo estado. Dada uma regra r : L → R, condicoes de aplicacaonegativas sao conjuntos de morfismos totais e injetores que partem do lado esquerdo daregra, denotado por Mor(L). Cada morfismo l ∈Mor(L) e chamado de restricao.

SASchedRes

SAengine SASchedRes

set

varX

CPUCOMMUNid = ”Intra”

var

oC

arg

src

in tgt

in

!=

l r

SASchedRes

SAengine SASchedRes

set

var

in

in

tgt

src

arg

!=

SASchedRes

SAengine SASchedRes

var

X

CPUCOMMUNid = ”Intra”

in

in

oSarg

vardC

!=

(a) Morfismos l e r

SASchedRes

SAengine SASchedRes

set

var

XX

CPUCOMMUNid = ”Intra”

CPUCOMMUNid = ”Intra”

var

arg

!=

arg

in

tgt

var

dC

src

oS

in

oC

(b) Sintaxe de uma regra doGroove

Figura 2. Exemplo de regra

A Figura 2 mostra um exemplo de regra com condicao negativa de aplicacao. AFigura 2(a) detalha o morfismo l, que mapeia o lado esquerdo da regra para um grafo queinclui os elementos proibidos, e o morfismo r, que descreve a transformacao ocorrida naaplicacao da regra. Os elementos que nao podem estar presentes para habilitar a aplicacaodesta regra sao os vertices CPUCOMMUN e X e os arcos var e oC que nao estao na ima-gem de l. Os elementos que devem ser estar presentes para habilita-la, sao os vertices set,

Page 5: Using Graph Grammars to Develop Embedded Systems Based on UML Models

SASchedRes, var, SAengine, SASchedRes e os arcos src, arg, in e !=, sendo que, dentreestes, o vertice set e os arcos que incidem nele sao deletados e os demais elementos saopreservados. Os elementos criados pela regra sao os vertices X e CPUCOMMUN, e os ar-cos dC, oS, var e arg que nao estao na pre-imagem de r. No simulador do Groove, e usadauma sintaxe mais compacta para as regras. Cada regra e representada por um unico grafo,com notacoes diferentes para cada tipo de elemento. A Figura 2(b) apresenta a sintaxe daregra da Figura 2(a) no Groove, onde os elementos criados sao representados por linhasespessas e contınuas, os elementos preservados sao representados por linhas simples econtınuas, os elementos deletados sao representados por linhas simples e tracejadas e oselementos proibidos (NACs) por linhas espessas e tracejadas.

Uma gramatica de grafos consiste dos seguintes componentes:

• Um grafo tipo que representa os diferentes tipos de itens que podem ocorrer emuma especificacao;• Um grafo inicial que modela o estado inicial de uma especificacao;• Um conjunto de regras que definem as possibilidades de mudancas nos estados de

uma especificacao.

Assim, uma gramatica de grafos com NACs e uma tupla GNN = (T,G0, R), onde T eum grafo tipo, G0 e um grafo tipado em T e R e um conjunto de regras com NACs.

2.2. Semantica da gramatica de grafos

Uma regra, sem NACs, e possıvel de ser aplicada se todos os componentes dografo esquerdo da regra estao presentes no grafo (estado), i.e., se houver um morfismototal de grafos do lado esquerdo da regra para o grafo. Este morfismo e denominadomatch. O grafo resultante da aplicacao de uma regra r : LT → RT a um grafo (estado) eobtido a partir das seguintes etapas:

• Adiciona-se ao grafo tudo que foi criado pela regra, ou seja, estruturas ausentesem L e presentes em R (que nao tem pre-imagem em L);• Deleta-se do grafo tudo que deve ser deletado pela regra, ou seja, estruturas pre-

sentes em L e nao mapeados em R;• Deleta-se arcos pendentes. Este passo e necessario no caso de haverem arcos

conectados a vertices deletados no passo anterior. Como o resultado da aplicacaode uma regra deve ser um grafo, este arcos devem ser deletados tambem.

Uma regra com NACs pode de ser aplicada ao grafo GT se ha um match m :LT → GT que satisfaz todas as NACs da regra. Um match m satisfaz todas as NACsse ele satisfaz cada uma das restricoes. Para m satisfazer um restricao l : LT → NT ,nao pode ser possıvel encontrar os elementos proibidos pela restricao l no contexto de m,isto e, nao pode existir um mapeamento de n : NT → GT que torne a seguinte igualdadeverdadeira n◦l = m. O resultado da aplicacao de um regra com NACs e o mesmo descritoanteriormente (para regras sem NACs).

3. UML para Simulink

A especificacao da traducao dos diagramas UML para um diagrama de blocos Si-mulink foi definida atraves de uma gramatica de grafos. Esta traducao utiliza diagramas

Page 6: Using Graph Grammars to Develop Embedded Systems Based on UML Models

UML de sequencia e de implantacao. O diagrama de implantacao e utilizado para de-monstrar a organizacao do hardware e a ligacao do software com os dispositivos fısicos.Ele tambem modela a visao estatica da implantacao de um sistema entre seus nos fısicose seus relacionamentos, especificando os detalhes referentes a construcao. O diagramade sequencia mostra as interacoes entre objetos em uma sequencia temporal, facilitandoa visualizacao da dinamica do sistema, pois enfatiza o ordenamento das operacoes. Odiagrama de sequencia UML utilizado foi adaptado e, com isso, teve seu uso mais res-trito, onde a comunicacao entre objetos thread e entre objetos thread e IO (dispositivo deentrada e saıda) so e possıvel atraves da chamada de metodos get e set. Os objetos podemainda chamar metodos proprios ou metodos do objeto especial Plataforma. Este ultimoobjeto representa uma biblioteca de operacoes pre-definidas.

O processo de traducao de UML para Simulink, ilustrado na Figura 3, comecacom a construcao do grafo inicial da gramatica a partir dos diagramas de sequencia eimplantacao. Este grafo e descrito na linguagem interpretada pela ferramenta GROOVE,que o transforma, aplicando as regras definidas, em um grafo que representa um modeloSimulink. O grafo final e entao traduzido para a linguagem de entrada do Simulink. Esteprocesso ainda e semi-automatico, onde apenas a transformacao entre o grafo inicial efinal e automatizada, com o uso da ferramenta GROOVE.

Grafo Inicial SimulinkUML Grafo

Final

Transformação GROOVE

Figura 3. Processo de transformacao de diagrams UML para modelos Simulink

Na Figura 4 temos exemplos de diagramas de implantacao e de sequencia. O dia-grama de implantacao, descrito na parte superior da figura, descreve um sistema de hard-ware com duas CPUs (CPU1 e CPU2) interligadas por um barramento (bus). Alem disso,tambem esta definido como as tres threads, T1, T2 e T3, serao alocadas nestas CPUs. Porquestoes de simplificacao, os tres diagramas de sequencia, descrevendo o comportamentode cada uma das threads, foram representados no unico diagrama apresentado na parteinferior da figura. As chamadas dos metodos main task() realizadas pelo objeto Schedu-ler indicam o inicio da execucao de cada uma das threads. As setas entre as threads ouentre uma thread e um dispositivo de entrada e saıda (Sensor ou IODevice), representamas chamadas de metodos get e set. As demais setas, representam as chamadas de metodosdas proprias threads ou dos metodos do objeto Plataforma.

Simulink e uma ferramenta de modelagem, simulacao e analise de sistemasdinamicos baseado na representacao por esquemas de blocos. Ele fornece um ambientegrafico interativo e um conjunto personalizavel de bibliotecas de blocos que permitemprojetar, simular, implementar e testar uma variedade de diferentes sistemas com variacaode tempo, incluindo comunicacoes, controles, processamento de sinais, processamento devıdeo e imagem[Mathworks 2011]. Um diagrama de blocos e a representacao grafica deum processo ou modelo de um sistema complexo. Ele difere dos fluxogramas por re-presentar pequenas partes de um grande sistema com foco no processo logico. Nestesdiagramas, os sistemas sao compostos interligando os blocos. Para conexao entre os blo-cos, sao utilizadas linhas, atraves das quais os blocos trocam sinais. Alem disso, e possıvel

Page 7: Using Graph Grammars to Develop Embedded Systems Based on UML Models

Figura 4. Diagramas de implantacao e de sequencia.

representar uma hierarquia entre os componentes, onde um bloco pode conter outros. AFigura 5 mostra o modelo Simulink correspondente aos diagramas exibidos na Figura 4.

Figura 5. Modelo Simulink.

A seguir e definida a gramatica de grafos que modela a traducao entre os diagra-mas UML e o modelo Simulink.

3.1. Grafo Inicial

Para modelagem da traducao, inicialmente e feita a conversao do diagrama desequencia UML em um grafo, que sera usado como grafo inicial da gramatica. A Figura 1ilustra o grafo correspondente aos diagramas da Figura 4.

No grafo, todos os elementos do UML foram representados por vertices, e suasrelacoes indicadas por arestas. Por exemplo, quando a thread 3 (T3) realiza a chamada deum metodo proprio calc(v=a):x no UML, sua correspondente no grafo e representada porum vertice SFunction calc, sendo que a aresta in indica que o metodo pertence a thread

Page 8: Using Graph Grammars to Develop Embedded Systems Based on UML Models

T3. Alem disso, as arestas arg e result indicam que a variavel a e o argumento da funcaoe a variavel x e o seu resultado, respectivamente.

A partir do grafo inicial, aplicando as regras especificadas na gramatica, obtem-seum grafo que corresponde a um diagrama do Simulink. Essas regras agem transformandoo grafo ate que nenhuma regra possa mais ser aplicada, e com isso, obtem-se o grafo quedescreve o diagrama Simulink equivalente ao diagrama de sequencia UML inicial.

3.2. Regras

As regras que definem a gramatica, podem ser agrupadas em tres grupos:

• regras prefixadas por get;• regras prefixadas por set; and• regras prefixadas por Fun, Lib, ou Thr.

SAengine

CPUCOMMUNid = ”Intra”

get

X

SASchedRes

SASchedRes

X

CPUCOMMUNid = ”Intra”

var

vardSvar

tgt

in

!=

oC

result result

src

in

dC

(a) Regra getIntraC

get

CPUCOMMUNid = ”Inter”

X

var

SASchedResSASchedRes

X

SAengine

CPUCOMMUNid = ”Inter”

SAengine

X

result

dE

oE

dS

!=

tgt

inresult

oC

var

var var

src

dC

in

(b) Regra getInterC

get

SAengine

var

SASchedRes

X

SASchedRes

CPUCOMMUNid = ”Intra”

X

tgt

in

dC

var

!=

var

oC

result

in

result

dS

src

(c) Regra getIntra

getSASchedRes

X

CPUCOMMUNid = ”Inter”

X

SAengine

var

SASchedRes

X

SAengine

dE

result

dC

oE

dS

!=

oC

tgt

in

result

var

varvar

src

in

(d) Regra getInter

SAengine

IO

var

X

SASchedRes

X

getIO

result

var

dE

tgt

var

oE

result

oIin

dS

src

(e) Regra getIO

Figura 6. Regras prefixadas por get.

As regras prefixadas por get, ilustradas na Figura 6, criam as conexoes entre osblocos CPUCOMMUN ou IO e as entradas de thread, deletando a chamada dos metodosget.

As regras getIntra, getIntraC, getInter e getInterC possuem a mesma caracterısticade criar o caminho percorrido por uma variavel a partir de um dispositivo de comunicacaoCPUCOMMUN ate a entrada de uma thread, porem, as regras getIntraC e getInterC saoaplicadas quando CPUCOMMUN ainda nao foi criada, gerando-a. E as regras getInter egetIntra sao aplicadas apenas caso um CPUCOMMUN para a respectiva variavel ja exista.A regra getIO cria o caminho a partir da entrada (IO) ate o inicio de uma thread. As

Page 9: Using Graph Grammars to Develop Embedded Systems Based on UML Models

Figura 7. Componentes do Simulink criados pelas regras prefixadas por get.

conexoes criadas por este conjunto de regras aplicadas ao grafo inicial da Figura 1 estaodestacadas na Figura 7.

Outro conjunto de regras exibido na Figura 8, contem as regras prefixadas por set.Estas regras criam o caminho percorrido de uma variavel derivada da thread ate um blocoCPUCOMMUN ou IO, deletando a chamada dos metodos set.

SAengine

CPUCOMMUNid = ”Intra”

set

X

SASchedRes

SASchedRes

X

CPUCOMMUNid = ”Intra”

var

var

oS

var

tgt

in

!=

arg

src

in

dC oC

arg

(a) Regra setIntraC

X

SAengine

CPUCOMMUNid = ”Inter”

SAengine

X

SASchedRes SASchedRes

var

X

CPUCOMMUNid = ”Inter”

set

dC

!=

oE

tgt

in

oC

dEvar

var

arg arg

var

src

in

oS

(b) Regra setInterC

SAengine

X

set

X

SASchedRes

SASchedRes

CPUCOMMUNid = ”Intra”

var

var

oC

var

tgt

in

!=

oS

arg

in

src

dC

arg

(c) Regra setIntra

SAengine

X

CPUCOMMUNid = ”Inter”

SASchedRes

var

SAengine

X

X

SASchedRes set

dE

!=

tgt

in

oC

var

arg argoS

oE var

src

var

dC

in

(d) Regra setInter

SAengine

setIO

X

IOSASchedRes

X vardI

var

var

oE

tgt

oS arg

in

src

dE

arg

(e) Regra setIO

Figura 8. Regras prefixadas por set.

As regras setInter, setInterC, setIntra e setIntraC, criam o caminho percorrido poruma variavel a partir de da entrada de uma thread ate um dispositivo de comunicacaoCPUCOMMUN. As regras setIntraC e setInterC sao aplicadas quando CPUCOMMUNainda nao foi criada, criando-a. E as regras setInter e setIntra sao aplicadas apenas casoseu CPUCOMMUN para a respectiva variavel ja existir. A regra setIO cria o caminho apartir da entrada thread ate a saıda (IO).

As regras detalhadas na Figura 9, criam as conexoes entre blocos de funcoes(SFunction e Lib) e outras funcoes/threads. Tais regras sao aplicadas quando o resultadode uma funcao/thread e utilizada como argumento de uma funcao/thread.

Page 10: Using Graph Grammars to Develop Embedded Systems Based on UML Models

SFunction

Xvar

SFunction

SASchedRes

in oF

var

result

dFin arg

(a) Regra FunFun

lib

Xvar

SFunction

SASchedRes

in oF

var

result

in arg dL

(b) Regra FunLib

SFunction

Xvar

SASchedRes

result oF

dSarg

varin

(c) Regra FunThr

SFunction

Xvar

lib

SASchedRes

in oL

var

result

dFin arg

(d) Regra LibFun

lib

Xvar

lib

SASchedRes

in oL

var

result

in arg dL

(e) Regra LibLib

SASchedRes

Xvar

lib

oL

var

result

dS

in

arg

(f) Regra LibThr

SFunction

Xvar

SASchedRes

var

result

dF

oS

in

arg

(g) Regra ThrFun

lib

Xvar

SASchedRes

var

result oS

in

arg dL

(h) Regra ThrLib

Figura 9. Regras que criam conexoes entre funcoes e threads.

Figura 10. Componentes do Simulink criados pelas regras da Figura 9.

As regras prefixadas por Fun criam as conexoes entre a saıda de blocos de tipoSFunction e a entrada dos demais blocos. As regras prefixadas por Lib criam a conexoesentre a saıda de blocos de tipo Lib e a entrada dos demais blocos. E por fim, as regrasprefixadas por Thr criam a conexao entre a saıda de blocos de tipo Thread com funcoes.A Figura 10 destaca as conexoes criadas por estas regras.

3.3. Estado Final

O estado final obtido apos todas as possıveis regras terem sido aplicadas esta des-crito na Figura 11. A traducao deste grafo para blocos Simulink e imediata. VerticesIO, SAengine, CPUCOMMUN, SASchedRes, SFunction e lib representam os blocos demesmo identificador do Simulink representados na Figura 10. A hierarquia de blocos ecapturada pelos arcos rotulados com “in”. As conexoes e fluxo de dados entre os blocossao representados pelos vertices X juntamente com suas conexoes (arcos com origem emX no grafo). Arcos com prefixo “o” indicam a origem de uma conexao, e arcos prefixados

Page 11: Using Graph Grammars to Develop Embedded Systems Based on UML Models

com “d” indicam o destino da conexao. Arcos rotulados com var indicam a variavel queesta sendo transmitida. Por exemplo, var com identificador “a” esta sendo transmitida deIODevice para CPU2 e de CPU2 para thread T3.

X

X

X

SFunctionid = ”calc”

varid = ”x”

X

SASchedResid = ”T1”

Xvarid = ”y”

X

SFunctionid = ”calc”

varid = ”b”

X

varid = ”r2”

X

XX

X

SASchedResid = ”T3”

X

X

IOid = ”IODevice”

X

varid = ”a”

IOid = ”IODevice”

SFunctionid = ”calc”

CPUCOMMUNid = ”Intra”

X varid = ”r4”

X

SAengineid = ”CPU1”IO

id = ”Sensor”

varid = ”r1”

X

SAengineid = ”CPU2”

X

SASchedResid = ”T2”

libid = ”mult”

CPUCOMMUNid = ”Inter”

X

X

X

X

X

CPUCOMMUNid = ”Inter”

SFunctionid = ”dec”

varid = ”r3”

X

X

X

SFunctionid = ”calc”

X

oI

dE

var

oS

dE

dF

in

var

oF

dE

oS

var

var

var

in

oS

dF

var

dS

var

var

dE

dS

in

oC

oE

dF

varvar

dF

in

var

dS

var

oS

oF

oS

oE

dS

var

var

var

var

dE

dL

dC

in

oS

var

inoF

oE

dI

in

oI

oS

var

oE

dEoE

var

var

oE

oC

dC

dS

oL

in

oF

var

dSoS

oF

dS

dL

dS

var

oE

var

in

var

var

oC

dF

var

oS

var

dE

dS

dC

Figura 11. Grafo final 5

4. ConclusoesNeste artigo apresentou-se a definicao formal da traducao de UML para Simu-

link proposta em [Brisolara et al. 2008], utilizando Gramatica de Grafos. O uso de umalinguagem de especificacao formal nao so permitiu eliminar possıveis ambiguidades nadefinicao do mapeamento previamente descrita em linguagem natural, como tambem per-mitiu o uso da ferramenta Groove para automatizar a traducao.

Desta forma, um fluxo de projeto que comeca em um modelo UML e prove ummapeamento (semi-)automatico para um diagrama de blocos Simulink e proposto. Paraque o fluxo seja completamente automatico, ainda e necessario automatizar a geracao dografo inicial a partir dos diagramas UML (formato de entrada para o fluxo) e a conversaodo grafo resultante no formato usado para especificar diagrama de blocos no Simulink.Tambem se pretende explorar a verificacao de propriedades importantes em transformacaode modelos, como consistencia e terminacao, para o mapeamento definido.

ReferenciasBrisolara, L. B., Oliveira, M. F. S., Redin, R., Lamb, L. C., Carro, L., and Wagner, F.

(2008). Using uml as front-end for heterogeneous software code generation strategies.In Proc. of the conference on Design, automation and test in Europe, DATE ’08, pages504–509, NY, USA. ACM.

Ehrig, H., Engels, G., Kreowski, H.-J., and Rozenberg, G., editors (1999). Handbookof graph grammars and computing by graph transformation: volume 2: applications,languages, and tools. World Scientific Publishing Co., Inc., River Edge, NJ, USA.

Page 12: Using Graph Grammars to Develop Embedded Systems Based on UML Models

Ehrig, H., Pfender, M., and Schneider, H. (1973). Graph grammars: an algebraic ap-proach. In 14th Annual IEEE Symposium on Switching and Automata Theory, pages167–180. IEEE.

Mathworks (2011). Simulink. http://www.mathworks.com/. ultimo acesso: Julho.

OMG (2010). Omg unified modeling language (omg uml) infrastructure version 2.3.Technical Report formal/2010-05-03.

Rensink, A. (2004). The groove simulator: A tool for state space generation. In Pfaltz,J., Nagl, M., and Bohlen, B., editors, Applications of Graph Transformations withIndustrial Relevance, volume 3062 of Lecture Notes in Computer Science, pages 479–485. Springer Berlin / Heidelberg.

Rozenberg, G., editor (1997). Handbook of graph grammars and computing by graphtransformation: volume 1. foundations. World Sci. Pub. Co., NJ, USA.