• Nenhum resultado encontrado

Uma arquitetura de um sistema para interação entre alunos e professores na aprendizagem de programação / An architecture of a system for interaction between students and teachers in programming learning

N/A
N/A
Protected

Academic year: 2020

Share "Uma arquitetura de um sistema para interação entre alunos e professores na aprendizagem de programação / An architecture of a system for interaction between students and teachers in programming learning"

Copied!
23
0
0

Texto

(1)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761

Uma arquitetura de um sistema para interação entre alunos e professores

na aprendizagem de programação

An architecture of a system for interaction between students and

teachers in programming learning

DOI:10.34117/bjdv6n6-577

Recebimento dos originais:08/05/2020 Aceitação para publicação:26/06/2020

Emerson de Oliveira Andrade

Estudante do curso de Bacharelado Interdisciplinar em Tecnologia da Informação pela Universidade Federal Rural do Semi-Árido

Instituição: Universidade Federal Rural do Semi-Árido

Endereço:Departamento de Engenharias e Tecnologia. Universidade Federal Rural do Semi-Árido (UFERSA), Rodovia BR-226, KM 405, s/n - São Geraldo, Pau dos Ferros – RN,

Brasil, 59900-000

E-mail: [email protected]

Reudismam Rolim de Sousa

Doutor em Ciência da Computação pela Universidade Federal de Campina Grande (UFCG) Instituição: Universidade Federal Rural do Semi-Árido

Endereço: Departamento de Engenharias e Tecnologia. Universidade Federal Rural do Semi-Árido (UFERSA), Rodovia BR-226, KM 405, s/n - São Geraldo, Pau dos Ferros – RN,

Brasil, 59900-000

E-mail: [email protected]

RESUMO

As disciplinas de introdução à programação podem apresentar alto índice de reprovações e desistências, nos cursos na área de computação, o que pode ter como consequência um índice baixo de formandos. Os alunos podem apresentar dificuldades para acompanhar os conteúdos abordados nos componentes curriculares. Além da dificuldade inerente a qualquer disciplinas cursada em um curso de graduação, as disciplinas de introdução à programação costumam se tornarem um desafio, devido a falta de uma base prévia dos alunos. Diante deste contexto, propõe-se uma arquitetura de um sistema de tutorial inteligente com o intuito de ajudar os estudantes ingressantes em cursos na área de computação a resolverem problemas por meio de programação. Como forma de avaliar a arquitetura, foram utilizados três cenários importantes no sistema para validar a aplicabilidade da arquitetura proposta.

Palavras-chave: Arquitetura, Algoritmos, Educação, Feedback. ABSTRACT

The subjects presented in the introduction to programming classes can present a high rate of failures and dropouts in courses in the area of computing, which can result in a low rate of graduated students. Students may find it difficult to follow the content covered in the curriculum of these classes. In addition to the difficulty inherent in any subjects taken in an undergraduate course, the subjects of introduction to programming usually become a

(2)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 challenge, due to the lack of a previous base of students. Given this context, an architecture of an intelligent tutorial system is proposed in order to help students entering courses in the field of computing to solve problems by means of programming. As a way of evaluating the architecture, three important scenarios were used in the system to validate the applicability of the proposed architecture.

Keywords: Architecture, Algorithms, Education, Feedback. 1 INTRODUÇÃO

Os componentes curriculares voltados para o ensino de introdução à programação, na área de computação, podem apresentar uma alta taxa de retenção. Por exemplo, no curso de Bacharelado em Tecnologia da Informação (BTI) da Universidade Federal Rural do Semi-Árido - Centro Multidisciplinar de Pau dos Ferros (UFERSA-PDF), a taxa de insucessos foi de 70 % no semestre 2017.1 e 66 % no semestre 2017.2 [Rolim et al. 2020]. Algumas das causas para esses insucessos é o pouco ou a falta de contato com disciplinas voltadas para o desenvolvimento do pensamento computacional no ensino básico, isto pode causar um grande impacto para os ingressantes desses cursos para assimilar o conteúdo abordado em sala de aula [Rolim et al. 2020]. Como consequência, isto pode acarretar na desestimulação e também na evasão do estudante, em busca de realidades que estão mais próximas do contexto do ensino básico. Nestes componentes curriculares ou em seus, respectivos, laboratório, os alunos devem solucionar problemas de programação usando uma linguagem de programação. Além da dificuldade de desenvolver a lógica necessária para resolver os desafios propostos, os alunos também podem cometer erros sintáticos, na escrita de programas na própria linguagem. Neste sentido, os alunos precisam receber auxílio imediato para superar as suas dificuldades.

Os componentes curriculares em introdução à programação são responsáveis por introduzir a lógica de programação aos alunos ingressantes nos cursos na área de computação, além de ser a disciplina base para todo o resto do curso. Dessa forma, esses componentes curriculares são importantes para que o aluno avance no curso e obtenham um bom desempenho nas próximas disciplinas que têm a mesma como pré-requisito, direto ou indireto. Como os temas abordados na disciplina são novos para a maioria dos alunos ingressantes nos cursos na área de computação, a disciplina pode apresentar um nível de dificuldade elevado para o primeiro contato com os alunos, causando alguns problemas, conforme destaca Rodrigues (2002) : i) dificuldade de adaptação dos alunos a desenvolverem o raciocínio lógico, uma vez que muitos vêm de um ensino médio onde eram acostumados a decorar o conteúdo; ii) falta de motivação do aluno ocasionada pelo despreparo e o desânimo quando ele acredita

(3)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 que a disciplina é um obstáculo impossível de ser superado. Por consequência, isso acaba gerando altos índices de reprovação e consequentemente um alto índice de evasão na disciplina durante o período, chegando a casos mais extremos de alunos desistirem do curso por este motivo.

Esses componentes curriculares também se tornam um desafio para os professores para preparar os alunos de forma a obterem um bom desempenho também nas disciplinas que são dependentes do conhecimento desenvolvido na disciplina de introdução à programação. Um desempenho abaixo do esperado acabaria prejudicando os alunos nas próximas disciplinas que têm algoritmos como pré-requisito. Por outro lado, o alto índice de reprovação acaba causando outro problema, o acúmulo de alunos na disciplina, ocasionando a falta de vagas na disciplina, turmas quase vazias de disciplinas que têm a mesma como pré-requisito e consequentemente um baixo índice de formandos no curso.

Segundo Borges (2020) o modo tradicional de ensino de programação no nível superior não consegue atrair com facilidade o interesse dos alunos para a disciplina, pois não é muito motivador para os alunos desenvolverem programas sem uma interface gráfica bem elaborada, levando em consideração que os mesmos normalmente são familiarizados com programas de interfaces bem feitas e atraentes como o sistema operacional Windows, sites e aplicativos. Borges (2020) também destaca que muitos exemplos de programas utilizados por professores na disciplina são baseados em conceitos matemáticos como a série de Fibonacci e fatorial, que segundo ele não são muito motivacionais para os alunos, principalmente, para alunos que não vem com uma base matemática muito boa do ensino médio.

Para ajudar a resolver esse problema, propõe-se uma arquitetura de um sistema de tutorial inteligente para com o intuito de ajudar os estudantes ingressantes em cursos na área de computação a resolverem problemas por meio de programação. O sistema proposto trata-se de um aplicação Web para viabilizar uma maior interação entre alunos e professores no ensino de programação e funciona como uma sala de aula virtual. O sistema é dividido em vários módulos, dentre eles o módulo do professor e o módulo do estudante.

No módulo professor, o sistema permitirá que os professores cadastrem suas turmas de programação. Para cadastrar uma turma, o professor fornecerá todas as informações necessárias e será gerado um código único para identificação da turma, que pode ser disponibilizado para o estudante. O professor fornece esse código para os estudantes, permitindo que eles se cadastrem na turma. Os professores poderão cadastrar questões de programação para os seus alunos praticarem os assuntos vistos em sala de aula e através das

(4)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 correções do sistema ajudar a tirar as dúvidas dos seus alunos, além de possibilitar que o professor consiga acompanhar melhor o desenvolvimento da sua turma durante o semestre.

O módulo estudante permite que o estudante crie uma conta e também se cadastre em uma turma virtual fornecendo o código da turma disponibilizado pelo professor. Os alunos poderão submeter resoluções de questões para o sistema que gera um feedback como resposta, informando se o código foi aceito, incorreto ou com erro de apresentação, similar a um juiz

online tradicional, como o URI.

O sistema também fornece um ambiente em que o estudante pode submeter uma questão que está incorreta e o sistema fornece um feedback sobre o porquê a questão apresenta um problema, usando um sistema de tutorial inteligente. A geração de feedback é baseada na resolução de outros estudantes que apresentaram problemas similares em seus códigos. Caso nenhum estudante tenha submetido uma questão que apresenta erro similar a questão do estudante, o professor é notificado e pode fornecer feedback para o estudante.

2 ARQUITETURA

Nesta seção, descreve-se a arquitetura para o sistema. O sistema foi denominado de SolutionCode, uma vez que auxilia os estudantes a solucionarem suas questões de programação, e tem por objetivo fornecer dicas para os estudantes que possuem dificuldade em resolver problemas de programação, buscando facilitar a interação entre o professor e os alunos na disciplina de algoritmos, para com isso tentar fazer que o aluno tenha mais facilidades de aprendizagem durante a disciplina, como também incentivá-lo através de uma competição saudável entre seus colegas de turma, onde conforme os alunos vão resolvendo questões no sistema, mais eles irão pontuar e consequentemente subirão no ranking da turma no sistema.

2.1 REQUISITOS DO SISTEMA

A definição dos requisitos são importantes para determinar os elementos da arquitetura e tem por objetivo coletar, analisar e definir as necessidades, características e restrições do sistema SolutionCode, focando nas potencialidades requeridas pelos afetados e usuários-alvo, e como estes requisitos foram abordados no sistema. O sistema consiste em uma aplicação Web, que disponibiliza funcionalidades de correção de questões e códigos de programação. Através do sistema, será possível realizar o envio de códigos pelos alunos, bem como a

(5)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 correção por parte dos professores. Os usuários do sistema consistem dos professores, alunos e monitores. Os detalhes de cada usuário é descrito na Tabela 1.

Tabela 1. Usuário do sistema SolutionCode

Ator Descrição

Professor O professor terá grande importância no sistema, será responsável por cadastrar as turmas, questões e as dicas.

Monitor O monitor poderá cadastrar questões e dicas no sistema.

Aluno O aluno responderá as questões que foram cadastradas pelo professor.

2.2 REQUISITOS FUNCIONAIS

No tocante aos requisitos funcionais do sistema, na versão corrente do sistema, foram elencados 30 requisitos funcionais, dispostos na Quadro 1.

Quadro 1: Lista de requisitos do sistema

Requisito Descrição

RF001 - Cadastrar Professor O sistema deverá permitir o cadastro de professor, mediante

a solicitação e a inserção dos dados referentes ao professor.

RF002 - Editar Professor O sistema deverá permitir a edição dos dados de professores já cadastrados.

RF003 - Excluir Cadastro do Professor

O sistema deverá permitir a exclusão dos dados de professores cadastrados mediante a solicitação e confirmação do mesmo.

RF004 - Cadastrar Turma O sistema deverá permitir o cadastro de turmas mediante a solicitação do usuário e a inserção do campo nome da turma, o sistema gerará um código de identificação da turma, cujo os alunos utilizarão este código que será disponibilizado pelo professor para ter acesso a turma.

RF005 - Editar Turma O sistema deverá permitir a edição de informações de turmas cadastradas mediante a solicitação do usuário.

RF006 - Excluir Turma O sistema deverá permitir a exclusão de turma cadastradas mediante a solicitação do usuário.

(6)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761

RF007 - Cadastrar Questões O sistema deverá permitir que professores e monitores cadastrem questões, mediante a solicitação e inserção das informações das questões, como o assunto ao qual a questão está relacionada.

RF008 - Editar Questões O sistema deverá permitir a edição das informações das questões já cadastradas.

RF009 - Excluir Questões O sistema deverá permitir a exclusão dos dados referentes a questões já cadastradas.

RF010 - Cadastrar Assuntos O sistema deverá permitir que o professor cadastre os assuntos que serão ministrados por ele na disciplina.

RF011 - Editar Assuntos O sistema deverá permitir que o professor edite os assuntos já cadastrados no sistema.

RF012 - Excluir Assuntos O sistema deverá permitir que o professor exclua assuntos já cadastrados no sistema.

RF013 - Cadastrar Dicas O sistema deverá permitir que o professor e o monitor cadastre dicas por categoria de lógica e sintaxe, essas dicas serão genéricas e servirão para qualquer questão relacionada com o assunto da dica.

RF014 - Editar Dicas O sistema deve permitir a edição de dicas.

RF015 - Remover Dicas O sistema deve permitir a remoção de dicas.

RF016 - Cadastrar Aluno O sistema deverá permitir o cadastro de alunos mediante a solicitação do usuário e a inserção dos dados referentes ao aluno.

RF017 - Editar Aluno O sistema deverá permitir a edição dos dados de alunos já cadastrados.

RF018 - Excluir Cadastro do Aluno

O sistema deverá permitir a exclusão dos dados de alunos cadastrados, mediante a solicitação e confirmação do mesmo.

RF019 - Cadastrar Monitor O sistema deverá permitir o cadastro de monitores da disciplina de algoritmo mediante a solicitação do usuário e a inserção dos dados referentes ao monitor.

(7)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761

RF020 - Editar Monitor O sistema deverá permitir a edição dos dados de monitores já cadastrados.

RF021 - Excluir Cadastro do Monitor

O sistema deverá permitir a exclusão dos dados de monitores cadastrados, mediante a solicitação e confirmação do mesmo.

RF022 - Responder Questões O sistema deverá permitir que o aluno responda às questões cadastradas pelo professor.

RF023 - Utilizar Dicas O sistema deverá disponibilizar dicas cadastradas pelo professor para o aluno utilizar caso tenha dúvidas de como resolver a questão.

RF024 - Pontuação O sistema deverá pontuar um aluno com 5 pontos por cada questão correta.

RF025 - Realizar Login (Professor)

O sistema deverá permitir que um professor realize o login, mediante a inserção dos dados referentes ao processo (ex.: login, senha).

RF026 - Realizar Login (Aluno)

O sistema deverá permitir que um aluno realize o login, mediante a inserção dos dados referentes ao processo (ex.: login, senha).

RF027 - Realizar Logout (Professor)

O sistema deverá permitir que um professor realize o logout.

RF028 - Realizar Logout (Aluno)

O sistema deverá permitir que um aluno realize o logout.

RF029 - Adicionar alunos na turma

O sistema deve permitir que o professor possa adicionar alunos na turma.

RF030 - Remover alunos na turma

O sistema deve permitir que o professor possa remover alunos na turma.

2.3 REQUISITOS NÃO FUNCIONAIS

Os requisitos não funcionais do sistema foram especificados seguindo o modelo da formulação de atributos de qualidade definidos por Bass (2012) para a definição das propriedades requeridas de uma arquitetura de software. Essa especificação consiste de seis elementos, são eles: fonte, estímulo, resposta, métrica, ambiente e artefato. Os quatro primeiros elementos formam os elementos principais da modelagem dos atributos de

(8)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 qualidade/requisitos não funcionais e os dois últimos elementos complementares, mas importantes para a definição da arquitetura.

A fonte indica quem produz o estímulo, podendo ser um usuário ou um subsistema e pode afetar como um sistema se comporta (e.g., o sistema deve se comportar diferentemente para o usuário normal ou alguém que tenta ataca o sistema). Por sua vez, o estímulo define um evento que chega ao sistema e pode ser usado para descrever ações motivantes, tanto com relação a execução do sistema ou a construção do sistema, por exemplo, uma requisição para modificar o sistema. De outra forma, a resposta específica como um sistema deve reagir a estímulos. Já a métrica determina se a resposta é satisfatória. De outro modo, o ambiente determina o conjunto de circunstância em que o sistema deve operar e o artefato denota a porção do sistema a qual os requisitos se aplicam.

Tabela 2. RNF001 - 01 - Usabilidade - Aumentar tamanho da fonte

Característica Descrição

fonte O usuário deseja alterar o tamanho da fonte.

estímulo O usuário seleciona o menu visualização >zoom ou digita ctr+/ctr-

resposta O sistema deve aumentar ou diminuir o tamanho da fonte conforme especificado.

métrica A fonte do sistema é modificado para o tamanho especificado pelo usuário.

ambiente O sistema executa em condições normais de uso em um sistema com configurações padrões (e.g., 4GB+, Processador Celeron+ )

artefato Tela de edição de código

Tabela 3. RNF001 - 02 - Usabilidade - Mudar a cor de fundo Característica Descrição

fonte O usuário deseja mudar a cor de fundo do sistema

estímulo O usuário seleciona o menu preferências >tema

resposta O sistema deve se apresentar da cor de fundo especificada pelo usuário

métrica A fonte do sistema é modificado para o tema especificado pelo usuário (e.g., dark, light, mono)

(9)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761

ambiente O sistema executa em condições normais de uso em um sistema com configurações padrões (e.g., 4GB+, Processador Celeron+ )

artefato Tela de edição de código.

Tabela 4. RNF001 -03 - Usabilidade - Interface amigável Característica Descrição

fonte O usuário deseja interagir com o sistema

estímulo O usuário deseja navegar no sistema

resposta O sistema deve permitir a navegação, conforme o usuário desejar

métrica O sistema deve apresentar ícones para todos os menus de navegação, o sistema deve apresentar menus padrões, tais como Arquivos, Editar, Preferências, Inserir, etc.

ambiente O sistema executa em condições normais de uso em um sistema com configurações padrões (e.g., 4GB+, Processador Celeron+ ).

artefato Todo o sistema.

Tabela 5. RNF004 - Segurança de acesso

Característica Descrição

fonte O usuário deseja acessar o sistema

estímulo O usuário informa os seus dados e clica no botão de login.

resposta Se a senha e o nome do usuário estão associados a um usuário cadastrado, o sistema apresenta a tela inicial do sistema, conforme o tipo de usuário. Caso o usuário ou a senha estejam incorretos, o sistema informa ao usuário que os seus dados estão incorretos.

métrica O sistema deve fornecer a resposta correta, permitir que o usuário tenha acesso ao sistema no seu perfil adequado ou informar que os dados do usuário estão incorretos. Essa resposta deve ser fornecida dentro de no máximo 5 segundos.

ambiente O sistema executa em condições normais de uso em um sistema com configurações padrões (e.g., 4GB+, Processador Celeron+ )

artefato Todo o sistema.

(10)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 Tabela 6. RNF005 - Manutenabilidade

Característica Descrição

fonte O desenvolvedor deseja adicionar uma nova funcionalidade ao sistema.

estímulo Uma solicitação para o desenvolvimento de uma nova funcionalidade chega a equipe de desenvolvimento.

resposta A equipe de desenvolvimento inicia imediatamente o desenvolvimento da funcionalidade.

métrica A nova funcionalidade deve ser integrada ao sistema dentro de no máximo uma semana.

ambiente A entrega do sistema está sob condições normais, com no mínimo 10 dias para entregar o sistema ao cliente.

artefato Todo o sistema.

2.4 RESTRIÇÕES

O sistema foi projetado para ser utilizado na Web, uma vez que deve ficar disponível para um maior número de usuários. Dessa forma, algumas restrições estão presentes, em que no contexto do projeto de arquiteturas de software, uma restrição define uma decisão que foi tomada e não pode ser alterada, devendo ser considerada durante a elaboração da arquitetura do software. As seguintes restrições foram estabelecidas:

O sistema deve ser projetado usando HTML, CSS e JavaScript para o

front-end, juntamente com os frameworks React.js e Bootstrap;

O sistema deverá ser projetado usando Node.js e MongoDB para o back-end.

No contexto de aplicações WEB, o front-end é área de desenvolvimento que estuda tecnologias voltadas a interação como o usuário da aplicação. Como exemplo de tecnologias empregadas para o desenvolvimento do lado front-end da aplicação, inclui-se o HTML (uma linguagem de marcação usada para definir a estrutura da página), o CSS (que trabalha com a aparência dos elementos, por exemplo posicionamento dos elementos, cores, fontes, etc) e o JavaScript (tecnologia utilizada para fornecer dinamicidade as páginas) [W3Schools 2019a]. Além dessas tecnologias, vários frameworks podem ser utilizados para auxiliar no desenvolvimento front-end, tais como o Bootstrap [W3Schools 2019b].

(11)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 Por outro lado, o back-end, em contraste com as tecnologias front-end, estuda tecnologias usadas para o desenvolvimento da modelo de negócio da aplicação. Trabalha também a interação com o modelo de dados da aplicação. Várias tecnologias podem ser usadas no desenvolvimento back-end da aplicação, dentre as tecnologias mais comuns, pode-se incluir o PHP, Node.js e tecnologias que usam a linguagem Java, tais como Servlets, JSP e JSF [W3Schools 2019b]. No tocante ao modelo de dados, vários bancos de dados podem ser empregados para armazenar os dados da aplicação, tais como MySQL e MongoDB (definido posteriormente) [W3Schools 2019b].

De outra forma, o Node.js é um framework back-end para o desenvolvimento de aplicações WEB que usa uma linguagem, tipicamente, empregada para o desenvolvimento da parte front-end de aplicações WEB, o JavaScript. Trata-se de um framework grátis que pode rodar em diferentes plataformas, tais como Windows, Linux, Unix, Mac OS X [W3Schools 2019a]. Dentre as facilidades oferecidas pelo framework, ele permite gerar páginas e conteúdos dinamicamente, pode manipular arquivos do lado servidor, com ações tais como criar, abrir, ler, escrever e deletar arquivos do lado servidor. Além disso, o Node.js permite manipular dados oriundos de formulários e interagir com informações armazenadas em banco de dados [W3Schools 2019a].

Diferentemente, o React.js é um framework para o desenvolvimento de interfaces, em que se destacam três conceitos principais: desenvolvimento declarativo, aplicações baseadas em componentes e multi-plataformas [React.js 2019]. No tocante ao desenvolvimento declarativo, o framework permite que o desenvolvedor crie interfaces para os diferentes estados a aplicação e ao invés de mudar toda a interface de usuário, o React.js atualiza os componentes necessários apenas quando há uma mudança nos dados. Por outro lado, no tocante ao desenvolvimento de aplicações baseadas em componentes, o React.js permite criar componentes individuais que podem ser compostos para criar interfaces de usuário mais complexas. Toda a lógica da aplicação é escrita em JavaScript. Por outro lado, o desenvolvimento multi-plataforma permite que o React.js seja renderizado em um servidor ou, alternativamente, usado para construir aplicações móveis, a partir do React Native [React.js 2019].

Para adicionar responsividade de forma rápida, o sistema utilizará o framework Bootstrap. Como definido pelo criadores do framework [Bootstrap 2019], o Bootstrap é o

framework mais popular para o desenvolvimento de aplicações as quais se destina. O

(12)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 que usam HTML, CSS e JavaScript. Uma das características do Bootstrap é que ele permite o desenvolvimento de aplicações com responsividade, isto é a criação de aplicações que se adaptem a diferentes tipos de telas, tais como computadores desktops, celulares e tablets. Por meio de um conjunto de classes pré-definidas pelo framework, é possível definir como o sistema será apresentado, considerando o tamanho da tela [Bootstrap 2019].

Por outro lado, segundo os proponentes do framework [MongoDB 2019], o MongoDB é o banco de dados que oferece a maior produtividade para o desenvolvimento de aplicações. Trata-se de um banco de dados flexível e escalável que permite a realização de consultas por documentos de interesse e também indexação desses documentos. O MongoDB pode ser acessado por diferentes diferentes linguagens de programação, atualmente, ele oferece suporte para mais de 10 linguagens distintas. O MongoDB armazena os dados usando um tipo de arquivo similar ao JSON, o que fornece flexibilidade para variação de campos entre documentos e permite que os documentos evoluam ao longo do tempo [MongoDB 2019].

2.5 VISÕES ARQUITETURAIS

Assim como é comum em outras áreas, o software pode se tornar uma estrutura complexa, por isso precisa-se representá-lo de diferentes formas [Bass et al. 2012]. Por exemplo, na área de saúde, diferentes visões do corpo humano são usadas para se tomar decisões da forma adequada. No contexto de arquitetura de software, uma visão denota uma representação do software, documentada seguindo um template, usando uma notação e utilizada por alguém interessado no projeto. Basicamente, existem três tipos de visões, a saber a visão de módulos, a visão componente & conector e a visão de implantação.

A visão de módulo apresenta os principais elementos que definem a estrutura do sistema. Por sua vez, uma visão componente & conector representa os elementos de mais alto nível, com caráter reutilizável, que define como os elementos se comportam em tempo de execução. Por sua vez, a visão de implantação detalha onde os elementos de software são implantados ou atribuídos a membros da equipe de desenvolvimento [Bass et al. 2012].

2.6 VISÃO DE MÓDULO

Nesta seção descreve-se a visão de módulo do sistema. Essa visão define os principais elementos do sistema. Para descrever essa visão, utilizou-se o diagrama de classe da Figura 1. Nesse diagrama, as propriedades e os métodos foram omitidos de forma a permitir uma melhor visualização dos elementos do sistema.

(13)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 Para identificação das classes foi utilizada a técnica ATA (Análise textual de Abbot), utilizando-se como fonte de informação principal o documento de requisitos definido anteriormente.

Figura 1. Diagrama de Classes

(14)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761

2.6.1 Módulo Professor

O módulo professor permite que os professores cadastrem suas turmas. Para cadastrar uma turma, o professor fornecerá todas as informações necessárias e será gerado um código único para identificação da turma, que pode ser disponibilizado para o estudante. O professor fornece esse código para os estudantes, permitindo que eles se cadastrem na turma. Os professores poderão cadastrar questões de programação para os seus alunos praticarem os assuntos vistos em sala de aula e através das correções do sistema ajudar a tirar as dúvidas dos seus alunos, além de possibilitar que o professor consiga acompanhar melhor o desenvolvimento da sua turma durante o semestre.

O módulo professor é composto por vários elementos, dentre eles: O elemento

Professor representa o professor da turma. O professor possui uma relação por herança com o

elemento Usuário, por ser um usuário do sistema. Além disso, o professor possui uma relação de agregação com o elemento Turma, que define a turma que é ministrada por ele. O professor pode fornecer quantas dicas desejar e se comunica diretamente com o elemento Turma. O elemento ControleProfessor é o responsável por gerenciar o professor. Elementos desse tipo são comuns em arquiteturas que seguem o padrão arquitetural Model-View-Controller (MVC). Dessa forma, cada módulo possui um controlador que o gerencia. O controlador do módulo professor (ControleProfessor) permite buscar professores, por meio do elemento

BuscaProfessor, cadastrar professor, por meio do elemento FormularioProfessor, gerenciar

turma por meio do elemento ControleTurma e gerenciar questões por meio do elemento

ControleQuestao. Por sua vez, o elemento BuscaProfessor é responsável pela busca de um

professor específico no sistema. Esse elemento se comunica diretamente com o elemento

RemoveProfessor. Por outro lado, o elemento RemoveProfessor é responsável pela remoção

de um professor específico do sistema.

2.6.2 Módulo Monitor

O módulo monitor permite que os monitores gerenciem as questões de programação respondidas pelos alunos que praticam os assuntos vistos em sala de aula. O monitor pode auxiliar a tirar dúvidas dos alunos ao longo da resolução de questões, auxiliando dessa forma o professor no acompanhamento do desenvolvimento da sua turma durante o semestre. Esse módulo é composto por vários elementos, dentre eles o elemento Monitor que representa o monitor da turma. O monitor possui uma relação por herança com o elemento Usuário, uma vez que é um usuário do sistema. Adicionalmente, o monitor possui uma relação de agregação

(15)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 com o elemento Turma, que define a turma que ele acompanha. O elemento ControleMonitor é o responsável por gerenciar o monitor. O controlador do módulo monitor permite remover um monitor, por meio do elemento RemoveMonitor, cadastrar monitor, por meio do elemento

FormularioMonitor. Diferentemente, do professor, o monitor não pode gerenciar turmas, mas

pode gerenciar questões por meio do elemento ControleQuestao. Por sua vez, o elemento

RemoveMonitor é responsável pela remoção de um professor específico do sistema.

2.6.3 Módulo Aluno

O módulo estudante permite que o estudante crie uma conta e também se cadastre em uma turma virtual fornecendo o código da turma disponibilizado pelo professor. Os alunos poderão submeter resoluções de questões para o sistema que gera um feedback como resposta, informando se o código foi aceito, incorreto ou com erro de apresentação, similar a um juiz online tradicional como o URI.

O uso de questões de juízes online foram escolhidos porque os sistemas de juízes online são bastante utilizados no ensino de programação por realizarem o processo de avaliação automático. Os juízes online geralmente possuem um repositório de problemas de programação divididos por tema e dificuldade. Nesse tipo de sistema, o usuário envia o código-fonte e o sistema compila e executa o mesmo utilizando dados de entrada pré-definidos, em seguida os dados são processados realizando uma comparação dos resultados obtidos com os resultados esperados, fornecendo ao final uma resposta ao usuário com base comparação realizada pelo sistema, como por exemplo (certo, errado, erro de compilação) [Chaves et al. 2013].

Os juízes online são facilmente encontrados na internet e são bastante utilizados em competições de programação como a maratona de programação organizada pela Sociedade Brasileira de Computação (SBC), como também vem sendo muito utilizados por alguns professores nas disciplinas de introdução à programação por facilitar a correção dos programas [Francisco et al. 2016]. Um dos juízes online mais conhecido é o Online Judge URI [BEZ and TONIN 2014], no qual o mesmo também permite que o professor faça listas de exercícios com base nas questões presente em seu repositório de questões, podendo assim disponibilizar a lista em sala de aula para seus alunos.

O módulo aluno é composto por vários elementos, dentre eles, o elemento Aluno representa o discente que participa da turma. O aluno, assim como os demais usuários, possui uma relação por herança com o elemento Usuário. Além disso, o aluno possui uma relação de

(16)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 agregação com o elemento Turma, que define a turma que ele faz parte. O aluno pode receber várias dicas, dependendo dos problemas apresentados em sua submissão e se comunica diretamente com o elemento Turma, que faz parte. O elemento ControleAluno é o responsável por gerenciar o aluno e permite buscar alunos, por meio do elemento BuscaAluno, cadastrar aluno, por meio do elemento FormularioAluno, acessar turma por meio do elemento

ControleTurma e acessar questões por meio do elemento ControleQuestao. Por sua vez, o

elemento BuscaAluno é responsável pela busca de um aluno específico no sistema. Esse elemento se comunica diretamente com o elemento RemoveAluno. Por outro lado, o elemento

RemoveAluno é responsável pela remoção de um aluno do sistema.

2.7 MÓDULO QUESTÃO E MÓDULO AUTENTICAÇÃO

Outro módulo do sistema é o módulo questão, que é formado por vários elementos, dentre eles, o elemento Questao, que representa a questão em si. Uma questão pode possuir uma lista de dicas. Dessa forma, o módulo questão possui uma associação com o elemento

Dica. Da mesma forma, uma questão está relacionada a um assunto em particular,

estabelecendo dessa forma uma relação com o elemento Assunto. Uma questão é gerenciada pelo controlador, ControleQuestao, que possui várias funções, dentre elas, cadastrar uma questão por meio do elemento FormularioQuestao, cadastrar uma dica à uma questão em particular pelo elemento FormularioDica, cadastrar um assunto pelo elemento

FormularioAssunto. Além dessas atribuições, o elemento ControleQuestao permite adicionar

uma resposta para uma questão pelo elemento RespostaQuestao, assim como, remover um assunto pelo elemento RemoveAssunto e remover uma questão pelo módulo RemoveQuestao.

Para garantir o controle de acesso ao sistema, a arquitetura também dispõe de um módulo de autenticação. Esse módulo é composto por vários elementos, dentre eles o elemento

Autenticacao, que é responsável pela autenticação dos usuários do sistema. Adicionalmente,

o módulo é composto pelo elemento SistemaAutentica, que dentre outras funcionalidades realiza a validação dos dados informados pelos usuários.

2.8 VISÃO COMPONENTE & CONECTOR

Nesta seção, descreve-se a visão Componente & Conector do sistema. Essa visão é usualmente representada pelo diagrama de componente disponível na notação UML.

Com relação a visão Componente & Conector, o módulo professor é composto por vários componentes, que podem ser vistos na Figura 2. Dentre esses elementos, o componente

(17)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761

GerenciarMonitor permite ao professor gerenciar o monitor que o auxilia ao longo da

disciplina. Para gerenciar um monitor, o professor precisa está autenticado. Por isso, esse componente se conecta diretamente com o componente AutenticaUsuario, que promove o controle de acesso para permitir que apenas usuários autenticados e autorizados possam acessar determinadas capacidades do sistema. Esse módulo também se conecta com o módulo responsável Banco de Dados, que lida com o banco de dados do sistema. Por outro lado, o componente CadastrarProfessor permite o cadastro dos professores. Além disso, o professor pode lidar com as turmas por meio do módulo GerenciarTurma e gerenciar temas de aula por meio do módulo GerenciarAssunto. Adicionalmente, o professor pode gerenciar questões por meio do módulo GerenciarQuestao.

Figura 2. Visão Componente & Conector para o Módulo Professor

Fonte: Autoria própria

No tocante à visão componente & conector do módulo monitor, os elementos são mostrados na Figura 3. Do mesmo modo que o módulo professor, o monitor pode controlar as questões por meio do módulo GerenciarQuestao. Da mesma forma, para propiciar controle de acesso, os monitores são autenticados por meio do módulo Autenticausuario. O monitor também controla suas informações por meio do módulo GerenciarMonitor e gere os alunos por meio do módulo GerenciarAluno. Para gerir essas informações, os módulos possuem acesso ao componente Banco de Dados.

De outra forma, com relação à visão componente & conector do módulo aluno, os elementos são mostrados na Figura 4. Esse módulo é composto pelos elementos

GerenciarAluno, que realiza operações relacionadas ao controle dos alunos do sistema. Para

serem gerenciados, os alunos precisam estar cadastrados no sistema, dessa forma esse módulo possui uma conexão com o elemento Banco de Dados, que representa o banco de dados do

(18)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 sistema. O cadastro dos alunos é realizado pelo elemento CadastrodeAluno. De forma, a gerir as questões cadastradas para ele no sistema, o módulo aluno possui o elemento

GerenciarQuestao, que para ser utilizado precisa que o aluno esteja autenticado, dessa forma,

torna-se necessário uma conexão com o elemento AutenticaUsuario.

Figura 3. Visão Componente & Conector para o Módulo Monitor

Fonte: Autoria própria

Figura 4. Visão Componente & Conector para o Módulo Aluno

Fonte: Autoria própria

2.9 VISÃO DE ALOCAÇÃO

O terceiro e último tipo de visão é a visão de alocação ou visão de implantação, que descreve dentre outros elementos como o sistema será implantado. A visão de alocação pode ser vista na Figura 5. No tocante à arquitetura do sistema proposto, o mesmo será implantado

(19)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 em um servidor remoto, que possibilitará o acesso a qualquer momento e de qualquer lugar pelos alunos. Os usuários acessam o sistema usando qualquer sistema operacional e qualquer navegador a sua disposição. Adicionalmente, o banco de dados estará separado logicamente e fisicamente do módulo do sistema proposto.

Figura 5. Visão de Alocação do Sistema

Fonte: Autoria própria

2.10 AVALIAÇÃO DA ARQUITETURA

Uma arquitetura de software, comumente, é validada utilizando o método Architecture

Tradeoff Analysis Method (ATAM) [Bass et al. 2012]. O ATAM revela o quão bem uma

arquitetura atende a objetivos específicos de qualidade e fornece informações sobre como esses objetivos de qualidade interagem entre si (tradeoff). No contexto industrial, o ATAM é realizado com vários grupos de usuários, dentre eles. O primeiro grupo de avaliadores externos ao projeto cuja arquitetura está sendo avaliada. Um segundo grupo de tomadores, que possuem o poder de falar pelo projeto de desenvolvimento ou têm autoridade para exigir mudanças nele e um terceiro grupo das partes interessadas têm interesse próprio na arquitetura funcionando como anunciada. Adicionalmente, todo o processo ATAM pode ser dividido em nove etapas. Por se tratar de um projeto acadêmico e não industrial, não tornou-se viável incluir todos os envolvidos, assim como realizar todas as etapas do ATAM. Por isso, neste trabalho, utilizou-se apenas uma das práticas do ATAM que é a utilização de cenários de forma a exercitar as partes importantes da arquitetura de forma a descrever como o sistema se comporta em tempo de execução. Os modelos para descrever o comportamento do sistema são úteis para a análise de algumas propriedades, tais como latência desejada, que necessita que a arquitetura

(20)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 inclua informações sobre o elemento e a interação dele com outros elementos. Para isso, foram selecionados três cenários principais, representados na forma de diagrama de sequência, para cadastrar uma questão, para cadastrar uma turma e para o aluno utilizar uma dica.

Na Figura 6 pode ser visto o diagrama de sequência para o professor cadastra uma questão. Para cadastrar uma questão, o professor realiza uma conexão com o elemento

FormularioQuestao, este por sua vez apresenta um formulário, em que o usuário preenche

todos os campos. Estas informações são fornecidas para o elemento ControleQuestao para realizar o cadastro da questão. O elemento ControleQuestao realiza a verificação dos dados e realiza o cadastro da questão. Em caso da questão ser cadastrada com sucesso, uma mensagem é informada ao professor.

Figura 6. Diagrama de Sequência para Cadastrar uma Questão

Fonte: Autoria própria

De forma similar, na Figura 7 pode ser visto o diagrama de sequência para o cenário em que o professor cadastra uma turma. Para cadastrar uma turma, o professor se conecta com o elemento FormularioTurma, este por sua vez apresenta um formulário, em que o professor preenche todos os campos. Estas informações são fornecidas para o elemento ControleTurma para que o cadastro da turma seja realizado. O elemento ControleTurma verifica dados e realiza o cadastro da turma. Em caso da turma ser cadastrada com sucesso, uma mensagem é informada ao professor.

(21)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 Figura 7. Diagrama de Sequência para Cadastrar uma Turma

Fonte: Autoria própria

Diferentemente, na Figura 8 pode ser visto o diagrama de sequência para o cenário para um aluno utilizar dicas. Para isso, o aluno se conecta ao elemento FormularioDica. Este por sua vez, se conecta ao elemento ControleQuestao, que realiza uma busca de uma lista de dicas para o aluno, que é retornada para o aluno. O aluno, por sua vez, seleciona a dica de interesse e a utiliza para o auxiliar na resolução da questão.

Figura 8. Diagrama de Sequência para Utilizar Uma Dica

(22)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761

3 CONCLUSÃO

Neste trabalho foi proposta uma arquitetura de um sistema de tutorial inteligente para com o intuito de ajudar os estudantes ingressantes em cursos na área de computação a resolverem problemas por meio de programação. O trabalho foi motivado pelo alto índice de reprovações e desistências dos alunos na disciplina em disciplinas de introdução à programação pode ter como consequência um índice baixo de formandos. Nessas disciplinas, os alunos podem apresentar dificuldade para acompanhar o conteúdo abordado no componentes curricular. Além da dificuldade inerente a qualquer disciplinas cursada em um curso de graduação, as disciplinas de introdução à programação costumam se tornarem um desafio, devido a falta de uma base prévia dos alunos. Muitos alunos nunca tiveram contato antes com o ensino de lógica de programação durante o ensino básico e o estilo de ensino tradicional da disciplina não consegue atrair suficientemente os alunos. No ensino tradicional, os professores costumam apresentar o conteúdo, geralmente com resoluções de questões envolvendo problemas matemáticos. Dessa forma, além da dificuldade do aluno de desenvolver a lógica de programação para resolver a questão, o aluno precisa entender alguns conceitos matemáticos para chegar a uma solução. Como resultado esperado desse trabalho, tem-se o desenvolvimento de um sistema Web com o objetivo de promover uma maior interação entre os alunos e os professores das disciplinas de introdução à programação (componente curricular Algoritmos em BTI na UFERSA-PDF), como também motivar os alunos para a disciplina, deixando o processo de aprendizagem mais divertido, através de uma competição saudável entre eles, onde ao resolver às questões propostas pelo professor, os alunos irão pontuar no ranking da turma no sistema, como também desenvolver um ambiente dentro do sistema SolutionCode com dicas e exemplos de programas clássicos na área da programação com suas devidas soluções.

REFERÊNCIAS

[Bass et al. 2012] Bass, L., Clements, P., and Kazman, R. (2012). Software Architecture in

Practice. Addison-Wesley Professional, 3rd edition.

[BEZ and TONIN 2014] BEZ, J. L. and TONIN, N. A. (2014). URI online judge e a

internacionalização da universidade. Disponı́vel em https://scratch.mit.edu/ Acessado em 15 de abril de 2019.

(23)

Braz. J. of Develop.,Curitiba, v. 6, n.6, p.40868-40890 jun. 2020. ISSN 2525-8761 library in the world. Disponı́vel em https://getbootstrap.com/ Acessado

em 13 de outubro de 2019.

[Borges 2020] Borges, M. A. F. (2020). Avaliação de uma metodologia alternativa para a aprendizagem de programação. In Proceedings of the VIII Workshop de Educação em

Computação, WEI ’20, pages 1–15. WEI.

[Chaves et al. 2013] Chaves, J. O., Angélica Castro, R. L., Lima, M. V., and Ferreira, K. H. A. (2013). Uma ferramenta baseada em juı́zes online para apoio às atividades de programação de computadores no moodle. Renote – Revista Novas Tecnologias na

Educação, 11(3):1–10.

[Francisco et al. 2016] Francisco, R., Júnior, C. P., and Ambrósio, A. P. (2016). Juiz online no ensino de programação introdutória - uma revisão sistemática da literatura. In Proceedings

of the Brazilian symposium on computers in education (simpósio brasileiro de informática na educação), SBIE ’16, pages 11–20. SBIE.

[MongoDB 2019] MongoDB (2019). What is MongoDB. Disponı́vel em https://www.

mongodb.com/what-is-mongodb Acessado em 13 de outubro de 2019.

[React.js 2019] React.js (2019). React - Uma biblioteca JavaScript para criar interfaces de usuário. Disponı́vel em https://pt-br.reactjs.org/ Acessado em 13 de outubro de 2019.

[Rodrigues 2002] Rodrigues, Junior, M. C. (2002). Como ensinar programação? informática.

Boletim Informativo, (1).

[Rolim et al. 2020] Rolim, R., Leite, F. T., de Oliveira Guimarães, A., and de Oliveira, A. R. (2020). Pré-algoritmos - ações de apoio à melhoria do ensino de graduação. Brazilian Journal

of Development, 6(3):12625–12635.

[W3Schools 2019a] W3Schools (2019a). Node.js Introduction. Disponı́vel em https: //www.w3schools.com/nodejs/nodejs_intro.asp Acessado em 13 de outubro de 2019. [W3Schools 2019b] W3Schools (2019b). Web Development. Disponı́vel em https:// www.w3schools.com/whatis/ Acessado em 13 de outubro de 2019.

Imagem

Tabela 1. Usuário do sistema SolutionCode
Figura 1. Diagrama de Classes
Figura 2. Visão Componente & Conector para o Módulo Professor
Figura 3. Visão Componente & Conector para o Módulo Monitor
+4

Referências

Documentos relacionados

Postura contrária foi encontrada com a colega de trabalho, já que as duas trabalham na escola Beta, onde a professora (E) diz.. que seria importante conhecer esse aluno, pois

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no

Predicted values were calculated by measuring the joint probability of effects on isopods’ biomass variation found for single exposures to different soil

escolaridade em escolas da Região Autónoma da Madeira foi alvo de um pré-teste de modo a verificar se todas as questões eram claras, desprovidas de ambiguidade e se alguma

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Com o fomento de políticas voltadas o contexto da Língua de Sinais nos cursos de Ensino Superior tem como fator de observação a prática docente e o uso de

Dose/diluição: 1 litro do produto para 1.000 litros de água – banho de imersão (repetir a cada 21 dias); 20 ml para 20 litros de água – pulverização (4 a 5 litros