Linguagem orientada a aspetos para transformação de Webassembly

Detalhes bibliográficos
Autor(a) principal: Rodrigues, João Paulo Mendes
Data de Publicação: 2022
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: http://hdl.handle.net/10400.26/41695
Resumo: A execução de um programa de Webassembly numa máquina cliente implica o descarregamento do código do servidor. Isto significa que qualquer alteração que o cliente pretenda fazer no código deve ser feita diretamente no código compilado. Estas transformações podem ser motivadas por diversas razões, tais como: reparação imediata de erros/problemas encontrados em produção, neutralização de código potencialmente malicioso, melhorias de desempenho, etc. Outras aplicações de transformações diretas de código binário Webassembly noutros contextos incluem a instrumentação do código, a geração de um conjunto de variações a partir do mesmo código binário, por exemplo, com variações otimizadas para diferentes arquiteturas (no cliente ou servidor) – sem recompilação do programa, uma vez que existe sempre a versão base (compilada a partir do código fonte), e um conjunto de versões relativas às variações - ou a monitorização do desempenho das atividades realizadas pelo programa. Com isto, o trabalho desenvolvido neste documento consiste numa ferramenta para manipulação de código WebAssembly que permite a realização de pesquisas no código, e a sua substituição por um conjunto de instruções definidas pelo programador. A ferramenta tem o nome de WasmManipulator e seguirá uma abordagem orientada a aspetos para alcançar a flexibilidade e simplicidade pretendidas. Para além disso, dado que rotinas de Webassembly podem ser fortemente interdependentes do código JavaScript que as usa, a ferramenta possui determinadas funcionalidades que permitem tirar partido e explorar essa dependência. Isto inclui a definição de tipos adicionais no código WASM, e interpretação/execução de expressões em tempo de execução. O WasmManipulator foi desenvolvido com recurso à linguagem Go, e recorreu a outras tecnologias e ferramentas para se auxiliar no seu desenvolvimento, tais como, YAML, WABT e Comby. Para implementar o módulo JavaScript utilizou-se o TypeScript, que juntamente com o GulpJS, geraram o respetivo código. Com a implementação de todos os requisitos estabelecidos para a ferramenta, validados através da utilização de cenários de uso típicos em código disponível publicamente, dão-se por atingidos os objetivos previstos para a ferramenta.
id RCAP_5ad320b50c0268e73d55acee4928c31c
oai_identifier_str oai:comum.rcaap.pt:10400.26/41695
network_acronym_str RCAP
network_name_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository_id_str 7160
spelling Linguagem orientada a aspetos para transformação de WebassemblyWebAssemblyJavaScriptAspetosAplicações WebTransformação bináriaInstrumentaçãoA execução de um programa de Webassembly numa máquina cliente implica o descarregamento do código do servidor. Isto significa que qualquer alteração que o cliente pretenda fazer no código deve ser feita diretamente no código compilado. Estas transformações podem ser motivadas por diversas razões, tais como: reparação imediata de erros/problemas encontrados em produção, neutralização de código potencialmente malicioso, melhorias de desempenho, etc. Outras aplicações de transformações diretas de código binário Webassembly noutros contextos incluem a instrumentação do código, a geração de um conjunto de variações a partir do mesmo código binário, por exemplo, com variações otimizadas para diferentes arquiteturas (no cliente ou servidor) – sem recompilação do programa, uma vez que existe sempre a versão base (compilada a partir do código fonte), e um conjunto de versões relativas às variações - ou a monitorização do desempenho das atividades realizadas pelo programa. Com isto, o trabalho desenvolvido neste documento consiste numa ferramenta para manipulação de código WebAssembly que permite a realização de pesquisas no código, e a sua substituição por um conjunto de instruções definidas pelo programador. A ferramenta tem o nome de WasmManipulator e seguirá uma abordagem orientada a aspetos para alcançar a flexibilidade e simplicidade pretendidas. Para além disso, dado que rotinas de Webassembly podem ser fortemente interdependentes do código JavaScript que as usa, a ferramenta possui determinadas funcionalidades que permitem tirar partido e explorar essa dependência. Isto inclui a definição de tipos adicionais no código WASM, e interpretação/execução de expressões em tempo de execução. O WasmManipulator foi desenvolvido com recurso à linguagem Go, e recorreu a outras tecnologias e ferramentas para se auxiliar no seu desenvolvimento, tais como, YAML, WABT e Comby. Para implementar o módulo JavaScript utilizou-se o TypeScript, que juntamente com o GulpJS, geraram o respetivo código. Com a implementação de todos os requisitos estabelecidos para a ferramenta, validados através da utilização de cenários de uso típicos em código disponível publicamente, dão-se por atingidos os objetivos previstos para a ferramenta.Barreiros, Jorge Miguel SousaRepositório ComumRodrigues, João Paulo Mendes2022-08-29T13:53:29Z2022-06-022022-01-072022-06-02T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10400.26/41695203033116porinfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2022-12-15T02:15:23Zoai:comum.rcaap.pt:10400.26/41695Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T15:17:39.338243Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse
dc.title.none.fl_str_mv Linguagem orientada a aspetos para transformação de Webassembly
title Linguagem orientada a aspetos para transformação de Webassembly
spellingShingle Linguagem orientada a aspetos para transformação de Webassembly
Rodrigues, João Paulo Mendes
WebAssembly
JavaScript
Aspetos
Aplicações Web
Transformação binária
Instrumentação
title_short Linguagem orientada a aspetos para transformação de Webassembly
title_full Linguagem orientada a aspetos para transformação de Webassembly
title_fullStr Linguagem orientada a aspetos para transformação de Webassembly
title_full_unstemmed Linguagem orientada a aspetos para transformação de Webassembly
title_sort Linguagem orientada a aspetos para transformação de Webassembly
author Rodrigues, João Paulo Mendes
author_facet Rodrigues, João Paulo Mendes
author_role author
dc.contributor.none.fl_str_mv Barreiros, Jorge Miguel Sousa
Repositório Comum
dc.contributor.author.fl_str_mv Rodrigues, João Paulo Mendes
dc.subject.por.fl_str_mv WebAssembly
JavaScript
Aspetos
Aplicações Web
Transformação binária
Instrumentação
topic WebAssembly
JavaScript
Aspetos
Aplicações Web
Transformação binária
Instrumentação
description A execução de um programa de Webassembly numa máquina cliente implica o descarregamento do código do servidor. Isto significa que qualquer alteração que o cliente pretenda fazer no código deve ser feita diretamente no código compilado. Estas transformações podem ser motivadas por diversas razões, tais como: reparação imediata de erros/problemas encontrados em produção, neutralização de código potencialmente malicioso, melhorias de desempenho, etc. Outras aplicações de transformações diretas de código binário Webassembly noutros contextos incluem a instrumentação do código, a geração de um conjunto de variações a partir do mesmo código binário, por exemplo, com variações otimizadas para diferentes arquiteturas (no cliente ou servidor) – sem recompilação do programa, uma vez que existe sempre a versão base (compilada a partir do código fonte), e um conjunto de versões relativas às variações - ou a monitorização do desempenho das atividades realizadas pelo programa. Com isto, o trabalho desenvolvido neste documento consiste numa ferramenta para manipulação de código WebAssembly que permite a realização de pesquisas no código, e a sua substituição por um conjunto de instruções definidas pelo programador. A ferramenta tem o nome de WasmManipulator e seguirá uma abordagem orientada a aspetos para alcançar a flexibilidade e simplicidade pretendidas. Para além disso, dado que rotinas de Webassembly podem ser fortemente interdependentes do código JavaScript que as usa, a ferramenta possui determinadas funcionalidades que permitem tirar partido e explorar essa dependência. Isto inclui a definição de tipos adicionais no código WASM, e interpretação/execução de expressões em tempo de execução. O WasmManipulator foi desenvolvido com recurso à linguagem Go, e recorreu a outras tecnologias e ferramentas para se auxiliar no seu desenvolvimento, tais como, YAML, WABT e Comby. Para implementar o módulo JavaScript utilizou-se o TypeScript, que juntamente com o GulpJS, geraram o respetivo código. Com a implementação de todos os requisitos estabelecidos para a ferramenta, validados através da utilização de cenários de uso típicos em código disponível publicamente, dão-se por atingidos os objetivos previstos para a ferramenta.
publishDate 2022
dc.date.none.fl_str_mv 2022-08-29T13:53:29Z
2022-06-02
2022-01-07
2022-06-02T00:00:00Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10400.26/41695
203033116
url http://hdl.handle.net/10400.26/41695
identifier_str_mv 203033116
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron:RCAAP
instname_str Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron_str RCAAP
institution RCAAP
reponame_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
collection Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository.name.fl_str_mv Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
repository.mail.fl_str_mv
_version_ 1799130038678847488