190 likes | 289 Views
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. arquitetura. Visão geral. metamodelo. class Pessoa {
E N D
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
arquitetura Visão geral metamodelo class Pessoa { composition String nome; association String endereco; constructor make( String pN, ...) exports all { nome = pN; ... } method void setNome( String n ) exports all { nome = n; } action obeso( ) exports all { if ( sexo == masculino) { v = Integer.make(100) } ... } } class Pessoa { composition String nome; association String endereco; constructor make( String pN, ...) exports all { nome = pN; ... } method void setNome( String n ) exports all { nome = n; } action obeso( ) exports all { if ( sexo == masculino) { v = Integer.make(100) } ... } } Compilador Máquina Virtual Virtuosi código fonte das classes de uma aplicação árvores de programa que compõem a aplicação
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; } } }
arquitetura Metamodelo da Virtuosi class Pessoa { composition String nome; association String endereco; ...
arquitetura Bloco de Dados
arquitetura Metamodelo da Virtuosi class Pessoa { constructor make( String pN, ...) ... method void setNome( Pessoa outraPessoa ) ... action obeso( ) ...
arquitetura Comando de Desvio Condicional e uma Ação
arquitetura Metamodelo da Virtuosi ... v = Integer.make(100); objetoTal.metodoTal(); valor = objX.metodoX(); ...
arquitetura Árvore de Programa class Pessoa { composition Integer posicao; method void setPosicao(Integer p) exports all { posicao = p; } }
arquitetura Uma aplicação é composta de muitas árvores de programa
Pontos de ligação entre árvores de programa arquitetura
arquitetura Referências indiretas através de Tabelas de Manipulação
Carga das árvores de programa pela MVV pessoa soma arquitetura pessoa integer
arquitetura Uma instância da Máquina Virtual Virtuosi class A { ... constructor ca( ) exports all { this.ma(); } method metodoA( ) exports all { ... } }
arquitetura Uma atividade navega sobre a árvore de programa
arquitetura Visão Geral da Arquitetura da Virtuosi
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;
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
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