Apresentação da defesa da dissertação do mestrado profissional

1,632 views
1,571 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,632
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Apresentação da defesa da dissertação do mestrado profissional

  1. 1. Um Estudo de Técnicas de Interoperabilidade entre Máquinas Virtuais com Suporte a Linguagens Controladas <ul>Jamerson Raposo Ferreira de Lima Mestrado Profissional em Engenharia de Software cesar.edu - Recife, 2009 </ul>
  2. 2. Software em todo lugar <ul><li>Micro-ondas
  3. 3. MP3 Players
  4. 4. GPS
  5. 5. Caixa Eletrônicos, DVD Players, etc. </li></ul>
  6. 6. Software em todo lugar <ul><li>Aviões
  7. 7. Usinas Nucleares
  8. 8. Metrôs
  9. 9. Semáforos </li></ul>
  10. 10. Softwares são confiáveis? <ul><li>Censo em sistemas Tandem entre 1985 e 1990: </li><ul><li>Softwares são responsáveis pela maioria das falhas(62%)
  11. 11. Tempo médio entre falhas se manteve constante
  12. 12. O tempo médio entre falhas de hardware ultrapassa 300 anos </li></ul></ul>
  13. 13. Softwares são confiáveis? <ul><li>Therac-25 </li><ul><li>Dispositivo de radioterapia controlado por software
  14. 14. Falhas no projeto do software podia levar a níveis letais de radiação
  15. 15. Mudança de monitores mecânicos para lógicos </li></ul></ul>
  16. 16. Softwares são confiáveis? <ul><li>GE XA/21 </li><ul><li>Sistema de gerenciamento elétrico
  17. 17. Curto circuito desestabilizou fluxo de energia
  18. 18. Falha no sistema de monitoramento
  19. 19. Eventos se acumularam até falha geral do sistema
  20. 20. Blackout atingiu cerca de 50 milhões de pessoas </li></ul></ul>
  21. 21. Dependabilidade (Dependability) <ul><li>Habilidade de um sistema em disponibilizar serviços dos quais os usuários podem, justificadamente, depender.
  22. 22. Atributos: </li><ul><li>Disponibilidade, confiabilidade, segurança, confidencialidade, integridade e manutenabilidade. </li></ul></ul>
  23. 23. De quem é a culpa? <ul><li>Tanenbaum responde: </li><ul><li>O maior responsável pela falta de dependabilidade é o sistema operacional </li><ul><li>Monolítico
  24. 24. Isolamento de falhas pobre </li></ul><li>Baixa dependabilidade está associada a defeitos de software </li><ul><li>Até 75 defeitos em cada 1000 linhas de código </li></ul></ul></ul>
  25. 25. Aumentando a dependabilidade <ul><li>Nooks – Isolamento de drivers de dispositivos
  26. 26. Máquina paravirtual
  27. 27. Minix 3 – Sistema operacional multi-servidor
  28. 28. Singularity – Proteção baseada em linguagem </li></ul>
  29. 29. JingleOS: Definição <ul>Sistema operacional de código aberto para dispositivos embarcados que visa alcançar dependabilidade através de seu projeto, assim como suporte intrinseco a tempo real. <li>Módulos rodam em um ambiente gerenciado por uma máquina virtual </li></ul>
  30. 30. JingleOS: Arquitetura <ul><li>Multi-camada
  31. 31. Desenvolvido em Java
  32. 32. Processos isolados por máquina virtual
  33. 33. Define </li><ul><li>Máquina abstrata
  34. 34. Representação intermediária </li></ul></ul>
  35. 35. JingleOS: Compilador <ul><li>Desenvolvido na linguagem Java
  36. 36. Compilação Ahead-of-Time
  37. 37. Gera código para ARM e x86 </li></ul>
  38. 38. JingleOS: Compilador
  39. 39. JingleOS: Representação intermediária
  40. 40. Um SO e uma plataforma <ul><li>Domínios específicos, linguagens específicas
  41. 41. Reuso de módulos
  42. 42. Conhecimento dos engenheiros em ferramentas distintas </li></ul>
  43. 43. Interoperabilidade entre plataformas <ul><li>COM, WS </li><ul><li>Módulos em ambientes distintos
  44. 44. Camada limitadora
  45. 45. Uso de APIs e bibliotecas específicas </li></ul><li>JNI, Pinvoke </li><ul><li>Suporte nativo
  46. 46. Código inseguro </li></ul></ul>
  47. 47. Solução Proposta <ul><li>Interoperabilidade nativa e transparente
  48. 48. Módulos interagindo no mesmo processo
  49. 49. Sem camadas de compatibilidade </li></ul>
  50. 50. Interoperabilidade suportada nativamente <ul><li>Estratégia de compilação
  51. 51. Máquina abstrata
  52. 52. Utilizando Ambiente do JingleOS
  53. 53. Plataformas suportadas: Java e .NET </li></ul>
  54. 54. Java x .NET: Semelhanças <ul><li>Código gerenciado
  55. 55. Máquina virtual baseada em pilha
  56. 56. Linguagem orientada a objetos
  57. 57. Conjunto de instruções </li></ul>
  58. 58. Java x .NET: Diferenças <ul><li>Propósito
  59. 59. Tipos primitivos, value-types
  60. 60. Pilha do registro de ativação </li></ul>
  61. 61. Solução proposta
  62. 62. Solução proposta
  63. 63. Solução proposta
  64. 64. Prova de conceito
  65. 65. Prova de conceito <ul><li>Classe .NET </li></ul>using System; using br.org.edu.cesar.uvm.java.lib; namespace br.org.edu.cesar.uvm.dotnet.lib { public class DotnetClass { public static void DoAction() { JavaClass.doAction(); } } }
  66. 66. Prova de conceito 1 br.org.edu.cesar.uvm.dotnet.lib.DotNetClass.DoAction$40$41V: 2 # subroutine prologue 3 pushl %ebp 4 movl %esp, %ebp 5 6 pushl %ebx 7 pushl %esi 8 9 movl %ebp, %esi 10 addl $8, %esi 11 call br.org.edu.cesar.uvm.java.lib.JavaClass.doAction$40$41V 12 # subroutine epilogue 13 addl $0, %esp 14 movl %esp, %esp 15 popl %esi 16 popl %ebx 17 18 popl %ebp 19 ret
  67. 67. Prova de conceito <ul><li>Class Java </li></ul>package br.org.edu.cesar.uvm.java.lib; import net.jingleos.core.debug.Console; public class JavaClass { public static void doAction(){ Console.print(&quot;Hello from Java module &quot;); } }
  68. 68. Prova de conceito 1 # subroutine prologue 2 pushl %ebp 3 movl %esp, %ebp 4 5 pushl %ebx 6 pushl %esi 7 8 movl %ebp, %esi 9 addl $8, %esi 10 # ldc 2 11 movl $constant$60Hello$32from$32Java$32module$10$62, %eax 12 pushl %eax 13 # invokestatic 3 14 call net.jingleos.core.debug.Console.print$40Ljava$47lang$47String$59$41V 15 # subroutine epilogue 16 addl $4, %esp 17 movl %esp, %esp 18 popl %esi 19 popl %ebx 20 21 popl %ebp 22 # return 23 ret
  69. 69. Conclusões <ul><li>A abordagem adotada, utilizando a máquina abstrata, mostrou-se suficiente do ponto de vista conceitual para o mapeamente entre Java e .NET
  70. 70. Interoperabilidade bem-sucedida com uso de stubs e integração na camada intermediária
  71. 71. A partir deste trabalho é possível a criação de aplicações híbridas(Java e .NET) sem uma camada de middleware ou uso de JNI/PInvoke </li></ul>
  72. 72. Trabalhos futuros <ul><li>Pilha </li><ul><li>Tipos de 64 bits e instruções de manipulação
  73. 73. Pilha tipada </li></ul></ul>
  74. 74. Trabalhos futuros <ul><li>Value-Types </li><ul><li>Estruturas
  75. 75. Instruções de carga e descarga
  76. 76. Ponteiro de topo de pilha
  77. 77. Instruções de acesso a campos </li></ul></ul>
  78. 78. Fim

×