During my Master thesis I built a OCL Interpreter for the Metamodeling tool MetaSketch, this project was implement in C# and I used the GOLD Parser Builder to build the OCL LALR grammar.
I did my Master in Software Engineering at University of Madeira.
MetaSketch was developed by my Thesis Professor during his PhD.
1. DEPARTAMENTO DE MATEMÁTICA E ENGENHARIAS
UNIVERSIDADE DA MADEIRA
METASKETCH OCL INTERPRETER
DISSERTAÇÃO DE MESTRADO
João Marcos Duarte Matos
Orientado por:
Professor Doutor Leonel Domingos Telo Nóbrega
1
4. conforms
M3 : MOF
Property PrimitiveType
Package Class
conforms
Operation Parameter
M2 : Metamodel
Beahaviored Classifier DirectRelationship
Actor UseCase
Include Extend
conforms *
*
Classifier UseCase
M1 : Model
«include» Customer
withdraw identification
Customer: Actor withdraw: UseCase CI: UseCase
: Include
: Association
4
5. O PAPEL DO METAMODELO
describes
UML Metamodel UML Language
language
conform element
“Hospital System”
5
6. CONFRONTAR O MODELO COM O METAMODELO
M3 MOF Metamodel OCL Grammar
describes describes
MOF Language OCL Language
language language
M2 Metamodel
element element
Structure Semantic
(MOF) (OCL)
M1 conforms conforms conforms
Model
8. DESCRIÇÃO DO PROBLEMA
MetaSketch Editor
Metamodelação usando o MOF para definir os
aspectos sintácticos
Não suporta a descrição semântica
MetaSketch OCL interpreter
Interpretação do OCL
MetaSketch Editor + MetaSketch OCL interpreter
Metamodelação completa:
Aspectos sintácticos/estruturais são descritos usando MOF
Aspectos semânticos são descritos usando OCL
8
9. DESCRIÇÃO DO PROBLEMA
Metamodel Model
OCL Standard
OCL Grammar Library
Conforms
OCL MetaSketch OCL Interpreter to Model
9
10. CONTRIBUTO
Criação de uma gramática LALR equivalente
Criação da “OCL Standard Library”
Criação de um módulo para o MetaSketch
Identificação de alguns problemas na
especificação do OCL
Identificação de alguns problemas na
especificação do MOF (OCL)
10
11. GRAMÁTICA LALR
Adaptação da gramática publicada na
especificação do OCL para uma gramática
LALR
Desambiguação da sintaxe
Correcção de algumas inconsistências
Descrita em BNF, sintaxe aceite pelo GOLD
Parser System
Publicada no sitio oficial da ferramenta
MetaSketch
11
12. “OCL STANDARD LIBRARY”
Desenvolvida em C#
Aproveita os tipos já existentes em C#
List, bool, double e int
O código fonte irá ser disponibilizado
Implementa:
Operações sobre os tipos primitivos
Colecções e suas operações
12
15. MÓDULO PARA O METASKETCH “METASKETCH OCL INTERPRETER”
Desenvolvido em C#
Compatível com MOF
Código fonte irá ser disponibilizado
Implementa:
Parser
Abstract
Syntax Model Builder
Code Generator
15
16. “WHERE THE MAGIC HAPPENS”
OCL Standard
OCL Grammar Metamodel Library Model
concreat syntax Abstract syntax abstract syntax Model
Parser tree model builder model checker Conforms
OCL to Model
MetaSketch OCL Interpreter
16
18. ABSTRACT SYNTAX MODEL BUILDER
concrete syntax abstract syntax
tree model
Metamodel
Abstract
syntax model
builder
… …
18
19. MODEL CHECKER
abstract syntax model conforms to model
OCL Standard
Library FuncImplies
aSource aSource
Model FuncIsImpty FuncIsImpty
aSource aSource
FuncPropertyCall FuncPropertyCall
Model aSource aProperty aSource aProperty
checker FuncVariableExp CProperty FuncVariableExp CProperty
aVariable aVariable
FuncSelf FuncSelf
19
20. IDENTIFICAÇÃO DE ALGUNS PROBLEMAS NA
ESPECIFICAÇÃO DO MOF (OCL)
Erros sintácticos nas restrições
Faltade parênteses,
Não colocação do “endif”
Um caso de má utilização do if
Restrições apenas a “True”
Utilização de métodos inexistentes ou com
nomes diferentes
oclIsType
oclIsTypeOf
20
22. CONCLUSÃO
Verifica se o Modelo respeita ou não as regras
da linguagem utilizada
Permite uma utilização completa dos
Metamodelos
Verificação da especificação do MOF (OCL)
Melhor especificação do MOF leva a um melhor
suporte ao MDD
22