de 26 1 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
de 26 2 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) }... } Visão geral 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) }... } CompiladorMáquina Virtual Virtuosi arquitetura metamodelo código fonte das classes de uma aplicação árvores de programa que compõem a aplicação
de 26 3 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
de 26 4 Metamodelo da Virtuosi arquitetura class Pessoa { composition String nome; association String endereco;...
de 26 5 Bloco de Dados arquitetura
de 26 6 Metamodelo da Virtuosi arquitetura class Pessoa { constructor make( String pN,...)... method void setNome( Pessoa outraPessoa )... action obeso( )...
de 26 7 Comando de Desvio Condicional e uma Ação arquitetura
de 26 8 Metamodelo da Virtuosi arquitetura... v = Integer.make(100); objetoTal.metodoTal(); valor = objX.metodoX();...
de 26 9 Árvore de Programa class Pessoa { composition Integer posicao; method void setPosicao(Integer p) exports all { posicao = p; } arquitetura
de Uma aplicação é composta de muitas árvores de programa arquitetura
de Pontos de ligação entre árvores de programa arquitetura
de Referências indiretas através de Tabelas de Manipulação arquitetura
de pessoa integer soma pessoa Carga das árvores de programa pela MVV arquitetura
de Uma instância da Máquina Virtual Virtuosi class A {... constructor ca( ) exports all { this.ma(); } method metodoA( ) exports all {... } arquitetura
de Uma atividade navega sobre a árvore de programa arquitetura
de Visão Geral da Arquitetura da Virtuosi arquitetura
de Protótipo e Números Java Java Testes automatizados Testes automatizados Testes para criação de árvores Testes para criação de árvores Testes para a interpretação das árvores Testes para a interpretação das árvores Cento e quarenta e uma (141) classes dividas em dois pacotes: core (47) e meta (94); Cento e quarenta e uma (141) classes dividas em dois pacotes: core (47) e meta (94); Trinta e uma classes de teste; Trinta e uma classes de teste; implementação
de Contribuição Serve como base para um ambiente distribuído de execução de software orientado a objetos – o ambiente Virtuosi 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 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
de 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 á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 á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 valida o uso de tabelas de manipulação para manter referências entre objetos instância de classes de aplicação conclusão