• Nenhum resultado encontrado

W-Educ: um ambiente web, completo e dinâmico para robótica educacional

N/A
N/A
Protected

Academic year: 2021

Share "W-Educ: um ambiente web, completo e dinâmico para robótica educacional"

Copied!
119
0
0

Texto

(1)UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE. U NIVERSIDADE F EDERAL DO R IO G RANDE DO N ORTE C ENTRO DE T ECNOLOGIA P ROGRAMA DE P ÓS -G RADUAÇÃO EM E NGENHARIA E LÉTRICA E DE C OMPUTAÇÃO. W-Educ: Um Ambiente Web, Completo e Dinâmico para Robótica Educacional. Sarah Thomaz de Lima Sá. Orientador: Prof. Dr. Luiz Marcos Garcia Gonçalves. Tese de Doutorado apresentada ao Programa de Pós-Graduação em Engenharia Elétrica e de Computação da UFRN (Área de concentração: Engenharia de Computação) como parte dos requisitos para obtenção do título de Doutor em Ciências.. Número de ordem PPgEEC: D181 Natal, 29 de Agosto de 2016..

(2) Catalogação da Publicação na Fonte Universidade Federal do Rio Grande do Norte - Sistema de Bibliotecas Biblioteca Central Zila Mamede / Setor de Informação e Referência Sá, Sarah Thomaz de Lima. W-Educ: Um ambiente web, completo e dinâmico para robótica educacional / Sarah Thomaz de Lima Sá. - 2016. 117 f. : il. Tese (doutorado) - Universidade Federal do Rio Grande do Norte, Centro de Tecnologia, Programa de Pós-Graduação em Engenharia Elétrica e de Computação. Natal, RN, 2016. Orientador: Prof. Dr. Luiz Marcos Garcia Gonçalves. 1. Robótica educacional - Tese. 2. Ambiente web - Tese. 3. Tradutor universal - Tese. I. Gonçalves, Luiz Marcos Garcia. II. Título. RN/UF/BCZM. CDU 004.896.

(3)

(4)

(5) A Deus, por ter me criado, amado, salvado e guiado meus passos..

(6)

(7) Agradecimentos. Ao meu Deus, meu melhor amigo e meu tudo. Obrigada por sua bondade e amor. Ao meu orientador, professor Luiz Marcos Garcia Gonçalves, sou grata pela orientação, pela confiança depositada e por todo o incentivo. Aos meus pais, Margaret Thomaz e Paulo Ney, e a minha irmã Camilla Rose, por todo amor e apoio. A Erika Yanaguibashi e todos os meus amigos, por todas as orações, ajuda, dedicação e discussões sobre este trabalho. A equipe do laboratório NatalNet, em especial Francisco Bianor, João Marcos, Diogo e Sebastião por toda ajuda e dedicação para a conclusão desta tese. A Capes, pelo apoio financeiro..

(8)

(9) Como é feliz aquele que não segue o conselho dos ímpios, não imita a conduta dos pecadores, nem se assenta na roda dos zombadores! Ao contrário, sua satisfação está na lei do Senhor, e nessa lei medita dia e noite. É como árvore plantada à beira de águas correntes: Dá fruto no tempo certo e suas folhas não murcham. Tudo o que ele faz prospera! Salmos 1.1-3.

(10)

(11) Resumo. Este trabalho propõe um ambiente web para robótica educacional, que é uma solução aberta, dinâmica e completa para auxiliar no processo de ensino-aprendizagem neste tipo de atividade. O ambiente permite que diferentes plataformas robóticas sejam programadas através do cadastro de linguagens de programação com suas respectivas funções de baixo nível utilizando uma linguagem intermediária com alto nível de abstração. O sistema pode ser utilizado por qualquer tipo de usuário com ou sem experiência em programação, através de uma linguagem com comandos textuais simples. Este trabalho oferece, então, um sistema web completo que pode ser utilizado a fim de facilitar o processo de ensino aprendizagem utilizando robótica educacional. Além disso, para fins de validação o trabalho inclui um método homogêneo para avaliação de softwares para robótica educacional, o qual validou a ferramenta desenvolvida através de experimentos que avaliaram seu uso didático e suas funcionalidades e o comparou com outras ferramentas. Palavras-chave: Ambiente de Web, Robótica Educacional, Tradutor Universal..

(12)

(13) Abstract. This work proposes a web environment for educational robotics, which is an open, dynamic and complete solution to assist in the teaching-learning process in this type activity. The environment allows different robotic platforms to be programmed through the registration of programming languages with their low level functions using an intermediate language with a high level of abstraction. The system can be used by any user with or without programming experience, through a language with simple text commands. Therefore, this work provides a full web system that can be used to facilitate the teaching/learning process using educational robotics. In addition, for validation purposes this work includes a homogeneous method for evaluating educational software for robotics, which validated the developed tool through experiments that have assessed its didactical use and its features and compared with other tools. Keywords: Web Environment, Educational Robotics, Universal Translator..

(14)

(15) Sumário. Sumário. i. Lista de Figuras. v. Lista de Tabelas. vii. 1. 2. Introdução. 1. 1.1. Escopo do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4. 1.2. Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 6. 1.3. Tema, Problema e Hipótese de Pesquisa . . . . . . . . . . . . . . . . . .. 7. 1.4. Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 9. 1.5. Contribuições e Aplicações . . . . . . . . . . . . . . . . . . . . . . . . .. 10. 1.6. Estrutura do texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 10. Fundamentação Teórica. 13. 2.1. Robótica Educacional . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13. 2.1.1. Hardwares para Robótica Educacional . . . . . . . . . . . . . . .. 14. 2.1.2. Ambientes de Desenvolvimento para Robótica Educacional . . .. 15. Linguagens de Programação . . . . . . . . . . . . . . . . . . . . . . . .. 16. 2.2.1. Desenvolvimento de Programas . . . . . . . . . . . . . . . . . .. 17. Qualidade de Software . . . . . . . . . . . . . . . . . . . . . . . . . . .. 19. 2.3.1. Norma ISO/ IEC 9126 . . . . . . . . . . . . . . . . . . . . . . .. 20. 2.3.2. CMMI - Capability Maturity Model Integration . . . . . . . . . .. 21. Avaliação de Software Educacional . . . . . . . . . . . . . . . . . . . . .. 22. 2.2 2.3. 2.4 3. Estado da Arte. 23. 3.1. Ambientes para Robótica . . . . . . . . . . . . . . . . . . . . . . . . . .. 23. 3.1.1. Ambientes Desktop . . . . . . . . . . . . . . . . . . . . . . . . .. 24. 3.1.2. Ambientes Web . . . . . . . . . . . . . . . . . . . . . . . . . . .. 28. 3.1.3. Análise Comparativa entre Ambientes . . . . . . . . . . . . . . .. 31. i.

(16) 3.2 4. 5. 6. 8. 33. Ambiente Proposto. 35. 4.1. Projeto do Ambiente . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 36. 4.2. Ambiente Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 36. 4.2.1. Requisitos Funcionais . . . . . . . . . . . . . . . . . . . . . . .. 37. 4.2.2. Ferramentas Utilizadas . . . . . . . . . . . . . . . . . . . . . . .. 38. Método para Avaliação de Softwares para Robótica Educacional. 41. 5.1. Questionários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 42. 5.2. Análise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 43. 5.3. Estudo de Caso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 43. Kits de Robótica de Baixo Custo. 47. 6.1. LabsRia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 47. 6.1.1. Montagem do Protótipo - LabsRia . . . . . . . . . . . . . . . . .. 48. PetBot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 50. 6.2.1. 50. 6.2. 7. Comparação entre Métodos . . . . . . . . . . . . . . . . . . . . . . . . .. Montagem do Protótipo - PetBot . . . . . . . . . . . . . . . . . .. Implementações. 53. 7.1. Ambiente Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 53. 7.2. Tradutor Universal . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 55. 7.2.1. Linguagem R-Educ . . . . . . . . . . . . . . . . . . . . . . . . .. 57. 7.2.2. Registro de linguagem e casamento de padrões . . . . . . . . . .. 58. 7.2.3. Abstração de Linguagem . . . . . . . . . . . . . . . . . . . . . .. 60. 7.2.4. Análise Léxica . . . . . . . . . . . . . . . . . . . . . . . . . . .. 62. 7.2.5. Análise Sintática . . . . . . . . . . . . . . . . . . . . . . . . . .. 63. 7.2.6. Análise e Verificação de Erros . . . . . . . . . . . . . . . . . . .. 65. Experimentos e Resultados. 67. 8.1. Ambiente W-Educ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 67. 8.1.1. Principais Telas e Funcionalidades . . . . . . . . . . . . . . . . .. 67. 8.1.2. Linguagens em Uso . . . . . . . . . . . . . . . . . . . . . . . . .. 70. 8.1.3. Ambiente de Programação . . . . . . . . . . . . . . . . . . . . .. 71. 8.1.4. Abstração de Linguagem . . . . . . . . . . . . . . . . . . . . . .. 73. Teste dos Protótipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 74. 8.2.1. 76. 8.2. Protótipo 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..

(17) 8.2.2 Protótipo 02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.3 Avaliação Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparação entre Ambientes . . . . . . . . . . . . . . . . . . . . . . . .. 77 79 84. Conclusão 9.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 89 90. 8.3 9. Referências Bibliográficas. 91.

(18)

(19) Lista de Figuras. 2.1. Fases de um compilador . . . . . . . . . . . . . . . . . . . . . . . . . .. 18. 2.2. Interação entre analisador léxico e sintático . . . . . . . . . . . . . . . .. 19. 3.1. Ambientes de Desenvolvimento Desktop . . . . . . . . . . . . . . . . . .. 25. 3.2. Ambientes de Desenvolvimento Desktop . . . . . . . . . . . . . . . . . .. 27. 3.3. Ambiente de programação do ADWN . . . . . . . . . . . . . . . . . . .. 29. 3.4. Ambiente de programação textual do Codebender . . . . . . . . . . . . .. 30. 3.5. Versão web do ModKit para VEX . . . . . . . . . . . . . . . . . . . . .. 31. 3.6. Ambiente de programação do OpenRoberta . . . . . . . . . . . . . . . .. 32. 5.1. Ciclo de Utilização do Método . . . . . . . . . . . . . . . . . . . . . . .. 42. 5.2. Gráfico comparativo entre as médias dos professores e alunos. . . . . . .. 44. 5.3. Avaliação quanto às funcionalidades do software . . . . . . . . . . . . .. 45. 6.1. Flutuador Espaguete . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 48. 6.2. Montagem do Protótipo . . . . . . . . . . . . . . . . . . . . . . . . . . .. 49. 6.3. LabsRia - Primeiro protótipo . . . . . . . . . . . . . . . . . . . . . . . .. 49. 6.4. Marcações e cortes na garrafa pet . . . . . . . . . . . . . . . . . . . . . .. 50. 6.5. Esquemáticos dos circuitos dos motores e sensor de ultrassom . . . . . .. 51. 6.6. Robô PetBot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 51. 7.1. Arquitetura Geral do Sistema . . . . . . . . . . . . . . . . . . . . . . . .. 54. 7.2. Diagrama de Caso de Uso - Aluno . . . . . . . . . . . . . . . . . . . . .. 54. 7.3. Diagrama de Caso de Uso - Professor . . . . . . . . . . . . . . . . . . .. 55. 7.4. Diagrama de Caso de Uso - Administrador . . . . . . . . . . . . . . . . .. 56. 7.5. Fluxograma do Processo de Escrita, Tradução e Compilação . . . . . . .. 57. 7.6. Modelo de cadastro de linguagem . . . . . . . . . . . . . . . . . . . . .. 60. 7.7. Fila de tokens gerada a partir do Algoritmo 1 . . . . . . . . . . . . . . .. 63. 8.1. Tela principal do W-Educ . . . . . . . . . . . . . . . . . . . . . . . . . .. 68. 8.2. Fórum de discussão . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 68. v.

(20) 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 8.11 8.12 8.13 8.14 8.15 8.16 8.17 8.18 8.19 8.20 8.21 8.22. Professores do sistema . . . . . . . . . . . . . . . . . . . . . Solicitação de graduação no sistema . . . . . . . . . . . . . . Formulário de cadastro de linguagens de programação . . . . Dados de desempenho do usuário . . . . . . . . . . . . . . . . Tela de escolha de linguagem de programação . . . . . . . . . Linguagens atualmente cadastradas . . . . . . . . . . . . . . . Ambiente de programação do W-Educ . . . . . . . . . . . . . Dicionário de funções de R-Educ para NXC . . . . . . . . . . Código a ser traduzido em Ino-Nano . . . . . . . . . . . . . . Código traduzido em Ino-Nano . . . . . . . . . . . . . . . . . Código a ser traduzido em CV3 . . . . . . . . . . . . . . . . . Código traduzido em CV3 . . . . . . . . . . . . . . . . . . . Tela de programação do Protótipo 01 . . . . . . . . . . . . . . Tela inicial do Protótipo 01 . . . . . . . . . . . . . . . . . . . Bot’N Roll One A . . . . . . . . . . . . . . . . . . . . . . . . Gráfico comparativo entre as médias dos professores e alunos . Gráfico comparativo entre as médias dos professores e alunos . Gráfico avaliativo das funcionalidades do software . . . . . . . Gráfico comparativo entre as notas atribuídas pelos professores Gráfico comparativo entre as notas atribuídas pelos alunos . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .. 69 69 70 71 71 72 72 73 73 74 74 75 77 77 78 80 81 83 86 86.

(21) Lista de Tabelas. 3.1 3.2 3.3. Comparativo entre os ambientes de desenvolvimento desktop . . . . . . . Comparativo entre os ambientes de desenvolvimento web . . . . . . . . . Comparativo entre métodos de avaliação . . . . . . . . . . . . . . . . . .. 32 33 34. 7.1 7.2 7.3. Palavras Reservadas da Linguagem R-Educ . . . . . . . . . . . . . . . . Funções Cadastradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lista de Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 58 61 66. 8.1 8.2. Medidas de Dispersão . . . . . . . . . . . . . . . . . . . . . . . . . . . . Melhores Softwares por Quesitos Avalidados . . . . . . . . . . . . . . .. 82 88. vii.

(22)

(23) Capítulo 1 Introdução. A robótica educacional foi idealizada por Seymour Papert, no final da década de 60, e está sendo amplamente difundida no contexto de inserção de novas tecnologias em sala de aula e com o crescimento de olímpiadas estudantis na área. A robótica educacional é uma estratégia interdisciplinar que promove o aprendizado de conceitos curriculares através da montagem e programação de modelos robóticos, trazendo consigo o uso do avanço tecnológico, aliado a um ambiente de aprendizagem rico e inovador. Este ambiente de aprendizagem se destaca por mostrar, na prática, conceitos teóricos e por desenvolver aspectos cognitivos e psicomotores dos alunos [Zilli 2004]. Entre esses, podemos citar a coordenação motora, pensamento investigativo, raciocínio lógico, criatividade, desenvolvimento de método científico, e outros [Miranda et al. 2010]. De acordo com Schons et al. (2004) a robótica educacional pode ser utilizada para enriquecer e complementar o estudo de disciplinas curriculares, pois ela propõe o uso de robôs como ferramenta educacional para permitir que estudantes inexperientes possam abordar temas não relacionados à robótica [Cristóforis et al. 2013]. Isto é possível através da construção de protótipos que proporcionam aos alunos uma experiência única, rica em aprendizagem, e o desenvolvimento de uma inteligência múltipla [Eguchi 2012]. Diversos trabalhos foram desenvolvidos a fim de popularizar a robótica educacional, inserindo-a no contexto das atividades diárias dos alunos e levando-os a adentrar no mundo tecnológico. O grupo de pesquisa Natalnet-UFRN desenvolveu diversos trabalhos nesta área, envolvendo não somente metodologias para robótica educacional [Silva 2008, Fernandes et al. 2012], visando a execução de oficinas para crianças de 4 a 17 anos, como também a criação/desenvolvimento de sistemas e hardwares para permitir a sua aplicação, sendo utilizados por professores e alunos nas oficinas. Silva (2008) desenvolveu uma metodologia para o uso da robótica educacional em sala de aula estruturada em oficinas, onde os alunos devem seguir um conjunto de passos estabelecidos para que seja extraído o máximo de benefícios que esta ferramenta proporciona..

(24) 2. CAPÍTULO 1. INTRODUÇÃO. Os passos propostos por esta metodologia são: análise da atividade proposta, montagem de um protótipo robótico, e programação e execução do programa no protótipo montado. Segundo a metodologia para a aplicação da robótica em um contexto educacional, os seguintes recursos devem estar disponíveis em sala de aula: • Um kit de robótica, composto de um controlador lógico programável, sensores, motores e peças para a montagem da estrutura do protótipo robótico; • Um ambiente de programação; • Um dispositivo computacional capaz de executar satisfatoriamente o ambiente escolhido e se comunicar com o protótipo; • Um espaço adequado para o desenvolvimento das atividades propostas. Para a construção da parte mecânica do robô, um kit de robótica pode ser utilizado. Existem alguns kits comerciais, disponíveis no mercado, como o kit LEGO MindStorms, PETE, Modelix e outros, além de kits que seguem o paradigma chamado de robótica livre que fazem uso de materiais mais baratos (ou até de sucatas). Independente do kit escolhido, o protótipo robótico montado deve ter um controlador programável capaz de receber um conjunto de comandos a partir da execução de um algoritmo escrito em alguma linguagem de programação. Kits de robótica comerciais são normalmente acompanhados de um software específico para programação de seus robôs. Por outro lado, os kits de robótica livre podem, geralmente, ser programados utilizando compiladores de linguagens específicas, como C, C++ ou Java, por exemplo. Neste modelo, caso o professor de robótica educacional necessite ou deseje fazer uso de um novo kit de robótica, a fim de baixar os custos, ou mesmo visando trazer inovação para a sala de aula, seria eventualmente necessário trocar o ambiente de programação e/ou a linguagem de programação utilizada. Isso geralmente ocorre no caso do kit ser de marca diferente, por exemplo, sendo necessário ensinar um novo conjunto de passos e instruções aos alunos para a programação dos protótipos, além de ser necessário, em alguns casos, ensinar o passo a passo para a montagem de modelos utilizando o novo hardware. Com a difusão da robótica educacional no cenário educacional mundial, diversas pesquisas vêm sendo realizadas a fim de produzir ferramentas para que as oficinas de robótica educacional tragam novos desafios aos alunos [Alimisis 2013]. Nesse cenário, surge a busca por uma maior versatilidade de hardware em ambientes de aprendizagem que fazem uso da robótica educacional, além de ferramentas de programação escaláveis, que ofereçam diferentes níveis de programação e que estejam disponíveis gratuitamente ao público..

(25) 3 Nessa direção, um dos requisitos tomados como base para o projeto e desenvolvimento da ferramenta apresentada neste trabalho foi o seu alcance e disponibilidade. Inspirados neste quesito, decidimos utilizar a rede global de computadores como ferramenta de auxílio ao ensino da robótica educacional. Aqui, pode ser notado que os termos robótica e internet geralmente estão associados a laboratórios remotos onde a escola ou o aluno que não possui um dispositivo físico utilizam a internet para programar e visualizar os resultados [Pressman 2011], não sendo este o foco deste trabalho. Neste trabalho apresentamos uma nova ferramenta web, dinâmica, aberta e gratuita para a programação de robôs que contém um conjunto único de funcionalidades para dar suporte ao ensino de programação e algoritmos para robótica. Realizamos uma pesquisa extensa passando pelas diversas ferramentas web existentes na literatura e não constatamos uma proposta que contemple várias plataformas robóticas, que ofereça diferentes níveis de programação, que permita o envio de programas ao robô local sem necessidade de instalação de softwares e que favoreça a interação entre aluno e professor. Desenvolvemos uma ferramenta web que torna possível programar e enviar o programa a diferentes tipos de dispositivos robóticos utilizando uma linguagem universal, a linguagem R-Educ [Pitta et al. 2010, Sá et al. 2013], através de comandos gráficos ou textuais, programar na linguagem base do controlador, permitir interação entre aluno e professor. Tudo isso em uma ferramenta web aberta, dinâmica, e gratuita, possibilitando que a mesma seja utilizada em escolas ou pelo público em geral. Ao utilizar o ambiente desenvolvido, o usuário tem flexibilidade no uso de dispositivos robóticos, visto que é possível editar, compilar e enviar programas para diferentes robôs utilizando um browser, na web. No ambiente, o aluno pode enviar e receber direcionamentos de seu professor, enquanto que, ao professor, é possível registrar novas linguagens de programação, permitindo que o kit utilizado em sala de aula possa ser programado através do ambiente. Com a solução proposta, qualquer dispositivo computacional que possua um browser (e acesso à web) pode ser utilizado como uma estação de desenvolvimento para robôs. O uso da ferramenta fora do contexto escolar é possível através da condução de atividades enviadas pelo professor pelo sistema, com estatísticas de uso e erro do usuário, além de um fórum que permite aos estudantes e professores compartilharem suas experiências. Além disso, como contribuição secundária, durante os trabalhos, desenvolvemos o hardware de dois kits de robótica de baixo custo utilizando o controlador Arduino. Fornecemos todos os guias na ferramenta web para que o aluno ou qualquer instituição possa montar o seu próprio kit e fazer uso da ferramenta para programação do mesmo no ambiente web..

(26) 4. CAPÍTULO 1. INTRODUÇÃO. Para o projeto e desenvolvimento deste trabalho, realizamos inicialmente uma pesquisa bibliográfica acerca das principais linguagens de programação utilizadas em robótica, bem como suas definições e paradigmas, a partir da qual foi possível definir um conjunto de padrões considerados importantes para a criação desta ferramenta. Estendemos a pesquisa aos ambientes de programação mais utilizados em robótica educacional e, para isto, foi necessário desenvolver um método de avaliação homogêneo para este tipo de software, que também é outra contribuição deste trabalho. A partir da avaliação dos softwares para programação de robôs mais utilizados no cenário das competições de robótica, estabelecemos um conjunto de requisitos que deveriam ser contemplados pela ferramenta proposta. Definimos, também, quais tecnologias deveriam ser utilizadas para o seu desenvolvimento. Em seguida, ainda na fase inicial de desenvolvimento, implementamos protótipos do ambiente, tomando como base o trabalho anterior desenvolvido [Sá et al. 2013], e levando em consideração os requisitos e funcionalidades definidos na fase de pesquisa e estruturação do projeto. Os kits de robótica de baixo custo construídos foram concebidos com a finalidade de serem utilizados no ambiente e de permitirem que este seja considerado completo, indo desde a plataforma de hardware ao software. Um banco de dados para cadastro das linguagens e usuários foi desenvolvido em Java BD, um servidor de banco de dados escrito em Java, com total suporte a SQL, JDBC e JavaEE. A plataforma web foi desenvolvida fazendo uso da tecnologia Java EE, uma plataforma de programação para servidores na linguagem de programação Java. A ferramenta proposta teve suas duas versões testadas e validadas em um curso introdutório (prático) de robótica, oferecido aos vencedores da etapa teórica da Olímpiada Brasileira de Robótica em 2014 e 2015. Como será mostrado, os resultados indicam que, fazendo uso do ambiente proposto, é possível realizar a programação de qualquer dispositivo robótico que siga os parâmetros estabelecidos, utilizando uma única linguagem de programação em um ambiente web gratuito. Com isso, professores e alunos de robótica educacional não precisam necessariamente mudar de plataforma de desenvolvimento nem ensinar/aprender novas linguagens de programação quando houver troca do hardware utilizado.. 1.1. Escopo do Trabalho. O Laboratório Natalnet da Universidade Federal do Rio Grande do Norte desenvolve projetos na área de robótica e educação desde o ano de 2003. O foco inicial do trabalho foi inclusão digital dos alunos de uma escola pública do estado do Rio Grande do.

(27) 1.1. ESCOPO DO TRABALHO. 5. Norte. Com o desenvolvimento desse projeto e de outro projeto posterior, com fomento do CNPq, a partir de 2005 e até 2008, foi desenvolvida por Silva (2008) uma metodologia para implementação da robótica educacional em sala de aula, visando fazer uso de forma satisfatória dos benefícios que esta pode proporcionar. Para verificação da metodologia desenvolvida na época, a mesma foi colocada em prática em uma escola pública do Estado utilizando kits de robótica educacional Lego Mindstorms (o então RCX) e o software RoboEduc, que foi inicialmente concebido no projeto e estava ainda em desenvolvimento na época. Os resultados do projeto foram compilados e a metodologia foi validada no trabalho de Silva (2008). A equipe do laboratório Natalnet trabalhou para concluir a versão 4.0 do software RoboEduc [Pitta 2008], incluindo nesse trabalho cinco diferentes níveis de programação fazendo uso da primeira versão da linguagem R-Educ [Pitta et al. 2010]. Levando em consideração o custo de aquisição de kits de robótica utilizados, após o desenvolvimento do software, a equipe teve como foco o desenvolvimento de ferramentas capazes de aumentar a adesão das escolas às oficinas de robótica educacional. Neste contexto, Fernandes (2010) desenvolveu um simulador robótico tridimensional que permite a criação e execução de oficinas de robótica educacional sem a necessidade de utilização de material para montagem de protótipos robóticos. Nesta mesma linha de trabalho (barateamento da robótica educacional), também em trabalho anterior a este [Sá 2011], criamos um kit de robótica utilizando materiais de sucata e componentes eletrônicos, composto por motores e sensores e unidade de controle, com um custo inferior aos kits comerciais. Aroca (2013) desenvolveu uma plataforma robótica de baixíssimo custo, denominada N-Bot. O N-Bot possui uma arquitetura de controle e um conjunto de técnicas que visam diminuir a complexidade de montagem e programação dos protótipos, tendo inclusive sido premiada no AFRON - African Robot Network Contest [Network 2016]. Os trabalhos da equipe do laboratório Natalnet [NatalNet 2013] visam que uma maior quantidade de alunos de ensino fundamental e médio possam entrar/estar em contato com um ambiente de aprendizagem tão rico e motivador quanto é a robótica educacional, fazendo uso de todos os recursos disponíveis. Foi neste contexto que surgiu a ideia do ambiente de desenvolvimento web configurável para aplicações em robótica educacional [Sá et al. 2013]. E, como continuidade, surge esta proposta corrente, visando difusão e plena utilização da robótica educacional, em âmbito geral. Este trabalho tem como diferencial a criação de um ambiente de desenvolvimento na web para aplicações em robótica educacional associado a uma linguagem de programação em língua única, com interfaces acessíveis, que ofereça um maior poder de criação tanto em hardware quanto em software aos alunos desde a educação infantil ao ensino superior..

(28) 6. 1.2. CAPÍTULO 1. INTRODUÇÃO. Motivação. Como visto, para o desenvolvimento de uma oficina de robótica educacional são necessários alguns recursos que nem sempre estão presentes em um contexto de sala de aula trivial [Neves-Júnior 2011], são eles: um kit de robótica composto por um controlador lógico programável, sensores, motores e peças para construção de uma estrutura mecânica para o protótipo robótico, um ambiente de desenvolvimento para programação dos protótipos, um dispositivo computacional capaz de utilizar o ambiente escolhido e um ambiente propício ao desenvolvimento de um desafio prático, geralmente proposto em cada oficina. O ensino e utilização da robótica educacional estão intrinsecamente associados ao ensino da programação, visto que se faz necessário a manipulação dos protótipos através de instruções (programas). Existem diversas linguagens de programação para robôs, porém os ambientes de desenvolvimento que acompanham os kits de robótica educacional, em sua maioria, possuem linguagens de programação diferentes e formas diferentes de se programar: gráfica ou textual. As interfaces de programação gráfica possuem duas vertentes: ou se aproximam ao máximo do controle direto das peças do hardware [N.I. 2013a] ou tentam abstrair a visualização do hardware a partir do encaixe de conteúdos textuais. Por outro lado, os que podem ser programados de forma textual apresentam, em sua maioria, estruturas baseadas na língua inglesa com palavras chaves e sequências de comandos diferenciadas. Para que um programa seja compilado e enviado a um robô, frequentemente, é necessária a instalação de softwares específicos em um computador, limitando essas operações a usuários especialistas [Aroca, Guardiman & Gonçalves 2012]. Em alguns casos é necessário que o usuário possua privilégios de administração do sistema para instalar e/ou executar softwares de desenvolvimento de robótica. Sendo também, muitas vezes, necessário que o usuário possua computador com alto poder de processamento ou especificações de hardware específicas. Além disso, a prática da programação de robôs muitas vezes está condicionada apenas ao ambiente de sala de aula, não sendo possível ao aluno e/ou ao professor fazer o teste, a execução de programas, e interagirem fora do contexto escolar. A motivação principal deste trabalho surge, então, pela constatação de uma não uniformidade encontrada nas formas de programação dos kits de robótica e dos impasses encontrados para se instalar softwares específicos num determinado computador. Ainda, somos motivados pelos benefícios que as ferramentas da robótica educacional possuem no processo de ensino aprendizagem e buscando permitir que pessoas com diferentes.

(29) 1.3. TEMA, PROBLEMA E HIPÓTESE DE PESQUISA. 7. níveis de conhecimento em robótica ou até mesmo sem nenhum conhecimento possam programar e fazer uso da ferramenta desenvolvida. A intenção é permitir uma maior flexibilidade do uso de dispositivos robóticos em sala de aula através de um ambiente de desenvolvimento que permite aos usuários a edição, compilação e execução de programas de qualquer dispositivo robótico utilizando apenas um navegador web. No ambiente, será possível cadastrar-se como aluno de algum professor e receber orientações do mesmo, será permitido ao professor cadastrar novas linguagens de programação para que o kit que ele utiliza possa ser programado através do ambiente. Com a solução proposta, qualquer dispositivo que possua um navegador web, pode ser usado como estação de desenvolvimento de programas para protótipos robóticos. Além disso, nos motivamos muito pela difusão dessa ferramenta e sua utilização não só no contexto escolar. A utilização fora do ambiente escolar pode ser realizada por meio de tarefas enviadas através do sistema pelo professor, estatísticas fornecidas ao aluno e um fórum que permite com que os alunos e professores compartilhem suas experiências [WEduc 2016a].. 1.3. Tema, Problema e Hipótese de Pesquisa. Além do mero desenvolvimento de ferramentas tecnológicas, o tema de pesquisa em foco no presente trabalho possui várias questões teóricas, além de possuir um contexto multidisciplinar, pois está intrinsecamente relacionado, também, com a área de Educação, além dos contextos em Ciência da Computação, Engenharia Mecatrônica, Elétrica e Mecânica, inerentes à área de Robótica Educacional. Ferramentas dessas disciplinas são necessárias para o desenvolvimento de aplicações que sejam utilizadas de forma eficiente no contexto do processo ensino-aprendizagem. Assim, dentro da área de Robótica Educacional, estudamos e apresentamos soluções para o: • Tema de pesquisa Desenvolvimento de metodologias envolvendo ambientes de aprendizagem para a programação de robôs e realização de atividades de robótica educacional de forma interativa na web. Experimentos anteriores mostram que, ao utilizar ferramentas de robótica educacional, os alunos, ficam envolvidos, interessados e empolgados com uma nova maneira de aprender. Em particular, o entusiasmo de trabalhar com robôs reais mantêm os alunos motivados, o que faz melhorar seus rendimentos escolares [Silva 2008, Pitta et al. 2010, Dias.

(30) 8. CAPÍTULO 1. INTRODUÇÃO. et al. 2015]. Porém, notamos que a substituição de parte (ou o todo) das ferramentas (hardware ou software) pode acarretar problemas de descontinuidade no processo ensinoaprendizagem. Nosso problema de pesquisa surge, então, relacionado ao tema, quando nos deparamos com uma questão principal que pode ser sintetizada como: • Problema: Como conseguir utilizar plataformas variadas em sala de aula sem a necessidade de trocar o ambiente computacional e/ou a linguagem utilizada tanto para programação de robôs quanto para atividade de robótica educacional? A partir desta questão de pesquisa, nos propomos a estudar, verificar e analisar os hardwares e softwares existentes, e pudemos encontrar lacunas em todos eles. Uma dessas lacunas é que as ferramentas existentes não permitem uma continuidade do processo, de forma suave, caso algum deles (hardware ou software) tenha que ser trocado, por descontinuidade de fabricação ou por melhoria tecnológica, por exemplo. Geralmente, cada ferramenta tecnológica (kit robótico) vem acompanhada de um software diferente, acarretando na necessidade do aprendizado de uma nova linguagem de programação por todos os usuários envolvidos. Embasados pelos aspectos teóricos do problema em questão, formulamos a seguinte hipótese de pesquisa, a ser comprovada empiricamente, no decorrer deste trabalho: • Hipótese de Pesquisa: É possível realizar a programação de robôs e a interação professor-aluno das atividades de Robótica Educacional via web em um único ambiente e com uma única linguagem de programação independente do hardware usando um tradutor universal que converta de uma linguagem de alto nível ao código de máquina específico de cada plataforma. Ou seja, apresentamos neste trabalho, justamente, uma forma de tentar estender, ao máximo possível, a vida útil da linguagem de programação e o ambiente de interação professor-aluno, mesmo no caso de troca do hardware. Isto garante a continuidade do processo ensino-aprendizagem, uma vez que tantas plataformas existem, cada qual com suas características particulares. A ideia é justamente tentar desenvolver um formalismo que permita a tradução para a linguagem R-Educ, que passa então a ser utilizada de maneira mais abrangente. Esta linguagem não tem intenção de ser a única linguagem, porém uma solução a ser adotada no caso de escolas e outras instituições que não pretendem ficar trocando o ambiente de programação e de interação, em todo momento. A plataforma que será detalhada aqui é de código aberto e livre, estando disponível na Internet..

(31) 1.4. METODOLOGIA. 1.4. 9. Metodologia. Como citado, para o desenvolvimento deste trabalho, realizamos inicialmente uma pesquisa bibliográfica acerca das principais linguagens de programação utilizadas em robótica, bem como suas definições e paradigmas, a partir da qual foi possível definir um conjunto de padrões considerados importantes para a criação deste ambiente, tendo em vista se tratar de um ambiente dinâmico que pode ser expansível a qualquer linguagem. Nesta etapa, desenvolvemos também um método para avaliação de softwares para robótica educacional a fim de auxiliar na categorização e definição dos requisitos da ferramenta. Em seguida, na fase de desenvolvimento de software, realizamos uma pesquisa sobre as tecnologias existentes para a implementação do ambiente. Para tal, estabelecemos a necessidade de migrar completamente a plataforma já desenvolvida para tecnologias que viabilizassem o uso em larga escala desta ferramenta e que fossem passíveis de serem executadas em diferentes plataformas. Estabelecemos como requisito básico a necessidade de um servidor de banco de dados, uma plataforma web e uma linguagem para implementação e atualização do compilador R-Educ. Concomitante a fase de desenvolvimento de software, realizamos o desenvolvimento dos hardwares para testar a plataforma. Estes são projetados de forma a viabilizar a reprodução de sua confecção. Nesta etapa, são elaborados manuais, guias de funcionalidades e vídeos instrucionais. A quarta fase é o desenvolvimento de protótipos do ambiente dinâmico, utilizando os dados obtidos na fase de pesquisa. Incluímos no ambiente guias web de utilização para aluno e professor, manuais para implantação de um servidor local, guias de cadastro de linguagens, manual da linguagem R-Educ, exemplos de programas básicos prontos, sugestões de atividades interdisciplinares, manual completo de confecção e utilização do kit de baixo custo que fará parte deste trabalho. Por fim, para validação da ferramenta web, contamos com o auxílio de professores para realizar cadastros de linguagens a fim de que sejam utilizadas no mínimo três plataformas robóticas utilizando o ambiente. Promovemos também oficinas e minicursos de robótica educacional utilizando a ferramenta onde colhemos e comparamos os resultados a partir da aplicação do método avaliativo desenvolvido. Particularmente, o ferramental foi validado através de sua utilização por alunos participantes da fase final da modalidade teórica da Olimpíada Brasileira de Robótica..

(32) 10. CAPÍTULO 1. INTRODUÇÃO. 1.5. Contribuições e Aplicações. Diversos projetos são encontrados na literatura apresentando diferentes abordagens para a programação de robôs em ambientes educacionais. Nestas, um dos problemas encontrados é a falta de ambientes capazes de atender ao perfil de diferentes usuários com níveis de conhecimento diferentes em robótica. O presente trabalho atende a esses requisitos e traz aos interessados, em utilizar a robótica educacional, uma ferramenta web livre e gratuita, que pode ser utilizada em qualquer plataforma não sendo necessário computador com funcionalidades específicas, sendo todo o processamento de compilação executado no servidor. O trabalho fornece à comunidade uma ferramenta completa e gratuita para robótica educacional, incluindo modelos de aula, instruções detalhadas de como construir dois kits de robótica de baixo custo, manuais de utilização e guias de implantação, ambiente de programação textual, um método homogêneo para análise e avaliação de softwares para robótica educacional, tudo isso fornecido em um ambiente web que também permite a interação entre professores e alunos. A seguir elencamos, por ordem de relevância, algumas contribuições apresentadas neste trabalho: • • • • • •. 1.6. Tradutor universal de linguagens; Utilização de diversos hardwares para robótica utilizando apenas uma linguagem; Flexibilização do uso de hardwares em sala de aula; Ambiente web para robótica educacional; Método para avaliação de softwares para robótica educacional; 2 kits de robótica livre de baixo custo.. Estrutura do texto. Este trabalho introduz uma proposta de desenvolvimento de uma ferramenta web completa dinâmica para programação de robôs em um ambiente de aprendizagem de robótica educacional. No Capítulo 1 apresentamos o escopo do trabalho, destacando o contexto no qual este trabalho se insere bem como os trabalhos desenvolvidos na área de robótica educacional no mesmo laboratório. Expomos, também, uma visão geral da motivação deste trabalho, que é a criação de uma solução para o problema da troca e inserção de novos kits de robótica em um ambiente de robótica educacional. Descrevemos em seguida a metodologia utilizada para o desenvolvimento do trabalho e as aplicações da tecnologia proposta..

(33) 1.6. ESTRUTURA DO TEXTO. 11. O Capítulo 2 apresenta o embasamento teórico necessário à compreensão deste trabalho, sendo discutidos aspectos e benefícios já estabelecidos da robótica educacional, os principais conceitos referentes a linguagens de programação e seus paradigmas, linguagens de programação web, teoria a cerca dos compiladores, metodologias de avaliação de softwares educacionais e a metodologia de engenharia de software utilizada. Em seguida, o Capítulo 3 apresenta uma revisão do estado da arte. Neste são discutidos diversos trabalhos que propõem ambientes de desenvolvimento para robótica educacional, web ou local, e os métodos para avaliação de softwares educacionais. Neste Capítulo será realizada uma análise categórica das ferramentas apresentas com a proposta deste trabalho, além de uma avaliação das principais funcionalidades de cada uma dessas ferramentas. No Capítulo 4, apresentaremos em detalhes o problema encontrado e a solução proposta, incluindo nesta descrição aspectos de implementação e estruturação da ferramenta. Especificaremos o escopo da ferramenta, e faremos uma breve descrição de cada aspecto do ambiente proposto. O Capítulo 5 apresenta o método homogêneo de avaliação de softwares para robótica educacional, um estudo de caso da aplicação desse método e os resultados da aplicação desse método com seis softwares voltados a este fim. Os kits de baixo custo para robótica educacional, também considerados contribuições deste trabalho, serão apresentados no Capítulo 6. Neste serão discutidas os princípios de criação de cada um e apresentada a sua metodologia de montagem. O Capítulo 7 apresenta as implementações realizadas. Nesta seção descreveremos as estruturas dos protótipos desenvolvidos, diagramas descrevendo o funcionamento e enquadramento desta ferramenta no ambiente de aprendizagem da robótica educacional. No Capítulo 8 apresentaremos os experimentos realizados com essa ferramenta, modelo de abstração de linguagens alcançado, kits utilizados e resultados obtidos a partir da aplicação do método de avaliação. Por fim, apresentaremos um comparativo dos dados obtidos a partir do método de avaliação entre a ferramenta proposta e as mais utilizadas no cenário nacional. A conclusão do trabalho se dá no Capítulo 9, com aferições acerca do trabalho, restrições e sugestões de trabalhos futuros..

(34) 12. CAPÍTULO 1. INTRODUÇÃO.

(35) Capítulo 2 Fundamentação Teórica. Com o objetivo de melhor viabilizar a compreensão deste trabalho, apresentamos neste Capítulo 2 os conceitos e técnicas já consolidadas na literatura, relacionados com o assunto proposto como tema de pesquisa. Iniciamos elucidando definições, bem como aspectos metodológicos e práticos da robótica educacional, linguagens de programação, seus tipos, e como é realizada a estruturação de compiladores. Apresentamos ainda, em seguida, conceitos relativos à avaliação e qualificação de softwares educacionais.. 2.1. Robótica Educacional. Existe uma busca atual constante de inserção de novas tecnologias em sala de aula. Essa busca visa tanto satisfazer as necessidades dos alunos e professores quanto promover uma maior qualidade de ensino, permitindo com que os ambientes de ensinoaprendizagem se tornem mais ricos e motivadores [Miranda 2006]. Dentre as tecnologias emergentes, está a robótica educacional ou robótica pedagógica, que pode ser definida de forma simples como sendo um ambiente de aprendizagem que reúne materiais de sucata ou kits de montagem com dispositivos controláveis ou programáveis por computador [DIEB 2012]. As oficinas de robótica educacional podem possuir vários objetivos e podem utilizar diferentes metodologias. Porém, no geral, caracterizam-se como um ambiente no qual os alunos seguem um conjunto de instruções e manuais ou criam e experimentam a montagem e programação do seu próprio protótipo robótico [Fortes 2007, Silva 2008, DIEB 2012]. Nas oficinas, são propostos desafios que são apresentados de forma lúdica e atrativa aos alunos, podendo relacionar diversas temáticas, como por exemplo: artes, cibernética, física, matemática, ética e responsabilidade social. As oficinas de robótica possibilitam que os desafios propostos pelo professor mediador sejam discutidos em grupo, gerando assim uma forte contribuição ao aprendizado colaborativo e estímulo à criação.

(36) 14. CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA. de um método científico para obtenção de soluções. As metodologias mais utilizadas para robótica educacional geralmente organizam as oficinas em quatro etapas [Miranda 2006]: • Exposição do desafio interdisciplinar que deverá ser solucionado pelos alunos; • Exploração e discussão das potenciais soluções; • Implementação da solução escolhida, nesta etapa é realizada a montagem e programação do protótipo robótico; • Teste e análise dos resultados, caso os resultados não sejam satisfatórios os alunos devem voltar à segunda etapa. A ferramenta da robótica educacional, aplicada como exposto, estimula a exploração e investigação de problemas concretos, estimula o raciocínio lógico, coordenação motora, criatividade, concentração, incentiva o trabalho colaborativo, introduz ao método científico e erro construtivo [Zilli 2004], além de permitir uma maior transversalidade curricular [Barriuso et al. 2004, Santos et al. 2006].. 2.1.1. Hardwares para Robótica Educacional. Na etapa de montagem do protótipo robótico em uma oficina de robótica, faz-se necessário o uso de um hardware que inclui, comumente, um controlador lógico programável que pode ou não estar associado a um kit de robótica. Um kit de robótica é composto por um conjunto de peças que auxiliam na construção da parte física de um robô. Os hardwares que possuem um controlador lógico programável são aqueles em que os usuários podem implementar algoritmos para modificar o comportamento do robô ao longo do tempo. Já os hardwares que não possuem este tipo de componente executam sempre o mesmo conjunto de instruções. Existem diferentes tipos de hardwares (associados ou não a kits de robótica) que podem ser utilizados em uma oficina de robótica educacional. Neste trabalho utilizaremos a classificação dos hardwares em três categorias: kits comerciais e kits com sucata (material alternativo) e os kits com peças e materiais eletrônicos. A primeira categoria está relacionada aos kits que podem ser adquiridos comercialmente, sendo trazidos prontos de fábrica, são exemplos deste tipo o kit LEGO Mindstorms EV3 [LEGO 2011] e o Vex [Vex 2011]. Nota-se que esses kits apresentam uma qualidade de material melhor quando comparados aos das demais categorias. A segunda categoria está relacionada aos kits cujos componentes utilizados na montagem da carcaça do robô são, em sua maioria, provenientes de lixo eletrônico. Um trabalho desenvolvido nesta área.

(37) 2.1. ROBÓTICA EDUCACIONAL. 15. é o SH-Educ [Sá 2011] e o trabalho de Pinto (2011). Já a terceira categoria, engloba os kits construídos manualmente, mas formado por componentes eletrônicos e peças que são disponíveis comercialmente. Dentre os trabalhos realizados nesta vertente está o N-Bot [Aroca, Barros, Burlamaqui & Gonçalves 2012].. 2.1.2. Ambientes de Desenvolvimento para Robótica Educacional. Os protótipos robóticos montados não são constituídos apenas de aparatos mecânicos. Comumente, os kits de robótica educacional incluem um dispositivo lógico, passível de ser programado através de um software. Neste trabalho, chamaremos estes softwares de ambientes de desenvolvimento para robótica educacional. Estes possibilitam que comandos sejam escritos, ou montados, e compilados para a linguagem de máquina do dispositivo lógico. Ambientes de desenvolvimentos para robótica educacional devem permitir também que os códigos compilados sejam enviados para o protótipo robótico montado e este deve ser passível de executar os comandos. Estes ambientes podem ser categorizados em ambientes web ou ambientes desktop. Nos primeiros, a arquitetura de funcionamento é do tipo cliente-servidor [Kurose & Ross 2010], neste caso, todo o custo computacional é requisito do servidor e não da máquina do cliente. No segundo caso, geralmente, é necessária uma instalação de software na máquina local, devendo esta possuir todos os requisitos necessários pelo sistema.. Ambientes Web para Robótica Educacional Tendo em vista a acessibilidade, a web tornou-se um meio atrativo e passível de ser associado à educação e ao ensino tradicional. A plataforma web, para propósitos didáticos, permite que o aluno agende o seu próprio aprendizado, além disso, por sua disponibilidade e gratuidade ela permite que o uso da robótica educacional saia dos limites de sala de aula [Salazar-Silva et al. 1999]. Os ambientes de desenvolvimento web possibilitam que qualquer computador ou dispositivo com acesso à web via navegador possa ser utilizado para programar robôs sem a necessidade de instalação de softwares específicos e sem necessidade de modificação das variáveis de ambiente [Yanagisawa 2012]. Existem duas categorias de ambientes web para robótica educacional: laboratórios remotos, nestes ambientes o usuário é capaz de programar e enviar comandos a um robô localizado em um laboratório específico, e a segunda categoria é de laboratório local, onde.

(38) 16. CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA. o usuário programa e compila via web e os comandos são enviados a um robô pessoal do usuário [Tzafestas 2009].. 2.2. Linguagens de Programação. O uso de uma linguagem de programação torna possível a comunicação entre os seres humanos e as máquinas. O dicionário Aurélio [Dicionário Aurélio 2013] define-a como: "Conjunto de instruções e regras de composição e encadeamento, por meio do qual se expressam ações executáveis por um computador, seja diretamente, seja por meio de processos de compilação, interpretação ou montagem." A linguagem de programação permite ao programador especificar precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas ao se deparar com determinadas circunstâncias. O conjunto de palavras chamadas de tokens, compostas de acordo com um conjunto de regras de formação, constitui o código fonte de um algoritmo. O código fonte é, em última instância, a linguagem entendível pelas pessoas que deve ser traduzido para gerar o código de máquina a fim de que possa ser entendido e executado pelo processador (máquina). Conceitos relativos à linguagens de programação são estudados pela área de Teoria das Linguagens Formais e dos Autômatos (LFA). Essa teoria tem por objetivo estudar e definir os modelos matemáticos que possibilitam a especificação e o reconhecimento de linguagens, suas classificações, estruturas, propriedades, características e relacionamentos. Podemos dizer que as linguagens formais são uma abstração das características gerais de uma linguagem de programação, baseadas na área de Teoria da Computação e possuem um conjunto de símbolos, regras de formação de sentenças, entre outros [Acióly et al. 2002]. Uma linguagem formal nos diz todas as regras que são explicitamente declaradas em termos das cadeias de símbolos que podem ocorrer nela. Uma linguagem formal L sobre um alfabeto ∑ é um subconjunto de ∑∗ , isto é, o conjunto de todas as cadeias (finitas) obtidas concatenando-se zero ou mais símbolos de ∑. O alfabeto ∑ é um conjunto nãovazio e finito de símbolos. As representações são feitas por reconhecedores e geradores [Hopcroft et al. 2015]. Os reconhecedores são dispositivos formais que servem para verificar se uma sentença pertence ou não à determinada linguagem. Ou seja, se a sentença pode ou não ser for-.

(39) 2.2. LINGUAGENS DE PROGRAMAÇÃO. 17. mada a partir das regras de formação especificadas. Já os sistemas geradores são dispositivos formais que permitem a geração sistemática de todas as sentenças possíveis de uma linguagem. Os principais sistemas geradores disponíveis são as gramáticas, destacandose as de Chomsky [Chomsky 1965, Acióly et al. 2002]. Linguagens formais podem ser representadas de maneira finita e precisa através de sistemas com fundamentação matemática.. 2.2.1. Desenvolvimento de Programas. O computador deve conter mecanismos capazes de converter os comandos dados em linguagem de alto nível (linguagens de programação em geral) para a linguagem de máquina (códigos binários). Esta tarefa de conversão é feita através de um programa que recebe as instruções em linguagem de alto nível e retorna como saída outro programa constituído de instruções em código de máquina. Ao programa original, em linguagem de alto nível, dá-se o nome de programa fonte e ao resultado, em linguagem de máquina, de programa objeto [Gomes 2012]. Apresentamos nesta seção as principais etapas de geração de um programa. A primeira etapa para geração de um programa é a codificação, está é dada pela escrita utilizando uma determinada linguagem de programação das instruções que a máquina deve realizar para alcançar o resultado almejado. Para realização desta tarefa é preciso utilizar ambientes integrados de desenvolvimento ou editores. É possível nesta etapa utilizar qualquer editor para gerar o programa fonte. Porém, alguns ambientes oferecem ferramentas de edição mais poderosas, com reconhecedores e realçadores das palavras chaves de uma linguagem, geração do código fonte, possibilidade de projeto de interfaces gráficas, etc. A segunda etapa é a tradução do programa fonte em programa alvo. Sabemos que, independente da linguagem de programação utilizada e da arquitetura do sistema computacional em uso, o programa fonte não é executável diretamente pela unidade de processamento. A linguagem é uma ferramenta que permite apenas que o programa seja legível a olhos humanos. Para que o programa fonte seja executável, é necessário que ele seja traduzido para o código de máquina do processador que faz parte da arquitetura do sistema. Esta tarefa é realizada de forma automática pelos montadores e compiladores. O programa alvo gerado por estas ferramentas é apresentado de acordo com o sistema de numeração binária..

(40) 18. CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA. Compiladores O programa alvo é o código de máquina produzido pelo compilador e, para que ele seja gerado, o compilador passa por um conjunto de fases [Aho et al. 2008] como mostrado na Figura 2.1. Cada uma das fases transforma o programa fonte de uma representação para outra. Algumas dessas fases podem, no entanto, serem agrupada e a representação entre elas não necessita ser, de fato, implementada. Nesta seção, descreveremos as três fases principais: análise léxica, análise sintática e gerador de código [Barbosa et al. 2009].. Figura 2.1: Fases de um compilador A análise léxica é a etapa do processo onde são reconhecidas quais cadeias de símbolos do programa fonte representam entidades indivisíveis. Por exemplo, palavras não são tratadas letra a letra, mas sim como uma unidade composta por várias letras. O analisador léxico também identifica os conjuntos de símbolos que representam valores numéricos, operadores aritméticos, palavras, símbolos reservados e outros, gerando assim um padrão de bits conhecidos como símbolos ou tokens [Aho et al. 2008]. Cada símbolo ou token representará um dado de entrada do analisador sintático. Além disso, o analisador léxico realiza também outras tarefas como remover comentários e marcas de edição, bem como relacionar o número da linha com possíveis mensagens de erro..

(41) 2.3. QUALIDADE DE SOFTWARE. 19. Após a realização da análise léxica, é realizada a análise sintática. Esta etapa representa o processo de identificação da estrutura gramatical do programa e do reconhecimento da função de cada um dos seus componentes. A análise sintática é realizada baseada em um conjunto de regras sintáticas que definem a gramática da linguagem de programação. O analisador sintático é um programa que, para uma dada gramática, ele aceita como entrada uma sentença - lista de símbolos ou tokens - e constrói para ela uma árvore gramatical. Ou, caso a sentença não pertença à linguagem descrita por essa gramática, uma indicação de erro. A ação final do processo de tradução é a geração do programa objeto, a qual é realizada através da escrita das instruções em linguagem de máquina. Muitas vezes, dependendo do compilador, as análises léxica, sintática e a geração do programa objeto, não são efetuadas em ordem sequencial. A Figura 2.2 apresenta o formato de compilação em que o analisador léxico começa o processo identificando o primeiro token e fornecendo-o ao analisador sintático. Já com a identificação da estrutura que vem a seguir, o analisador sintático solicita ao analisador léxico o próximo token. À medida que o analisador sintático reconhece sentenças ou comandos completos, ele chama o gerador de código, para que este possa produzir as correspondentes instruções em linguagem de máquina.. Figura 2.2: Interação entre analisador léxico e sintático. 2.3. Qualidade de Software. A fim de alcançar níveis cada vez mais altos de qualidade de software torna-se necessário melhorar cada etapa de seu ciclo de vida [Paul Oman & Pfleeger 1996]. Um dos alvos de pesquisa dos últimos anos tem sido sobre a avaliação da qualidade de software..

(42) 20. CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA. Essa tem como objetivo maior obter a garantia da qualidade seja em um produto intermediário do processo de desenvolvimento ou em um produto final. Com a existência de uma direta correlação entre a qualidade de produtos de software e a qualidade do processo através do qual o software é desenvolvido, a área de estudos em qualidade pode ser dividida em dois ramos [Rocha 2001]: • Qualidade de produtos de software: procura assegurar a qualidade dos produtos gerados. • Qualidade de processos de software: visa à avaliação e melhoria de processos de desenvolvimento. Torna-se fundamental adequá-la aos objetivos específicos da organização e do produto [Gomes & et al. 2000]. Ou seja, qualidade não deve ser entendida como perfeição de software. Qualidade é um conceito que abrange vários níveis, realizado por um conjunto de atributos, representando vários aspectos relacionados ao produto como o seu desenvolvimento, manutenção e o próprio uso. Qualidade é algo executável, relativo, dinâmico e evolutivo, adequando-se ao nível dos objetivos a serem atingidos [Simão 2002]. Geralmente, a qualidade dos produtos de software é avaliada através de modelos de avaliação de qualidade. Esses modelos armazenam e organizam as propriedades do produto que está sendo avaliado. Dentre vários modelos de avaliação, existem dois mais utilizados e aceitos no mercado, são eles: • CMMI (Capability Maturity Model Integration), proposto pelo CMM (Capability Maturity Model) [Al-Kilidar et al. 2005]; • Norma ISO/IEC 9126: Proposta pela ISO (International Organization for Standardization) [Chrissis et al. 2003]. A CMMI está incluída na qualidade do produto e na norma ISO/IEC 9126, referente à qualidade do produto.. 2.3.1. Norma ISO/ IEC 9126. A série de normas ISO/ IEC 9126 (NBR 13596) representam a atual padronização mundial para a qualidade de software e do produto, descrevendo um modelo de qualidade para produtos de software, categorizando a qualidade em um conjunto de características e subcaracterísticas que devem ser atendidas para que o produto seja classificado como de qualidade. Esta série também propõe métricas que podem ser utilizadas durante a.

(43) 2.3. QUALIDADE DE SOFTWARE. 21. avaliação dos produtos de software (medição, pontuação e julgamento dos produtos de software). A série de normas ISO/IEC 9126 pode ser aplicada nas seguintes ocasiões [Quintela et al. 2006]: • Definição dos requisitos de qualidade de um produto de software; • Avaliação das especificações do software durante o desenvolvimento a fim de verificar se os requisitos de qualidade estão sendo atendidos; • Descrição das características e atributos do software; • Avaliação do software desenvolvido antes da entrega ao cliente. Esse modelo de qualidade categoriza os atributos do software em seis características [Quintela et al. 2006]: funcionalidade, confiabilidade, usabilidade, eficiência, facilidade de manutenção e portabilidade. Dentro dessas seis características, estão presentes subcaracterísticas que tornam o modelo de qualificação mais preciso e convincente.. 2.3.2. CMMI - Capability Maturity Model Integration. O framework CMMI foi criado com o objetivo de ajudar organizações envolvidas com o desenvolvimento de softwares, através de um modelo evolucionário. Além disso, tem por objetivo principal funcionar como um guia para a melhoria dos processos da organização, considerando para isto atividades como o gerenciamento do desenvolvimento de software, prazos e custos previamente estabelecidos. O objetivo maior, considerando o CMMI e seus diferentes conceitos, está justamente na produção de software com maior qualidade e menos propenso a erros. Para isso, o CMMI está dividido em cinco níveis de maturidade que confirmam, por sua vez, o grau de evolução em que uma organização se encontra num determinado momento, consistindo em uma série de metas que, quando satisfeitas, consolidam um componente importante do processo. • Nível 1 (Inicial) - O processo é caracterizado como sendo imprevisível e caótico, com inexistência de padrões; • Nível 2 (Gerenciado) - Processos básicos de gerenciamento de projeto são estabelecidos, com o planejamento, a medição e o controle dos diferentes processos; • Nível 3 (Definido) - Os processos já estão definidos e são compreendidos. Todos os projetos utilizam uma versão aprovada e adaptada do processo organizacional para desenvolvimento e manutenção de produtos e serviços tecnológicos;.

(44) 22. CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA • Nível 4 (Quantitativamente Gerenciado) - Métricas detalhadas dos processos e dos projetos são coletadas. Tanto os processos como os projetos são quantitativamente compreendidos e controlados; • Nível 5 (Em otimização) - A melhoria contínua do processo é estabelecida por meio de sua avaliação quantitativa, e da implantação planejada e controlada.. 2.4. Avaliação de Software Educacional. A busca por uma melhor qualidade de software cresceu quando o software se tornou cada vez mais integrado nas atividades cotidianas [Pressman 2011]. Para tal, surgiram métodos para avaliação e teste de software que verificam a presença de erros no produto e aumentam a confiança do usuário. Podendo, assim, assegurar ao usuário que ele está adquirindo um produto que atende às suas necessidades reais. Avaliar um software educacional significa analisar não só suas características de qualidade técnica, mas também, os aspectos educacionais envolvidos [Rocha et al. 2001]. Portanto, avaliar a qualidade de um software ultrapassa as preocupações com defeitos de funcionamento [Pflegeer 2001, Pressman 2000]. Diversas características devem ser analisadas, tais como as consideradas na série de normas NBR ISO/IEC 9126, visando à avaliação da qualidade de produtos de software [ABNT 2003]. Porém, dependendo do tipo de software e de seu grupo de usuários, diferentes fatores podem ser mais ou menos importantes [Metrics and Models in Software Quality Engineering 2002]. Por isso, a avaliação de software usualmente busca verificar a qualidade do desempenho, qualidade dos recursos, confiabilidade, conformidade, durabilidade, facilidade de manutenção, estética e percepção do software [Pressman 2011]. A partir de uma avaliação é possível julgar o produto, inferindo suas qualidades, defeitos e se atende ou não a um determinado público..

Referências

Documentos relacionados

O número da porta Serial Padrão por Link Bluetooth (COM37) pode ser modificado, por exemplo, para COM9 ou outra de um dígito (recomendado), através do Gerenciador de Dispositivos,

Resultados mostram que dos 50% dos alunos que disseram não gostar de Física, 92,31% afirmaram que se sentiriam mais motivados para estudar Física com

Este artículo presenta la implementación de recursos en el SuperLogo, una versión del lenguaje LOGO desarrollada por el NIED, para control del ladrillo programable LEGO RCX..

as partes produzam declarações de vontade destinadas a transmitir o direito de propriedade, e, no caso de ter sido efetuada por documento autêntico ou particular, desde que

– e ainda o facto de o art.º 5º do contrato de sociedade dispor que a representação da sociedade, em juízo e fora dele, compete sempre a dois sócios, “o que resulta dos

Vede Senhor nós chegamos Prontos a dar o que temos A vida alegre ou triste O amor que em nós existe Senhor aceita-nos assim... Missa com Crianças e Jovens - Paróquia da Glória

Nelson Nunes), para uma palestra no início do Seminário, sobre Vida Espiritual... Todo participante deve ganhar

Algúns poetas representativos deste momento de recuperación que se decantan polo cultivo dunha poesía de temática intimista son Guerra da Cal, Aquilino Iglesia Alvariño, Pura