MVV - Arquitetura da Máquina Virtual
Virtuosi
Carlos José Johann Kolb
Programa de Pós-Graduação em Informática Aplicada
Centro de Ciências Exatas e de Tecnologia
Pontifícia Universidade Católica do Paraná
Outubro de 2004
1 de 26
arquitetura
Visão geral
metamodelo
class Pessoa {
composition String nome;
association String endereco;
constructor make( String pN, ...) exports all {
nome = pN;
...
class Pessoa {
}
String
nome;
method composition
void setNome(
String
n ) exports all {
String endereco;
nome = association
n;
constructor make( String }pN, ...) exports all {
nome = pN;
...
action obeso( ) exports all {
if ( sexo}== masculino) {
Compilador
v = Integer.make(100)
method void setNome( String
} ... n ) exports all {
nome = n;
}
}
}
action obeso( ) exports all
if ( sexo == masculino) {
v = Integer.make(100)
Máquina Virtual
Virtuosi
{
} ...
}
}
código fonte das
classes de uma aplicação
árvores de programa
que compõem a aplicação
2 de 26
arquitetura
Código fonte escrito em Aram
class Pessoa {
composition String nome;
association String endereco;
constructor make( String pN, ...) exports all {
nome = pN;
...
}
method void setNome( Pessoa outraPessoa ) exports all {
nome = n;
if ( outraPessoa.obeso( ) ){
...
}
}
action obeso( ) exports all {
if ( sexo == masculino) {
v = Integer.make(100);
return execute
} else { return skip; }
}
}
3 de 26
arquitetura
Metamodelo da Virtuosi
class Pessoa {
composition String nome;
association String endereco;
...
4 de 26
arquitetura
Bloco de Dados
5 de 26
arquitetura
Metamodelo da Virtuosi
class Pessoa {
constructor make( String pN, ...) ...
method void setNome( Pessoa outraPessoa ) ...
action obeso( ) ...
6 de 26
arquitetura
Comando de Desvio Condicional e uma Ação
7 de 26
arquitetura
Metamodelo da Virtuosi
...
v = Integer.make(100);
objetoTal.metodoTal();
valor = objX.metodoX();
...
8 de 26
arquitetura
Árvore de Programa
class Pessoa {
composition Integer posicao;
method void setPosicao(Integer p) exports all {
posicao = p;
}
}
9 de 26
arquitetura
Uma aplicação é composta de muitas árvores de programa
10 de 26
arquitetura
Pontos de ligação entre árvores de programa
11 de 26
arquitetura
Referências indiretas através de Tabelas de Manipulação
12 de 26
arquitetura
Carga das árvores de programa pela MVV
pessoa
pessoa
integer
soma
13 de 26
arquitetura
Uma instância da Máquina Virtual Virtuosi
class A {
...
constructor ca( ) exports all {
this.ma();
}
method metodoA( ) exports all {
...
}
}
14 de 26
arquitetura
Uma atividade navega sobre a árvore de programa
15 de 26
arquitetura
Visão Geral da Arquitetura da Virtuosi
16 de 26
implementação
Protótipo e Números


Java
Testes automatizados
Testes para criação de árvores
 Testes para a interpretação das árvores



Cento e quarenta e uma (141) classes dividas em
dois pacotes: core (47) e meta (94);
Trinta e uma classes de teste;
17 de 26
conclusão
Contribuição


Serve como base para um ambiente distribuído
de execução de software orientado a objetos – o
ambiente Virtuosi
Formaliza o metamodelo da Virtuosi que define
e limita os conceitos de orientação a objetos
implementados por qualquer linguagem de
programação que deseje ser compatível com o
ambiente Virtuosi
18 de 26
conclusão
Contribuição Científica



Valida o uso de árvores de programa como
representação intermediária para software
orientado a objeto
Valida o uso de tabelas de manipulação para
manter referências entre árvores de programa
carregadas em memória (relacionamentos inter e
intra-classes)
valida o uso de tabelas de manipulação para
manter referências entre objetos instância de
classes de aplicação
19 de 26
Download

ppt