UNIVERSIDADE
TECNOLÓGICA
FEDERAL
DO
PARANÁ
DEPARTAMENTO
ACADÊMICO
DE
COMPUTAÇÃO
CURSO
DE
BACHARELADO
EM
CIÊNCIA
DA
COMPUTAÇÃO
GUSTAVO
CORREIA
GONZALEZ
UM
ESTUDO
SOBRE
O
USO
DO
MECANISMO
DE
DICAS
NO
ENSINO
DE
CONCEITOS
BÁSICOS
DE
PROGRAMAÇÃO
MONOGRAFIA
CAMPO
MOURÃO
UM
ESTUDO
SOBRE
O
USO
DO
MECANISMO
DE
DICAS
NO
ENSINO
DE
CONCEITOS
BÁSICOS
DE
PROGRAMAÇÃO
TrabalhodeConclusãodeCursodegraduaçãoapresentado
à disciplina de Trabalho de Conclusão de Curso 2, do
Curso de Bacharelado em Ciência da Computação do
DepartamentoAcadêmicodeComputaçãodaUniversidade
TecnológicaFederaldoParaná,comorequisitoparcialpara
obtençãodotítulodeBacharelemCiênciadaComputação.
Orientador: Prof.Dr.MarcoAurélioGraciottoSilva
Coorientador: Prof.Dr.IgorScalianteWiese
CAMPOMOURÃO
Ministério da Educação
Universidade Tecnológica Federal do Paraná Câmpus Campo Mourão
Curso de Bacharelado em Ciência da Computação
ATA DE DEFESA DO TRABALHO DE CONCLUSÃO DE CURSO
Às 19:30 do dia 23 de novembro de 2017 foi realizada na sala E103 da UTFPR-CM a sessão
pública da defesa do Trabalho de Conclusão do Curso de Bacharelado em Ciência da Computação do(a)
acadêmico(a) Gustavo Correia Gonzalez com o título Um Estudo Sobre o Uso do Mecanismo
de Dicas no Ensino de Conceitos Básicos de Programação. Estavam presentes, além do(a)
aca-dêmico(a), os membros da banca examinadora composta por: Prof. Dr. Marco Aurélio Graciotto
Silva (orientador), Prof. Dr. Igor Scaliante Wiese, Prof. Dr. Rafael Liberato Roberto e
Prof. Dr. Marcos Silvano Orita Almeida. Inicialmente, o(a) acadêmico(a) fez a apresentação do
seu trabalho, sendo, em seguida, arguido(a) pela banca examinadora. Após as arguições, sem a presença
do(a) acadêmico(a), a banca examinadora o(a) considerou na disciplina de Trabalho de
Conclusão de Curso 2 e atribuiu, em consenso, a nota ( ). Este resultado
foi comunicado ao(à) acadêmico(a) e aos presentes na sessão pública. A banca examinadora também
comunicou ao acadêmico(a) que este resultado fica condicionado à entrega da versão final dentro dos
padrões e da documentação exigida pela UTFPR ao professor Responsável do TCC no prazo de onze
dias. Em seguida foi encerrada a sessão e, para constar, foi lavrada a presente Ata que segue assinada
pelos membros da banca examinadora, após lida e considerada conforme.
Observações:
Campo Mourão, 23 de novembro de 2017
Prof. Dr. Igor Scaliante Wiese Prof. Dr. Rafael Liberato Roberto
Membro 1 Membro 2
Prof. Dr. Marcos Silvano Orita Almeida
Prof. Dr. Marco Aurélio Graciotto Silva
Membro 3 Orientador
A ata de defesa assinada encontra-se na coordenação do curso.
Câmpus Campo Mourão Via Rosalina Maria do Santos, 1233 CEP 87301-899 Caixa Postal: 271 Campo Mourão - PR - Brasil
Agradeçoprimeiramenteaomeuorientador,oProf.Dr. MarcoAurélio,pelaorientação,apoioe
empenho.Agradecimentostambémaocoorientador,Prof.Dr. IgorWiese,pelasreuniõesiniciais
paraaelaboraçãodestetrabalhoesuaorientaçãonoTCC1,juntocomoProf.Dr.MarcoAurélio
queeraocoorientador.
Meus agradecimentosaos amigos JoãoMartins, Felipe Fronchetti e Vinicius Morais,
companheirosdetrabalhosedegrandesdebatespararesolverastarefasdauniversidade,sendo
irmãosnaamizadequefizerampartedaminhaformação.
AgradeçoaosmeuspaisEstabaneAngela,peloamor,carinhoepaciêncianessesanos
queestiveforadecasa. Pornãomediremesforçosparaqueeupudesselevarmeusestudosadiante
epelaconfiançaquetiveramaopermitircursarumauniversidadetãodistante.Agradecimentos
aomeuirmãoGuilherme,quesempremeapoiouedivertiuemmomentosdifíceis.
Porfim,meuseternosagradecimentosaIsabele,minhanamorada.Porestarsempreao
meu lado,meapoiare animaremtodasas dificuldadesdessesanos. Agradeço aDeus porter
colocadonomeucaminhoumamulhertãoespecialqueamomuitoepordarforçasparaenfrentar
Resumo
Gonzalez,Gustavo.UmEstudoSobreoUsodoMecanismodeDicasnoEnsinodeConceitosBásicos
de Programação. 2017. 56. f. Monografia(Cursode BachareladoemCiênciadaComputação),
UniversidadeTecnológicaFederaldoParaná.CampoMourão,2017.
Contexto:Oelevadoníveldereprovaçãoemdisciplinasemquesãoensinadosconceitosbásicos
de programação,emqualquer graudeensino,é umproblemaenfrentadopormuitosalunos e
tem sidoalvodeváriaspesquisas. Existeumconjuntoderazõesqueestãorelacionadascom a
origemdoproblema,comoométododeensinoeaprendizagem,afaltadealgumascompetênciase
interesseporpartedosalunos,eaprópriadificuldadedotema. Paratrataresseproblema,sistemas
queauxiliamoaprendizadocomdicasvêmsendoutilizadosparaajudarosalunosnarealização
deexercícios.
Objetivo: Oobjetivodestetrabalhofoidesenvolverumsistemadedicasdecódigoabertopara
auxiliarosalunosnaaprendizagemdeconceitosbásicosdeprogramação,maisespecificamente
nostópicosdeestruturadecondiçãoelaçoderepetição.
Método:OsistemadedicasfoidesenvolvidocomoframeworkdedesenvolvimentoLaravel.Ele
foi avaliadoemum estudo com alunose profissionais daáreadaComputaçãoa partir de um
conjuntodeexercíciospreviamentedefinidos.Oestudofoidivididoem3etapas,sendoàsduas
primeirasdestinadasaopreenchimentodabasededicasdosistema.Nessasetapas,participaram
alunosquejárealizaramasmatériasdealgoritmoseestruturasdedadoseprofissionaisdaáreade
Computação.Naterceiraetapadoestudo,alunosdoprimeiroperíodoutilizaramosistemapara
resoluçãodeexercícioscomauxíliodasdicaspreviamentecadastradas.Apósarealizaçãodestas
etapas,pormeiodosdadoscapturadosnassubmissões,foramextraídasasmedidasreferentesaos
códigoseutilizaçãodasdicaspararesoluçãodosexercícios.Osalunosdaterceiraetapatambém
responderamumquestionáriosobreousodaferramenta.
Resultados: Foramcriadas79dicase realizadas243submissões noestudo. Considerando os
participantes daterceira etapa do estudo, observam-se indícios de queas dicasforamúteis à
resoluçãodosprimeirosexercícios.Osresultadosdoquestionárioindicamqueaexperiênciada
utilizaçãodosistemadedicasfoipositivaequeasdicasforamúteisparaodesenvolvimentodos
exercícios. Noentanto,aquantidadedeparticipanteseexercíciosresolvidosparaaúltimaetapa
características e avaliando-o com alunos e profissionais da áreade Computação. Apartir da
avaliaçãorealizadaapósaaplicaçãodoestudo,foipossívelidentificarindíciosdequeautilização
do mecanismode dicasajudaram os alunos naresolução de exercícioque abordamconceitos
básicosdeprogramação.
Abstract
Gonzalez,Gustavo.AStudyontheUseoftheMechanismofHintsforTeachingBasicProgramming
Concepts. 2017. 56. f. Monograph (Undergradute Program in Computer Science), Federal
UniversityofTechnology–Paraná.CampoMourão,PR,Brazil,2017.
Context:Thehighlevelofreprobationinsubjectswherebasicprogrammingconceptsaretaught
atanylevelofeducationisaproblemfacedbymanystudentsandhasbeenthesubjectofanumber
ofresearches.Thereareanumberofreasonsthatarerelatedtotheoriginoftheproblem,suchas
theteachingandlearningmethod,thelackofsomeskillsandinterestonthepartofthestudents,
andthedifficultyofthesubjectitself. Toaddressthisproblem,systems thataidlearningwith
hintsarebeingusedtohelpstudentsperformexercises.
Objective: Theobjectiveofthisworkwastodevelopanopensourcehintssystemtohelpstudents
learnbasicprogrammingconcepts,morespecificallyonconditionstructureandlooprepetition
topics.
Method:Thehintssystem,callediHint,wasdevelopedwiththeLaraveldevelopmentframework.
ItwasevaluatedinastudywithstudentsandprofessionalsoftheComputingareafromasetof
previouslydefinedexercises. Thestudywasdividedin3stages,beingthefirsttwodestinedtofill
thebaseofhintsofthesystem.Inthesestages,studentswhoalreadydidthesubjectsofalgorithms
anddatastructuresandprofessionalsoftheComputingareaparticipated.Inthethirdstageof
thestudy, studentsof thefirstperiod usedthe systemtosolve exercisesusing thepreviously
registeredhints.Aftercompletingthesesteps,throughthedatacapturedinthesubmissions,the
measuresrelatedtothecodesandtheuseofthehintsforresolvingtheexerciseswereextracted.
Thethirdstagestudentsalsoansweredaquestionnaireabouttheuseofthetool.
Results: 79hintswerecreated and243submissionsweremadeinthestudy. Consideringthe
participantsof thethirdstageofthestudy, thereareindications thatthehintswereuseful to
solvethefirstexercises.Theresultsofthequestionnaireindicatethattheexperienceofusingthe
systemofhintswaspositiveandthatthehintswereusefulforthedevelopmentoftheexercises.
However,thenumberofparticipantsandexercisessolvedforthelaststageofthestudydoesnot
allowamorerigorousevaluationoftheresultsandthetool.
Conclusions:Inthiswork,asystemofhintswasdeveloped,reportingitsmaincharacteristics
andevaluatingitwithstudentsandprofessionalsoftheComputing area.Fromtheevaluation
conceptsofprogramming.
Lista
de
figuras
3.1 Visãogeraldosistemadedicas. . . 19
3.2 RepositoryPattern. . . 21
3.3 ExemplodeSaídaGeradaPeloCCCC. . . 24
3.4 Visãogeraldosistemadedicas. . . 25
3.5 AcessodoAdministrador. . . 26 3.6 AcessodoAluno. . . 26 3.7 CadastrodoAdministrador.. . . 27 3.8 CadastrodoAluno. . . 27 3.9 DashboarddoAdministrador. . . 28 3.10 DashboarddoAluno. . . 28 3.11 ListadeUsuários. . . 29 3.12 ExercíciosCadastrados. . . 29 3.13 CadastrodeExercício. . . 30
3.14 ListasdeExercíciosCadastradas. . . 30
3.15 CadastrarLista. . . 31 3.16 ListadeRespostas.. . . 32 3.17 ListadeExercícios. . . 33 3.18 RealizarExercício. . . 33 3.19 CadastrarDica. . . 34 3.20 UtilizaraDica. . . 35
4.1 FluxoparaCriaçãodasDicas. . . 41
4.2 VisãoGeraldasSubmissõesRealizadas. . . 42
4.3 SubmissõesporEtapasdoEstudo. . . 43
4.4 SubmissõesCertaseErradasporEtapa. . . 44
4.5 SubmissõesErradasnasEtapas. . . 45
4.6 DicasUtilizadaspelosUsuários. . . 46
4.7 DicasUtilizadasnoPrimeiroExercício. . . 46
3.1 TabelasGeradaspeloCCCC . . . 22
3.2 MedidasExibidasnaAnálise . . . 23
4.1 VoluntáriosdoEstudo. . . 39
4.2 DicasCriadasporEtapa. . . 41
4.3 DicasCriadasporExercício. . . 42
Sumário
1 Introdução 11
2 ReferencialTeórico 13
2.1 SistemasdedicasparaáreasdistintasdeProgramação . . . 13
2.2 SistemasdedicasparaoensinodeProgramação . . . 15
2.3 ConsideraçõesFinais . . . 16 3 SistemadeDicas 18 3.1 Tecnologias . . . 18 3.1.1 LinguagemPHP . . . 18 3.1.2 MVCeArquitetura . . . 19 3.1.3 Framework. . . 20 3.1.4 FrameworkLaravel . . . 20
3.1.5 RepositoryDesignPattern. . . 21
3.1.6 GerenciadordeDependências . . . 21
3.1.7 Ferramentaparaextraçãodemedidas. . . 22
3.2 Implementação . . . 24
3.2.1 AtividadesdoAdministrador . . . 28
3.2.2 AtividadesdoAluno . . . 32
3.2.3 ExemplodeCódigo . . . 35
3.3 ConsideraçõesFinais . . . 38
4 Estudo,ResultadoseDiscussão 39 4.1 Estudo . . . 39 4.2 Resultados . . . 41 4.2.1 SubmissõesRealizadas . . . 43 4.2.2 SubmissõesErradas. . . 44 4.2.3 DicasUtilizadas . . . 45 4.2.4 MedidasdoCódigo . . . 47 4.2.5 Questionário . . . 48 4.3 AmeaçasaValidade . . . 48
Referências 52
Apêndices 54
A TermodeConsentimento 55
Capítulo
1
Introdução
O ensino de linguagens de programação visapropiciar aosalunos o desenvolvimento de um
conjuntodecompetênciasnecessáriasparaconceberprogramasesistemascomputacionaiscapazes
deresolverproblemasreais. Areprovaçãodosestudantesemdisciplinasdeprogramaçãoéum
temaquetemsidoalvodealgunsestudos(BOSSE;GEROSA,2015;CUKIERMAN,2015).
O problema do insucesso é evidenciado por Lahtinen et al. (2005), que realizaram
uma pesquisa com diferentes universidadespara estudar as dificuldades na aprendizagemde
programação.Comoresultado,foipercebidoqueasquestõesmaisdifíceisnaprogramaçãosão: a
compreensãodecomoprojetarumprogramapararesolverumatarefadeterminada;dividiras
funcionalidadesemprocedimentos;eencontrarerrosdeseusprópriosprogramas.
Estasdificuldadescontribuem paraobaixorendimentodosalunos nasdisciplinasde
programação.Porissoospesquisadoresestãoutilizandováriosmétodosesoftwaresparaminimizar
esseproblema.Portanto,autilizaçãodesistemasdedicas,tutoresinteligenteseferramentasde
apoioaosalunosestãosendoaplicadosemváriasescolaseuniversidades.
Opresentetrabalhofocaemsistemasdedicas,noqualéreproduzidoocontatoqueo
alunoteriacomumapessoamaisinstruídaquandoprecisatirarumadúvidaoupedirumauxílio
pararealizarumexercício.
Observa-se,naliteratura,queamaioriadaspesquisasapresentasoluçõesquesebaseiam
na utilizaçãode inteligência artificial ou a interferência dosprofessores na criação dasdicas
(ELKHERJ;FREUND,2014;RAZZAQ;HEFFERNAN,2010;PRICE,2015;ANTONUCCIetal.,2015;
PAQUETTEetal.,2012). Porexemplo,comanecessidadede proverumsuportepersonalizado
aosalunos,ElkherjeFreund(2014)criaramumsistemadedicasquepermiteaoprofessorenviar
umadicapersonalizadaapós verificarqueoaluno realizouváriastentativas pararesolverum
exercício.Entretanto,comoaumentodonúmerodealunosutilizandoosistema,osprofessores
nãoconseguemoferecersuporteatodoseles.Assim,utilizaçãodessaabordagemnaconstruçãodo
sistemadedicasapresentalimitaçõesemrelaçãoàquantidadedealunosrealizandoosexercícios.
O objetivo desse trabalho foi criar um software de código aberto para auxiliar na
aprendizagemdeconceitosbásicosdeprogramação,implementandoumsistemacolaborativode
dicasescritaspelosprópriosusuários.
Esteestudoaplicouomecanismodedicasparaqueapenasosalunosestejamenvolvidos
na criação das dicas, assim possibilitando maior aprendizado do conteúdo dos exercícios. O
métodoaplicadoparaaimplementaçãodosistemaéolearnersourcingapresentadoporGlassman
et al. (2016), que gerencia as atividades dos alunos por meio de uma interface que coleta os
dadosdeaprendizagemdosusuários,suasavaliaçõesdeexplicaçõeseelicitaageraçãodenovas
respostasparafuturosalunos.Destaforma,osalunospodem,mediantedesuaprópriaexperiência
resolvendoexercícios,criardicasúteisdeacordocomimplementações,gerandosugestõespara
colegascombaseemseuconhecimento.
Paraavaliarosistemadedicas,foirealizadoumestudoorganizadoem3etapas,
aplicando-se7exercíciosdeprogramaçãonalinguagemCabordandoestruturadecondiçãoelaçoderepetição.
Sendo assim,a primeiraetapa foirealizadacomalunos experientesdagraduaçãodo cursode
BachareladoemCiênciadaComputação(BCC)daUniversidadeTecnológicaFederaldoParaná
nocampusCampoMourão(UTFPR-CM),visandoopreenchimentodabasededicasdosistema.
Asegundaetapatambém teveo objetivode preenchera basede dicas,masfoirealizadocom
profissionaisdaáreadaComputação.Posteriormente,aterceiraetapafoirealizadacomosalunos
doprimeirosemestredocursodeBCCdaUTFPR-CM,queutilizaramosistemacomoauxíliodas
dicascriadasnosestudosanteriores. Nessaetapa,osalunostambémrealizaramacriaçãodedicas
conformeaprimeiraesegundaetapadoestudo.Pararealizaraavaliaçãodaferramenta,foram
utilizadosdadosreferentesàssubmissõesdosalunosdaterceiraetapaequestionáriorespondido
poressesalunos.
Os próximoscapítulos estão organizadosda seguinteforma. O Capítulo 2apresenta
o referencial teórico e os trabalhos relacionados. O Capítulo 3 apresenta o sistema de dicas
desenvolvidonestetrabalho. OCapítulo4apresentaoestudoexecutadoparaavaliaraabordagem
proposta,osresultadosobtidoserespectivadiscussão.Porfim,oCapítulo5apresentaaconclusão
Capítulo
2
Referencial
Teórico
Nestecapítuloapresentamosumarevisãodaliteraturademodoafundamentaraconstruçãodeste
trabalho. ASeção2.1tratasobreossistemasdedicasaplicadosemáreasdistintasdoconhecimento.
Porfim,naSeção2.2sãoapresentadosostrabalhossobreaaplicaçãodosistemadedicasparao
ensinodeprogramação.
2.1.
Sistemas
de
dicas
para
áreas
distintas
de
Programação
Esta seção aborda sobre sistema de dicas que estão sendo desenvolvidos em outros âmbitos
educacionais,nosquaisospesquisadoresestãoutilizandorecursoscomputacionaisparamelhorar
oaprendizadodealunos.
Elkherje Freund(2014)apontamqueas sugestõesquesãoapresentadaspelosistema
de aprendizagemsemoalunorequisitareantesquerealizeastentativas,nãodependendodas
tentativas malsucedidas queo estudante tenharealizado, limitam severamentea eficáciadas
sugestões.
Destaforma,elesdesenvolveramumsistemaalternativoparadardicasaosestudantes.A
principaldiferençaéque,aoinvésdeapenasapresentarasdicasparaosalunos,osistemapermite
queuminstrutorenvieumadicaparaumestudanteapósesteterfeitováriastentativasfalhaspara
resolveroproblema. Depoisdeanalisaroserrosdoaluno,oinstrutorémaiscapazdeentendero
problemanopensamentodoalunoeenviarumadicamaisútil.Osistemafoiimplantadoemum
cursodeprobabilidadeeestatísticacom176alunos,obtendofeedbackmuitopositivodosalunos.
Noentanto,umdesafioqueosautoresenfrentaramfoicomoescalarefetivamenteosistemade
formaquetodososalunosqueprecisamdeajudaobtenhamdicaseficazes.Atualmente,comuma
grandequantidadedealunos,ficariaexaustivoparaosinstrutoresavaliaremcadasubmissãodos
exercíciosdecadaalunopararetornaremumadicaespecíficadoerrocometido.Entãoelescriaram
umbancodedadosdedicaquepermitequeosinstrutoresreutilizem,compartilhememelhorema
partirdesugestõesescritasanteriormente.
Cumminsetal.(2016)investigaramousodedicaspara4,652usuáriosqualificadosem
umambientedeaprendizagemon-linedegrandeescalachamadoIsaac,quepermiteaosusuários
responderaperguntasdeFísicacomatécincodicas.Foiinvestigadoocomportamentodousuárioao
usardicas,engajamentodosusuárioscomdesvanecimento(oprocessodetornar-segradualmente
menosdependentesdasdicasfornecidas)eestratégiasdedicasincluindodecomposição,correção,
verificaçãooucomparação. Comoresultadosobtidos,osalunosapresentaramestratégiasparaas
resoluçõesdosexercícios,sendoamaiscomuméveroconceitodadicapararealizaradecomposição
doproblemae,emseguida,enviarumarespostacorreta.Aoutraestratégiaéusarosconceitosda
dicaparadeterminarseaperguntapodeserrespondida.Noentanto,umagrandeproporçãodos
usuáriosqueutilizaramessaestratégiaacabounãotentandoresponderapergunta.
Razzaq e Heffernan (2010) realizaram uma pesquisa para avaliar a melhor formade
apresentarasdicasparaosestudantes.Existemmuitossistemasquepermitemaosalunospedir
sugestõesquandoprecisamdeassistênciapararesolverproblemas,masmuitosalunosapresentam
dificuldades emsaberquandopedir umadica. Então os pesquisadoresavaliaramse é melhor
darumadicaquandoumalunocometeumerroouesperaratéqueoalunopeçaumadica. Foi
utilizadooAssessmentSystemqueéusadoprincipalmenteporprofessoresdoensinomédioem
Massachusetts queestãopreparandoestudantesparaotestedoSistemadeAvaliaçãoIntegralde
Massachusetts(MCAS).Essesistemaéutilizadoemaulasregularesdematemáticaeparatrabalhos
decasa.
CadadicaoferecidapeloAssessmentSystemmostraumamensagemcomasinformações
esugestõespararesolverumproblemaespecíficoefazpartedeumasequênciadesugestõesde
3a5dicas. Paracadasequênciadesugestões,aúltimadica indicaaoalunoexatamenteoque
fazeroudáarespostacorreta.Oestudofoidivididoemdoistipos:sugestõessobdemandaedicas
proativas.Assugestõessobdemandaapresentaramaosalunosumadicaapenasquandoclicaram
nobotãodedicaeas dicasproativasapresentaramaosalunosumadicasemprequecometiam
umerro.Comisso,ospesquisadoresaplicaramoestudoemumaturmadaoitavasériecom72
alunos,cujosalunosreceberamquatroproblemasmatemáticoseosistemaforneceusugestõessob
demandaouproativasdeformaaleatóriaparaosalunos.
Foi descoberto que os estudantes melhoraram significativamente com sugestões sob
demandaemrelaçãoàquandoosistemamostravaumadicaquandoocorreuumerro. Osalunos
que tendem a pedir uma grandequantidade de dicas aprendem significativamente maiscom
sugestõessobdemanda,masparaestudantesquepediramumnúmerobaixodedicas,nãohouve
diferençasignificativaentreasduascondições.
Glassmanetal.(2016)criaramumsistemadedicaschamadoDearBetaparaauxiliarna
criação de projetode circuitos digitaisque exigemmaisexperiência dosalunos. Aplicandoo
15
de aprendizagem, beneficiando-sepedagogicamente daprópria tarefa de realizarexercícios e
produzirdicas.Noestudorealizadopelospesquisadores,9dos226alunosdocursodearquitetura
decomputadoresparticiparamdoestudo. Estesalunosforamrecrutadosatravésdeumfórum.
Esseestudo foirealizadopara estudar aeficácia dasdicasparaotimizar os circuitospara que
usassemmenostransistores.
Apósalgumassemanasde estudo, o númerode voluntáriosaumentou e chegoua 20
alunos,masnaúltimasemanadoestudoonúmerodeusuáriosregistradosnosistemaDearBeta
aumentoulinearmentede20para166. Nos9diasentreolançamentodoDearBetaeadatade
vencimentodoestudodelaboratório,osusuáriosadicionaram76errosdeverificaçãoe57sugestões
comoumarespostaaesseserros.Metadedoserrosrecebeupelomenosumadica.Osresultados
doestudodeimplantaçãoesubsequenteestudodelaboratóriodemonstramaviabilidadedesses
fluxosdetrabalhoeindicamqueasdicasgeradaspeloalunosãoúteisparaosalunos.
2.2.
Sistemas
de
dicas
para
o
ensino
de
Programação
Esta seção mostra as pesquisas focadas no ensino de programação. Os pesquisadores estão
aplicando diversas abordagens, na maioria doscasos,com alunosiniciantes de disciplinasde
Programação.
Price(2015)utilizouumsistemadetutoresinteligentes(STI)paraauxiliarosalunosna
ausência de instrutores, fornecendo sugestõese advertênciaspara osalunos que precisamde
ajuda. Alémdisso,astécnicasbaseadasemdadospodemgerarfeedbackautomaticamenteapartir
detentativasderesoluçãodeumproblema. Essefeedback écriadoatravésdabasededadosde
submissõesrealizadaspelosalunosduranteautilizaçãodosistema.
Antonuccietal.(2015)desenvolveramferramentasetécnicasquesuportam
automati-camenteestudantesnaresoluçãodeexercíciosdeprogramação,visandofomentaraadoçãode
cursoson-lineeMOOCsparaoaprendizadodeprogramação.Elesdesenvolverameavaliaram
umsistemadedicaincrementalparaexercíciosdeprogramação. Estesistemareageaopedido
do alunopelasdicas,apresentandoumasérie desugestõessobrecomoabordaresolucionaro
problema. Essassugestõessãocriadasantecipadamenteapartirdocódigofontedasoluçãocorreta,
podendoinclusiverevelarpartesdocódigodasolução.Tambémexisteummodomanual,emque
oprofessorpodepersonalizaradica.
Osistemafoiavaliadoduranteocursodeintroduçãoa programação,queofereceum
móduloon-line paracomplementaroaprendizadodosestudantes.ParaissofoiutilizadooMoodle
integradocomoCodeboard2,quepermiteaosalunosescrever,compilar,testareenviarprogramas
apartirdonavegador.Dessemodo,38alunosutilizaramosistemadedicase,comaanáliserealizada
pelospesquisadores,foiobservadoqueosalunosquenãousaramasdicasapresentaramsoluções
corretasquasesempre(99,5%). Quantoaosalunosqueutilizaramas dicas,apenas63%criaram
soluções incorretas(37%)precisariamdemaisassistência. Umamaneirade alcançarissoseria
a adiçãodemais níveisdesugestãoeexplicações dentrodasdicasAntonuccietal. (2015). Os
estudantestambémpreencheramumquestionáriosobreautilizaçãodossistemasdedicas,sendo
que 16 alunos (42%)utilizaram o sistema de dica em pelo menosum exercício. Entre eles, 5
estudantes(33%)descobriramqueosistemadedicaeramuitodifícildeusar,enquantoqueparao
restantedeles(66%)afirmouqueerafácildeusar.Antonuccietal.(2015)constataramque,demodo
geral,73%dosalunosqueutilizaramosistemadedicasacharamútile80%afirmaramqueonível
degranularidadedasdicaseramapropriados. Foiconcluídoqueosistemafoicapazdeprocessar
todososexercíciossubmetidospelosalunos,produzindosugestõessatisfatórias.Comotambém
semprequenecessário,osprofessorespoderiamfacilmenteredefinirapolíticadeprocessamento,
definindoumatabeladedicaspersonalizada.Osdadoscoletadosusandoquestionáriosedados
deusosugeremqueosistemadedicafoiumaadiçãobenéficaàplataformadeprogramaçãode
ensinonanuvem.
Paquetteetal.(2012)desenvolveramoframeworkASTUS,quemodelaarepresentação
doconhecimentodopontodevistadeprofessoresapartirdastarefasdeprogramação.Omodeloé
geradousandoconhecimentosemânticonecessárioparaarealizaçãodeexercícios.Cadaconceito
quecompõeesteconhecimentodefineumconjuntodecaracterísticasessenciaisquepodemse
referiraoutrosconceitosouvaloresprimitivos(inteiro,número,decimal,símbolo,booleano).Para
cadatarefa,oASTUScriaummodeloúnico,definindoasestruturasqueoalunoprecisamanipular.
Assim,épossívelgerarautomaticamentedicasparaauxiliaroestudanteparaopróximopassoda
realizaçãodatarefa.
Osistemaoferecedicasapartirdoavançodoalunonarealizaçãodatarefa.Acadapasso
atingidodatarefa,osistemaapresentaumadicaquereferenciaopassoseguinteaserrealizado.
Asdicasoferecidassãodivididasentre:dicasobreaestrutura(independentedatarefa)esobreo
conteúdo(específicoparaatarefa).Foramdefinidasasestruturasdasdicascomomodelosdetexto
aserempreenchidoscomoconteúdoespecíficodatarefaextraídodasunidadesdeconhecimento
definidasnomodelodatarefa.
ParaavaliaroASTUS,Paquetteetal.(2012)aplicaramestudoscomdoisgruposdealunos.
Oprimeirogrupoteveaparticipaçãodeprofessoresqueauxiliaramosalunosquandonecessário,
enquantoosegundogrupoobteveoacessoaotutorprojetadousandooASTUS.Osresultados
mostraramqueassugestõesgeradaspeloASUTSpodemsertãoeficientesquantoasdeautoria
dosprofessores.
2.3.
Considerações
Finais
Muitospesquisadoresestãoestudandoeaplicandodiferentesestratégiasparamelhoraroensinoe
desenvolvermelhorashabilidadesdosalunosemresolverproblemas.Esteestudoadotacomobase
17
sistemadedicasparaauxiliarprojetosdecircuitosdigitaisnocursodearquiteturadecomputadores.
Destemodo,foiconstruídoumsistemaquediferedoapresentadoporElkherjeFreund(2014),em
queoprofessorapresentaumadicaemtemporealaumalunoquetenharealizadováriastentativas
pararesolverumexercício. Essetipodesistemanãoéescalávelparaumagrandequantidadede
usuários.Oobjetivoécriarumsistemaquenãosejanecessárioqueumprofessorcriedicaspara
osalunos.Assim,osprópriosalunoscriamdicasparaajudaroutroscolegase,concomitantemente,
3
Sistema
de
Dicas
Este capítulodescrevetodasas etapasparao desenvolvimentodo sistemadedicasfeitoneste
trabalho,disponibilizadocomoaplicaçãoWeb1,emantidonoGitHub2sobalicençaMIT.ASeção3.1
apresentaastecnologiasutilizadasnaimplementaçãoegestãodosistemaeaSeção3.2explicaas
funcionalidadesqueosistemapossui.
3.1.
Tecnologias
Estaseçãoapresentaastecnologiasutilizadasnestetrabalho. ASeção3.1.1descreveas
característi-casdalinguagemdeprogramaçãoutilizada.ASeção3.1.3mostraumadefiniçãoeascaracterística
deumframework.ASeção3.1.2apresentaaarquiteturaMVC,utilizadapelamaioriadosatuais
frameworksweb. ASeção3.1.4apresentaoframeworkutilizadonodesenvolvimentodosistema
dedicas.ASeção3.1.5refere-seaopadrãodeprojetoRepositoryDesignPattern,acrescentadoao
MVC.ASeção3.1.6mostraogerenciadordedependênciasutilizado. Porfim,aSeção3.1.7mostra
comoserealizouaextraçãodasmedidasdoscódigossubmetidos.
3.1.1.
Linguagem
PHP
OPersonalHomePage (PHP)éumalinguageminterpretada,geralmenteusadaparao
desenvolvi-mentodeaplicaçõesnoladodoservidor,capazdegerarconteúdodinâmiconaWeb(PHPGROUP,
2017b).OcódigoéinterpretadonoladodoservidorpelomóduloPHP,quetambémgeraapágina
webaservisualizadanoladodocliente. OPHPtempassadoporumagrandeevoluçãonosúltimos
anos,consolidando-seentreaslinguagensmaisimportantesparaodesenvolvimentoweb,sendo
utilizadoporgrandesempresaseprojetosdecódigoaberto.
1Aaplicaçãoestádisponívelem<http://138.197.124.212/>. 2<https://github.com/gustavoCorreiaGonzalez/iHint>
19
Atualmente, ele conta com umasólida basede orientação a objetos,funcionalidades
como closures, generators e traits, iniciativas de padronização de código com o PHP-FIG e as
PSRs,ferramentascomoComposer paraogerenciamentodedependências,umvastoeconfiável
repositóriodebibliotecascomooPackagist eumacomunidadebastanteativa.
Uma das mudanças mais importante para o amadurecimento do PHP foi a sólida
implementação do paradigma orientado a objetos. O PHP nasceu procedural e ao longo do
tempofoisetornandoorientadoaobjetos.Umadasmaioresvantagensdaprogramaçãoorientada
a objetosé permitir umaadequada representação de um problema, com melhor organização
e alto reaproveitamento de código. Conceitos como classes, métodos, propriedades, herança,
namespaces,instânciasentreoutrosfazempartedovocabuláriodeumalinguagemorientadaa
objetos(PHPGROUP,2017a).
3.1.2.
MVC
e
Arquitetura
OModel-view-controller (MVC)éumpadrãodearquiteturadesoftwarequepermiteorganizaro
projetoemcomponentes,separandoalógicadenegóciodalógicadeapresentação. Ofluxode
funcionamentodoMVC,apresentadonaFigura3.1,ésimples:ocontroller recebeasrequisições,
solicitaasinformaçõesnecessáriasparaomodel eenviaasinformaçõesparaavieworganizare
apresentaroconteúdo.
Figura3.1.Visãogeraldosistemadedicas. Fonte:Reenskaug(1979).
Comestaorganizaçãoemcomponentes,asresponsabilidadesficammelhorseparadas.O
controller apenasrecebearequisiçãoeretornaumresultado.Elenãosabesecomunicarcomo
bancode dadoseissonãoédesuaresponsabilidade. Eleapenasrepassaestatarefaparaoseu
responsável. Omodel éresponsávelpelalógicado negócioepelacomunicaçãocoma basede
dados. Apósrealizarassuastarefas,omodelretornaosdadosparaocontroller,quenãosabesobre
comoapresentaroconteúdoe,porsuavez,retornaestesdadosparaaview.Aviewéresponsável
3.1.3.
Framework
FrameworkssãodescritosporBoschetal.(2000)comoumconjuntodeclassesqueincorporaum
designabstratoparasoluçõesparaumafamíliadeproblemasrelacionados. Tambémofereceum
conjuntodefuncionalidades,realizandoresponsabilidadesparasubsistemastípicosdodomínio
dasaplicações(FAYAD;SCHMIDT,1997),taiscomoacessoabancodedados,gerenciamentode
sessões,validaçãodedados,geraçãodecódigo,internacionalização daaplicação,autenticação,
dentreoutros.
Umframeworkwebéutilizadoparasolucionarumtipoespecíficodeproblemaqueéa
criaçãodeaplicaçõesweb. Costumaterumaarquiteturaeorganizaçãopré-definidadecorrente
dedecisõesdeprojetoamplamentediscutidasedaexperiênciadeseuscriadoresecolaboradores.
Por exemplo, frameworks webgeralmenteimplementar o padrão arquitetural MVC,dada sua
adequaçãoaodomíniodeaplicaçõesWeb.
Um framework web é visto como um esqueleto de uma aplicação. Ele possui partes
fixas que são implementadas pelo framework e partes variáveis que são implementadas pelo
programadorparaespecificarasfuncionalidadesdesuaaplicação.Existemdiversosframeworks
webemPHP,comooZendFramework3,Symfony4eLaravel5,sendoqueesteúltimofoiescolhido
parautilizaçãonestetrabalho.
3.1.4.
Framework
Laravel
Para o desenvolvimento do sistema de dicas,foi escolhido oframework Laravel porcausa do
conhecimentopréviodalinguagemPHPedoframework. AarquiteturautilizadaéaMVC,que
auxiliaodesenvolvedoracriaraplicaçõesseguraseperformáticasdeformarápida,comcódigo
limpoesimples,inclusiveutilizandoopadrãoPSR-2comoguiaparaestilodeescritadecódigo.O
FrameworkLaraveléfeitoemPHPeatualmenteestáemsuaversão5.5.
Para acriação deinterface gráfica,oLaravelutiliza umaEnginede templatechamada
Blade, que forneceferramentasqueauxiliamna construçãode interfacesfuncionais deforma
rápidaeajudamaevitaraduplicaçãodecódigo.
AcomunicaçãocomobancodedadosérealizadaatravésdebibliotecaEloquentORM,
quepermiteconsultaremanipulardadosdeumbancodedadosusandoumparadigmaorientado
aobjetos.Portanto,oEloquentORMencapsulaocódigonecessárioparamanipularosdados,de
modoquenãoseutilizaalinguagemSQL,masalinguagemdeprogramaçãoqueestáutilizando
paradesenvolverosistema.
3<https://framework.zend.com/> 4<https://symfony.com/> 5<https://laravel.com/>
21
3.1.5.
Repository
Design
Pattern
Alémde utilizar o padrão de arquiteturaMVC implementado peloLaravel, também se teve a
necessidade de adicionar um padrão de projeto para complementar a arquitetura, visando a
organizaçãoereaproveitamentodecódigo.Portanto,foiadicionadooRepositoryDesignPattern,
quecompõeacamadadeserviçosemqueseconcentramasregrasdenegócio. Énessacamada
que ocorreoacessoaosdados eentidadesdo sistemaquese localizamnacamadamodels. Os
repositóriospermitemqueoacessoeainteraçãocomosmodelsnãosejamfeitosdiretamenteem
outraspartesdosistema,conformeapresentadonaFigura3.2.
Figura3.2.RepositoryPattern. Fonte:Evans(2004).
Com autilizaçãodosrepositórios, foipossívelalcançaras seguintes característicano
desenvolvimentodaaplicação:
• Centralizarregrasderecuperaçãoepersistênciadedados.
• AbstrairautilizaçãodeORMs,possibilitandoatrocaporoutrosORMs
• Abstrairotipodebancodedados,que,assimcomoORMs,podesertrocado.
• Devolverdadosemumformatoagnóstico(arrayouStdClass),semacoplamentoaoORM.
ApesardautilizaçãodoRepositoryDesignPatternnãoseressencialparaofuncionamento
daaplicaçãodesenvolvidanestetrabalho,opadrãodeprojetoemquestãofoiescolhidoporoferecer
umcódigomaislimpoelegível,facilitandoamanutenção. Eletambémpossibilitouaorganização
dasregrasdenegócioque,deoutraforma,ficariamespalhadasnosmodels.
3.1.6.
Gerenciador
de
Dependências
Asdependênciassãoospacotesoubibliotecasdequeoprojetodependeparaoseufuncionamento.
Autilizaçãodepacotespermitequeodesenvolvedorsepreocupesomentecomalógicadenegócio
dasuaaplicação,deixandotarefascomovalidaçãode formulários,acessoabanco dedadosou
dependênciasemPHP.Elepermitedeclararasdependênciasdoseuprojetoefazerogerenciamento
(instalaçãoeatualização)delasdeformasimpleseautomatizada.Alémdisto,oComposerpossui
acessoaumvastorepositóriode pacotes,denominadoPackagist,ondevocêpodeconsultarou
publicarpacotes.
3.1.7.
Ferramenta
para
extração
de
medidas
PararealizaraextraçãodasmedidasdoscódigosemCqueforamsubmetidasaosistemadedicas
pelosalunos,foiutilizadaaferramentadeanáliseCandC++CodeCounter(CCCC)(LITTLEFAIR,
1998). OCCCC processacadaumdosarquivosespecificadosna linhadecomando. Paracada
arquivo,examina-seaextensãodonomedoarquivoe,seaextensãoforreconhecidacomouma
linguagemsuportada,oanalisadoréexecutadonoarquivo. Àmedidaquecadaarquivoéanalisado,
oreconhecimentodecertasconstruçõesfarácomqueosregistrossejamescritosemumbancode
dadosinterno.Quandotodososarquivosforamprocessados,umrelatórioégeradonoformato
HTML.
Por padrão, o relatório HTML principal é gerado para o arquivo cccc.htm em um
subdiretóriochamado.ccccdodiretóriodetrabalhoatual,comrelatóriosdetalhadosparacada
módulo (ou seja, classe C++ ou Java) identificados pela análise. Além dosrelatórios HTML,
contendoosdadoslistadosnaTabela3.1,aexecuçãodoCCCCproduzrelatóriosresumidosem
formatoXML.
Tabela3.1.TabelasGeradaspeloCCCC NomedaTabela Descrição
Resumodoprojeto Apresentavaloresresumidosdeváriasmedidassobreocorpodocódigo-fonte submetido.
ResumoProcedural Apresentavaloresdemedidasproceduraissomadosparacadamódulo identifi-cadonocódigoenviado.
DetalhesProcedurais Apresentavaloresdasmesmas medidasprocessuaiscobertasnorelatóriode resumoprocedural,masdestavezdivididoemcadamódulonascontribuições decadafunçãomembrodomódulo.
ResumoEstrutural Apresentacontagensderelacionamentosdefan-inefan-outparacadamódulo identificadoeumamétricaderivadachamadamedidaHenry/Kafura/Shepperd, queécalculadacomooquadradodoprodutodascontagensdefan-inefan-out. DetalhesEstruturais Apresentalistasdosmódulosquecontribuemparaascontagensde
relaciona-mentorelatadasnoresumoestrutural.
ExtensõesRejeitadas Apresentaumalistaderegiõesdecódigoqueoanalisadornãoconseguiuanalisar. Fonte:Littlefair(1998).
ATabela3.2apresentaaspossíveismedidasqueoCCCCpodeextrairdosalgoritmos.
Paraodesenvolvimentodosistemadedicas,foramutilizadasasmedidasLOCeMVG,conforme
23 Tabela3.2.MedidasExibidasnaAnálise
Sigla Nomedamedida LOC LinhasdeCódigo
MVG ComplexidadeCyclomaticdeMcCabe COM Linhadecomentários
L_C,M_C LOC/COM FO,FOc,FOvFI,FIc,FIc Fan-out,Fan-in
HKS,HKSv,HKSc MedidadeHenry-Kafura/Shepperd NOM Númerodemódulos
WMC Métodosponderadosporclasses REJ Linhasrejeitadas
Fonte:Littlefair(1998).
• LinhasdeCódigo(LOC):Estacontagemsegueopadrão daindústriadecontarlinhasde
código-fontenãoembranco,semcomentários.Aslinhasdopré-processadorsãotratadas
comoembranco.Asdeclaraçõesdeclasseefunçãosãocontadas,masasdeclaraçõesdedados
globaissãoignoradas.Podeocorrerumaduplacontagemdelinhasnasdefiniçõesdeclasse,
poisoalgoritmotrataototalsobreummódulocomoasomadaslinhaspertencentesao
própriomóduloeaslinhaspertencentesàsfunçõesdomembro(asdeclaraçõesedefinições
dasfunçõesdomembronocorpodaclassecontribuiráparaambasascontagens).
• ComplexidadeCiclomáticadeMcCabe(1976)(MVG):Adefiniçãoformaldacomplexidade
ciclomáticaéacontagemdecaminhoslinearmenteindependentesatravésdeumgrafode
fluxodecontrolederivadodeumsubprograma. Umaaproximaçãopragmáticaaestamedida
podeserencontradacontandopalavras-chavedelinguagemeoperadoresqueintroduzem
resultadosdedecisão.Issopodesermostradocorretamentenamaioriadoscasos.Nocaso
deC,acontageméincrementadaparacadaumdosseguintestokens: “if”,“while”,“for”,
“switch”,“break”,“&&”,“||”.
Essas medidas foram consideradas pois, para os problemas apresentados no estudo,
nosquais sãoaplicados exercíciosqueabordamconceitosde estruturascondicionaiselaçode
repetição,asrespostassãoconstruídasutilizandomódulosecaminhoscriadospelousodessas
estruturas. Amedida MVG está relacionada aos caminhoscompletos distintos do programa,
diretamenterelacionadocomestruturascondicionaiselaçosderepetição.Aquantidadedelinhas
estárelacionadacomaeficáciadoalunonaimplementaçãodassoluções.
Para realizar a captura dosdados para o sistemade dicas,foi necessáriorealizar um
parsingdoXMLgeradopeloCCCC.FoiprecisoutilizaropacoteXMLDocumentParser doLaravel,
Figura3.3.ExemplodeSaídaGeradaPeloCCCC. Fonte:Littlefair(1998).
3.2.
Implementação
Esta seção descreve o sistema de dicas desenvolvido. O casode uso da Figura 3.4 apresenta
as partes que compõem o software. Apreocupação com a utilização de todas as tecnologias
descritasnaSeção3.1levouaodesenvolvimentode umsistemaflexíveledefácilmanutenção,
25
Figura3.4.Visãogeraldosistemadedicas.
Osistemaapresentafuncionalidadesdeacessoeregistro,emqueousuáriopoderáse
cadastrarescolhendoaopçãodealunoouadministrador. Oalunorealizaexercíciosdisponíveis
no bancode dadosdo sistema,criadicasparacadaexercícioepode consultardicasdeoutros
usuários. Oadministradorpodegerenciarusuários,consultarsubmissõesedicasrealizadaspelos
alunosecriarlistasdeexercícios.Ousuáriopodenavegaratravésdosmenusdatelainicial,que
contémasopçõesdecadastroeacessodosistemadedicas:
AcessarSistema:móduloresponsávelpelaentradadosusuáriosnosistema.Éatravés
destemóduloqueousuáriotemacessoàsfuncionalidadeshabilitadasparaseuníveldeusuário.A
Figura3.5representaateladeacessodoadministradoreaFigura3.6representaateladeacesso
Figura3.5.AcessodoAdministrador.
Figura3.6.AcessodoAluno.
Cadastro:móduloresponsávelpelocadastrodousuário,noqualsãocoletadososdados
dousuáriocomoalunooucomoadministradordosistema.Nocasodoadministrador,osistema
exigequecadastreumnome,e-mailesenhaparafinalizarocadastro. Paraopapeldealuno,o
usuáriodeveinformaronome,e-mail,universidade,curso,semestre,experiênciacomprogramação
antesdagraduação,setrabalhaoutrabalhoucomprogramaçãoeasenha.AFigura3.7representa
27
Figura3.7.CadastrodoAdministrador.
Figura3.8.CadastrodoAluno.
Após autenticação no sistema, o usuário habilitado pode navegar através do menu
principal,quecontémofluxooperacionaldosistema. Ofluxoirádependerdotipodousuário:
Figura3.9.DashboarddoAdministrador.
Figura3.10.DashboarddoAluno.
3.2.1.
Atividades
do
Administrador
O administrador gerencia os usuários do sistema, podendo consultar seus dados e realiza o
gerenciamentodeexercícios,tiposdeexercíciosaseremdisponibilizadoselistasdeexercíciosa
seremoferecidasaosalunos. Alémdisso,eletemacessoàsrespostasedicascriadaspelosalunos
nosistema.
GerenciarUsuários: AFigura3.11apresentaalistadeusuárioscadastradosnosistema.
29
Figura3.11.ListadeUsuários.
GerenciarExercícios: Nomódulodeexercícios,oadministradoracessaaosexercícios
cadastradosnosistema,apresentadapelaFigura3.12,quemostraoenunciado,tipodoexercícioe
suaresposta.
Figura3.12.ExercíciosCadastrados.
Casoqueira cadastrarum novo exercício, é precisoclicarno botão“NovoExercício”,
queredirecionaoadministradorparaateladecadastrodeexercício.AFigura3.13exibeoqueé
necessárioparacriarumnovoexercício:enunciado,tipodoexercício,respostasgeradasapartir
deumaentradaqueasubmissãodeveprocessar.Nocaso,épermitidaainserçãodeváriasentradas
Figura3.13.CadastrodeExercício.
GerenciarLista deExercícios: Cadaexercíciocadastrado pode seragregado auma
listadeexercíciosqueoadministradortenhacadastradoanteriormente,assimeleconseguecriar
listasdeexercíciospersonalizadas.AFigura3.14mostraatelaqueapresentatodasaslistascriadas
peloadministrador.
Figura3.14.ListasdeExercíciosCadastradas.
NaFigura3.15éapresentadaatelaemqueoadministradorrealizaocadastrodeumalista
deexercícios,informandoonomedalistaeosexercíciosquedesejaadicionar. Osexercíciossão
adicionadosapartirdaconsultanobancodedadosdeexercícios: osistemaretornaumacoleção
deexercícioscadastradosnosistema,daqualoadministradorescolheosexercíciosquedeseja
31
Figura3.15.CadastrarLista.
ConsultarRespostas:Oadministradorécapazdevisualizartodasasrespostas
submeti-dasnosistemadedicas. AFigura3.16indicaosexercíciossubmetidospelosalunos,apresentando
Figura3.16.ListadeRespostas.
Consultar Dicas: O administradorpode realizar amudança do tipode experimento
atravésdomenu“MododoExperimento”visívelnaFigura3.9,osmodosdisponíveissão:
ModoColeta: Osistemapossuidoismodos de operação,permitindo a realizaçãode
estudosacadêmicosaocontrolarousoeavaliaçãodedicas.NoModoColeta,osalunospreenchem
abasededicasparaque,posteriormente,noModoExperimento,osalunosqueestiveremutilizando
osistemapossamteracessoaalgumasdicaspararealizarosexercícios.Nestemodo,osalunos
nãorecebemnemavaliamdicas.
Modo Experimento: O sistema funciona na sua forma original, em que os alunos
resolvemosexercícios,utilizandodicasparaauxiliarnarealizaçãodosexercícios,ecriamnovas
dicasparaosistema.
3.2.2.
Atividades
do
Aluno
O aluno apenastem acesso ao módulo de exercícios, em que realiza exercícios, submetendo
soluçõeseusandodicas,ecriadicasparaosistema.
UtilizarListadeExercícios:móduloqueapresentaalistadeexercícioscadastradapelo
administrador,representadapelaFigura3.17.Oalunopodeescolherqualquerexercíciodalista
33
Figura3.17.ListadeExercícios.
RealizarExercício:Apósaescolhadoexercício, osistemaapresentaatelaemqueo
alunoconseguerealizaroexercício,apresentadapelaFigura3.18. Nestatelaousuáriotemacesso
aoenunciadoeaoformulárioparaenviodeumasolução,oquedeveserefetuadoatravésdoenvio
(upload)deumarquivonalinguagemCpararesoluçãodoexercício.
Figura3.18.RealizarExercício.
ConjuntamenteàFigura3.18,oalunotemacessoàsdicasproduzidasporoutrosalunos
paraoexercícioescolhido,podendoutilizá-lasemtodasassubmissõesquerealizaratéqueresolva
oexercício.
Emseguida,ousuáriopodetrabalharemsuasoluçãoesubmeteraosistemaparacorreção.
Se estivercorreta, osistema redireciona ousuário paratela de cadastrodadica, mostrado na
usuáriopossarealizaroutrassubmissõesatéqueconsigaobtersucessonaresoluçãoourequisitar
umadicaparaosistemaauxiliá-lonaconstruçãodaresposta.
Ascorreçõesdosexercíciossãorealizadasautomaticamente,utilizando-seasrespostas
cadastradasparacadaexercício,conformeilustradonaFigura3.13. Paracadaexercício,podem
estarcadastradasmaisdeumatupladeentradaesaídaparatestarassoluçõesenviadaspelosalunos.
OsistemautilizaométodoexecdoPHP,quepossibilitaaexecuçãodeprogramasexternos. Assim,
pararealizaravalidação doexercício, éexecutadoocomandoGNU CompilerCollection(GCC)
paracompilaro exercíciosubmetido,cujoresultadoé executadocom asentradascadastradas,
comparando-seoretornocomarespostacadastradanoexercício.
Figura3.19.CadastrarDica.
Cadasubmissão, tanto corretaouincorreta, é armazenadanobanco de dados, sendo
registradososdados: identificadordousuário,identificadordoexercício,validaçãodaresposta
(VerdadeiroouFalso),códigosubmetidopelousuário,númerodelinhasdaresposta,complexidade
ciclomática,dataehoradasubmissão.
Utilizar Dicas: Quando o aluno requisitar umadica, clicando em uma dica da lista
apresentada(Figura3.18),osistemaexibeaconteúdodadica.Apóssualeitura,oalunorealizaa
35
Figura3.20.UtilizaraDica.
3.2.3.
Exemplo
de
Código
ParaexemplificarocódigodosistemadedicaimplementadocomoframeworkLaravel,foiescolhida
afuncionalidadeapresentada naFiguras3.14e3.15,emqueoadministradorrealiza ogerenciamento
delistadeexercícios.Paraagilizarodesenvolvimento,oLaravelpossuiumaferramentadelinha
decomandochamadaArtisan,quetratadageraçãodasclassesdisponibilizadaspeloframework.
Aseguirsãomostradasasetapasrealizadasparaodesenvolvimentodessafuncionalidade.
Aprimeiraetapaconsisteemcriaromodeloeorepositóriodanossaaplicação.
Primeira-mentecria-seatabeladobancodedados,executando-seocomandophpartisanmake:migration
create_exerciselists_table. Nestecaso, aclasse demigraçãoCreateExerciselistsTable écriada,
possibilitando a configuraçãodo schema databelado banco de dados utilizandoa linguagem
PHP,conformemostradonoCódigo-fonte3.1.Nesseexemplo,sãocriadososatributosid,topic
e exercises. Observa-se que todo códigogerado pelo Artisan está no padrão de escrita PSR-2
facilitandoamanutençãoeentendimentodocódigo.Posteriormente,executa-seocomandophp
artisanmigrateparasincronizaraclasseeoesquemadobancodedados.
class CreateExerciselistsTable e x t e n d s M i g r a t i o n { p u b l i c f u n c t i o n up() { Schema::c r e a t e(’exercise_lists’, f u n c t i o n (B l u e p r i n t $ t a b l e) { $ t a b l e−> i n c r e m e n t s(’i d’); $ t a b l e−>string(’t o p i c’); $ t a b l e−>string(’exercises’); $ t a b l e−>timestamps(); }); } p u b l i c f u n c t i o n down()
{
Schema::dropIfExists(’exercise_lists’); }
}
Código-fonte3.1.MigraçãoGerada
Nasegundaetapa,écriadoomodeloparaatabelaexercise_lists,executandoocomando
phpartisanmake:modelExerciseList.Omapeamentoentreomodeloeamigraçãoérealizado
pelonomedomodeloinformado.Porpadrão,oLaravelassumequeamigraçãodevesercriadano
pluraleomodelonosingular. OCódigo-fonte3.2apresentaomodelocriado,emqueénecessário
criarumalistacomosnomesdoscamposdescritosnamigração,permitindoqueoORMatribua
osvaloresqueserãoinseridosnatabela.
class ExerciseList e x t e n d s Model implements Transformable { use T r a n s f o r m a b l e T r a i t; p r o t e c t e d $fillable = [ ’t o p i c’, ’exercises’ ]; }
Código-fonte3.2.ModeloGerado
Comomodelocriado,parautilizaroRepositoryDesignPatternéprecisocriarum
reposi-tórionoLaravelutilizandoocomandophpartisanmake:repositoryExerciseListRepository,
quegeraoCódigo-fonte3.3,noqualrealizaomapeamentodomodeloatravésdafunçãomodelda
classeExerciseListRepositoryEloquent. class E x e r c i s e L i s t R e p o s i t o r y E l o q u e n t e x t e n d s B a s e R e p o s i t o r y implements ExerciseListRepository { p u b l i c f u n c t i o n model() { r e t u r n ExerciseList::class; } p u b l i c f u n c t i o n boot() { $ t h i s−> p u s h C r i t e r i a(app(R e q u e s t C r i t e r i a::class)); } }
Código-fonte3.3.RepositórioGerado
Aterceiraetapaconsistenacriaçãodaclassedecontrolequerealizaacomunicaçãoda
viewcomomodel,validaeenviaosdadosparaosmodeloscorrespondentes.Foirealizadaacriação
domodeloparagerenciarofluxodedadosdafuncionalidade,executandoocomandophpartisan
37 class ExerciseListController e x t e n d s C o n t r o l l e r { p r i v a t e $ r e p o s i t o r y; p u b l i c f u n c t i o n _ _ c o n s t r u c t(ExerciseListRepository $ r e p o s i t o r y) { $ t h i s−> r e p o s i t o r y = $ r e p o s i t o r y; } p u b l i c f u n c t i o n index() { $exerciselists = $ t h i s−> r e p o s i t o r y−> p a g i n a t e();
r e t u r n view(’admin.exerciselist.index’, compact(’exerciselists’)); } p u b l i c f u n c t i o n s t o r e(A d m i n E x e r c i s e L i s t R e q u e s t $ r e q u e s t) { $ d a t a = $ r e q u e s t−>all (); $ t h i s−> r e p o s i t o r y−> c r e a t e($ d a t a); r e t u r n redirect()−>r o u t e(’admin.exerciselist.index’); } . . .
Código-fonte3.4.ControleGerado
OCódigo-fonte3.4mostraapenasacriaçãodoconstrutordorepositório,dafunçãoindex
queconsultanobancoaslistascadastradas,utilizandoométodopaginatepararealizarapaginação
dosdados, edafunçãostore, quevalidaos dadosatravésdafunçãoAdminExerciseListRequest,
recuperandotodososdadosdarequisiçãoutilizandoométodoalle,porfim,realizandoainserção
nobancodedadoscomométodocreatedisponibilizadapeloconstrutordorepositório.
Naquartaeúltimaetapa,énecessáriaacriaçãodaview,utilizando-seaEnginedetemplate
Blade. Nessecaso,oLaravelnãodisponibilizaumcomandoparaageraçãodetemplates,poisa
utilizaçãodoBladenãoéobrigatória. OCódigo-fonte3.5mostraqueoBladepermiteainserçãode
HTMLutilizandoocomando@extends.Destaformaépossívelreutilizarcódigosemtodasastelas
dosistema.TambémépossíveladicionarformuláriosebotõesutilizandooFormdisponibilizado
peloLaravel,quepermitecriartodosostiposdeinputsqueoHTMLsuporta.
@extends(’admin.l a y o u t.auth’)
@section(’c o n t e n t’) < d i v class= "c o n t a i n e r" >
<h3>E x e r c i c i o s</ h3>
{!! Form::open([’r o u t e’ =>’admin.exerciselist.s t o r e’, ’class’ =>’form’]) !!}
@include(’admin.exerciselist._form’)
< d i v class= "form−group" >
{!! Form::submit(’C r i a r Lista’, [’class’ =>’btn btn−primary’]) !!} </div>
{!! Form::c l o s e() !!} </div>
@endsection
Código-fonte3.5.ViewGerada
Finalmente, noForm::open éprecisopassar arotaque mapeiaa funçãostore queestá
nocontrollerExerciseListController.Comisso,quandoousuárioclicarnobotãopararealizaro
cadastro,oLaravelfazumarequisiçãoPOST comosdadosqueestãonoformulárioparaarota
especificada.Dessemodo,ocontroladorreconhecearequisição,passapelafunçãoquerealizaa
validaçãoearmazenanobanco.
3.3.
Considerações
Finais
Neste capítulo foi apresentado o desenvolvimento do sistema de dicas. Foi explicado sobre
o Framework utilizado, suas características e arquitetura. Também foram apresentadas as
funcionalidadesdesenvolvidasecomoseriaofluxodeatividadesrealizadasporcadausuário.A
próximaseçãomostraráosestudosrealizadoseosresultadosobtidospelaabordagemproposta
Capítulo
4
Estudo,
Resultados
e
Discussão
Estecapítulodescreveoestudorealizadoparaavaliarosistemadedicasdescritonestetrabalho.A
Seção4.1apresentacomoforamexecutadasasetapasdoestudo.NaSeção4.2sãomostradosos
resultadosobtidoseadiscussão.
4.1.
Estudo
Apósaimplementaçãodosistemade dicasapresentadanoCapítulo3,foirealizadoumestudo
paraavaliarosistema. Oprimeiropasso foia definiçãode umalistadeexercícios. Foipreciso
preencherabasededadosdeexercíciosapartirdeexercíciosselecionadosparadiferirdaqueles
realizadosnadisciplinadealgoritmosoferecidapelocursodeBCCdaUTFPR-CM.Aseleçãotevea
finalidadedeprevenirqueosparticipantesdoestudojátenhamrealizadoosexercícios.Chegou-se
aoconjuntodeexercíciosmostradonaApêndiceB.
Apósopreenchimentodabasedeexercícios,prosseguiu-separaarealizaçãodoestudo,
organizadoemtrêsetapas,conformeapresentadonaTabela4.1.Asprimeirasetapastiveramcomo
objetivoacriaçãodedicasparaosistema,permitindoaavaliaçãodosistemaimplementadoemum
cenárioemqueexisteumconjuntoútil,porémlimitado,dedicas.Estasetapasforamexecutadas
noModoColetadaferramenta.Naterceiraetapa,osalunospodiamresolverexercícios,usar,criar
eavaliardicas,utilizandointegralmenteasfuncionalidadesdosistema.
Tabela4.1.VoluntáriosdoEstudo.
Estudo QuantidadedeVoluntários Semetre 1ªEtapadoEstudo 6 8 2ªEtapadoEstudo 3 -3ªEtapadoEstudo 7 1 Total: 16
Todasasetapastiveramduraçãomédiade3horas.Noiníciodecadaetapa,foiaplicadoo
termodeconsentimento,apresentadonoApêndiceA,paraqueosparticipantesficassemcientes
sobreousodosdadosqueseriamgeradosduranteautilizaçãodosistemaesobreagarantiade
anonimatodosdados.
AprimeiraetapaocorreunaUTFPR-CM,emmeadosdoprimeirosemestrede2017,com
aparticipaçãode6estudantesdooitavoperíododocursodeBCC.Asegundaetapafoirealizada
com3profissionaisdaindústrianaáreadeComputação,nomeiodosegundosemestrede2017.
Porfim,aterceiraetapaaconteceuemdoisdiasdistintosnomêsdeoutubrode2017,comalunos
doprimeiroperíododocursodeBCCdaUTFPR-CM.
Aprimeiraesegundaetapadoestudoutilizaramo“ModoColeta”dosistemaapresentado
naSeção3.2.1,poisessesestudostiveramoobjetivodeisolaracriaçãodasdicasrealizadaspelos
participantes.Assimfoipossíveldividirasdicascriadasporacadêmicoseprofissionaisdaindústria
daáreadacomputação, paraque,apósa últimaetapa, pudesseserrealizadaacomparaçãodo
desempenhodasdicasdessesdoistiposdeparticipantes.
No final da terceira etapa, utilizou-se o “Modo Experimento”do sistema descrito na
Seção3.2.1,ondeosparticipantespuderamrealizarosexercícios,consultarecriardicas.Osalunos
puderamconsultardicascriadasnaprimeiraesegundaetapadoestudo,mastambémtiveram
acessoàsdicascriadasporoutrosparticipantesdaterceiraetapaqueestavamrealizandoalista
de exercíciojuntamente. No término da terceiraetapa, foiaplicado um questionário para os
participantesavaliaremautilizaçãodosistemaeaimportânciaqueasdicastiveramdurantea
execuçãodosexercícios.
NaFigura4.1éapresentadoofluxoqueosparticipantesseguiramnosistemapararealizar
asoluçãodeexercícioseacriaçãodasdicas.Ofluxoéiniciadoquandoousuáriorecebeumalista
deexercíciosparaserrealizada.Osistemaapresentaumexercíciodalistaparaserresolvidoeo
usuáriopodecomeçararealizarasolução.Nocasodaterceiraetapa,ovoluntáriopodeconsultar
algumasdicas. Destemodo,osistemaapresentaasdicasdisponíveisparaoexercícioqueestá
sendorealizado,asquaisousuáriopodeconsultarpararealizarsuasolução.Cabedestacarque,
paraasetapas1e2desteestudo,afuncionalidadedeconsultaàsdicasestádesabilitada(Modo
Coleta).
Apósa solução serconcluída, o usuáriosubmete a solução paravalidação, o sistema
executaasoluçãodoexercícioeverificaseestácorretaounão.Casoasoluçãonãoestejacorreta,
osistemaredirecionaparaaetapaderealizaçãodesoluçãoparaqueoparticipantepossarealizar
umanovatentativa. Casoasoluçãoestejacorreta,osistemaredirecionaousuárioparaatelaem
41
Figura4.1.FluxoparaCriaçãodasDicas. Fonte:AdaptadodeGlassmanetal.(2016).
4.2.
Resultados
Apósaexecuçãodoestudo,realizou-seaanáliseapartirdosdadoscapturadosnassubmissõese
dicasutilizadaspelosparticipantes. Nototal,foramrealizadas243submissõesdeexercíciosno
sistemadedicas,sendoque191ocasionaramemerrose52emacertos. Conformemencionado
anteriormente, paracadasoluçãocorretaefetuada,os alunospodiamcriardicasreferentesao
exercíciosubmetido.ATabela4.2mostraaquantidadededicascriadasemcadaetapadoestudo
realizado.
Tabela4.2.DicasCriadasporEtapa.
Etapas QuantidadedeDicasCriadas 1°Etapa 40
2°Etapa 21 3°Etapa 18 Total 79
Tabela4.3.DicasCriadasporExercício.
Exercício QuantidadedeDicasCriadas 1°Exercício 13 2°Exercício 12 3°Exercício 12 4°Exercício 12 5°Exercício 11 6°Exercício 9 7°Exercício 10 Total 79
AFigura4.2apresentaassubmissões,nocasoseparadaspelasetapasdoestudoexecutado.
Aprimeiraetapa,emqueocorreuacriaçãodedicas,obteveumtotalde136enviosdeexercícios,
contendo 47tentativas certase 89erradas. Na segundaetapade criaçãode dicas,os usuários
realizaram43submissões,com24certase19erradas.Nasprimeiraesegundaetapas,osusuários
não utilizaramafuncionalidade deconsultardicas,poisoobjetivo dessasetapaseramapenas
criarasdicasqueseriamutilizadasfuturamentenaterceiraetapa.Naúltimaetapa,osusuários
realizaramosexercícioscomoapoiodasdicas,temumtotalde64submissões,contendo28certas
e36erradas.
Figura4.2.VisãoGeraldasSubmissõesRealizadas.
AFigura4.2apresentaindíciosqueosusuáriosdaterceiraetapativerammaiorfacilidade
emresolverosexercíciospelofatodautilizaçãodasdicas,comparandoosresultadosdaprimeira
43
issopodeestarrelacionadoaofatodosparticipantesdessaetapaseremprofissionaisdaáreade
computaçãoqueapresentammaiorexperiênciacomaresoluçãodeproblemas.
4.2.1.
Submissões
Realizadas
Efetuou-seaseparaçãodosdadosparaapresentarototaldesubmissõesefetuadaspelos
partici-pantesemcadaexercício. Inicialmente,nasetapasdoestudoapresentadonaFigura4.3,amédia
dassubmissõesnas etapas1e 2,nas quaisosusuáriosnão consultaramdicaspararesolveros
exercícios,foide15,29e5,28respectivamente.
Figura4.3.SubmissõesporEtapasdoEstudo.
Posteriormente,naterceiraetapa,amédiadesubmissõesfoide9,14porexercício.Em
relaçãoaosresultadosdaprimeiraetapa,comalunosexperientes,épossívelencontrarindicativos
queautilizaçãodasdicaspararesolverexercíciosnosistemaajudouosparticipantesdaterceira
etapa.Cabeobservaraindaque,paraaterceiraetapa,nãofoipossívelrealizaraaplicaraterceira
etapa doestudocom umaturmacompletadoprimeirosemestredadisciplinade algoritmose,
portanto,analisarosresultadosquantoàparticipaçãodealunosdebaixo,médioealtodesempenho.
NaFigura4.4émostradaacomparaçãoentreaquantidadedesubmissõescertaseerradas
realizadas nas três etapas do estudo. Embora os primeiros exercícios sejam mais simples e
consequentementesujeitosaumaquantidademenordesubmissõesincorretas,épossívelobservar
queelesapresentamumaquantidadeelevadadetentativaserradasentreosalunos. Issosedeve,
em parte, à necessidade de adaptação dosusuáriospara começar autilizar o sistema, pois os
usuáriostiveramqueadequaraformadecompilaçãodosexercíciosqueosistemautilizavaeo
Figura4.4.SubmissõesCertaseErradasporEtapa.
Observa-setambémqueoexercício6apresentouumnúmeromuitoelevadodesubmissões
naprimeiraetapa. Investigandoessecomportamento,foipossívelapontarqueamaiordificuldade
dosparticipantesestavarelacionadacomumadasregrasqueoexercícionecessitava:amaioria
dopensamentoconstruídopelosparticipantespararealizaroexercícioestavacorreta,masuma
regranãoestavabemdesenvolvidanocódigo,exigindováriosajustesetestesparaqueoexercício
ficassecorreto. Nocasodoexercício7,alinguagemCrealizavaumarredondamentoaoutilizar
oconversoratof,querealizaaconversãodeumastringparaumvalorflutuante,oqueacabava
atrapalhandonasoperações.
Nasegundaetapa,osparticipantesnãotiveramproblemasnarealizaçãodosexercícios.
Masnosexercícios6e7,passarampelosmesmosproblemasdosparticipantesdaprimeiraetapa.
Porfim,naterceiraetapaosusuáriospuderamacessarasdicascriadaspelosparticipantes
da primeira e segunda etapa que passaram pelos problemas citados. No entanto, apenas os
usuários13e14realizaramosexercícios6e7,nãosendopossívelverificarseasdicasajudaram
nodesenvolvimentodessesexercícios.
4.2.2.
Submissões
Erradas
Aprofundandonaanálisedassubmissões,naFigura4.5foifeitoumagrupamentodosdadosda
primeira,segundaeterceiraetapademodoaexibirarelaçãoentreaquantidadedesubmissões
erradas por usuário em cada exercício, com o objetivo de investigar em quais exercícios os
45
Figura4.5.SubmissõesErradasnasEtapas.
Oprimeiroexercíciorealizadonosestudosfoioqueapresentouamaiorconcentraçãode
participantes,sendorealizadoportodososusuários.Verificou-seque,nesseexercício,onúmero
detentativaserradasseconcentrouentre1e4porparticipante.
Na Figura 4.5,observa-se quenas três etapas,os exercícios com maior número de tentativas
erradasforamo6eo7.Noexercício6,grandepartedosparticipantesprecisaramde5tentativas
namédiaparaacerta-lo.Noentanto,esseexercícioapresentouumagrandevariaçãodonúmerode
submissõeserradas,noqualumusuáriorealizouapenasumatentativaerradaeoutroqueefetuou
8tentativas.Oexercício6tambémapresentaomaioroutlier doestudo,noqualumparticipante
executou18tentativas paraconseguiracertaroexercício. Noexercício7,onúmeromédiode
submissõestambémfoimaiorqueosdemaisexercícios,sendomenorapenasqueoexercício6.
Noentanto,apenas2participantesdaterceiraetaparealizamesseexercício,assimessegráfico
mostroumaisosdadosdaprimeiraesegundaetapa.
Nosexercícios3,4e5osparticipantesnãoapresentaramdificuldades,sendoqueamaioria
dassubmissõeserradasestãoentre1e2tentativas.Novalmente,amaioriadosparticipantesda
terceiraetapanãorealizouessesexercícios,assimsóobservamosastentativasdosparticipantes
quenãoutilizaramasdicasdosistema.
4.2.3.
Dicas
Utilizadas
Foi realizado um mapeamento das dicasutilizadas. Conforme apresentado na Figura 4.6, no
primeiroexercícioexisteumaamplautilizaçãodasdicasemcomparaçãoaosdemaisexercícios.
Pode-se considerar queas dicasutilizadas noprimeiroexercício játenhamabordado
assuntosquepoderiamcontribuircomosparticipantesnosdemaisexercícios,dadoaofatoque
Figura4.6.DicasUtilizadaspelosUsuários.
deutilizarprecedênciasentreoperadoresaritméticosduranteas operaçõesmatemáticas”.Elas
tambémapresentamlembretesimportantessobreautilizaçãodosistema,como:“Nãoesqueçade
imprimirasaídaconformeexemplificado”,“Convertatodasasentradasparainteiro”.Essasdicas
podemseraplicadasemtodososexercícios,tendoemvistaquetodososexercíciospassarampela
mesmaformadecorreçãoesãoexercíciosbásicosqueenvolvemcontas,utilizaçãodecondicional
elaçoderepetição.
Considerandoqueoprimeiroexercícioteveumusoexpressivodedicasequetodosos
participantesdaterceiraetapaorealizaram,naFigura4.7émostradooboxplot daquantidade
de dicasutilizadaspelos participantesparaesseexercício. Percebe-sequea medianadedicas
utilizadasporusuárioé2,variando-seentreautilizaçãode1a3dicas.Porém,temosumoutlier
queutilizou7dicaspararealizaroprimeiroexercício.
47
Finalmente,foirealizadoumaanáliseparaclassificaras dicasconforme autilizaçãoe
avaliaçãoproduzidaspelosusuários.Cadaparticipantepodeconsultarquantasdicasacreditasse
sernecessáriaspararealizarassubmissõeseavaliá-laapósouso,emumaescalade1a5,sendo1
umadicadepoucautilidadee5umadicaexcelente. NaFigura4.8,épossívelobservarosindícios
doefeitoqueasdicastiveramsobreosusuários. Desconsideramososexercícios2,5e6pornão
conteremdadossuficientesparaanálise.Percebe-seoefeitodaqualidadedasdicasnoprimeiro
exercício,oqualteveamaiorutilizaçãodedicas,conformediscutidoanteriormente.Neleforam
utilizadas 11dicas,sendo4,5ovalor damedianadessasdicas. Com isso,pode-sesupor que a
utilizaçãodasdicasajudaramosparticipantesnarealizaçãodosexercícios. Oresultadoésimilar
quanto às dicaspara os exercícios 3e 7. Observa-se que, parao exercício3, a quantidadede
submissõeserradasnaterceiraetapafoibaixa,oquepodeserumaconsequênciadaqualidadedas
dicas.
Figura4.8.AvaliaçãodasDicasporExercício
Poroutrolado,oexercício7foirealizadoporapenasdoisusuárioseas dicastiveram
boasavaliações,masnãoépossívelverificarseasdicasrealmenteajudaramosparticipantespor
causadafaltadedados.Nosétimoexercícioousuário13realizou9tentativaserradaseanotas
dasdicassãoaltas,comissonãosepodeafirmarqueasdicasajudaramdefatoousuárionosétimo
exercício.
4.2.4.
Medidas
do
Código
Osistemarealizouaextraçãodasmedidasdelinhasdecódigoecomplexidadeciclomáticados
exercíciosrealizados.Comisso,foirealizadoumamédiadecadamedida,sendoamédiadelinhas
decódigoecomplexidadeciclomáticaseparadaporexercícioparacadausuáriodasetapas.Em
todososexercícios,amédiadaslinhaspermaneceuquaseiguaisparacadausuário,assimnãofoi
ciclomáticamédiadosexercíciosrealizadospelosparticipantes,semantevequasenomesmovalor
emtodososexercícios.Nessaanálise,pode-seconstatarqueosexercíciosescolhidosnãopossuiam
muitasformasdeseremrealizados,porseremexercíciosbásicosdeprogramação.Assim,asmédias
nasduasmedidasapresentaramosmesmospadrõesdevalores.
4.2.5.
Questionário
Aplicou-seoquestionáriodeavaliaçãodosistemadedicasaofinaldaterceiraetapa,paracapturaras
opiniõesqueosparticipantestiveramaoutilizarosistema.ATabela4.4apresentaopreenchimento
realizado por dois participantes. Infelizmente, os outros participantes da terceira etapa não
preencheramoquestionário. Todavia,foramessesdoisusuáriosquerealizaramtodososexercícios
daterceiraetapa.
Tabela4.4.QuestionárioAplicado
Respostas
Perguntas Usuário13 Usuário14 Foifácilutilizaro
SistemadeDicas? Sim Sim Precisoudoapoiodeoutra
pessoaparautilizarosistema? Sim Não Osistemaoferecetodasasinformações
necessáriasparacompletarastarefas? Sim Não Omecanismodedicasajudou
naresoluçãodeexercícios? Sim Sim Foifácilacessarasdicaspelosistema? Sim Sim
Asdicasforamapresentadasde
formaclaraeobjetiva? Sim Sim Algumaobservaçãosobreo
sistemaouoestudo? Legal,asdicasajudamdemais.
Talvezpoderiadeixarasdicas semprevisíveis
Oquestionáriopreenchidomostraque,paraosdoisusuários,aexperiênciadautilização
dosistemadedicasfoipositiva,ressaltandoqueousuário14tevequepedirauxílioaoaplicador
doestudo.Noentanto,nasperguntasreferenteaomecanismodedicas,osdoissinalizaramqueas
dicasforamúteisparaodesenvolvimentodosexercícios.
4.3.
Ameaças
a
Validade
Umaimportanteameaçaavalidadedonossoestudofoiabaixaquantidadedeparticipantes.Não
foipossívelaplicartestesestatísticosparaaprofundarasanálisesdosdados.Outralimitaçãofoia
49
com passagem de parâmetros (conforme requeridopelo avaliadorautomático). Narealização
dosestudos, algunsdosparticipantesalegaram que nuncatinhamrealizadoacompilaçãodos