• No results found

CHAPTER 5: CONTESTATIONS

5.1. S ECURITY V ERSUS D EVELOPMENT

5.1.3 Women in the Military

O trabalho de Jackson, Levendovszky e Balasubramanian (2013) concentra seus esforços em uma abordagem para o problema da especificação formal de arcabouços de metamodelagem de forma geral, buscando maneiras para a realização de raciocínio lógico automatizado (reasoning) sobre os mesmos. O ponto

61 central da abordagem utiliza tipos de dados algébricos, ou Algebraic Data Types (ADTs) e programação lógica por restrções, ou Constraint Logic Programming (CLP). Os autores constróem uma especificação de um arcabouço de metamodelagem baseado em grafos tipados, que pode servir como ponto de partida para arcabouços mais complexos.

As especificações são escritas em linguagem FORMULA, que é uma linguagem de especificação lógica de alto nível que implementa a hipótese do mundo aberto, ou Open World Assumption (OWA). A hipótese do mundo aberto considera que o valor verdade de uma proposição é independente do conhecimento do agente, em contraposição à hipótese do mundo fechado, ou Closed World Assumption (CWA), que supõe que uma proposição não conhecida é falsa.

Sob a OWA, a falha em derivar um fato não implica o oposto. Por exemplo, assumindo que se sabe apenas que Maria é cidadã da França pela sentença lógica Cidadão(Maria,França), ao perguntar para a máquina de inferência se Paulo é cidadão da França através da questão Cidadão(Paulo,França), sob a CWA a resposta é não, enquanto sob OWA a resposta é desconhecida.

Os conceitos principais que são propostos para a construção de um arcabouço de metamodelagem são: repositório de modelos, operações de edição e metainterpretador.

O repositório de modelos serve para codificar o conjunto de todos os pares metamodelo/instância em conformidade. Instâncias interessantes desses pares podem ser construídas através de questões OWA pela máquina de inferência da linguagem FORMULA. O repositório de modelos é especificado em dois níveis descritivos, sendo o par de camadas M2/M1 (metamodelo/modelo) um caso particular. É permitido, portanto, um número arbitrário de camadas na definição. Basicamente, um grafo direcionado G é definido como uma quádrupla:

G = (V, E, src, dst)

Em que V e E são os conjuntos de nós e arestas, respectivamente, e src e dst são funções tais que src: E → V e dst: E → V. Essas funções associam cada aresta aos

62 seus nós origem e destino. Percebe-se aqui o mesmo conceito da definição de multigrafo direcionado do KM3, mas com uma diferença na formalização: os nós origem e destino são dados por duas funções, e não uma função que resulta em um par ordenado.

Um grafo tipado T é definido então como outra quádrupla:

T = (G, H, vt, et)

Sendo G e H grafos direcionados, vt e et funções tais que vt: VH → VG e et: EH → EG.

A interpretação de T como um par metamodelo/instância é que o grafo G age como o metamodelo provendo o conjunto de tipos. O grafo H representa uma instância desse metamodelo, cujos elementos são associados aos tipos de G por vt e et. O conceito é muito similar ao KM3, com a diferença de que aqui é permitido que as arestas de G também atuem como tipos, enquanto no KM3 apenas os nós do grafo G seriam permitidos como tipos. O KM3 é, inclusive, citado no trabalho de Jackson, Levendovszky e Balasubramanian (2013).

É dito que um modelo H está em conformidade com o metamodelo G se as arestas e vértices de H estão conectadas de acordo com seus tipos, de acordo com a equação abaixo:

conforms(T) = e  EH, srcG(et(e)) = vt(srcH(e))  dstG(et(e)) = vt(dstH(e))

O repositório de modelos Store(U) é então definido como o conjunto de todos os possíveis pares metamodelo/instância em conformidade construídos sobre um universo U de nós e arestas.

63 As operações de edição consistem em transformações para editar elementos no nível da instância do par considerado. Essas transformações são definidas sobre o repositório de modelos. A formalização de editores, ou operações de edição, permite gerar casos de teste nos quais a edição destrói a conformidade. Para o arcabouço definido no trabalho, são especificadas apenas operações de edição que sempre mantêm a conformidade. Exemplos de operações de edição são a inserção ou exclusão de nós ou arestas no repositório de modelos.

O metainterpretador é uma transformação que promove elementos do nível de instância ao seu metanível. Diz-se que um arcabouço é metacircular se existe um modelo de entrada para o metainterpretador que, quando promovido ao seu metanível, resulta em um modelo igual. O trabalho aproveita esta propriedade para formular uma questão OWA que deduz automaticamente um meta-metamodelo descrito nele mesmo, como o caso do MOF.

O trabalho de Jackson, Levendovszky e Balasubramanian (2013) é bastante rico com relação a raciocínio e inferência lógica em metamodelagem, introduzindo muitos conceitos precisos. Por outro lado, baseia-se muito na linguagem FORMULA, deixando a operação de certa forma presa a esse contexto. Também pouco é considerado sobre o tema da MDE em geral, principalmente com relação a transformações entre modelos, transformações de modelos para código, como descrever essas transformações, e operações entre metamodelos. Também não se aborda como definir enumerações ou operações de importação (import) e mesclagem (merge) entre metamodelos dentro do contexto do formalismo.

3.7 QUADROS COMPARATIVOS

O Quadro 3 apresenta um comparativo entre os cinco formalismos apresentados com base na metacircularidade e natureza predominante de sua especificação. O Quadro 4, por sua vez, faz a comparação com respeito a recursos de metamodelagem, modelagem e transformação de modelos, que são os aspectos centrais dos processos MDE. Por fim, o Quadro 5 compara com referência às sintaxes concretas (linguagens gráficas ou textuais) de utilização prática dos formalismos ou linguagens.

64

Quadro 3 – Comparativo de formalismos e linguagens segundo especificação

Característica MOF KM3 Alanen NEREUS Jackson

Metacircular Sim Sim Não Não Sim

Natureza predominante da

especificação

Linguagem

natural Formal Formal

Linguagem natural Formal Principais conceitos primitivos subjacentes usados na especificação Metaclasses Multigrafos direcionados e funções Conjuntos, relações e funções Metaclasses Grafos direcionados e funções Fonte: autor

Quadro 4 – Comparativo de formalismos e linguagens sobre recursos

Característica MOF KM3 Alanen NEREUS Jackson

Suporte a operações nas

metaclasses Sim Não Não Sim Não

Suporte a definição de enumerações e tipos primitivos

Sim Não* Não** Não* Sim

Suporte à capacidade de

reflexão do MOF Sim Não Não Não Não

Suporte à capacidade de identificação do

MOF

Sim Não Não Sim Não

Suporte à capacidade de extensão do MOF

ou modelos de marcação

Sim Não Não Não Não

Suporte à mesclagem e importação de

metamodelos

Sim Não Não*** importação Somente Não

Suporte à transformação de

modelos Sim Sim Não Sim**** Não*****

Descreve modelos executáveis

Não Não Não Não Não

Descreve sincronização de

modelos Não Não Não Não Não

* Utiliza como recurso implícito mas não especifica definições. ** Não, mas sugere que é possível.

*** Apenas assume implicitamente esta possibilidade.

**** Menciona QVT como uma possibilidade para transformar modelos mas não especifica sua interação com a linguagem apresentada.

***** Refere-se à transformação como operações no contexto de um mesmo modelo para editá-lo, mas não no contexto da MDE.

65

Quadro 5 – Comparativo de formalismos e linguagens sobre sintaxe concreta e utilização

Característica MOF KM3 Alanen NEREUS Jackson

Linguagem ou notação de referência para metamodelagem Notação gráfica própria similar a classes UML Conjuntos, relações, sentenças em LPO e linguagem própria Conjuntos, relações e sentenças em LPO Própria FORMULA Linguagem ou notação de referência para modelagem UML Conjuntos, relações, sentenças em LPO e linguagem própria Conjuntos, relações e sentenças em LPO Não especifica FORMULA Linguagem ou notação de referência para restrições sobre modelos OCL Sentenças em LPO e linguagem própria

LPO* Própria FORMULA

Linguagem ou notação de referência para transformações

QVT e

MOFM2T ATL Não especifica QVT especifica Não

Mecanismo de referência para

inferência e raciocínio (reasoning)

Não especifica LPO LPO especifica Não FORMULA

Ferramentas de referência Diversas. Ex: Papyrus e Acceleo Compilador Prolog,

Eclipse Não especifica

Não

especifica FORMULA * Não especifica mecanismo explícito de inserir restrições específicas sobre modelos nos metamodelos, mas como usa LPO para definir restrições comuns e invariantes para todos os modelos, então subentende-se que pode ser usada LPO para isso.

Fonte: autor