Escolar Documentos
Profissional Documentos
Cultura Documentos
Darlan Brandt
Florianópolis
2021/2
UNIVERSIDADE FEDERAL DE SANTA CATARINA
CENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA
CURSO DE SISTEMAS DE INFORMAÇÃO
Darlan Brandt
Florianópolis
2021/2
RESUMO
SUMÁRIO
1. INTRODUÇÃO ............................................................................................. 11
1.1 OBJETIVOS ................................................................................................. 13
3.2.1. Ambiente Web integrado com App Inventor para execução de aplicações
Android ...................................................................................................................... 34
5. IMPLEMENTAÇÃO ...................................................................................... 46
5.1. ENGENHARIA REVERSA ............................................................................ 46
10
6. CONCLUSÃO............................................................................................... 81
6.1. TRABALHOS FUTUROS .............................................................................. 82
7. REFERÊNCIAS ............................................................................................ 84
11
1. INTRODUÇÃO
1
https://www.computingatschool.org.uk/
2
https://www.computacaonaescola.ufsc.br/
3
https://appinventor.mit.edu/
4
https://scratch.mit.edu/
12
para sua composição, que converte o seu código para JavaScript (GWT OPEN
SOURCE PROJECT, 2020). Para a criação dos aplicativos, é usada a linguagem de
programação visual Blockly, que permite a criação de aplicativos para dispositivos
com sistema operacional Android de forma visual e em menos tempo que ambientes
de programação tradicionais (MIT, 2021).
Outra ferramenta usada para o ensino de programação, a Scratch, também
utiliza a programação em blocos, da mesma forma que o App Inventor. A Scratch foi
desenvolvida para utilização de idades entre 8 e 16 anos (MIT, 2021) sendo bastante
utilizada em ambientes escolares, porém não permite a criação de um aplicativo de
fato (MIT, 2021). Para este trabalho optou-se pela utilização do App Inventor devido
ao vasto material já existente sobre esta ferramenta e pelo foco no desenvolvimento
de aplicativos móveis.
A visualização do aplicativo em desenvolvimento no App Inventor no celular é
realizada através do aplicativo AI2 Companion, que deve ser instalado em um
smartphone Android ou iOS. Ao acessar o aplicativo é necessário fazer a leitura de
um QR Code ou inserir o código exibido na tela, o que permite sincronizar a exibição
do aplicativo que está sendo desenvolvido com o celular em tempo de
desenvolvimento, sem necessidade de compilar e instalar um arquivo apk (Android
packaged application) no celular.
No entanto, o ensino de computação na educação básica no Brasil enfrenta
diversas limitações que dificultam a utilização desse tipo de ferramenta, como o App
Inventor. Os alunos podem não possuir um aparelho celular para realizar a
visualização do aplicativo criado no App Inventor por meio do AI2 Companion, a escola
pode ter uma internet de baixa velocidade ou computadores lentos que não suportam
a utilização de emuladores de aplicativos Android. Essas limitações têm sido também
percebidas nas aplicações voltadas ao ensino do pensamento computacional
realizadas pela Computação na Escola.
Assim, o presente projeto propõe o desenvolvimento de uma ferramenta que
permita a renderização e execução das telas de uma aplicação desenvolvida com App
Inventor, por meio de uma interface web, sem necessidade de criação de uma
máquina virtual, utilização de emuladores ou utilização de um smartphone Android ou
iOS.
13
1.1 OBJETIVOS
2. FUNDAMENTAÇÃO TEÓRICA
Figura 1: Interface do App Inventor no modo de edição de interface (Elaborado pelo autor)
Figura 2: Interface do App Inventor no modo de edição de blocos (Elaborado pelo autor)
dois formatos principais: nos arquivos com extensão .scm estão listadas as
informações referentes ao layout da tela, em formato JSON, e nos arquivos com
extensão .bky está a informação relacionada à parte lógica, do código gerado com
os blocos, em formato XML. Há também uma pasta youngandroidproject que contém
apenas um arquivo, que lista as informações do projeto (nome, estrutura, nome das
telas).
Figura 4: Estrutura do arquivo aia. Baseado em (MIT APP INVENTOR COMMUNITY, 2019)
pois habilita os desenvolvedores a interagir com o programa que está sendo criado.
O aplicativo desenvolvido pode ser testado através do Companion e pode também
gerar um arquivo apk que pode ser distribuído através da Play Store. Sempre que
esta opção é selecionada, o App Inventor realiza o upload do projeto completo e que
pode ser baixado através de um QR Code para distribuição. A geração do arquivo apk
também é realizada com a interpretação do código em linguagem YAIL, da mesma
forma que ocorre durante a execução do aplicativo desenvolvido pelo Companion.
2.2.1. Blockly
Blockly é uma biblioteca de código aberto para programação visual que utiliza
blocos para adição de código em uma aplicação em desenvolvimento (PASTERNAK,
FENICHEL e MARSHALL, 2017). Lançado inicialmente em 2012 como um projeto da
Google, é utilizado em uma vasta quantidade de projetos, principalmente voltados
para educação e ensino de programação, incluindo o App Inventor (GOOGLE, 2021).
Permite a extração do código criado em blocos para código baseado em texto, além
da criação de novos blocos conforme necessidade do usuário (GOOGLE, 2021).
É usado como editor visual de código sem depender do lado do servidor, sendo
este código desenvolvido pelo lado do cliente apenas (GOOGLE, 2021). Sua
biblioteca principal é escrita em JavaScript e possui suporte a cinco linguagens de
programação: JavaScript, Lua, PHP, Dart e Python.
Seus blocos representam conceitos como variáveis, expressões lógicas, loops,
entre outros, que permitem ao usuário aplicar princípios da programação sem se
preocupar com a sintaxe (GOOGLE, 2021).
2.2.2. YAIL
na plataforma Java, como uma extensão da linguagem Scheme, que é uma versão
estática e recursiva da linguagem de programação Lisp (CASAROTTO e CHISTE,
2003) que por sua vez é uma linguagem de programação funcional criada por Guy
Lewis Steele Jr. e Gerald Jay Sussman (CASAROTTO e CHISTE, 2003). Por este
motivo, programas em YAIL podem ser traduzidos por um compilador Scheme, com
os procedimentos e macros apropriados (SCHILLER, ABELSON, et al., 2014).
Figura 6: Exemplo de aplicativo exibido de acordo com o código YAIL (Elaborado pelo autor)
A conexão entre o aplicativo e o App Inventor via Wi-Fi deve ser realizada
somente se ambos estiverem conectados à mesma rede local. A conexão entre o
computador, que está executando o App Inventor e o dispositivo onde está o
Companion é feita através do servidor Rendezvous do MIT. (MIT, 2021)
A Figura 7 demonstra um exemplo de solução ideal de como deve ser a
conexão entre os dispositivos pela internet.
Figura 7: Conexão entre dispositivo-computador com o App Inventor via Wi-Fi (MIT, 2021)
Figura 8: Tela gerada para conexão pelo Companion (Elaborado pelo autor)
2.4. GWT
Figura 10: Estrutura do App Inventor, criado com GWT (DOMINGUEZ e SPERTUS, 2021)
2.5. REACT.JS
Nos exemplos das Figuras 11 e 12, o código está em JSX, que é uma extensão
da sintaxe do JavaScript similar a uma sintaxe XML. O JSX permite a utilização de
código HTML, em que são utilizados mesmos elementos da DOM. São produzidos
elementos do React a partir das tags HTML (W3SCHOOLS, 2021)
Um recurso importante do React é a utilização de um DOM virtual, em que uma
representação virtual da interface é mantida na memória e sincronizada com o DOM
real. Isto é realizado pela biblioteca ReactDOM, em um processo chamado
reconciliação. Assim o código escrito é executado como se toda a página fosse
alterada, porém as bibliotecas React renderizam apenas os componentes que têm seu
estado alterado, evitando recarregamentos desnecessários. (FACEBOOK INC., 2021)
2.6. NODE.JS
flexibilidade e baixo custo, Node.js tem se tornado uma escolha para implementação
de microsserviços (OPUS, 2018), que são uma abordagem arquitetônica e
organizacional do desenvolvimento de software na qual o software consiste em
pequenos serviços independentes que se comunicam usando APIs bem definidas
(AMAZON, 2022). Além disso, por utilizar JavaScript, que é linguagem padrão para
navegadores web, o Node.js tem como vantagem o know-how de quem utiliza essa
linguagem de programação no desenvolvimento front-end; facilidade para instalação
de dependências, que tornam a plataforma mais flexível; e leveza por ser um ambiente
que não exige muitos recursos computacionais (OPUS, 2018).
31
3. ESTADO DA ARTE
Foi estabelecida uma questão central para esta etapa, que será respondida na
realização do mapeamento da literatura.
Serão analisados os resultados da busca que responde a seguinte pergunta de
pesquisa:
● Como são desenvolvidos os ambientes web de live debugging para App
Inventor?
Com o auxílio da ferramenta Google Scholar, que busca por artigos científicos,
foram realizadas pesquisas visando encontrar trabalhos correlatos ou similares
relacionados ao assunto deste trabalho. A partir da pergunta estabelecida, foram
definidos os termos da busca, começando uma busca mais restrita e partindo para
buscas mais abrangentes, caso não fossem encontrados resultados suficientes. As
buscas foram realizadas utilizando termos em português e em inglês.
Para inclusão/exclusão foram considerados os seguintes critérios:
● Incluir conceitos relacionados ao App Inventor, programação visual em
blocos e a como é realizada a comunicação ao Companion;
● Tratar o live debugging de forma explicativa ou conceitual realizado em
ambiente web;
● Trazer conteúdo relevante ao processo realizado neste trabalho pelo
objetivo realizado ou pelo uso de tecnologias similares;
● Excluídos os tutoriais ou trabalhos que apenas ensinam como utilizar o
App Inventor ou demonstram como conectar ao Companion.
Com esta string, foram exibidos seis resultados, sendo um deles o artigo de
SCHILLER, ABELSON, et al. (2014) já listado anteriormente.
O resultado destas pesquisas não apresentou nenhum trabalho similar ao
proposto neste trabalho, com relação aos objetivos listados. Foram encontrados
trabalhos que apresentam informações sobre o App Inventor, guias de utilização ou a
realização de debugging, porém, nenhum com ambiente web.
Em busca realizada através do Google tradicional, não foram localizados
resultados com alguma relevância diferente dos já listados. Foram avaliados também
trabalhos de conclusão de curso de alunos do Departamento de Informática e
Estatística da UFSC que tratam de conceitos similares e, além do trabalho de
FRANÇA (2019) já listado, foi selecionado o trabalho de SPRANGER (2019).
5
https://flutter.dev/
36
6
https://github.com/react-grid-layout/react-grid-layout
37
3.3. DISCUSSÃO
4. ANÁLISE E PROJETO
4.1. REQUISITOS
ID Requisito Descrição
O sistema deve permitir ao
O usuário deve ter a possibilidade de inserir a
usuário inclusão da chave de 6
RF01 caracteres gerada no App
chave de 6 caracteres para que seja realizada
a conexão com o servidor Rendezvous.
Inventor
A aplicação deve, com a chave de 6
O sistema deve realizar a
caracteres, conectar ao servidor Rendezvous
RF02 conexão entre a aplicação e o
para realizar o handshake entre os pontos,
servidor Rendezvous
habilitando a conexão.
O sistema deve permitir o
recebimento de código YAIL Ao receber o código YAIL, após a realização
RF03 para geração dinâmica de tela da conexão, este código deve ser processado
com base no código criado no para exibição na tela.
App Inventor
O sistema deve realizar a Com o processamento dos dados recebidos
conversão do código YAIL do App Inventor, deve ser realizada a
RF04 recebido em componentes conversão dos comandos em componentes
React para geração dinâmica de React dinâmicos, baseados nos comandos
tela YAIL.
O sistema deve exibir em tela,
Com a geração dos componentes dinâmicos,
no LIDEA-w, os itens criados no
RF05 estes devem ser exibidos em tela, de acordo
App Inventor, nas posições onde
com aplicativo criado no App Inventor.
foram criados.
39
ID Requisito Descrição
O sistema é uma plataforma web, sendo
O sistema deve ser executado em assim, deve ser executado em um
RNF01 navegadores web navegador Chrome versão 90 ou superior,
sem restrição de sistema operacional.
A aplicação deve ser executada em
O sistema deve ser executado em
computadores onde a tela possui resolução
RNF02 telas com resolução mínima de
superior a informada para que todos os
1024x768 pixels
elementos estejam visíveis.
A aplicação deve ser executada em qualquer
O sistema deve ser executado
navegador, sem que haja a necessidade da
RNF03 sem necessidade de instalação
execução de outro software ou plugin
de outros softwares ou plugins
adicional.
Tabela 6: Requisitos não-funcionais do LIDEA-w
1. Iniciar Sessão
Na tela da Figura 17, o usuário acessa a tela inicial da plataforma para que seja
iniciada a sessão que permitirá a conexão do LIDEA-w ao servidor Rendezvous.
43
2. Inserir código
Na tela da Figura 18, o usuário insere a chave de 6 caracteres exibida na tela
do App Inventor, e ao clicar em Iniciar conexão, é realizada a comunicação com o
Rendezvous. Assim que confirmado o handshake entre as duas partes, a
comunicação direta é estabelecida, permitindo que o App Inventor passe a enviar
automaticamente as alterações realizadas na tela para o LIDEA-w.
44
5. IMPLEMENTAÇÃO
Figura 20: Código da classe TopToolbar.java onde é iniciada a conexão (Elaborado pelo autor)
47
Figura 21: Classe WirelessAction() que realiza a chamada da função startRepl (Elaborado
pelo autor)
Figura 22: Função getFromRendezvous() exibindo processo realizado para conexão com o
servidor Rendezvous() (Elaborado pelo autor)
Foram incluídas linhas nesta função para exibição do conteúdo em console com
o intuito de identificar o conteúdo recebido e enviado para o servidor. O resultado de
alguns dos comandos exibidos no console é exibido na Figura 23:
49
Para identificação do que representa cada comando do código YAIL, foi criado
um aplicativo simples que exibe um nome digitado no texto. Foram também criados
comandos em blocos a fim de reconhecer a estrutura de cada bloco em YAIL e
convertê-la em comandos JavaScript.
No aplicativo simples criado como exemplo foram definidas propriedades
referentes à exibição da tela, posicionamento dos campos e sua estrutura, além de
definir as ações ocorridas ao clicar nos botões.
Figura 25: Interface do aplicativo criado no App Inventor (Elaborado pelo autor)
Figura 26: Estrutura do aplicativo criado no App Inventor (Elaborado pelo autor)
Figura 27: Código YAIL para a criação de uma tela (Elaborado pelo autor)
Figura 28: Código YAIL com a adição de componentes na tela (Elaborado pelo autor)
Figura 29: Comandos em bloco criados para o aplicativo (Elaborado pelo autor)
Figura 32: Comando responsável pela conexão com o celular no arquivo replmgr.js
(Elaborado pelo autor)
Para melhor compreensão, foi também analisado o envio dos dados do App
Inventor nas ferramentas do desenvolvedor do navegador web. Na aba “Rede” são
listados os pacotes enviados e através destes pacotes foram identificados os dados
enviados e recebidos pelo App Inventor. Para que estes dados fossem visualizados,
foi necessário selecionar a opção “Use Legacy Connection”, na tela inicial do AI2
Companion no aparelho celular.
59
Até que a chave seja inserida no AI2 Companion, o App Inventor envia a cada
segundo, o hash da chave de 6 caracteres, para o Rendezvous. Assim que ela é
inserida pelo usuário, o Rendezvous realiza o handshake e após a validação, o App
Inventor passa a enviar pacotes com dados e o código YAIL para o AI2 Companion.
Figura 34: Aba da ferramenta do desenvolvedor com os pacotes enviados pelo App Inventor
(Elaborado pelo autor)
7
https://code.visualstudio.com/
60
Após a análise dos códigos YAIL enviados pelo App Inventor, foi iniciada a
construção da plataforma LIDEA-w. A primeira parte realizada foi a criação do
esqueleto da aplicação. A estrutura inicial do projeto foi criada utilizando o comando
padrão para criação de aplicações em React. Esta estrutura inicial foi alterada para a
criação da interface da plataforma, de acordo com o protótipo exibido na figura 19,
ainda sem os componentes.
Com a interface definida, foram criados os componentes React baseados nos
componentes listados no App Inventor, do tipo User Interface e Layout, seguindo a
mesma nomenclatura para fácil identificação. Por limitações de tempo do projeto de
TCC e também por dificuldades técnicas de compreensão dos códigos YAIL, foram
priorizados os componentes visuais do App Inventor para implementação, tornando
possível a futuros trabalhos a continuidade do desenvolvimento. Assim, os demais
componentes do App Inventor não fazem parte do escopo deste trabalho.
Na tabela 11 estão listados os componentes que foram convertidos em
componentes React e os que não foram concluídos.
Figura 36: Estrutura inicial do projeto com componentes (Elaborado pelo autor)
62
8
https://www.postman.com/
63
Figura 37: Comando ReplState enviado pelo App Inventor para o Companion (Elaborado
pelo autor)
Por estar formatado como um objeto JSON, o ReplState foi utilizado para
envio para o servidor do back-end.
64
Figura 38: Comando ReplState formatado para envio no Postman (Elaborado pelo autor)
Figura 39: Dicionário criado para parse dos componentes (Elaborado pelo autor)
Em seguida foram criadas funções para que o código YAIL seja percorrido e
identificado cada componente. O resultado é um array de objetos JSON que lista o
tipo dos componentes, seus nomes e suas propriedades e se os seus componentes-
pai são a tela principal ou algum componente de layout. A posição é definida pelo tipo
de componente de layout e pela chave-valor parentIsScreen, se o componente
67
Figura 40: Objeto JSON com as propriedades de um componente (Elaborado pelo autor)
Com a listagem dos componentes em um array, foi criada uma função que lista
todos os componentes em tela. Com esta função, os primeiros componentes foram
exibidos dentro do espaço definido e na ordem definida, porém sem estilização e sem
conteúdo dinâmico.
Figura 42: Array de objetos JSON com variáveis globais (Elaborado pelo autor)
O array de objetos JSON blocks traz os blocos de comando, sendo que neste
objeto, os comandos permanecem em YAIL. Estes comandos serão convertidos em
9
https://mui.com/
10
https://material.io/
69
Figura 43: Exemplo de objeto baseado nos comandos em bloco (Elaborado pelo autor)
Figura 45: Comando em bloco convertido em string a ser executada como JavaScript
(Elaborado pelo autor)
Is empty
Compare texts
Trim
Upcase/Downcase
Starts at text... piece
Contains text... piece
Split text... at
Split at spaces
Segment text... start... length
Replace all text... segment
Is a string
Reverse
Lists Nenhum comando convertido
Dictionaries Nenhum comando convertido
Colors Criada função para converter
Initialize global variable Set variable
Variables Get variable
Initialize local variable
Procedures Nenhum comando convertido
Tabela 12: Comandos em bloco convertidos e que não foram convertidos
Figura 46: Aplicação modelo gerada no App Inventor (Elaborado pelo autor)
Figura 47: Comando em bloco para o clique em um botão numérico (Elaborado pelo autor)
Figura 49: Comandos em bloco para exibição do resultado da operação (Elaborado pelo
autor)
Figura 50: Comandos em bloco para limpeza dos campos da tela (Elaborado pelo autor)
Requisito Evidência
Com a criação do servidor back-end para envio da chave, foi tratada a resposta
RF03
enviada pelo servidor, recebendo o código YAIL do App Inventor com sucesso
Após extensa análise do código YAIL foi possível converter os comandos em bloco
RF06
em código JavaScript, convertido em tempo de execução da aplicação.
Tabela 13: Evidências dos testes de requisitos funcionais do LIDEA-w
Figura 52: Demonstração da tela criada para inserção da chave de 6 caracteres (Elaborado
pelo autor)
78
Requisito Evidência
A aplicação foi desenvolvida com foco em uso em navegadores web, com versões
RNF01 recentes, que compreendem os comandos realizados na aplicação, bem como
executam aplicações em React
O RNF01 foi validado ao utilizar navegadores web atuais, onde a aplicação foi
executada com sucesso. Ao tentar executá-la em navegadores antigos e
desatualizados, como o Internet Explorer, não foi possível executar a aplicação.
O RNF02 foi validado ao utilizar as ferramentas do desenvolvedor do
navegador web Google Chrome, durante testes de tamanhos responsivos de tela. A
exibição em uma resolução de 800x600 pixels resulta em corte da imagem, conforme
figura 53.
79
Figura 52: Aplicação cortada em tela com resolução inferior a 1024x768 pixels (Elaborado
pelo autor)
6. CONCLUSÃO
7. REFERÊNCIAS
BRENNAN, K.; RESNICK, M. New frameworks for studying and assessing the
development of computational thinking. American Educational Research
Association, Vancouver, 2012. 25.
DOMINGUEZ, J.; SPERTUS, E. App Inventor Developer Overview. MIT App Inventor
Sources, 2021. Disponivel em: <https://docs.google.com/document/u/0/d/1hIvAtbNx-
eiIJcTA2LLPQOawctiGIpnnt0AvfgnKBok/pub>. Acesso em: 18 mar. 2021.
FACEBOOK INC. React – Uma biblioteca JavaScript para criar interfaces de usuário.
Reactjs.org, 2021. Disponivel em: <https://pt-br.reactjs.org>. Acesso em: 21 mar.
2021.
85
FREE SOFTWARE FOUNDATION. The Kawa Scheme language. Kawa: The Kawa
Scheme language, 2021. Disponivel em: <https://www.gnu.org/software/kawa/>.
Acesso em: 16 mar. 2021.
MIT APP INVENTOR COMMUNITY. AIA file structure. MIT App Inventor
Community, 2019. Disponivel em: <https://community.appinventor.mit.edu/t/aia-file-
structure/219>. Acesso em: 14 mar. 2021.
MUI. MUI. MUI, 2022. Disponivel em: <https://mui.com/>. Acesso em: 19 fev. 2022.
Apêndice I - Artigo
Darlan Brandt1
1
Departamento de Informática e Estatística (INE) Universidade Federal de Santa
Catarina (UFSC) – Florianópolis, SC – Brazil
darlanbrandt@gmail.com
1. Introdução
Em um mundo cada vez mais conectado e tecnológico, algumas habilidades
importantes para os estudantes têm sido incluídas no processo educacional, como por
exemplo o ensino do pensamento computacional (BRENNAN e RESNICK, 2012).
Pensamento computacional é “o processo de pensamento relacionado a formular
problemas e suas soluções de forma que as soluções são representadas de uma maneira
89
2. Conceitos importantes
3. Análise e Projeto
4. Desenvolvimento da plataforma
Após a análise dos códigos YAIL enviados pelo App Inventor, foi iniciada a
construção da plataforma LIDEA-w. A primeira parte realizada foi a criação do
esqueleto da aplicação. A estrutura inicial do projeto foi criada utilizando o comando
padrão para criação de aplicações em React. Esta estrutura inicial foi alterada para a
criação da interface da plataforma, de acordo com o protótipo exibido na figura 19,
ainda sem os componentes.
Com a interface definida, foram criados os componentes React baseados nos
componentes listados no App Inventor, do tipo User Interface e Layout, seguindo a
mesma nomenclatura para fácil identificação.
Após a criação da estrutura inicial do projeto, foi iniciada a criação do back-end
para a persistência do código YAIL em um local que permitisse seu acesso futuro. Para
isso foi criado um servidor Node.JS.
Com a criação do servidor Node.JS e criação de rotas, foi possível utilizar o
servidor como fonte do JSON enviado pelo App Inventor, com os componentes e
blocos.
O servidor back-end criado também é o responsável pelo envio da chave de 6
caracteres para o servidor Rendezvous. Para que a conexão fosse possível, foi criada
94
uma rota que recebe a chave de 6 caracteres digitada pelo usuário e converte-a em um
hash, utilizando o algoritmo SHA1.
5. Testes
Uma aplicação-modelo para a realização dos testes simula uma aplicação que
poderia ser desenvolvida em um curso de ensino do pensamento computacional. A
aplicação escolhida para os testes foi uma calculadora simples.
Como possível contexto de uso dessa aplicação-modelo, pode-se imaginar um
cenário típico das atividades desenvolvidas pela Iniciativa Computação na Escola: uma
oficina de introdução à programação com App Inventor, realizada para estudantes do
Ensino Fundamental II como atividade em contraturno escolar. Os estudantes não
precisariam de conhecimentos prévios e durante a oficina aprenderiam conceitos
introdutórios de algoritmos e programação utilizando App Inventor. A aplicação gerada
no App Inventor é exibida na figura 2.
95
6. Conclusão
O objetivo principal deste trabalho foi desenvolver um sistema web para a
execução de telas de aplicativos móveis desenvolvidos na ferramenta App Inventor, de
forma funcional. No sistema desenvolvido foi realizada a conexão com a ferramenta
App Inventor, a fim de permitir a exibição funcional dos componentes visuais e de
layout definidos em tempo de desenvolvimento.
Para que este objetivo principal fosse atingido, foi analisado o protocolo de
comunicação utilizado entre a aplicação App Inventor e o aplicativo AI2 Companion,
onde foi realizada uma engenharia reversa para identificar os arquivos relacionados a
este processo. Com a identificação dos arquivos responsáveis pela comunicação, foram
analisados códigos-fonte das funções responsáveis pela comunicação entre a plataforma
e o aplicativo móvel.
Através da análise do código-fonte, foi implementada a comunicação com o
servidor Rendezvous, simulando a utilização do aplicativo AI2 Companion, utilizando
um servidor Node.js. A realização do handshake entre o App Inventor e a simulação do
AI2 Companion permitiu que o App Inventor enviasse o código YAIL com sucesso,
possibilitando a exibição do aplicativo criado nele.
A ferramenta foi desenvolvida após análise do processo de comunicação entre o
App Inventor e o servidor Rendezvous e como é realizado o envio do código YAIL após
o handshake. Após análises, foi desenvolvido um servidor back-end que recebia o
código YAIL através das requisições enviadas no programa Postman. Quando as
requisições foram bem-sucedidas, o servidor back-end foi refatorado para aceitar o
recebimento dinâmico direto do App Inventor. Com o código YAIL disponível para
acesso pela ferramenta, foi criado o front-end e desenvolvida a plataforma com
execução do código de forma dinâmica, conforme definição nos objetivos deste
trabalho.
Por limitações de entendimento do código YAIL e sua complexidade e repetição
de códigos não foi possível implementar todos os componentes da forma pretendida,
porém, é possível que uma futura análise nos comandos possibilite a ampliação de
recursos na plataforma LIDEA-W.
Referências
BNCC. Base nacional Currícular Comum, 2018. Disponivel em:
<http://basenacionalcomum.mec.gov.br/images/BNCC_EI_EF_110518_versaofinal_
site.pdf>. Acesso em: 11 abr. 2021.
Brennan, K.; Resnick, M. New frameworks for studying and assessing the development
of computational thinking. American Educational Research Association, Vancouver,
2012. 25.
Casarotto, D. C.; Chiste, J. G. S. A Linguagem Scheme. Universidade Federal de Santa
Catarina. Florianópolis. 2003.
Dominguez, J.; Spertus, E. App Inventor Developer Overview. MIT App Inventor
Sources, 2021. Disponivel em:
<https://docs.google.com/document/u/0/d/1hIvAtbNx-
eiIJcTA2LLPQOawctiGIpnnt0AvfgnKBok/pub>. Acesso em: 18 mar. 2021.
97
Facebook Inc. React – Uma biblioteca JavaScript para criar interfaces de usuário.
Reactjs.org, 2021. Disponivel em: <https://pt-br.reactjs.org>. Acesso em: 21 mar.
2021.
FREE SOFTWARE FOUNDATION. The Kawa Scheme language. Kawa: The Kawa
Scheme language, 2021. Disponivel em: <https://www.gnu.org/software/kawa/>.
Acesso em: 16 mar. 2021.
K–12 CS. K–12 Computer Science Framework, 2016. Disponivel em:
<https://k12cs.org/wp-content/uploads/2016/09/K%E2%80%9312-Computer-
Science-Framework.pdf>. Acesso em: 18 dez. 2020.
MEC. Parâmetros curriculares nacionais: terceiro e quarto ciclos do ensino
fundamental: introdução aos Parâmetros curriculares nacionais. [S.l.]: [s.n.], 1998.
174 p. Disponivel em: <http://portal.mec.gov.br/seb/arquivos/pdf/introducao.pdf>.
Acesso em: 11 abr. 2021.
MIT. MIT App Inventor, 2021. Disponivel em: <https://appinventor.mit.edu/>. Acesso
em: 04 jan. 2021.
Mozilla. Eval. MDN Web Docs, 2022. Disponivel em:
<https://developer.mozilla.org/pt-
BR/docs/Web/JavaScript/Reference/Global_Objects/eval>. Acesso em: 20 fev. 2022.
Mozilla. POST. MDN Web Docs, 2022. Disponivel em:
<https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Methods/POST>. Acesso em:
13 fev. 2022.
SBC. Sociedade Brasileira de Computação. Diretrizes para ensino de Computação na
Educação Básica, 2019. Disponivel em: <https://www.sbc.org.br/documentos-da-
sbc/send/203-educacao-basica/1220-bncc-em-itinerario-informativo-computacao-2>.
Acesso em: 11 abr. 2021.
Schiller, J. et al. Live programming of mobile apps in App Inventor. PROMOTO '14:
Proceedings of the 2nd Workshop on Programming for Mobile & Touch. Portland:
Association for Computing Machinery. 2014. p. 1-8.
Spertus, E. How to Add a Component. MIT App Inventor Sources, 2019. Disponivel
em: <https://docs.google.com/document/pub?id=1xk9dMfczvjbbwD-wMsr-
ffqkTlE3ga0ocCE1KOb2wvw>. Acesso em: 18 mar. 2021.
Wangenheim, C. G. V.; Alves, N. C.; Hauck, J. C. R. Approaches to Assess
Computational Thinking Competences Based on Code Analysis in K-12 Education:
A Systematic Mapping Study. Informatics in Education, v. 18, n. 1, p. 17-39, 2019.
Weintrop, D. et al. Blockly Goes to Work: Block-based Programming for Industrial
Robots. 2017 IEEE Blocks and Beyond Workshop. Raleigh: IEEE. 2017. p. 29-36.