Home

université du québec à montréal un langage - Oto

image

Contents

1. Test Oto 1 Oto 2 de gain D marrage d Oto sans arguments 0 45 0 19 57 Test de la commande rendre_tp 98 22 101 36 3 Test du module compiler_javac 29 61 25 07 15 Test du module tester_junit 24 66 33 28 35 verifier_tp compiler_javac et tester_junit 5 09 2 63 48 corriger_groupe compiler_javac et tester_junit 9 23 6 82 26 corriger_groupe et detecter_plagiat 55 24 28 24 49 corriger_groupe complexe pour INF3140 103 39 93 20 9 Tableau 6 1 Temps d ex cution de tests selon la version d Oto sur la machine rayoni performante contribue d montrer l efficacit de la nouvelle version 6 1 2 Sc nario de correction complet pour le cours INF5170 Pour v rifier les performances d Oto dans le cas d un sc nario de correction complexe et d un groupe de grande taille nous avons eu recours de v ritables travaux remis au professeur Tremblay dans le cadre du cours INF5170 de PUQAM la session d automne 2008 Ces travaux devaient subir deux corrections diff rentes D abord nous devions assurer leur bon fonction nement en comparant les r sultats qu ils retournaient aux r sultats attendus Ensuite comme il s agissait d un travail de programmation parall le nous devions v rifier le temps n cessaire Pex cution des diff rents cas pour une quantit variable de processeurs disponibles Ce dernier test appliqu au groupe entier tait d autant plus lourd que certains
2. 64 4 2 5 Concepts de m taprogrammation utilis s 66 4 2 6 Modifications comportementales 66 43 Modules ni 8 22 Ph a Po A A 68 4 3 1 Modifications g n rales apport es aux modules 68 4 3 2 Ajout et suppression de modules 69 4 3 3 Renommage de certains modules 69 4 3 4 Modifications apport es aux modules 69 4 3 5 Mise en uvre des r sultats de modules 70 AA Rapports pt Un Menus ee aaa Qi ee ds Rs een 72 4 4 1 Mise en uvre des rapports des versions initiales 72 4 42 Les rapports sous Oto 2 73 4 5 Int gration Ol cee nee we nu a ae ee as gode 74 4 5 1 Ex cution directe par fichier oto 74 4 5 2 Modification des commandes 75 4 5 3 Autres probl mes soulev s 76 CHAPITRE V EXEMPLES DES NOUVELLES CAPACITES DE CORRECTION 78 5 1 Exemple 1 int gration des commandes bash dans une v rification de remise 78 5 1 1 Pr sentation et description 78 5 1 2 Analyse de exemple 79 5 2 Exemple 2 correction complexe avec param tres et fichiers 80 5 2 1 Pr sentation et description
3. 37 CHAPITRE TI LANGAGES SPECIFIQUES AU DOMAINE 38 3 1 Langages g n ralistes et langages sp cifiques 39 3 2 Langages sp cifiques au domaine 40 3 2 1 Historique des DSI mdd de dE le AE EE me SASS 40 3 2 2 Inconv nients des DSL 41 32 3 Types de DSL Za A AAA Er AR 41 3241 DSLrextermes 4 044 24 ak a eee eb Ane ne 41 320 DS inmtern es it ee eg eee eee ROR EE et 42 3 3 Ruby et les DSL internes 43 3 3 1 Aspects de Ruby int ressants pour les DSL internes 44 3 4 Exemple de mise en uvre d un DSL interne bas sur Ruby 47 AT Descriptions s cra A AR A a ae 2 te cd 47 3 4 2 Utilisation de XML Builder 48 JAS MiSe en Uvre s u tl a aa a de dd da a GE Aa 50 CHAPITRE IV MISE EN UVRE DU DSL INTERNE ET DES EXTENSIONS 52 4 1 Notresolution copiar RE ee eme a dede dede de GE pa 52 4 1 1 Pr sentation du DSL Oto 53 4 1 2 DSL Oto et les standards de Ruby 60 4 2 Mise en uvre du DSL 0000 ee ee 61 4 2 1 Principes de mise en uvre 61 4 2 2 Utilisation des m canismes de Ruby par le DSL 63 4 2 3 Interface de programmation des scripts 64 4 2 4 Organisation des classes
4. 80 vi 5 2 2 Analyse de exemple 82 5 3 Exemple 3 modules individuels et modules collectifs 82 5 3 1 Pr sentation et description 82 5 3 2 Donn es d tests rave sr a A 82 5 3 3 Analyse de exemple 84 CHAPITRE VI ANALYSE DES PERFORMANCES 88 6 1 Mesure de la performance 89 6 1 1 Comparaison des performances des versions d Oto sur la machine rayoni 89 6 1 2 Sc nario de correction complet pour le cours INF5170 90 6 1 3 Comparaison des versions d Oto selon le serveur utilis 91 6 2 Analyse des r sultats ee 92 6 3 Am liorations possibles 93 CONCLUSION guetet Pll ne es ha ee a ea ER EE SA dk 94 APPENDICE A HISTORIQUE DES VERSIONS D OTO 98 Al OO ds a ea ee eee dt ds ak Paso 98 ADP Oto Hole sas ue ne hs ea A AS AA He Ne abc ee oe el ey 99 ASS A A te oy ee te 101 APPENDICE B RAPPORT INTERNE VERS LE D VELOPPEMENT D UN MODULE DE D TEC TION DU PLAGIAT POUR OTO 103 Bil Introduction 20 008 244 805 0 a ee pige te lg RE pps 103 B 2 Comment les tudiants peuvent ils tricher 104 B 3 Int grer la d tection du plagiat Oto 105 B 4 Le choix d un outil ex
5. L exemple de DSL que nous pr senterons ici est XML Builder disponible l adresse http www codecommit com blog ruby xmlbuilder a ruby dsl case study Cette application sert g n rer du code XML au moyen d une syntaxe plus l g re que celle du XML lui m me vi tant de devoir ouvrir et fermer des balises permettant l utilisateur de se concentrer davantage 48 sur le contenu que sur la forme Cet exemple pr sente une structure de balises XML dont certaines poss dent des at tributs des balises imbriqu es ou des valeurs L id e est de faciliter la cr ation par l humain de fichiers XML en en retirant la syntaxe lourde pour se concentrer sur les informations et la structure Le DSL permet ensuite de g n rer le fichier XML correspondant 3 4 2 Utilisation de XML Builder Un fichier XML valide se compose d une balise XML qui contient elle d autres balises d finies par le domaine auquel ce fichier s applique Celles ci peuvent galement contenir r cur sivement d autres balises Une balise est d finie par un nom entre crochets Une balise ouverte doit par la suite tre ferm e lt balise gt lt balise gt Si la balise ne contient pas d autres balises elle peut tre ferm e par la m me commande que son ouverture lt balise gt Une balise peut poss der des attributs Ceux ci sont d finis par un nom suivi d une valeur plac s dans la balise d ouverture La figure figure 3 1 pr sente
6. Le reste de cette section ne fournira que les informations les plus importantes car l utilisabilit des logiciels bien qu tant un sujet int ressant n est pas le sujet principal de ce m moire Pour la m me raison nous avons vit de traiter ici d un autre sujet en mergence l accessibilit des sites Web aux gens pr sentant des d ficiences physiologiques et le support des fureteurs vocaux ou affichage braille C 2 3 Heuristiques de Nielsen Les heuristiques de Nielsen qu il a pr sent es notamment dans un article publi en 1990 25 sont des pratiques recommand es au niveau des interfaces d velopp es partir d observations empiriques Dans cette section nous les pr senterons avec pour chacune une courte explication 1 Visibilit de l tat du syst me tout moment l utilisateur doit tre en mesure de savoir Combien de fois avons nous entendu parler de la mauvaise r putation des d veloppeurs d applications au niveau de la conception d interfaces l auteur de ces lignes se sujet se donne le droit de citer Philippe Gabrini professeur d informatique l UQAM qui lui a r p t plusieurs reprises Nous les programmeurs nous sommes nuls en interfaces 115 dans quel tat se trouve le syst me Un site de vente en ligne affichera par exemple l tape en cours du processus de commande ainsi que le nombre et la nature des tapes pass es et venir Ad
7. l cran soit en un message d erreur Oto ne permettait pas d crire les r sultats dans des fichiers sur disque de les transmettre par un autre moyen notamment par courrier lectronique ou encore de les remettre aux tudiants Si une redirection de la sortie standard vers un fichier sur la ligne de commande permettait de 1Pour viter d endommager les fichiers originaux des TP Oto copie le contenu des TP corriger dans des r pertoires temporaires 2D autant plus que ces utilisateurs n auraient pas n cessairement eu le temps ou l int r t d apprendre le fonctionnement des modules Oto pour d velopper le leur 19 contourner le premier probl me le traitement des r sultats laissait g n ralement d sirer alors qu il y avait l un ventail de possibilit s qui n taient pas exploit es 2 1 5 Performances et lenteurs Pour qu Oto puisse tre utilis dans l ensemble des situations pour lesquelles il avait t pr vu il se devait d offrir un niveau de performances acceptable Celui ci va de quelques secondes pour une simple v rification individuelle quelques minutes pour la correction d un groupe Selon les observations effectu es par le professeur Tremblay les versions initiales d Oto pouvaient prendre jusqu plusieurs minutes pour retourner les r sultats de tests relativement simples Ces lacunes taient principalement observ es au niveau de tests de filtrage des en tr es
8. valuer dans la seconde 3 3 1 8 Syntaxe tol rante et sucre syntaxique La syntaxe de Ruby est caract ris e par sa grande tol rance au niveau de l utilisation des parenth ses dans l appel de m thodes et par la possibilit d omettre une partie des l ments syntaxiques n cessaires l appel de m thodes et au niveau des param tres de m thodes Par exemple les parenth ses sont optionnelles dans un appel de m thodes condition que Vappariement des param tres ne soit pas ambigu c est dire s il y a un seul appel sur la ligne de code De cette fa on methode param est quivalent methode param Utilis comme param tre de m thode les accolades d limitant un dictionnaire peuvent tre aussi omises En cas d utilisation d un op rateur qui revient invoquer une m thode l op rateur point est optionnel Par exemple l expression chaine1 chaine2 signifie en r a lit chainel chaine2 Dans un tel cas il serait tout fait possible de surcharger la m thode pour lui assigner le comportement d sir Ces fonctionnalit s contribuent utiliser Ruby pour d velopper un DSL ayant un syntaxe all g e 3 4 Exemple de mise en uvre d un DSL interne bas sur Ruby Dans cette section nous survolerons un exemple de DSL interne bas sur Ruby pour comprendre comment ses auteurs sont parvenus prendre avantage des structures et conventions de Ruby 3 4 1 Description
9. Pidentificateur qui lui est pass ou soul ve une exception si l identificateur est inconnu 4 2 3 Interface de programmation des scripts La classe EnvironnementExecution qui englobe l ex cution des scripts leur offre un certain nombre de services pour qu ils puissent accomplir leurs t ches Ceux ci sont mis en uvre comme des attributs et des m thodes cod es en dur dans la classe et relatives au contexte de correction Pour viter de surcharger ce chapitre nous les pr sentons l appendice E 4 2 4 Organisation des classes Les classes Ruby mettant en uvre le DSL peuvent tre regroup es en deux cat gories D abord plusieurs classes forment le DSL lui m me et tous les m canismes n cessaires l ex cu tion des scripts charger le script encadrer l ex cution en traitant les appels de modules de rapports et de commandes bash traiter les param tres pass s aux modules ainsi que fusionner les r sultats en vue de la production des rapports Le r pertoire DSL regroupe ainsi toute la partie m canique de l ex cution des scripts et vient essentiellement se substituer l ancien 5Il va de soi que cette liste de services s ajoute aux variables globales d finies dans Oto et celles mises en place par Ruby comme ENV pour les variables d environnement 65 EnvironnementExecution non d finies groupe each tp ep travaux clavier java tp Resultat compilation compi
10. de pouvoir ex cuter directement l valuation d finie dans un fichier oto en fournissant celui ci et les r pertoires des TP corriger Nous en traiterons la section 4 5 1 2 1 2 Structures de contr le Le langage OtoScript utilis dans les versions initiales d Oto pour le d veloppement des scripts d finissant les valuations tait limit plusieurs niveaux notamment pour ce qui tait des structures de contr le de l ex cution Pex cution conditionnelle de code se limitant aux seules assertions sans boucles et sans structures de branchement Entre autres cela rendait difficile la correction l aide de programmes de tests multiples et ind pendants 2 1 3 Difficult accomplir des t ches d apparence simple Parfois dans le cadre d une correction il arrive que l enseignant doive manipuler les fichiers remis par l tudiant avant de pouvoir notamment les compiler ou leur faire subir des 18 tests Par exemple si les tudiants remettent leurs TP respectifs dans des fichiers compress s il faudra tout d abord utiliser des commandes de d compression Dans le cadre de correction de travaux de programmation il peut arriver que l enseignant souhaite craser certains des fichiers des TP des tudiants par les siens notamment s il leur a fourni des fichiers d interfaces ou de biblioth ques de code que l tudiant aurait pu modifier malgr la pr sence d ventuelles instructions
11. interpr te 2 3 1 2 Affichage du contenu d une valuation Nous avons ajout la version 1 d Oto la commande afficher_evaluation qui permet l tudiant d afficher le contenu d une valuation publique Bien que d une mise en uvre simple 23 cette commande exigeait qu Oto conserve la repr sentation initiale d un fichier OtoScript en sus de l image lorsque la premi re existait car elle tait plus lisible ce qui entrait en conflit avec l id e de ne stocker que l image ex cutable d une valuation 2 3 1 3 Emploi d un langage propre Oto Le d veloppement des scripts de correction dans un langage propre un seul outil demeure discutable Si cette approche avait permis aux auteurs d Oto de cr er un langage maison qui r pondait leurs besoins du moment il n en demeure pas moins que celui ci devait tre appris par les utilisateurs souhaitant b n ficier des fonctionnalit s de correction d Oto Cet effort suppl mentaire applicable ce seul logiciel pouvait d courager certains utilisateurs potentiels estimant que les b n fices apport s par l outil n taient pas suffisants par rapport aux efforts n cessaires son apprentissage 2 3 1 4 Syntaxe et particularit s d OtoScript M me si nous estimons que le langage OtoScript tait relativement simple un certain nombre d inconstances contribuaient en alourdir l apprentissage et l utilisation en situat
12. valuation les premi res versions d Oto demandaient que celle ci soit d abord activ e l aide de la commande activer _ eval o en plus du fichier oto les fichiers ventuellement n cessaires l ex cution de l valuation taient fournis Oto Une fois l valua tion activ e elle pouvait tre utilis e avec les commandes verifier_ tp pour corriger un seul TP ou corriger_ groupe pour l appliquer sur un groupe entier Par la suite l valuation pouvait tre d sactiv e l aide de la commande desactiver_ eval Une telle mani re de faire tait probl matique deux niveaux Premi rement elle tait lourde exigeant trois commandes l o l intention de l utilisateur tait simplement de corriger un groupe Deuxi mement une erreur logique dans l valuation n tait d couverte qu au moment de la correction exigeant de la d sactiver puis de l activer nouveau apr s avoir modifi le fichier oto ce qui exigeait des efforts suppl mentaires De mani re contourner cette limitation le professeur Tremblay a eu recours plusieurs reprises des scripts qui ex cutaient successivement les trois commandes Cette astuce n tait toutefois pas document e dans le manuel d utilisation d Oto destin aux enseignants http labunix uqam ca 8181 oto manuel enseignant doc et exigeait vraisemblablement une connaissance plus que superficielle des commandes Oto Une meilleure solution aurait t
13. 0 Message Le travail compile mais contient une ou plusieurs erreurs Resultat 4 66 6666666666667 Figure 5 5 Extrait de r sultat du rapport complet de correction r sultat d un tudiant 87 CHAPITRE VI ANALYSE DES PERFORMANCES Quels gains de performance les modifications que nous avons apport es Oto ont elles entra n s sur le m me quipement Les gains sont ils proportionnels la lenteur de la machine utilis e Comment pouvons nous expliquer ces gains Le comportement des scripts et des modules a t il t am lior Existe t il des situations o la version 2 d Oto sera plus lente que les versions initiales et si oui pourquoi Dans ce chapitre nous traiterons d abord de l am lioration des performances d Oto que la mise en uvre du DSL Oto a apport e en comparant les temps d ex cution de la version 1 ceux de la version 2 Cette comparaison se fera sur plusieurs aspects de l outil notamment au cours de corrections et l ex cution de ses tests int gr s Ensuite nous examinerons les causes de ces gains Le passage un paradigme de correction de groupe peut il lui seul expliquer ces gains ou les causes sont elles partiellement autres Finalement nous chercherons savoir si certaines commandes ou sc narios de correction s ex cutent plus lentement sous Oto 2 que sous Oto 1 Le cas ch ant nous discuterons des causes possibles et des moyens d y rem dier 89 6
14. 00 00 00 O O O O oo 00 child 0 01 02 01 60 02 00 00 88 00 01 06 00 nm 0000 00 03 73 01 22 00 00 13 03 O mm Oo 14 calls 1589 4767 37 8472 1552 4960 5043 37 1825 148 154 71 500 5043 23280 888 2353 1553 4961 1553 15840 4843 58 4843 4767 9921 74 127 name Kernel system lt Class File gt utime Kernel load 1 lt Module Pass gt if ObjectitnettoyerApres 4 SystemCallError initialize File initialize IO gets Array each 1 Thread kill lt Class Struct gt new Kernel require 4 I0 read I0 close Array each 3 lt Module OsUtils gt separer Arrayiteach Dirtteach lt Class I0 gt open lt Class Dir gt open String Object assertNettoyable Kernel require 5 String nettoyer lt Module FileUtils gt touch String split Object nettoyerApres 1 Figure D 2 Sortie du profilage d une correction de groupe d tection du plagiat 128 D 3 Synth se et analyse des r sultats obtenus Les r sultats que nous avons obtenus confirment notre hypoth se selon laquelle Oto con sacre une majorit de son temps ex cuter des programmes externes la lumi re de cette conclusion l am lioration d Oto passera vraisemblablement par deux approches distinctes La premi re sera d am liorer tout ce qui concerne l encadrement
15. 4 1 1 6 Commentaires dans le code des scripts Dans le script comme en Ruby tout ce qui suit le croisillon sur une ligne est consid r comme un commentaire au sens de langage de programmation et non au sens de commentaire de rapport que nous verrons la section 4 1 1 7 et sera ignor Les commentaires sur plusieurs lignes sont support s l instar de son langage h te avec les marqueurs begin et end 4 1 1 7 D coration du rapport Dans les versions initiales d Oto une d coration de script tait une cha ne de caract res plac e entre guillemets doubles qui tait ajout e comme identificateur dans le rapport la fin de la correction Elle servait clarifier et faciliter la lecture du rapport Toutefois Oto 2 ayant modifi le fonctionnement des rapports la d coration a t rem plac e par les commentaires de r sultats Ceux ci vont remplacer le nom du r sultat dans le rapport pour rendre celui ci plus explicite tout en vitant des lignes trop longues dans le script de correction Examinons l exemple suivant groupe each tpl tpl R sultat obtenu la compilation du fichier Test java compiler_javac tp fichiers gt gt Test java if tpl R sultat obtenu la compilation du fichier Test java reussi then Pour chacun des TP le r sultat de la compilation est conserv sous un nom significatif mais dont l usage alourdit le script Le commentaire de r sultat permet d
16. Darth Vader java comment ferait t il pour savoir qu il doit le comparer au fichier le seigneur du mal java remis par un tudiant Forcer une liste de noms de fichiers op ration que permet d j Oto offre aussi l avantage d viter un renommage manuel de tous les fichiers d une bo te 107 B 4 Le choix d un outil existant Deux types d outils de d tection de plagiat semblent disponibles soit ceux ayant recours aux calculs de m triques et ceux qui proc dent une analyse lexicale pour transformer le code analyser en une suite de jetons 37 En raison de la plus grande r sistance des seconds envers les tactiques mentionn es plus haut il semble que nous devrons inclure au moins un tel outil dans notre solution ce qui explique pourquoi nous nous sommes concentr s sur l essai de ce genre de logiciels tel que d crit plus loin Pour permettre le d veloppement de notre module de d tection du plagiat nous avons pris en consid ration plusieurs outils existants et nous en avons fait l essai sur une s rie de travaux d tudiants qui nous ont t fournis par M lanie Lord tudiante au doctorat en informatique cognitive et charg e de cours pour le cours INF1120 de l UQAM la session d hiver 2008 Plus pr cis ment notre corpus de test est fond sur le travail pratique no 2 remis par les tudiants qui consistait au d veloppement en Java d un jeu de bonhomme pendu Ce programme devait avoir recours des
17. Elle poss de un nom unique et peut tre priv e accessible par son cr ateur seulement ou publique accessible tous Une valuation se compose de tous les fichiers n cessaires pour effectuer une t che de correction ainsi que d un script Oto Consid rons ces l ments en deux phases D abord les fichiers n cessaires pour effectuer une t che peuvent varier grandement en fonction de la nature de celle ci Pour une correction utilisant JUnit il s agira de fichiers class d finissant les cas de tests 4 Pour une correction de type filtre ce sera des fichiers d finissant les entr es sorties fournir et attendues des programmes tester Le script l oppos permet v ritablement de d finir ce que sera l valuation en indiquant Oto quels modules utiliser pour effectuer sa correction et comment agir en fonction des r sultats obtenus titre d exemple on peut inclure dans le script une s rie de tests hi rarchiques o les tests plus complets ne sont ex cut s que si des tests plus simples r ussissent En ce sens il s agit d un v ritable programme qui est ex cut par Oto Un script doit comporter l extension oto pour qu il puisse tre identifi travers les diff rents fichiers qu une valuation peut comporter Initialement d velopp s dans le langage OtoScript ils sont partir d Oto 2 faits en Ruby en raison des limites et des probl mes qu entrainait OtoScript et son support 4Et p
18. aucun autre fichier que le script n est n cessaire Contrairement Oto 1 il n est plus n cessaire d utiliser un script bash pour autant de fois qu il y a de nombre de processeurs tester mettre jour la variable d environnement ex cuter Oto sur le groupe et rediriger la sortie standard vers un fichier Il n est plus n cessaire par ailleurs de pr voir deux scripts Oto diff rents pour les tests publics et priv s De trois fichiers la coordination de la correction passe un seul qui plus est plus court plus l ger et plus simple Par rapport l ancienne la mise en uvre de cet exemple ne semble poss der que des avantages D ailleurs elle s ex cutera assur ment plus rapidement car le groupe ne sera charg qu une seule fois et Oto tout comme le script ne seront ex cut s qu une fois galement Nous examinerons la question de la performance au chapitre 6 5 3 Exemple 3 modules individuels et modules collectifs 5 3 1 Pr sentation et description Dans ce dernier exemple pr sent la figure 5 3 nous consid rerons un sc nario de correction combinant des appels de modules individuels et de modules collectifs Celui ci inspir de l exemple de script Oto que nous avions pr sent la section 4 1 1 nous permettra de montrer comment les diff rents types de modules sont utilis s ensemble ainsi que de pr senter une autre fonctionnalit des r sultats individuels permettant d en hausser la f
19. d enseignements diff rentes fut l une des conclusions de Douce Livingstone et Orwell 9 La question de la facilit de l utilisation des outils d aide la correction par les tudiants a fait l objet d un article par Allowatt et Edwards en 2005 2 Leur travail a consist int grer Poutil Web CAT l environnement de d veloppement Eclipse pour les langages C et Java Si leur approche s est av r e un succ s elle exigeait toutefois l installation de plusieurs logiciels sur le poste de travail utilis ce qui limitait l utilisation de l extension Eclipse sur les machines personnelles des tudiants Une application peut galement tre utilis e ind pendamment d un environnement de d veloppement int gr C est le cas de CourseMaker 19 venu remplacer Ceilith qui se pr sente comme une application Java munie d une interface Swing Au niveau de la d finition des t ches de correction l approche utilis e par Oto a r cem ment 2008 t reprise par le syst me ProtoAPOGEE 14 dont les tests sont d finis l aide de scripts Ruby Watir A Pinstar de ses contemporains Oto et CourseMaker cet outil permet aux tudiants d obtenir du feedback rapide sur leur travail 1Un outil d automatisation de tests Web en Ruby http wtr rubyforge org 1 2 Oto un outil g n rique et extensible Oto est un outil g n rique et extensible d velopp en langage Ruby sous Unix destin corrige
20. e tester_module Lance des tests internes Oto e verifier_tp Corrige un seul TP par rapport une valuation Liste des modules e javac Compilation de fichiers Java e junit Ex cution de tests introspectifs pour des classes Java A 2 Oto 1 Oto 1 est une version augment e d Oto 1 Cette augmentation signifie qu elle dispose de davantage de fonctionnalit s mais que celles ci ne viennent pas affecter les principes et Parchitecture du logiciel La plupart de ces am liorations ont t d velopp es au fil du temps par le professeur Tremblay mais les commandes afficher_evaluation decrire_boite ainsi que le module plagiat ont t r alis s par l auteur de ces lignes Les fonctionnalit s additionnelles se sont manifest es essentiellement par de nouvelles commandes ainsi que par le d veloppement 1 de modules d extension suppl mentaires Certaines commandes ont galement t modif es notamment creer_boite qui peut sp cifier une date limite de remise et une liste de fichiers devant tre remis au lieu d une valuation de remise Elle permet galement d ex cuter un script la remise dont l chec entra ne l annulation de la remise Ajout des commandes e afficher_evaluation Affiche le contenu d une valuation script et fichiers e confirmer_remise Confirme un tudiant la remise de son TP dans une bo te e creer _et_activer_eval_classe Cr e des tests introspectifs s
21. gt A pouvait tre fait proprement dans les versions initiales d Oto car le module ne pouvait conna tre le nom v ritable du r pertoire anonyme qu il manipulait pour viter de le comparer avec lui m me et provoquer des faux positifs Pour contourner ce probl me nous avions modifi la commande corriger_groupe et lui avions fait g n rer un fichier texte comportant le nom r el du r pertoire actuellement corrig qui tait plac dans le r pertoire courant o le module de d tection du plagiat pouvait le r cup rer Cette solution temporaire n tait pas sans d fauts car elle emp chait l ex cution simultan e de plusieurs instances d Oto depuis un m me r pertoire le fichier devant conserver un m me nom De plus en cas de plantage du module ou de la commande celui ci n tait pas supprim Pire encore la commande ne pouvant savoir si le module plagiat tait utilis ou non 26 pour la correction en cours elle devait appliquer ce correctif pour tous les appels de modules provoquant des surco ts 2 3 2 4 Formatage des corrections de groupe Un autre irritant que le module plagiat nous a fait d couvrir est l impossibilit dans les versions initiales d Oto de faire des regroupements de r sultats dans les rapports Ceux ci n taient que des amalgames de r sultats individuels pr sent s s quentiellement sans possibilit s de faire des regroupements en fonctions des r sultats obtenus
22. s semblables avec de l g res diff rences au niveau des noms de variables et du positionnement des accolades mais avec une structure et des d clarations quasiment identiques Parmi le groupe trois travaux nous ont sembl fortement susceptibles d tre en infraction ne se diff renciant les uns des autres que par les modifications esth tiques cit es plus haut Des r sultats similaires ceux de SIM mais mettant encore plus en lumi re les m mes cas probl matiques furent produits par Plaggie 1 Ce dernier outil qui est en quelque sorte une version ouverte de JPlag fonctionne selon le m me principe que SIM mais retourne encore plus d informations Bien qu ayant l avantage de supporter la grammaire de Java 1 5 il a comme inconv nient de ne supporter que ce seul langage Plaggie qui a donn de bons r sultats s est toutefois r v l plus sensible que SIM l une des faiblesses les plus courantes des outils de d tection du plagiat la d tection du inlining Le logiciel Sherlock 37 quant lui a recours ce que ses auteurs qualifient de com paraison incr mentielle entre les diff rents fichiers o ces derniers sont compar s plusieurs fois sous forme textuelle avec de moins en moins de caract res que nous supposons moins signifi catifs blancs avant de le faire au moyen de jetons travers un parser qu ils disent simple et facile adapter de nouveaux langages Malheureusement Sherlock n a pa
23. tudiant rend son TP sous la forme d un fichier compress Le Certains pourront remarquer avec raison qu une telle situation serait peu probable dans les premiers cours de programmation du moins l UQAM o l utilisation de syst mes de type UNIX ne vient que plus tard 79 fichier sera d compress la pr sence de fichiers obligatoires sera v rifi e notamment un fichier d finissant une interface Java qui sera inspect pour assurer que l tudiant ne l a pas modifi afin de lui fournir un message d erreur le cas ch ant Cet exemple tient compte de deux r alit s propres aux v rifications ex cut es lors de remises D abord il ne sera pas possible de passer de param tres aux scripts lors de la remise car cela rendrait vraisemblablement trop complexe l utilisation d Oto par le ligne de commande pour les tudiants vis s Ensuite contrairement aux scripts de correction de groupe qui ne doivent pas chouer devant traiter le groupe en entier et non pas confirmer ou non la remise d un seul travail un script de remise doit soulever une exception si la remise ne doit pas tre faite Cette exception indiquera la commande rendre_tp de rejeter la remise et d afficher un message d erreur dont nous lui en fournirons les d tails 5 1 2 Analyse de l exemple En utilisant plusieurs des capacit s d Oto et de Ruby pour effectuer une v rification avant remise complexe l exemple de la figure 5 1 mont
24. 1 Mesure de la performance 6 1 1 Comparaison des performances des versions d Oto sur la ma chine rayoni En premier lieu nous testerons les diff rentes versions d Oto sur le serveur de l UQAM qui sera vraisemblablement utilis pour supporter l outil Celui ci au moment d crire ces lignes tait un Sun Fire X4150 de Sun Microsystems muni de deux processeurs Intel Xeon quatre coeurs et de 16 gigaoctets de m moire vive Nous reprendrons au tableau 6 1 une partie des cas de tests qui avaient t utilis s au chapitre 2 la section 2 4 2 pour tester les diff rences de performances entre Oto 1 sous deux versions distinctes de Ruby mais en ex cutant tous ces tests sous Ruby 1 8 6 Encore ici le meilleur temps en secondes sera en caract res gras l exception de certains tests int gr s Oto la version 2 s est r v l e la plus rapide avec une marge variant selon la nature du test ex cut Le test ayant recours au module de d tection du plagiat s est ex cut avec une marge encore plus grande d montrant les avantages du nouveau paradigme de correction au niveau de la correction de groupe Le sc nario de correction pour INF3140 ayant recours aux commandes bash sera aussi acc l r en diminuant de deux un seul les instances d Oto n cessaires la correction et en liminant l appel de modules pour l ex cution des commandes Un gain d une dizaines de secondes sur une machine 1Comme
25. 4125 313 143 3328 5999 560 169 371 14314 1245 1517 195 904 126 name lt Module Timeout gt timeout Kernel Kernel system I0 read lt Class File gt old_expand_path Kernel require Time tinitialize lt Class File gt stat Kernel sleep lt Class File gt join Kernel require 1 lt Class Dir gt open Kernel load lt Module OsUtils gt separer String split lt Class 10 gt read I0 flush File initialize Array each 4 lt Class Dir gt old_bracket Module include lt Module 0to gt noop lt Class Object gt allocate Array reject IO write lt Class Thread gt start lt Class Dir gt rmdir Figure D 1 Sortie du profilage de la suite de tests d Oto self 47 19 oo 73 12 07 87 47 94 80 80 80 80 67 67 67 53 53 53 53 53 53 53 40 40 40 40 40 40 40 total nm O O ww O Be m 0O 58 53 25 15 71 09 06 06 94 07 06 11 05 04 67 07 17 05 26 04 03 16 06 17 75 03 19 self 23 14 11 07 06 06 06 06 05 05 05 04 04 04 04 04 04 04 03 03 03 03 03 03 O O OOOO oo 03 wait 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
26. I ne pouvait le faire que sur un seul TP la fois Pour corriger ce probl me nous ne nettoyons pas le dossier temporaire imm diatement apr s sa cr ation mais attendons la fin de la correction 4 5 2 2 Restrictions de bo te et remise de TP la remise d un TP Oto peut lancer une valuation qui devra r ussir pour que la remise soit accept e Cette valuation est sp cifi e la cr ation de la bo te de remise l origine purement destin e des v rifications telles qu au moyen de JUnit cette fonctionnalit par la suite t exploit e par le professeur Tremblay lorsqu il a souhait ajouter la possibilit d imposer encore la cr ation de la bo te une date limite de remise ou des listes pr cises de fichiers remettre Si l id e tait bonne sa mise en uvre reposant sur la g n ration de code OtoScript par des scripts C Shell souffrait de deux d fauts D abord il n tait pas possible d utiliser ces ajouts concurremment un script de v rification et ce uniquement pour des raisons de mise en uvre alors que cela aurait t souhaitable Ensuite cette mise en uvre tait inutilement complexe et difficile d entretien Nous avons corrig ce d faut avec Oto 2 en laissant la commande rendre_tp prendre 76 elle m me en charge ces validations Les informations ne sont plus conserv es dans un script mais extraites du fichier d informations utilis galement par la commande decri
27. Oto notamment au niveau de la correction qualitative du code la transmission des r sultats directement aux tudiants et la mise en place d une politique de versions partir d Oto 2 Finalement comme nous l avons mentionn la section pr c dente une refonte du mod le de stockage o les travaux sont conserv s dans des r pertoires reposant sur la s curit Unix par une base de donn es pourrait augmenter la s curit de Vapplication notamment en sp cifiant des listes d acc s limitant quels comptes tudiants peuvent d poser des travaux dans une bo te et en hausser les capacit s facilitant notamment la d tection du plagiat lorsque la remise d un TP identique est exig e simultan ment des tudiants de plusieurs groupes d un m me cours CHAPITRE III LANGAGES SP CIFIQUES AU DOMAINE Au del du paradigme utilis quelles sont les familles de langages de programmation Quels sont les avantages et les inconv nients des diff rentes solutions possibles au niveau des langages pouvant tre utilis s pour remplacer OtoScript Qu est ce qu un langage sp cifique au domaine DSL Depuis quand existent ils Quels sont les diff rents types de langages sp cifiques au domaine Pourquoi le langage Ruby est il utilis pour mettre en uvre des langages sp cifiques au domaine Quelles sont les caract ristiques de Ruby utilis es cet effet Lorsque nous avons pris la d cision de remplacer le langage OtoScript par u
28. Par exemple dans le cas de la d tection du plagiat il eut t souhaitable de ne g n rer qu une seule liste de tous les travaux similaires 2 3 3 Probl mes li s aux rapports de correction Un rapport de correction est le compte rendu de l ex cution de l valuation dans le cadre de la correction d un TP Dans les versions initiales d Oto ce rapport tait produit par l interpr te lui m me Plusieurs facteurs influen aient ce qui tait inclut dans un rapport la visibilit des t ches de correction les d corations et les valeurs explicitement affich es l aide de l instruction sortir Cette correction se faisait un seul TP la fois un rapport ne pouvait s appliquer qu ce seul TP m me dans le cas d une correction de groupe auquel seul un bref sommaire tait ajout informant l utilisateur de statistiques superficielles li es aux r sultats du groupe L id e de retourner les r sultats d une correction sous forme de rapport nous semble bonne Toutefois leur mise en uvre s av rait discutable notamment lorsque nous avons cherch res treindre la quantit d information retourn e par un rapport Il est important de remarquer que si Oto n prouvait aucune difficult traiter l information contenue dans les rapports c est parce qu il les manipulait de mani re structur e par les valeurs de retour des modules d extension et les constantes des scripts Pour Oto un rapport n t
29. Unix de l UQAM et de choisir s il d sire employer Papplication titre d tudiant ou d enseignant qui n ont pas acc s aux m mes fonctionnalit s La confirmation de la connexion se fait l aide d un bouton identifi Se connecter Sous le formulaire nous pouvons trouver des informations concernant certains collaborateurs au projet Oto ainsi que le logo stylis de PUQAM Le premier reproche que nous pouvons addresser cet cran bien qu il ne soit pas visible sur la figure pour conomiser de l espace est le titre de la page Connexion qui ne fait pas r f rence Oto Dans le corps de la page un d faut est la perte d espace caus e par le logo qui est d ploy enti rement la verticale en gaspillant de l espace horizontal De plus cet identificateur bien qu tant form de texte est mis en uvre sous la forme d une image ce qui l emp che de s adapter un ventuel redimensionnement de la fen tre du fureteur et peut devenir trop petit pour tre lisible si la r solution de l cran tait augment e Un autre probl me au niveau de l image est l absence dans la balise HTML qui en permet l affichage de la valeur alt qui est destin e afficher un message texte au cas o l image ne pouvant tre affich e comme ce serait le cas d un fureteur en mode texte Ensuite le formulaire est lui aussi mal con u En premier lieu son fond de couleur alourdit l interface et rend d
30. ajout au nom du module et incr ment autant de fois que le module sera invoqu par exemple D tection du plagiat pour le premier appel D tection du plagiat 0 pour le second et ainsi de suite 4 4 2 4 Rapport complet Au moment d crire ces lignes Oto 2 disposait d un seul module rapport Celui ci nomm rapport_complet produit un rapport contenant toutes les informations disponibles au sujet de la correction Il pr sente d abord un en t te contenant entre autres le nom de l valuation ou temporaire si la correction a t lanc e par un fichier oto comme nous le verrons la section 4 5 1 l heure et la date de l ex cution et le contenu du script utilis Par la suite dans l ordre les r sultats de modules collectifs sont affich s suivis de chacun des TP pour chacun les r sultats individuels sont affich s dans l ordre d insertion ainsi que les commandes utilis es hors groupe 4 5 Int gration Oto Dans cette section nous traiterons de certaines modifications que nous avons apport es Oto pour y int grer le DSL Oto ainsi qu all ger l utilisation de l outil 4 5 1 Ex cution directe par fichier oto L utilisation obligatoire des valuations et des commandes de correction de TP et de groupe repr sentait une contrainte l utilisation d Oto car elle tait lourde exigeant l activation d une valuation son utilisation dans une correction et sa d sactivation explic
31. aux scripts et en vitant d ajouter des conditions un peu partout dans ceux ci 28 2 3 4 2 Autres syst mes d exploitation Porter Oto vers un autre syst me d exploitation qu Unix serait beaucoup plus difficile que ce que nous avons r alis pour Oto 1 La s curit de l outil repose sur les permissions Unix Oto doit avoir un niveau de permission plus lev pour manipuler les r pertoires des correcteurs mais bascule vers le niveau de permissions du correcteur lors d une correction pour des raisons de s curit L outil est un programme de type SGID un concept Unix Aussi la classe Usager selon les commentaires de son code repr sente un utilisateur Unix D ailleurs les tests qui lui sont associ s ne s appliquent qu cette seule famille de syst mes d exploitation faisant r f rence un administrateur se nommant root 2 3 5 Internationalisation Oto est un logiciel unilingue francophone Si elle n est pas probl matique l UQAM cette situation diminue les possibilit s d utilisation de l outil une plus grande chelle notamment dans les tablissements d enseignement anglophones Pourtant il serait relativement simple de relocaliser l outil d autres langues Des paquetages de langues pourraient tre distribu s avec Oto et choisis l installation L internationalisation ne se limite toutefois pas la langue mais touche aussi plusieurs aspects culturels Par exemple l or
32. correcteur devra souvent manipuler des fichiers remis sur un support lectronique et en v rifier le fonctionnement dynamique Face cette situation l int r t d un logiciel d aide la correction des travaux de programmation permettant d automatiser une partie de cette t che appara t clairement Bien que plusieurs applications destin es cette fin ont t d velopp es au fil des ans elles taient habituellement limit es dans leurs capacit s de correction l oppos Oto 17 33 35 se distingue par une conception ayant pour buts premiers la g n ricit et l extensibilit D velopp l UQAM dans le cadre de la ma trise en informatique de Fr d ric Gu rin sous la direction du professeur Guy Tremblay Oto apportait des possibilit s nouvelles aux outils de correction permettant en th orie de corriger tout travail pratique en lui imposant n importe quel test permis par un m canisme de modules d extension Si le projet de ma trise de Gu rin a pu montrer la faisabilit d un tel syst me 17 l utilisation d Oto dans le cadre de tests v ritables et nos analyses de son code source ont d montr que la version initiale de l outil souffrait de certains d fauts dont deux surtout taient susceptibles de nuire une utilisation de l outil pour accomplir les t ches pour lesquelles il avait t con u D abord Oto souffrait de probl mes de flexibilit Rel guer le travail de correction des m
33. d doubl es chaque ex cution ex cut es une fois par copie corriger la recherche et le chargement en m moire des modules la transmission des param tres la validation des param tres la manipulation de programmes externes etc Au niveau des param tres le fichier OtoScript d finissant l valuation n tant normale ment pas susceptible d tre modifi au cours de la correction d un groupe cette validation ne serait n cessaire qu la premi re copie de ce groupe et pourrait tre consid r e acquise pour les autres De plus il serait souhaitable d optimiser les appels vers des programmes externes Un exemple simple est la correction de travaux en langage Java l aide de JUnit 5 et du module ponyme Pour chacun des travaux d un groupe le module doit charger et d charger la machine virtuelle Java alors qu il serait plus int ressant de ne la d marrer qu une fois et d effectuer les corrections en lot ce que les versions initiales d Oto ne permettaient pas 2 3 2 3 Difficult s li es aux corrections de groupe Dans les versions initiales d Oto la correction se faisait sur un seul r pertoire temporaire la fois Les modules javac junit gcc cmd_bash et autres traitaient tous les fichiers d un r pertoire et g n raient un r sultat qui ne concernait que le seul TP correspondant Or le module plagiat que nous avons d velopp devait comparer les travaux entre eux ce qui ne 3 Lette
34. de l ex cution des scripts ainsi que les scripts eux m mes afin de diminuer l estimation asymptotique du temps et du travail n cessaire l ex cution des scripts lorsque cela est possible particuli rement pour les corrections intra groupe En d autres mots Oto devra r duire le surco t associ l ex cution des t ches de correction De plus il sera n cessaire possible d optimiser le fonctionnement des modules pour minimiser le temps n cessaire l ex cution de programmes externes APPENDICE E SYNTAXE DES SCRIPTS DU DSL OTO Dans cet appendice nous examinerons la syntaxe du DSL Oto particuli rement au niveau des r gles respecter pour acc der aux diverses fonctionnalit s de Poutil la base le code source des scripts Oto doit tre un programme Ruby valide et respectant la syntaxe tablie par Ruby Les diverses possibilit s d utilisation du DSL Oto seront pr sent es ici sous forme d exem ples dont la l gende est pr sent e au tableau E 1 Lorsque cela sera n cessaire nous pr ciserons textuellement certains d tails concernant la syntaxe utiliser et les possibilit s du DSL l ment Description Barre verticale l ments exclusifs entre eux OU logique ex clusif Pointill s Possibilit d avoir recours d autres param tres similaires Texte en italique italique Les l ments en italique doivent tre rem plac s par les
35. de la correction il serait souhaitable d y ajouter la capacit de d celer partiellement les cas de tricherie tant conscients de l existence de divers outils nous ne souhaitons pas tenter de r inventer la roue mais trouver une mani re de les exploiter de fa on optimale et la plus simple possible en ajoutant Oto un module de d tection du plagiat ce qui tait m me sugg r par son auteur principal dans son m moire de ma trise L objectif principal de cette fonctionnalit serait d appliquer un certain nombre d heuristiques aux travaux remis par les tudiants pour mettre en lumi re des cas jug s suspects qui seraient ensuite v rifi s manuellement par le correcteur Cet objectif devra tre atteint en r duisant le plus possible le nombre de faux positifs mais en demeurant suffisamment sensible pour s av rer fonctionnel en pratique B 2 Comment les tudiants peuvent ils tricher Mike Joy dans un article paru en 1999 21 range les modifications apport es par les tudiants un code source plagi dans le but de masquer ce plagiat en deux cat gories Il va de soi que nous souhaiterions que toutes deux soient d tectables par notre module Au niveau du premier type les changements lexicaux l auteur explique que des commentaires peuvent tre modifi s ajout ou supprim s l indentation et le nom des divers identifiants peuvent tre chang s de m me que les num ros des lignes lorsque le langage le sup
36. de programmes C et C d autant plus qu elle repose sur un outil li bre Si nous souhaitons que notre module puisse aussi r sister l inlining dans le cas d un programme Java il serait imaginable de tenter d utiliser le moteur de refactoring de l diteur Eclipse pour tenter de proc der au inlining de classes Java avant de les comparer D autres cas o la d tection du plagiat sera g n ralement moins efficace sont d taill s par Prechelt Malphol et Philippsen 26 qui pr sentent des dizaines de cas et qui d crivent comment ces cas furent efficaces pour contourner l outil JPlag Par exemple l un de ces cas serait l ajout d instructions inutiles dans le corps des proc dures d un programme d claration de variables initialisations instanciations contre lequel notre connaissance les logiciels actuels demeurent impuissants Cela dit si nous d cidons de tenter de combler les d fauts des outils pris individuellement il serait int ressant de mettre au point une suite de tests permettant de juger de la qualit d un outil de d tection du plagiat permettant ainsi d avoir une id e de la r sistance de nos outils face aux divers cas possibles ce qui n est pas faisable avec un simple chantillon de travaux d tudiants qui bien que s av rant de vrais cas ne pr tendent pas couvrir toutes les attaques possibles 10 moins que nous tentions d avoir recours la m me astuce en compilant les progr
37. des applications externes ce niveau nous pouvons imaginer l obtention de gains de deux mani res diff rentes En premier lieu les modules comparant les travaux entre eux doivent intrins que ment s appliquer tous les travaux d un groupe au lieu de chaque travail la fois afin de pouvoir s adapter toute approche souhaitable pour les corrections Proc der ainsi nous per met de factoriser les t ches qui anciennement taient r p t es inutilement De plus les appels des programmes externes doivent s appliquer tous les travaux d un groupe lorsque cela est possible afin de r duire leur nombre et d viter leurs chargements et d chargements r p titifs en m moire Notre solution se tournera vers le d veloppement de deux types de modules un premier qui s applique un seul TP et un autre traitant un groupe entier Les nouveaux modules adapt s la coordination des t ches bas e sur un langage interne seront pr sent s la section 4 3 de ce m moire 2 6 1 3 Rapports de correction Les rapports de correction fournis par Oto permettent d exprimer les r sultats obtenus Pex cution d une valuation Ceux ci souffraient de plusieurs d fauts ils taient peu param trables inflexibles et difficiles analyser par la machine Le rapport de correction d Oto 1 ne convenait plus Son contenu devait pouvoir tre choisi par le d veloppeur d une valuation De plus le rapport ne dev
38. effet selon Wikip dia http www fr wikipedia org wiki Hypertext_Markup_Language elle a t adopt e en d cembre 1999 soit environ sept ans avant le d veloppement de l application Web d Oto Ensuite un code de mauvaise qualit engendre une faible maintenabilit et ce pour deux raisons Premi rement la mauvaise disposition du code rend difficile la localisation du code modifier lorsqu il devient n cessaire d y apporter des changements par exemple lorsque nous avons modifi les param tres de la commande creer_boite Deuxi mement l absence de factorisation du code partag par les diff rentes pages de l application rend la modification de l ensemble probl matique car il sera n cessaire de copier tout changement l ensemble des pages contenant le code ayant t modifi au risque d en oublier ou de briser le fonctionnement du code en plage 113 Pour faire suite au probl me de la maintenabilit application souffre de limitations im portantes au niveau de la testabilit Elle ne contient en effet aucun test automatis Cette absence se fait sentir tant au niveau des l ments de l interface des pages que du code derri re M me si au cours de nos travaux nous avons rep r plusieurs probl mes dans l application notamment au niveau de la validation des formulaires nous h sitions tenter de les corriger en l absence de tests de non r gression Cette situation est d autant plus irr
39. en cas d utilisation d un fichier oto employ seul 81 nom_fichier_remise tp2 tar gz fichiers_attendus tp2 java Liste java maliste java groupe each tpl decompression gzip dc nom_fichier_remise tar xf Pass unless decompression STDERR FICHIER_COMPRESSE_INCORRECT erreur gt decompression STDERR cause_probable gt Le fichier est compresse incorrectement ou corrompu res_ls ls tp2 fichiers_remis res_ls split fichiers_attendus each do nom_fichier Pass if fichiers_remis include nom_fichier FICHIER_NON_TROUVE fichiers_trouves gt fichiers_remis fichiers_attendus gt fichiers_attendus end res_diff diff Liste java cours java tp2 Liste java Pass unless res_diff STDOUT INTERFACE_A_ETE_MODIFIEE cause_probable gt L interface Liste java a ete modifiee alors que cela n est pas permis Veuillez la remplacer par le fichier original et compiler a nouveau votre travail avant de le rendre Si on se rend ici tout s est bien pass puts Votre travail a pass avec succ s le test de remise Figure 5 1 Exemple de script de v rification de remise avec plusieurs appels de commandes bash 82 processeurs 5 2 2 Analyse de l exemple La mise en uvre d une telle solution s av re consid rablement plus facile sous Oto 2 que dans les versions pr c dentes Hormis le Makefile
40. ensemble r duisait les possibilit s de t ches de correction o les travaux taient compar s entre eux Un autre probl me limitant l utilisation d Oto se trouvait au niveau des performances de sa version initiale Parfois Oto pouvait prendre plusieurs minutes pour retourner le r sultat d une correction ce qui tait probl matique tant pour un enseignant ayant un groupe entier corriger que pour un tudiant qui souhaitait utiliser Oto dans le cadre d un laboratoire not limit dans le temps tels que ceux des premiers cours de programmation l UQAM Or comme nous tions convaincus que l utilisation d Oto dans le cadre d un laboratoire not serait profitable pour les tudiants tel que motiv par les travaux de Becker 6 r gler sa lenteur devenait un objectif important De mani re g n rale nous pouvons affirmer que les d fauts d Oto nuisaient son utilisa tion une plus grande chelle et occultaient ses qualit s intrins ques prometteuses Satisfaire les objectifs de flexibilit et de performance dont nous souhaitions doter Oto devenait d s lors un nouveau d fi de recherche int ressant au niveau de la ma trise en informatique t che que le professeur Tremblay notre directeur de recherche nous a confi e Dans ce m moire nous discuterons des am liorations que nous avons apport es Oto et des d cisions et t ches qui nous ont men s celles ci Dans le chapitre 1 nous discuterons d
41. entre modules individuels et modules collectifs et renomm s pour mettre davantage leur r le en vidence Certains modules furent supprim s leurs fonctionnal it s tant int gr s d autres ou carr ment rendues caduques Les noms des modules selon les versions sont d taill s au tableau A 1 Oto 2 introduit galement le concept de rapports qui viennent augmenter la modularit du r sultat pouvant tre affich l ex cution du script Ajout des modules e produire_statistiques Module collectif permettant de colliger des statistiques sur une note d finie dans un groupe Celle ci doit tre une valeur num rique Ajout des rapports e produire _rapport_complet Affichage de toutes les informations disponibles dans les r sultats fournis au rapport en plus du nom de l valuation de la date de l ex cution et du script Oto utilis pour d finir l valuation 102 Nom sous Oto 1 Nom sous Oto 2 cmd_bash Supprim appel de commandes int gr au langage gcc compiler_gcc javac compiler_javac junit tester_junit junit4 Supprim fusionn avec junit plagiat detecter_plagiat produire_statistiques tester_filtre tester_filtre Tableau A 1 Noms des modules selon la version d Oto APPENDICE B RAPPORT INTERNE VERS LE D VELOPPEMENT D UN MODULE DE D TECTION DU PLAGIAT POUR OTO Ce rapport a t r dig en juin 2008 avant la mise au point d un
42. es Oto pour renommer les modules qui ont t s conserv s et adapt s des versions initiales Un tel renommage avait deux objectifs D abord expliciter le nom du module rendait plus vidente la t che que celui ci cherchait accomplir par exemple detecter_plagiat la place de plagiat Ensuite sans renommage des modules l appel de commandes Unix directement dans le script aurait provoqu des conflits de noms lorsque le nom de la commande correspondait celui d un module par exemple appeler directement le compilateur javac au moyen de la ligne de commande alors qu il existe un module de m me nom 4 3 4 Modifications apport es aux modules L interface des modules a t modifi e sous Oto 2 En plus d une nouvelle variable d claration obligatoire nous avons ajout au module la connaissance du TP ou du groupe sur lequel il s appliquera De plus bien que le nom n ait pas chang le contexte recu par le module ne concerne plus le seul TP en cours de correction mais bien le contexte de correction complet avec des informations sur le script et le groupe entier Une telle capacit permet la correction crois e bas e sur l ensemble des travaux et du fait augmente les capacit s des modules Hormis l ajout des nouveaux champs d claration obligatoire et l ajout des types de 8Ce module tait une copie du module junit qui utilisait une version plus r cente du cadre de tests Les modifications ap
43. exploiter plus efficacement l espace disponible que des cha nes de caract res conventionnelles dont il doit exister autant d instances en m moire qu il y a d occurences dans le programme Dans la syntaxe du langage un symbole est identifiable ses deux points pr c dant les caract res tel que Un_ symbole Au niveau de la mise au point d un DSL la classe Symbol peut tre utilis e pour d finir des m thodes sur les symboles permettant de d finir le comportement d sir 3 3 1 5 Envoi de messages et method_ missing Dans un langage objets un objet peut tre en mesure de r pondre des m thodes qui sont invoqu es sur lui Le nom v ritable de cette propri t est l envoi de messages Lorsque nous invoquons une m thode sur un objet receveur nous lui envoyons en r alit un message portant un nom le nom de la m thode et possiblement des param tres Si l objet poss de une m thode correspondant au nom du message qu il a re u celle ci pouvant avoir t d finie directement dans la classe d finissant l objet ou dans l une de ses super classes il ex cute cette m thode en lui passant les param tres fournis dans le message Du point de vue de la hi rarchie de classes la m thode sera recherch e dans la classe r elle de l objet receveur puis si elle n y est pas trouv e dans les classes sup rieures Si au terme de ce parcours aucune m thode de ce nom n a t localis e le moteur d ex
44. fichier oto 130 E 2 Environnement d ex cution 130 E 2 1 M thodes disponibles dans le script 130 E 2 2 Conservation des attributs 130 E 2 3 Utilisation d un module 130 B24 Rapports qent o 05 242 448 au MMA se we pba D RE Xe 133 F2 5 gt Commandes s m p gerru Sea men GAR Re nt ee ee e de UNSS 133 E 2 6 Contr le de l ex cution 134 E 2 7 Limitation de la liste de r sultats inclus dans le script 134 E 2 8 Substitution de commentaires de r sultats pour le rapport 134 E3 Resultats 2 2 2 tr a EE BA rk el he A 135 E 4 Autres m thodes utiles 135 BIBLIOGRAPHIE os s d deea dae eee ee ea de eee n ee NN 139 1 1 3 1 3 2 4 1 4 2 4 3 5 1 5 2 5 3 5 4 5 5 C 1 C 2 D 1 D 2 LISTE DES FIGURES Sc nario typique d encadrement d un TP par Oto 17 Comparaison du script XML Builder en haut et du code XML en bas Code de la m thode method_missing de XML Builder section 3 4 Exemple de script de correction pour Oto 2 Exemple d exception survenant l ex cution division par z ro Exemple d utilisation des structures de Ruby par un script Oto Exemple de scri
45. information retourn e par le module est plac e dans la variable res_javac Ensuite si la compilation a r ussi en fonction de l information retourn e par le module de compilation le test unitaire est lanc l aide du module tester_junit Ce module individuel a lui aussi besoin du TP mais galement d un param tre lui disant le nom de la classe de test ex cuter Cela fait nous pla ons le r sultat dans la variable res_test Le module tester_junit fournissant l information sur le nombre d erreurs qui se sont produites nous pouvons utiliser 54 ce nombre pour v rifier diverses conditions Si des erreurs se sont produites nous crivons une cha ne expliquant que la compilation a r ussi mais que des erreurs se sont produites Le d tail des erreurs est ensuite conserv dans le TP sous le nom Details pour tre affich ult rieurement dans le rapport de correction la ligne tp Details res_complet detail ligne qui ne conserve que le r sultat detail de l objet res_complet pour l inclusion dans le rapport vitant d inclure des informations superflues dans ce dernier Si aucune erreur ne s est produite un message de f licitations est conserv la place Si par contre la compilation n a pas r ussi aucun test unitaire n est lanc et le message d erreur produit par le module compiler_javac est conserv dans les d tails de la correction Le message fournir l tudiant est conserv
46. l phonie Rails Framework Web Rake Moteur de production de logiciels semblable Make SQL Generation DSL G n rateur de code SQL XMLBuilder G n rateur de code XML Tableau 3 2 Quelques exemples de DSL internes bas s sur Ruby trouv s sur le Web 3 3 1 Aspects de Ruby int ressants pour les DSL internes Un certain nombre d aspects de Ruby rend int ressant son utilisation dans le cadre d un DSL interne Dans cette section nous consid rerons les plus importants d entre eux 3 3 1 1 Classes ouvertes Ruby est capable de modifier dynamiquement le contenu de ses classes Des classes et des m thodes peuvent tre d finies dynamiquement et retir es de l environnement Ruby au cours de l ex cution Cela peut tre fait de plusieurs fa ons mais la plus int ressante consiste tout simplement saisir le nom de la classe n importe o dans le programme comme s il s agissait d une classe que nous venions de d finir puis d finir le nouveau code Par exemple il serait possible d ajouter une m thode la classe Time pour afficher le temps en chiffres romains sans m me ajouter une autre classe qui h riterait de la premi re Le code peut aussi tre ajout en valuant une cha ne de caract res contenant le code d une classe dans le contexte de cette classe 3 3 1 2 Typage dynamique Ruby est un langage typage dynamique Dans un tel langage une variable ne re oit pas de type statique la cr
47. l interpr te des images OtoScript ainsi que du m canisme des modules d extension Quelques unes d entre elles bien qu utilis es un nombre r duit de fois prenaient plusieurs secondes chacune s ex cuter devenant autant de points n vralgiques Par la suite nous avons souhait v rifier si le cadre de corrections de travaux nous per mettrait d en arriver aux m mes conclusions Pour ce faire nous avons limit le profilage d Oto aux tests automatis s des modules gcc javac junit et plagiat Les r sultats obtenus pour ces tests confirm rent les premiers constats le pourcentage de temps consacr l ex cution de programmes externes atteignant plus de 75 Nous n avons pas t surpris de tels r sultats car ces modules taient essentiellement construits pour manipuler des outils externes mettant leurs fonctionnalit s au service d Oto Bien qu int ressants ces r sultats provenaient des tests automatis s d Oto et non d une situation de correction authentique Pour confirmer que le comportement d Oto demeure le m me dans un tel cas nous avons effectu la correction d un groupe de 32 travaux d tudiants qui ont t compar s avec le module plagiat Non seulement ce test a t il permis de confirmer les r sultats des profilages mentionn s pr c demment mais il a mis en lumi re l importance d optimiser le fonctionnement des commandes Oto car la commande corriger_groupe perdait 12 Mentionno
48. la correction n ayant rien pr ciser sur chacun des TP 73 4 4 2 Les rapports sous Oto 2 Sous Oto 2 les rapports ne sont plus produits par le moteur d ex cution des scripts Ils deviennent des entit s ind pendantes semblables aux modules recevant les r sultats obtenus la correction ainsi que possiblement des param tres et retournant soit une cha ne de caract res soit simplement rien La manipulation de cette cha ne est laiss e la discr tion de l utilisateur 4 4 2 1 Diff rences du m canisme d extension Le fonctionnement des rapports est semblable celui des modules sauf au niveau des valeurs retourn es qui ne sont pas d clar es et se limitent un objet de type String ou nil ainsi qu aux param tres re us qui doivent tre plac s dans un objet de type Array si plus d un r sultat doit tre pris en compte dans le rapport Le m canisme d alias des noms de modules fonctionne aussi pour les rapports par exemple les appels produire_rapport_complet et rapport_complet sont quivalents 4 4 2 2 Fusion des r sultats Si plus d un r sultat doit tre pris en compte pour la production du rapport une fusion des r sultats vers une forme interm daire est faite avant l appel au module rapport La fusion support e par la mise en uvre du DSL fusionner_resultats rb vise galement r soudre certains probl mes de noms dont nous traiterons la section 4 4 2 3 Les r sultats son
49. les origines Comment Oto permet il de corriger des travaux Quelles am liorations ont elles t faites Oto depuis ses d buts Quelles applications ont elles t associ es Oto pour faciliter son utilisation Dans ce premier chapitre nous introduirons Oto D abord nous consid rerons la question des outils d aide la correction en accordant une attention particuli re aux outils d velopp s ces derni res ann es Nous pr senterons ensuite Oto de mani re g n rale en en d crivant les termes les concepts et les capacit s th oriques Ensuite nous pr senterons le travail qui a t fait au fil des ans pour en tendre les capacit s et faciliter son utilisation Une attention particuli re sera apport e un ajout que nous avons fait au d but de notre apprentissage de l outil pour lui ajouter la capacit de d tecter le plagiat intra groupe Pour le reste de ce m moire nous nous r f rerons Oto l aide du terme version 1 pour d signer la version d origine d crite dans le m moire de Fr d ric Gu rin 17 La version augment e des modifications apport es par le professeur Tremblay de l interface Web d velopp e par Mohamed Takim 31 du module de d tection du plagiat et de certaines commandes sera identifi e par le terme version 1 Lorsque nous souhaiterons d signer ces deux premi res versions la fois nous emploierons le terme versions initiales La version 2 d sig
50. les serveurs support s par l outil Les temps d ex cution sont rapport s au tableau 6 3 Si nous croyons que de vrais sc narios de correction sont plus sentatifs d ins d f bt Oto 2 ins inclus cett repr sentatifs des gains de performance obtenus avec Oto 2 nous avons n anmoins inclus cette comparaison pour confirmer que les gains ont t v rifi s sur toutes les machines et ne seront pas caus es par les caract ristiques particuli res que pourraient poss der certaines de celles ci Serveur Oto 1 Oto 2 Arabica 1638 82 1521 90 Rayon1 496 65 383 98 Zeta 1304 12 1236 65 Tableau 6 3 Temps d ex cution en secondes de la cha ne de tests selon le serveur utilis Comme nous pouvions nous y attendre les chiffres favorisent Oto 2 sur toutes les machines avec un gain plus significatif pour Rayon1 Les causes de cet avantage iraient notre avis de la plus grande quantit de m moire vive disponible sur cette machine qui diminue le recours 511 est en effet difficile de comparer les tests des diff rentes versions d Oto les composants et la quantit de fichiers devant tre test s n tant pas les m mes De plus l utilisation directe de fichiers oto dans les tests a tendance d savantager Oto 2 car elle devra activer et d sactiver une valuation par test alors qu Oto 1 pouvait r utiliser une valuation pour plusieurs tests dans ce cas l utilisation
51. leurs objectifs g n raux Un langage de programmation g n raliste est un langage permettant de mettre en uvre une vaste gamme de t ches dans diverses applications Du point de vue g nie logiciel sa syntaxe ses concepts et ses capacit s sont g n riques Par exemple le langage Java poss de un grand nombre de classes permettant d effectuer des t ches aussi diverses que de construire et d afficher une interface graphique transmettre des paquets sur les r seaux se connecter des bases de donn es pour changer avec elles utiliser des services de noms mettre du son etc Un tel langage ne vise pas s adapter un domaine d affaires particulier mais plut t satisfaire une vaste gamme de besoins distincts Sa syntaxe refl te ce g n ralisme Java ne disposant pas de mots clefs propres un domaine particulier Un langage sp cifique au domaine l oppos est con u sp cifiquement pour le domaine d affaires auquel il servira 29 Comme l crit Martin Fowler The basic idea of a domain specific language DSL is a computer language that s targeted to a particular kind of problem rather than a general purpose language that s aimed at any kind of software problem En c dant une partie de sa g n ralit un langage sp cifique au domaine permet de gagner en expressivit au niveau de son domaine cible 23 en baissant son niveau d abstraction par rapport au langage g n raliste le langage sp cif
52. nous l avons mentionn au chapitre 2 Oto avait t initialement con u pour la machine Arabica de l UQAM Toutefois les machines Rayon rayonl1 et rayon2 sont plus modernes et plus performantes Nous verrons les diff rences de performances d Oto entre ces machines plus loin dans ce chapitre 2Le lecteur aura aussi remarqu que nous n utilisons pas pour les fins de cette section la machine qui avait t utilis e la section 2 4 2 car nous n avions pas besoin ici d une version de Ruby non support e par PUQAM et souhaitions que les temps obtenus se rapprochent autant que possible de l exp rience laquelle un utilisateur d Oto pourra s attendre Pour des raisons de diff rences technologiques les temps pr sent s ici seront parfois moins rapides que ceux de la machine utilis e au chapitre 2 Nous croyons toutefois que la comparaison significative sera celle effectu e sur une m me machine 3Les tests en question ont t convertis pour faire appel un d marrage complet d une autre instance d Oto ce qui en fait un test plus pr s d un sc nario de correction r el Comme plusieurs fichiers doivent tre charg s et interpr t s sur disque auquel l acc s est co teux le test sera g n ralement plus lent De plus tester_junit comprend plus de tests que le module junit d Oto 1 car il int gre les fonctionnalit s de JUnit 4 lesquelles taient support es par un module s par dans Oto 1 90
53. ou des interfaces permettant de l utiliser Dans cette section nous traiterons de certaines des am liorations qui ont t apport es Oto ainsi que des projets connexes qui ont vis faciliter son utilisation tant pour les tudiants que pour les enseignants 1 3 1 Ajout de modules et de commandes La version 1 d Oto ne comportant l origine qu un ensemble r duit de commandes et se limitant deux modules d extension le d veloppement de nouveaux modules est rapidement apparu important aux yeux du professeur Tremblay Aux modules permettant de compiler des programmes Java et d effectuer des tests avec JUnit celui ci a ajout e Un module de compilation de programmes C avec le compilateur gcc e Un module permettant de lancer une commande quelconque sur le shell e Un module de tests de type filtre sur les entr es sorties Le professeur Tremblay a galement ajout des commandes facilitant l utilisation des tests de type filtre et introspectifs qui permettent de cr er automatiquement les tests et les valuations n cessaires en une seule commande en ne fournissant que les entr es sorties attendues ou le corps des m thodes n cessaires Il a aussi mis en uvre des commandes permettant de lancer directement ces tests 34 1 3 2 Plugin BlueJ L outil BlueJ est un environnement de d veloppement int gr IDE en anglais qui est destin faciliter l apprentissage du langage Java en fournissant un environn
54. outils d aide la correction et d Oto de mani re g n rale sa place parmi les outils d aide la correction ses concepts les termes qu il a introduits Nous pr senterons aussi certains des pro 2Si le d lai ne remettait pas en question la pertinence de la correction il pouvait rendre p nible le d bogage d une t che de correction lorsque plusieurs minutes taient n cessaires pour exposer une erreur dans le script la d crivant 3 tant donn que l tudiant qui attendrait les r sultats d Oto perdra du temps et celui qui ne les attendrait pas perdrait les b n fices du feedback rapide li l utilisation de l outil 4D autant plus qu elles taient et demeurent notre connaissance in gal es par ses pairs jets li s Oto qui ont t d velopp s apr s la mise au point de son noyau notamment un module de d tection du plagiat que nous avons d velopp au cours de notre apprentissage de l outil Au chapitre 2 nous analyserons la mise en uvre et les performances des versions initiales d Oto en fonction des objectifs que le professeur Tremblay nous avait fix s Cette analyse se fera en deux temps D abord nous discuterons de mani re g n rale de la construction de l application partir de nos inspections manuelles et du portage d Oto vers diff rentes machines de type Unix de l UQAM Ensuite nous en identifierons les d fauts qui seront trait s lors des chapitres suivants Notre solution
55. passera par le d veloppement d un nouveau langage de description des t ches de correction bas sur Ruby plus flexible et s ex cutant plus rapidement qu OtoScript Le chapitre 3 pr sentera de mani re th orique l approche que nous avons choisie pour le d veloppe ment de notre nouveau langage soit un langage sp cifique au domaine de type interne internal DSL Signalons qu afin d viter d employer un n ologisme qui nous serait propre nous nous r f rerons aux langages sp cifiques au domaine par l abr viation DSL de l anglais domain specific language qui est courante dans la litt rature Le chapitre 4 pr sentera la mise en uvre de notre DSL ainsi que les modifications que nous avons apport es Oto tant au niveau de sa structure interne de ses modules d extension que de ses tests Nous y traiterons galement des probl mes auxquels nous avons fait face au cours de ces modifications et des solutions que nous avons apport es Les deux derniers chapitres serviront d crire les gains apport s par nos modifications par rapport aux objectifs de flexibilit et de performances Le chapitre 5 servira essentiellement donner des exemples des nouvelles capacit s d Oto Finalement au chapitre 6 nous aborderons la question des performances de l outil et des acc l rations apport es par nos changements CHAPITRE I OTO UN OUTIL POUR CORRIGER LES TRAVAUX DE PROGRAMMATION Qu est ce qu Oto Quelles en sont
56. pour produire un rapport ou tre acc d par un module de correction TEn Ruby les identificateurs pr c d s par les deux points sont des symboles fclient Client java ctest ClientTest groupe each tpl rep_script exporterVers tp repertoire res_javac compiler_javac tp fichiers gt gt fclient if res_javac reussi then res_test tester_junit tp classe gt gt ctest if res_test nberreurs gt 0 then message Le travail a ete compile mais contient une ou plusieurs erreurs tpl Details res_test detail else message Le travail ne contient aucune erreur Felicitations end else La compilation n a pas fonctionne le signaler a l etudiant tpl Details res_javac message_erreur_echoue message La compilation du travail a echoue end tp Message message res_rapport produire_rapport_complet groupe puts res_rapport Figure 4 1 Exemple de script de correction pour Oto 2 55 56 4 1 1 3 Appel de modules Dans Oto 2 nous distinguons deux types de modules de correction les modules individuels et les modules collectifs Un module doit obligatoirement recevoir l objet correspondant la cible de la correction un module individuel doit recevoir l objet tp et un module collectif doit recevoir l objet groupe Cet objet est plac imm diatement entre parenth ses apr s le nom du module avant le passage du bloc des param tres identi
57. r sultats format t s Par d faut tous les r sultats sont inclus Toutefois apr s avoir utilis cette m thode seuls les r sultats sp cifi s en param tres seront inclus obtenir_commentaire identificateur Retourne le commentaire associ au r sul tat correspondant l identificateur ou nil si celui ci n a pas t cr resultats_formattes Retourne un hash contenant les r sultats en tenant compte de la r ussite ou de l chec de l ex cution des commentaires et des la liste d inclusion s il y a lieu Tableau E 5 M thodes de l objet de r sultat individuel 137 M thode Description execute Si l ex cution du module a t r ussie vrai sinon faux non_execute Si ex cution du module n a pas t r ussie vrai Sinon faux reussi tp Si Pobjectif du module a t atteint vrai sinon faux echoue tp Si Pobjectif du module n a pas t atteint vrai sinon faux nom_module Retourne le nom du module type_module Retourne le type du module individuel col lectif ou commande bash description_module Retourne la description du module description_reussi Retourne ce qui doit tre vrai pour qu un TP soit class dans la liste des r ussi description_echoue Retourne ce qui doit tre avoir t chou pour qu un TP soit class dans la liste des ch
58. ruby prof Nos essais furent r alis s sur notre poste de travail au LATECE sous Selon Tim Bray directeur chez Sun Microsystems la Silicon Valley Ruby Conference http www theregister co uk 2008 04 21 bray_ruby_rails en avril 2008 10Bien que nous estimions que notre critique soit l gitime la priorit des premi res versions d Oto tait de prouver la faisabilit de leur approche g n rique et non la performance comme nous l avons d j remarqu Inttp ruby prof rubyforge org 30 Linux Ubuntu 8 04 Remarquons que les performances de ce poste r cent taient telles que les temps d ex cution obtenus furent souvent inf rieurs aux d lais des serveurs de PUQAM pour la compl tion des m mes t ches 2 4 1 Profilage En premier lieu nous avons effectu le profilage de l ex cution de tous les tests d Oto lanc s au moyen de la commande tester_module employ e seule Il aurait t possible de sp cifier un test ou un ensemble de tests en sp cifiant leur nom en param tre la commande Les r sultats obtenus nous ont permis de faire deux constats int ressants D abord Oto passe la majeure partie de son temps appeler des programmes externes soit plus de 63 Ensuite le reste du temps d Oto tait divis entre diff rentes m thodes manipulation de cha nes de caract res lecture de fichiers manipulation de fichiers et de r pertoires etc Ces m thodes provenaient surtout de
59. s grand sur leur ex cution et taient limit s dans leurs capacit s ne disposant que d un ensemble restreint de structures Toutefois le principal probl me tait qu Oto ne poss dait pas une vision de groupe tous les travaux taient consid r s de mani re ind pendante Un tel paradigme handicapait 95 la fois la flexibilit de l outil limitant la correction intra groupe et diminuait les performances car le m me script tait charg et interpr t autant de fois qu il y avait de travaux corriger dans un groupe La solution que nous avons propos e est venue combler une majeure partie des exigences de flexibilit et de performances d Oto haussant consid rablement ses capacit s en terme de correction simplifiant le d veloppement de scripts Oto le tout en s ex cutant plus rapidement que les versions initiales Un DSL interne venant s int grer au langage Ruby dans lequel Oto tait d velopp diminuait la complexit de la mise en uvre car il nous offrait ses structures et ses capacit s sans que nous ayons d ployer d efforts particuliers Cette gratuit avait toutefois un prix la syntaxe du langage que nous allions mettre en uvre devait tre du code Ruby valide Cette obligation pouvait cependant tre vue comme un avantage car il nous paraissait plus facile de convaincre un utilisateur potentiel d Oto d imposer un apprentissage pr alable s il pouvait r utiliser ses connaissances avec d
60. sorties vraisemblablement en raison de la complexit de leur mise en uvre et du nombre d l ments impliqu s traducteur de scripts Oto module Oto en Ruby scripts C She11 machine virtuelle Java etc Toutefois si la question des performances a t en quelque sorte l origine de notre projet nous nous sommes rapidement rendu compte que la flexibilit repr sentait un probl me encore plus important pour la r ussite d Oto lorsque nous avons song porter Oto du serveur pour lequel il fut d velopp le vieillissant Arabica vers des machines plus r centes pour en quelque sorte contourner les d lais observ s par le professeur Tremblay Cette migration sera abord e au prochain chapitre Nous ne nous sommes pas toutefois limit s compter sur une am lioration des perfor mances du mat riel pour hausser les performances d Oto Profitant de la mise en chantier de l outil afin d en am liorer la flexibilit nous nous sommes efforc s de choisir de nouvelles approches moins co teuses en performances que certains choix qui avaient t faits pour les versions initiales d Oto 4 3Qui taient de nature anecdotiques Toutefois en l absence de donn es d utilisation d Oto grande chelle lors de situations de tests nous estimons qu elles furent n anmoins suffisantes pour soulever des doutes quant aux performances de l outil 4 la d fense de ces derni res remarquons toutefois qu Oto visait in
61. un exemple de script XML Builder avec en bas le code XML correspondant Pour simplifier l criture du fichier XML Builder retire les l ments syntaxiques crochets signe d galit du XML pour ne conserver que les informations qu il contient Au lieu de crochets le nom des balises est saisi directement Une balise plac e directement sous le premier niveau dans l exemple le lt project gt est cr e en mentionnant son nom la suite de l objet xml comme xml project Les attributs sont sp cifi s l aide de la syntaxe des hashes Ruby avec le nom la gauche et la valeur la droite de l op rateur gt Pour ins rer des balises l int rieur d une autre balise la balise de niveau sup rieur re oit un bloc Ruby d limit par les mots clefs do end Le nom de ces balises est crit directement sans avoir recours l objet xml comme les diff rents target de la figure 3 1 A la fin de exemple le fichier XML g n r est affich l cran 6 Extended Markup Language un ensemble de r gles permettant de transporter et de stocker textuellement des informations de mani re structur e La particularit de ce langage est que le stockage se fait gr ce un ensemble de balises g n riques imbriqu es dont la syntaxe est semblable celle du HTML Un document XML doit tre bien form c est dire satisfaire les r gles strictes conditionnant les fichiers XML et valide ce qui signifie que son con
62. valeurs appropri es Texte entre crochets texte Les l ments entre les crochets sont option nels Les crochets eux m mes doivent tre omis sauf dans le cas de la conservation des r sultats et des param tres des rapports Texte simple Nom utiliser tel quel l utilisation Tableau E 1 L gende des exemples de la syntaxe d Oto 130 E 1 Appel Oto sur la ligne de commande E 1 1 Ex cution de commandes Oto oto nom_commande param tres parametres parami valeur1 fichiers x tp_oto E 1 2 Ex cution par fichier oto oto script oto parametres parami valeur1 fichiers tp_oto E 2 Environnement d ex cution E 2 1 M thodes disponibles dans le script Le tableau E 2 pr sente un certain nombre de m thodes offertes par la classe Environnement Execution et faisant partie de l interface de programmation des scripts Ces m thodes donnent des informations sur le groupe corriger et le script de correction utilis Plus particuli rement les m thodes de l objet groupe sont pr sent es au tableau E 3 Les scripts disposent galement d un certain nombre de m thodes destin es simplifier la manipulation et le traitement des r sultats obtenus Ils sont pr sent s au tableau E 4 E 2 2 Conservation des attributs groupe each tpl Ecriture de la valeur tpl identificateur identificateur variable resultat Lecture de la v
63. 2 6 2 Copie des fichiers du script dans les r pertoires Contrairement ce qui se faisait dans les versions pr c dentes les fichiers inclus dans l activation de l valuation en sus du script ne sont pas copi s dans les r pertoires des TP au d but de la correction La copie doit d sormais tre faite de mani re explicite Nous avons effectu ce changement pour trois raisons D abord en n ajoutant rien au contenu des r pertoires des TP il sera plus facile de prendre acte de ce contenu ou de le modifier Ensuite en proc dant ainsi ex cution du script est moins d pendante de la liste de fichiers inclus l activation de l valuation au niveau des fichiers requis l ex cution ceux ci pouvant provenir d ailleurs dans l espace disque du correcteur Finalement la copie implicite semblait violer le principe de moindre surprise notamment lorsqu un fichier dans un TP tait de m me nom que celui inclus l activation de l valuation 4 2 6 3 Passage de param tres au DSL Les versions initiales d Oto ne permettaient pas de passer de param tres au script depuis la ligne de commande Or nous avons r alis qu une telle caract ristique rendait les scripts plus souples Par exemple pour le cours Programmation Parall le INF5170 de m mes cas de tests T tant donn que dans ce cas le fichier du TP ne serait pas cras Une telle situation peut poser probl me si un enseignant tentait d craser l
64. 2222 4 44448 5 5440 44564554 bb bt ix RESUME a parra Fis deat ye ae bene Gy bo hb abel de ee eee x INTRODUCTION cocida e PRR OSS ER eR ba a OP eee le ees 1 CHAPITRE I OTO UN OUTIL POUR CORRIGER LES TRAVAUX DE PROGRAMMATION 4 1 1 Des outils d aide la correction 5 1 2 Oto un outil g n rique et extensible 7 1 21 Commandes Oto o s s s o s pee ee aie pos ee rue 8 1 2 2 Modules d extension e 8 1 2 3 Evaluation et script d valuation 9 1 2 4 Exemple de sc nario d utilisation 10 1 35 Les projets li s 4 Ot0 lt 2 te ee eee RU SSSA ee A EE Ut EA 11 1 3 1 Ajout de modules et de commandes 11 1 3 2 Plugin Bluey ua E as 11 1 3 3 Application Web 0002000 a aa a e ee 12 1 4 Un module de d tection du plagiat 12 LATE SIM ects ch he oe in ne E a Ar Ne en D A 13 1 42 Mise ern UVTE o 2 2 mp a NS ME aa A ee a 14 LAS REUS e MAN RSR QE EE te MS da 15 1 5 Suite de ce m moire 15 CHAPITRE IT PROBL MES ET STRUCTURE DES VERSIONS INITIALES DOTO 16 2 1 Probl mes des premi res versions d Oto 16 2 1 1 Activation ex cution et d sactivation de l valuation 17 2 1 2 Structures de contr le 17 2 1 3 Diffic
65. AM disposant de diff rents environnements de type Unix Ce portage ne s av ra pas sans difficult s Dans cette section nous examinerons les difficult s li es un portage sous environnement Unix puis nous nous demanderons s il serait possible de le faire fonctionner sous d autres familles de syst mes d exploitation 2 3 4 1 Passage d un environnement Unix un autre Au niveau du code source d Oto le passage d un Unix un autre ne nous a pas pos de probl mes majeurs La principale difficult venait d appels syst mes faisant r f rence des commandes et qui taient cod s en dur ce niveau les commandes de type Cr er et activer valuation faisant appel des scripts C Shell durent tre modifi s Ceux ci n ayant sans doute pas t con us dans l optique d tre port s leur code tait peu factoris et supposait qu une instance d Oto tait accessible dans le PATH Nous avons clarifi le code et pass en param tre le chemin absolu vers l instance d Oto invoquer pour effectuer leurs t ches Un script destin chaque serveur fut cr L environnement Oto indiquait alors aux commandes et aux modules quel script utiliser ce qui limitait la duplication du code des premi res et simplifiait l entretien des scripts 3 8Certes au prix de la duplication du code des scripts mais proc der ainsi r duisait le nombre total de modifications en n alt rant pas les param tres pass s
66. Nous en traiterons plus en d tails au chapitre 2 et lui consacrons l appendice C 1 4 Un module de d tection du plagiat Notre phase d apprentissage initiale de l architecture d Oto compl t e nous avons cherch parfaire notre compr hension du fonctionnement de ses modules en en d veloppant un nouveau ce sujet les id es ne manquaient pas d tection du plagiat valuation qualitative du code source du TP de l tudiant d tection de la pr sence de certains mots clefs comme le goto etc C est finalement sur le premier que notre choix s est arr t car la question du plagiat tenait particuli rement c ur tant au professeur Tremblay qu l auteur de ces lignes d autant plus que nous tions convaincu qu ajouter un module simple utiliser pour d tecter le plagiat intra groupe dans les travaux d tudiants deviendrait un argument contribuant la diffusion d Oto L id e tait d s lors de mettre au point un module qui pourrait examiner le code source des TP et mettre en vidence ceux dont la similitude serait suspecte afin d inciter l enseignant 5Qui serait en mesure de v rifier par exemple la pr sence de commentaires aux endroits appropri s 6Troniquement nous avions fait ce choix avant que la question du plagiat ne soit abord e dans les m dias montr alais en 2008 13 les v rifier Il allait de soi que ce module serait essentiellement utilis dans le cadre de
67. Oto Cette mise en uvre concerne d abord le DSL lui m me et ensuite les modules d extension qui furent adapt s de ceux d Oto 1 les rapports dont la mise en uvre a priori similaire aux modules diff re n anmoins plusieurs niveaux puis l adaptation du reste d Oto particuli rement les commandes aux changements apport s aux scripts Il sera galement ques tion de l adaptation des tests int gr s Oto ainsi que de divers probl mes auxquels nous avons fait face et des solutions trouv es pour y rem dier 4 1 Notre solution Pour mettre en uvre le DSL Oto nous avons choisi Ruby comme langage h te Ruby r pondait plusieurs des exigences que nous avions mentionn es la figure 2 2 c est un langage objets qui fournit des structures de boucles et de blocs Une telle solution nous permettait de nous concentrer sur l appel des modules des rapports et des commandes ainsi que la manipulation des r sultats retourn s par ceux ci De plus cette approche r duisait la courbe d apprentissage d Oto par un utilisateur connaissant d j Ruby 53 4 1 1 Pr sentation du DSL Oto Dans cette section nous examinerons un exemple de script de correction pour Oto 2 Apr s l avoir pr sent nous discuterons de ses concepts 4 1 1 1 Exemple de script de correction Oto 2 La figure 4 1 pr sente un script Oto coordonnant un sc nario de correction typique Celui ci vise corriger un programme Java d abor
68. SIM Le logiciel que nous avons choisi pour les fins de comparaison se nomme SIM 16 Notre choix a t bas sur plusieurs crit res D abord c tait un logiciel source ouvert d velopp en langage C Ensuite nous pouvions conserver une copie locale de l ex cutable contrairement d autres outils o les fichiers compar s devaient tre transf r s sur un serveur distance qui se chargeait lui m me de la correction Finalement SIM pouvait tre adapt plusieurs langages de programmation simplement en d finissant les jetons de ces langages alors que d autres outils se destinaient comparer les fichiers d velopp s dans un seul langage cible Consid rant que TLa correction manuelle tant ce qu elle est il serait vraisemblablement difficile pour lui de reconna tre la similitude en cas de faible localit temporelle entre leur correction dans le cadre d un groupe de taille importante 8 vitant ainsi de mettre Oto et l UQAM en situation de d pendance un service fourni par une autre institution d enseignement ou une entreprise 14 nous souhaitions qu Oto puisse tre utilis dans le cadre d un maximum de cours d informatique offerts l UQAM nous ne pouvions nous restreindre d tecter le plagiat dans un seul langage 1 4 2 Mise en uvre La mise en uvre de notre module de d tection du plagiat a repris les deux phases dont nous parlions plus haut Celle ci ne s est pas faite s
69. UNIVERSIT DU QU BEC MONTR AL UN LANGAGE SP CIFIQUE AU DOMAINE POUR L OUTIL DE CORRECTION DE TRAVAUX DE PROGRAMMATION OTO M MOIRE PR SENT COMME EXIGENCE PARTIELLE DE LA MA TRISE EN INFORMATIQUE PAR PAUL LESSARD F VRIER 2010 REMERCIEMENTS Avant tout et plus que quiconque j aimerais remercier mon directeur de recherche le professeur Guy Tremblay pour sa confiance son soutien et pour avoir cru en moi au cours des derni res ann es malgr les t ches suppl mentaires associ es son mandat de directeur du D partement d informatique de l UQAM Je le remercie galement pour son soutien financier qui m a permis entre autres de b n ficier de bourses FARE Aussi un merci tout particulier Fr d ric Gu rin l auteur principal de la premi re version d Oto m me s il a choisi d embrasser un domaine autre que l informatique Si jamais tu lisais ces lignes Fr d ric saches que je suis tr s admiratif de ton travail avec Oto et que c est avec le plus grand respect que je me suis donn pour mission de le parfaire la lumi re de l exp rience acquise l utilisation de ta premi re version Par ailleurs je remercie aussi les professeurs charg s de corriger ce m moire Ensuite je me permettrai de saluer mes coll gues de la ma trise et du doctorat en infor matique entre autres Jean S bastien G linas pour les d ners et autres moments innombrables o nous avons procrastin ensemble Ab
70. a version remise par un tudiant d un fichier qu il avait lui m me fourni par exemple une interface Java 68 devaient tre ex cut s avec une quantit variable de processeurs Un param tre fournir au lancement de la correction serait dans un tel cas la liste du nombre de processeurs utiliser Dans le script Oto les param tres sont disponibles par un hash parametres o le nom du param tre sera la clef 4 2 6 4 Manipulation de variables d environnement Pour reprendre l exemple pr c dent la d finition du nombre de processeurs accessibles par un programme parall le MPD 3 se fait en d finissant une variable d environnement Sous les versions initiales d Oto il fallait utiliser des scripts bash ce qui alourdissait l utilisation d Oto Dans les scripts du DSL Oto la manipulation de variables d environnement se fait comme dans un programme Ruby le hash global ENV associe le nom des variables et leur contenu qui doit tre de classe String Cette fonctionnalit r duit le recours des fichiers tiers 4 3 Modules Dans le DSL Oto les modules d extension conservent un r le important dans la satis faction des t ches de correction Ils disposent d sormais de plus grandes capacit s tant dans les param tres qu ils re oivent d sormais des objets que dans leur potentiel au niveau de la correction Dans cette section nous examinerons la mise en uvre des modules dans Oto 2 par ticuli rement
71. adre Oto dispose d assertions et d une version modifi e du cadre de tests Ruby Test Unit fonc tionnant de mani re hi rarchique c est dire qu un cas de test peut exiger la r ussite d autres cas avant de s ex cuter De plus Oto fournit des classes destin es faciliter le travail du d veloppeur de tests en permettant de cr er pour lui des r pertoires temporaires et en y copi ant les fichiers dont il a besoin Un fichier de tests devrait exister pour chaque fichier rb de mise en uvre et tre plac dans le m me r pertoire que celui ci Mentionnons toutefois que ce m canisme de tests ne peut valuer la qualit ou la justesse des tests qu il ex cute Si les sc narios inclus avec l application taient inappropri s ou incomplets leur utilit serait r duite L infrastructure mise en place par Oto permet toutefois au d veloppeur de se concentrer sur les cas tester en mettant sa disposition les services n cessaires leur ex cution ce qui nous en sommes convaincus contribue en hausser la qualit 2 3 Critique des choix architecturaux et de mise en uvre Dans cette section nous traiterons de certains choix architecturaux d Oto particuli rement la mise en place de son environnement d ex cution le langage OtoScript les modules d extension les rapports de correction et le m canisme de testabilit Nous discuterons des strat gies de mise en uvre utilis es de leurs forces
72. ainsi qu au niveau de la r utilisa 2En anglais application programming interface APT 3C est dire un message auquel aucun objet n a r pondu 62 tion du code les scripts pouvant acc der aux services offerts par Oto elle fragilise toutefois Papplication En effet comment une erreur survenant l ex cution est elle g r e par Oto Quelles en sont les cons quences sur l ex cution de l outil T ex cution du script Oto se fait en lisant d abord le fichier du script comme un fichier texte en chargeant son contenu dans une variable puis en en lan ant l ex cution au moyen de la m thode instance_eval Celle ci se fait l int rieur d un bloc de code begin rescue qui en Ruby permet d intercepter les erreurs et exceptions survenant l ex cution le script pourrait tre mal crit et ne pas tre un programme Ruby valide ou une exception telle qu une division par z ro pourrait survenir l ex cution Dans un tel cas Oto intercepte le probl me le signale l utilisateur et termine sa propre ex cution proprement en nettoyant ses traces Le message qui sera affich est l exception Ruby telle quelle sans analyse ou simplification Comme nous Pavons vu la section 3 2 5 ceux ci seront parfois peu significatifs et difficiles interpr ter Il s agit l d un des inconv nients des DSL internes Nous pr sentons la figure 4 2 le message qui sera retourn l utilisateur l
73. ait plus se limiter un affichage sur la sortie standard et devait pouvoir par exemple tre envoy par courrier lectronique Un rapport devait galement pouvoir ne rien afficher l cran mais copier ses r sultats dans un entrep t externe Les r sultats de certains rapports devaient galement pouvoir tre format s en XML pour tre lisibles par la machine Pour ce faire nous avons imagin un m canisme de modules rapports similaire aux modules d extension Les rapports feront notamment l objet du chapitre 4 de ce m moire 36 2 6 2 Am liorations souhaitables En plus de celles que nous avons effectu es dans le cadre de notre travail les am liorations que nous qualifions de souhaitables contribueraient la diffusion d Oto Le remplacement de Papplication Web fait galement partie de cette cat gorie car la version actuelle si limit e qu elle soit demeure compatible avec la majeure partie des modifications jug es n cessaires que nous avons effectu es 2 6 2 1 Utilisation de Ruby 1 9 0 Les changements n cessaires Oto pour qu il s ex cute sous Ruby 1 9 0 sont minimes Par ailleurs les tests que nous avons effectu s sous cette version nous ont permis de constater que celle ci provoque en g n ral une l g re hausse des performances de l application Seul le module plagiat a b n fici d une acc l ration importante Malgr ces r sultats encourageants lorsque nous avons tent pa
74. ait qu un compte rendu n ayant rien voir avec la r ussite ou l chec d un script Finalement les rapports d Oto taient peu adapt s la lecture logicielle de leurs r sultats ce qui limitait les possibilit s de leur formatage par une application externe Si le rapport de correction tait relativement facile lire par humain il n en tait pas de m me pour les programmes externes d sirant manipuler ces r sultats en l absence d un standard de nomenclature d affichage entre les modules et surtout d un balisage lisible par une machine 27 L application Web d Oto dont nous traiterons plus en d tails la section 2 5 souffrait clairement de cette incapacit traiter les r sultats d une valuation par la machine car le rapport tait pr sent sous forme de texte brut non format Aucune information sur la v rifi cation n est pr sent e en dehors de ce champ alors qu une pr sentation qui aurait exploit les capacit s inh rentes l emploi du HTML ou du XML par l application Web listes tableaux avec niveaux que l utilisateur peut d rouler ou replier aurait t plus claire 2 3 4 Portabilit La portabilit d Oto est un sujet important car l outil se veut une approche g n rique et adaptable au plus grand nombre possible de situations de corrections Au cours de notre recherche nous avons t amen s porter l outil d velopp sous Solaris vers plusieurs machines de PUQ
75. aite afficher qu une partie du r sultat par exemple les d tails d une erreur d tect e par un test introspectif Pour ce faire la m thode inclure_resultat permet de sp cifier un identificateur ou une liste d identificateurs qui doivent tre inclus Les extraits de rapports que nous pr sentons aux figures 5 4 un extrait pr sentant les statistiques sur les notes obtenues durant la correction et 5 5 le r sultat individuel obtenu par l tudiant dont le travail ne compilait pas affichent bien les informations attendues D abord le module de production de statistiques s acquitte normalement de son travail Il s agit d un cas o un texte seul sera utilis le r sultat n tant pas accompagn d une liste d tudiants ayant r ussi ou chou et le d tail de chacun des tudiants ne contient pas de trace de ce module Bien qu il eut t th oriquement possible d arriver un r sultat similaire avec les versions initiales d Oto colliger ces valeurs aurait exig une manipulation complexe du rapport au moyen d au moins un script bash Nous pouvons constater que le second pr sentant l extrait consacr l tudiant dont le travail a chou certains tests illustre bien la limitation de la liste des r sultats retourn s par le module tester_junit qui ne comprend que les d tails retourn s par le cadre de test alors qu elle comprendrait normalement plusieurs identificateurs contenant des informations sur le
76. ake telles que d finies dans le fichier et en colliger les r sultats dans un fichier Pour rendre les choses plus int ressantes le professeur Tremblay ayant pr vu deux s ries de tests une s rie publique et une priv e nous utiliserons un param tre pass au DSL pour que la bonne sorte de tests soit choisie l ex cution et le script adapt en cons quence Une fois que la sorte de tests ex cuter est choisie pour chacun des TP nous copions dans leur r pertoire les fichiers fournis l activation de l valuation pour les tests ceux ci sont lanc s et les r sultats obtenus sont conserv s sous des noms significatifs tant donn qu il s agit d un langage parall le nous testons l ex cution avec divers nombres de processeurs disponibles ceux ci sont d finis dans une variable d environnement la fin de la correction avec un nombre donn de processeurs le rapport est produit Aucun r sultat n est affich l cran tout est crit directement dans un fichier Le script boucle sur le nombre de 4T ne nous parait pas risqu d affirmer que les d veloppeurs de scripts Oto seront des programmeurs confirm s puisqu ils seront essentiellement professeurs ou charg s de cours du fait vraisemblablement titulaires de ma trises ou de doctorats en informatique De plus nous croyons que cet apprentissage serait galement la port e d un auxilaire d enseignement dou 50u sur la ligne de commande
77. aleur valeur_resultat tpl identificateur identificateur variable E 2 3 Utilisation d un module res_module nom module tplgroupe f nom_parametre_module gt gt valeur_parametre 131 Service Description Classe du r sultat attributs Utilis sur un objet de r sul tat retourne la liste des att ributs de cet objet Array groupe Le groupe corriger ContexteGroupe parametres Les param tres re us depuis la ligne de commande Si aucun param tre n tait pr sent ne contient aucune entr e Hash methodes Utilis sur un objet de r sultat retourne la liste des m thodes de cet objet Peut galement tre utilis seul dans le script de correc tion pour obtenir la liste des m thodes offertes par l environnement de correc tion Oto Array rep_script Le chemin absolu du r per toire temporaire contenant une copie du script de cor rection et des fichiers fournis par l enseignant String rep_base Le chemin absolu du r per toire partir duquel Oto a t invoqu String Tableau E 2 Interface de programmation des scripts 132 M thode Description commentaires Retourne un hash ordonn contenant les commentaires de r sultats individuels dans le groupe each Parcours les TP du groupe en ex cutant pour chacun le bloc pass en param tres L objet TP en cours de correc
78. ammes des tudiants avec GCJ auquel nous aurions sp cifi un niveau d optimisation qui inclurait le inlining 110 B 6 Conclusion Face la facilit avec laquelle il est possible de copier un travail de programmation ainsi que l existence de nombreuses astuces permettant de masquer la ressemblance entre deux pro grammes avec un succ s variable combin es des groupes d tudiants qui sont souvent de grande taille automatisation partielle de la d tection du plagiat appara t comme une solution naturelle tant une suite logique l automatisation partielle de la correction des travaux Notre approche qui consisterait en l emploi d outils externes sp cialis s chacun en une t che pr cise simplifie le d veloppement d un module vou la d tection de la triche et permet une plus grande modularit tout en en facilitant la maintenance future Elle nous permettera aussi de limiter les faiblesses de chacun des outils pris individuellement au lieu de r inventer la roue en cr ant de toute pi ce un nouvel outil de d tection de plagiat APPENDICE C ANALYSE DE L APPLICATION WEB D OTO Dans cet appendice nous traiterons de l application Web d Oto 31 Cet exercice se veut un compl ment notre analyse d Oto qui tait pr sent e dans ce m me chapitre Nous consid rerons l application Web sous plusieurs aspects D abord nous discuterons de son archi tecture et de sa mise en uvre interne Nous pr
79. ans alt rer la t che elle m me Au niveau de la quantit de travail faite par l application certains aspects ont t am lior s par la nouvelle version L ex cution des scripts par exemple ne se fait qu une seule fois au lieu d autant de fois qu il y a de TP corriger Bien que la quantit de travail effectuer demeure la m me au niveau des t ches de correction individuelles l utilisation de modules collectifs est nettement avantag e r duisant une seule fois le chargement du module la validation des param tres et le retour des r sultats obtenus Les modules collectifs tant d sormais support s par Voutil de mani re native celui ci n est plus ralenti par l application du subterfuge que nous avions utilis pour les faire fonctionner dans les versions initiales voir la section 2 3 2 3 De plus l augmentation des capacit s de correction notamment en permettant au script d crire dans des fichiers r duit d autant le nombre de niveaux d applications n cessaires la mise en uvre ce qui contribue hausser ses performances M mes certains aspects insoup onn s de l application peuvent b n ficier des modifications 6 Tel que le chargement d Oto en m moire le parcours de ses fichiers l appel de la commande utiliser le m canisme d ex cution du script etc 93 que nous lui avons apport es en terme de performances notamment les erreurs dans les scripts Oto L o les versions in
80. ans heurts nous verrons pourquoi la section 2 3 2 3 D abord nous traitions les fichiers pr sents dans les r pertoires des tudiants Cela pouvait se faire de plusieurs mani res Par d faut le module ne faisait aucune validation il consid rait tous les fichiers de tous les TP du groupe corrig et les comparait tous les autres Nous avons toutefois ajout certains param tres tous optionnels destin s augmenter la puissance et la flexibilit du module e Permettre de choisir le langage cible parmi une liste pr d finie Par d faut le module s attend des fichiers Java e Exclure ou inclure des fichiers de la comparaison Une telle possibilit est utile dans le cas o tous les TP disposeront de certains fichiers communs comme une classe Java facilitant la manipulation des entr es clavier telle qu utilis e dans le cours INF1120 e Indiquer o seront les r pertoires contenant les fichiers devant tre compar s au r pertoire courant Une telle mani re de faire permettait un enseignant de se construire une banque de travaux pratiques et de comparer les travaux d un groupe cette banque pour d tecter les cas o un tudiant reprendrait un travail remis par un autre une session pr c dente e Sp cifier le plancher au del duquel le module suspectera un cas de plagiat La valeur de ce plancher devait tre proportionnelle au contenu commun dans un fichier Normalement plus le fichier sera g
81. ant que possible l interface doit tre utilisable au moyen de plusieurs dispositifs souris clavier etc Les raccourcis clavier doivent permettre Putilisation plus rapide de l interface Aide la gestion des erreurs Les erreurs survenant l ex cution doivent tre mentionn es l utilisateur dans une langue claire et de mani re ce qu il puisse comprendre Un exemple de ce qu il ne faut pas faire serait une erreur telle que Erreur dans le VXD l adresse OEFF 3A47 gt Pr vention des erreurs Les interfaces doivent tre con ues de mani re pr venir les erreurs Par exemple un mod le peut tre inclus dans un champ texte destin recevoir un num ro de t l phone 116 10 Aide et documentation Pour chaque fonctionnalit de l interface une aide en ligne doit tre disponible C 2 4 Description de pages types de l application Web Dans cette section nous consid rerons en d tails deux des interfaces de l application Web Pour chacune nous la d crirons en mentionnant les d fauts et probl mes rencontr s C 2 4 1 cran de connexion D abord analysons l cran de connexion qui est la premi re page atteinte par l utilisateur de l application Web d Oto Un logo occupe le centre du haut de l cran qui sert identifier Papplication comme tant Oto En dessous un formulaire permet l utilisateur de saisir son code d acc s et son mot de passe du laboratoire
82. ation annotation de type son type d pend enti rement de la valeur qui lui est assign e type dynamique Ce type est alors associ a la valeur et non 4 la variable elle m me par opposition un langage typage statique utilisant l inf rence de types Un langage typage dynamique convient mieux pour le d veloppement de DSL internes car dans un tel cas il sera vraisemblablement plus facile de cacher le langage h te que si les types 45 devaient tre d clar s explicitement par annotation ou s il n tait pas possible de r utiliser une variable parce qu un type lui a t attribu l instanciation inf rence de types 3 3 1 3 R flexivit Comme certains autres langages notamment Java Ruby est un langage r flexif Une classe peut informer un requ rant de ses m thodes de ses variables d instance et de ses super classes Surtout en Ruby toutes ces m ta informations peuvent tre manipul es et modifi es Ainsi il sera possible de changer dynamiquement leur comportement 3 3 1 4 Symboles En Ruby un symbole est une cha ne de caract res invariable et respectant le principe d unicit c est dire que la liste des symboles utilis s est conserv e en m moire de sorte qu un symbole ne sera d fini qu une seule fois travers un programme Ruby Les diff rentes occurences d un symbole dans le programme Ruby font toutes r f rence une unique cha ne en m moire ce qui permet d
83. au niveau des changements apport s par rapport aux versions initiales de l outil 4 3 1 Modifications g n rales apport es aux modules Comme nous l avons vu la section 4 1 1 3 nous avons divis les modules en deux cat gories individuels et collectifs Ceux ci ne diff rent qu au niveau des donn es qui leur sont fournies et des r sultats attendus alors que le module individuel re oit un seul TP et retour nera un r sultat individuel le module collectif recevra le groupe entier et retournera un r sultat collectif La structure des param tres du module ou du rapport d finit partir d Oto 2 le type du param tre Une telle modification tait n cessaire en raison du passage d objets comme param tres Cette validation se fait l aide de la m thode is_a qui permet de v rifier l appartenance d un objet une classe ou une de ses sous classes 69 4 3 2 Ajout et suppression de modules partir d Oto 2 les modules cmd_bash et junit4 disparaissent Le premier est remplac par l appel de commandes directement dans les scripts alors que le second est fusionn avec le module JUnit r gulier le choix de la version utilis e tant fait par un param tre optionnel Nous avons galement ajout le module collectif produire_statistiques permettant de compiler des statistiques sur un r sultat pr sent dans les TP 4 3 3 Renommage de certains modules Nous avons profit des modifications apport
84. au r sultat o nous pla ons la valeur en fonction du TP concern Le code de la m thode d ajout d un r sultat est pr sent ci bas def ajouter_resultat nom_ resultat nom_repertoire valeur var_resultat nom_resultat self instance_variable_set var_resultat HashFactory hash_ordonne unless self instance_variables include var_resultat self instance_variable_get var_resultat nom_repertoire valeur 11Par d faut les hashes de Ruby 1 9 et ult rieures conservent l ordre d insertion Toutefois au moment d crire ces lignes Oto demeure destin 4 Ruby 1 8 6 notamment parce que les versions 1 9 et ult rieures modifiaient certains aspects fondamentaux du langage et demeuraient exp rimentales 72 end 4 3 5 3 R sultats collectifs quoi inclure dans le rapport Au niveau des r sultats de modules collectifs le DSL Oto permet de restreindre les r sultats un ou plusieurs ensembles qui seront affich s dans le rapport Ces trois ensembles permettent l inclusion de diff rents r sultats Par d faut un r sultat collectif fournira deux ensembles au rapport D abord un r sultat collectif regroupant les TP ayant r ussi puis ceux ayant chou l objectif du module afin de les afficher ensemble Ensuite pour chacun des TP un r sultat semblable aux r sultats individuels qui d taille le r sultat propre au TP dans la correction de groupe Il est galement possible d afficher une
85. autant plus que cette page est un cran de connexion o rien n a t fait et par cons quent rien n est annuler C 2 4 2 cran de v rification d un TP Consid rons maintenant un cran que les tudiants pourraient tre amen s utiliser Poccasion soit celui leur permettant de faire une v rification de leur TP La forme de la page son apparence le positionnement du menu et la conception des Widgets de la plupart des crans sont tr s similaires celle ci L un des aspects positifs de cet cran est que contrairement la connexion l cran de v rification d un TP occupe tout l espace horizontal disponible Par contre la taille des l ments affich s est mise en uvre avec des valeurs absolues ce qui ne permet pas de redimensionnement correct alors qu il aurait t souhaitable de pouvoir redimensionner la fen tre et que les l ments de l cran s y adaptent ce qui est appel du design liquide Cette page est divis e en quatre sections distinctes Une bande en haut et gauche de l cran semble indiquer que l utilisateur est authentifi en tant qu tudiant OTO_ ETUDIANT Si ce rappel n est pas mauvais en tant que tel le choix d un identificateur blanc sur un fond p le en rend la lecture difficile De plus cette expression n est pas aussi claire qu elle aurait pu l tre car il serait possible d en d duire tort qu Oto est un tudiant ou m me que l
86. autre information soit une simple cha ne de caract res d informations d taill es sur la correction Le choix de fournir un ou l autre deux ou les trois ensembles est d fini dans le module collectif en fonction de son r le et de ses besoins 4 4 Rapports Par rapport aux versions initiales les rapports du DSL Oto sont plus souples d utilisation et plus puissants En tant modulaires et en ne s affichant plus syst matiquement sur la sortie standard la fin de l ex cution du script ils offrent plus de flexibilit l utilisateur au prix d une op ration suppl mentaire Pappel du rapport dans le script Dans cette section nous traiterons de la mise en uvre des rapports notamment au niveau de compromis n s du choix d un DSL interne et des limites de manipulations de blocs Ruby 4 4 1 Mise en uvre des rapports des versions initiales Dans les versions initiales le contenu des rapports tait fortement coupl la pr sentation des l ments dans les scripts ainsi qu au moteur d ex cution et au contexte de correction et la commande corriger_groupe au niveau de la mise en uvre Un tel parpillement rendait difficile la compr hension de leur fonctionnement et complexifiait l entretien du code 12Par exemple produire_statistiques servant compiler les informations sur un r sultat dans un groupe il utilise seulement le d tail pour afficher la moyenne l cart type et autres informations sur
87. aux avant de les rendre et exiger la satisfaction d une note minimale avant d accepter la remise Il pourra utiliser des valuations plus complexes sur chacun des TP du groupe pour les noter Une fois la correction termin e l enseignant re oit un rapport comprenant les r sultats de celle ci Une valuation consiste en un ou plusieurs fichiers qui permettent de d finir une t che de correction Cette derni re comprend obligatoirement un fichier d crivant la t che dans un format qu Oto comprendra le script Oto Le script est en quelque sorte le programme qui sera ex cut lors de la correction et qui manipulera les composants d Oto pour obtenir le r sultat souhait Au cours de notre recherche nous avons t appel s modifier consid rablement la d finition et le fonctionnement des scripts comme Cette fonction de manipulation de fichiers rempla ant avantageusement les scripts Unix rendre_tp prendre_tp utilis s l UQAM pour la remise des travaux aux enseignants Ceux ci taient prob l matiques car la connaissance de ce syst me n tant pas n cessaire pour les premiers cours de programmation il ne pouvait tre exig des tudiants de les utiliser 33 nous le verrons au cours de ce m moire 1 2 1 Commandes Oto Pour utiliser Oto Putilisateur a recours des commandes sur le shell Unix Une com mande Oto est une s rie d instructions permettant de manipuler les bo tes et les valuations ainsi q
88. bilit de d velopper ses propres modules d extension Lors qu un utilisateur souhaite effectuer une t che de correction celle ci peut utiliser un ou plusieurs modules d extension Oto qui ne sont pas install s dans les r pertoires de l outil en autant qu il les fournisse Oto comme param tres la v rification d un TP ou la correction d un groupe Cette particularit offre aux correcteurs la possibilit de d velopper leurs propres modules faits d une ou de plusieurs classes Ruby modules qu ils peuvent utiliser en situation r elle sans privil ges d administrateur Or pour tre en mesure d utiliser une telle classe Ruby Oto doit l int grer son environnement d ex cution o une classe de m me nom existe peut tre Pour viter une telle collision Ruby attribue un nom unique au module 5Pour une discussion plus labor e concernant le choix du langage Ruby le lecteur se r f rera la section 2 3 6 1 21 2 2 3 Int gration des tests L un des aspects les plus int ressants d Oto est son m canisme de tests lequel permet notamment de v rifier plus facilement la non r gression lors d entretiens ou d ajouts Oto Ces tests se sont r v l s particuli rement utiles lorsque nous avons d tester notre portage d Oto vers plusieurs serveurs diff rents de l UQAM car ils ont permis de mettre en lumi re plusieurs probl mes qui auraient t difficiles rep rer en l absence d un tel c
89. caract ristiques en font un langage nettement plus puissant qu OtoScript sans que nous ayons eu mettre en uvre ces classes 4 1 1 9 Aspects d OtoScript non support s dans Oto 2 Certaines des caract ristiques d OtoScript n ont pas t conserv es ou ont vu leur r le modifi dans Oto 2 Parmi celles ci mentionnons les variables globales et le concept de variables et d appel de modules publics et priv s D abord OtoScript offrait un concept de variables globales Ces variables d clar es dans le script taient ensuite visibles de l int rieur des modules Nous avons d cid de ne pas reproduire ce m canisme dans le DSL Oto pour deux raisons Premi rement il tait d sormais possible d utiliser directement des variables globales de Ruby dans les scripts ce qui rendait peu int ressant la mise au point d un m canisme similaire Deuxi mement la pr sence de variables globales dans les scripts permettait aux modules de communiquer avec Oto autrement que par leurs param tres contribuant violer le principe de moindre surprise Ensuite les concepts de variables et d appels de modules publics et priv s n taient plus utiles dans le DSL Oto les rapports ayant t d coupl s du contenu et de l ordre d ex cution des scripts Au lieu de d clarer une variable ou un appel priv pour qu il ne soit pas affich dans le rapport il suffit de ne pas le conserver dans le TP ou dans le cas d un appel de mod
90. classes fournies par l enseignant et le travail devait tre fait de fa on strictement individuelle Dans un article pr sentant leur propre outil 1 les auteurs du logiciel Plaggie citent un article 37 qui avait compar les diff rents logiciels de d tection du plagiat mais en ne retenant que les solutions applicables Java Leur choix s tait alors arr t sur Moss et JPlag mais comme ils l expliquent ces deux logiciels ne supportent pas une installation locale ce qui rend moins int ressante leur utilisation dans le contexte d Oto Reconnaissant qu une solution distante n est pas toujours d sirable l article sugg re comme alternative l outil YAP3 outil qui bien que connu n est pas adapt la correction de travaux Java tant donn que le support de ce langage est important pour notre contexte Java tant en ce moment utilis dans les cours d introduction la programmation l UQAM nous devrons l exclure de nos choix possibles Le choix d un outil d pendrait de trois facteurs la disponibilit du code source pour nous permettre ventuellement de l adapter nos besoins la possibilit de l installer localement et 8Et ce pour deux raisons majeures Premi rement il ne semble pas souhaitable pour l UQAM de d pendre du service d une autre institution qui pourrait d cider du jour au lendemain de mettre fin ce service ou d en modifier le fonctionnement ce qui demanderait au mi
91. clenche le processus de v rification tout moment dans l utilisation du formulaire Un tel comportement entra ne fr quemment des erreurs l utilisation C 2 5 R sultats L application Web d Oto est peu utilisable Ses pages ne respectent pas plusieurs des heuristiques de Nielsen Le tableau C 1 contient pour chacune des pages les heuristiques n ayant pas t respect es En plus des pages que nous avons vues pr c demment le tableau contient galement trois autres pages parmi celles les plus suceptibles d tre utilis es par les utilisateurs de l application Les r sultats sont sans quivoques les interfaces ne respectant pas une majorit des heuristiques Le choix de couleurs des interfaces combin un mauvais contraste rend difficile la lecture du texte et la navigation entre les pages L espace disponible n est pas bien exploit Papplication ne g rant pas bien les positionnements relatifs en langage HTML De plus plusieurs erreurs dans le code JavaScript provoquaient des probl mes d affichage avec le fureteur Mozilla Firefox jusqu la version 3 Ces erreurs taient provoqu es le code qui manipule les l ments des pages par programmation Un autre probl me est que les erreurs Vutilisation sont signal es par un champ rouge vif devenant vite agressant dans lequel est crit un texte p le et mince difficile lire Ces messages d erreurs sont souvent mal plac s et se contentent d affich
92. contraires De telles t ches malgr leur apparence simple puisqu elles peuvent tre accomplies par quelques commandes shell Unix repr sentaient une difficult importante dans les versions ini tiales d Oto Si Oto 1 disposait d un module permettant d ex cuter une commande bash quelconque deux d fauts demeuraient D abord son utilisation tait r p titive exigeant un appel de module de plusieurs lignes pour chaque commande Ensuite m me dans un tel cas il n tait pas vident pour l enseignant d inclure dans son script le chemin vers le r pertoire contenant les fichiers des TP lors de la correction et de le fournir l ex cution d une commande bash Remarquons qu il aurait t possible de cr er un module pour effectuer des copies de fichiers ou un autre pour d compresser des fichiers tar gz et ainsi de suite Toutefois proc der ainsi aurait entra n une multiplication du nombre de modules n cessaires l ex cution alour dissant tant l apprentissage d Oto que l criture des scripts l o une commande de quelques caract res aurait suffi De plus elle aurait rendu la t che difficile aux utilisateurs d Oto qui auraient souhait effectuer une t che pour laquelle il n existait pas de module 2 1 4 Traitement des r sultats Les versions initiales d Oto taient peu flexibles au niveau du traitement des r sultats une correction r sultait soit en un rapport de correction affich
93. criture de la valeur tpl identificateur identificateur nom_ module tplgroupe groupe commentaire_resultat identificateur identificateur texte_substitu terte_substitu E 3 R sultats Les tableaux E 5 et E 6 contiennent respectivement les principales m thodes disponibles sur les objets de r sultats individuels et collectifs E 4 Autres m thodes utiles Nous pr sentons au tableau E 7 d autres m thodes facilitant le d veloppement de scripts Oto particuli rement au niveau de la manipulation des fichiers et des r pertoires 136 M thode Description execute Si l ex cution du module a t r ussie vrai sinon faux non_execute Si ex cution du module n a pas t r ussie vrai Sinon faux reussi Si Pobjectif du module a t atteint vrai sinon faux echoue Si Pobjectif du module n a pas t atteint vrai sinon faux nom_module Retourne le nom du module type_module Retourne le type du module individuel col lectif ou commande bash description_module Retourne la description du module commenter_resultat nom resultat com mentaire Permet de substituer au nom d un r sultat un commentaire resultats Retourne un hash contenant les r sultats inclure_resultat nom_ resultat liste_ noms_ resultats Permet de sp cifier un ou plusieurs r sultats qui seront inclus dans les
94. cution du langage soul vera une exception indiquant que 46 la m thode correspondant au message qu il a re u est manquante Lorsque le type du receveur est connu statiquement il sera possible de pr venir certaines de ces exceptions car la classe ayant servi construire le receveur sera connue ce qui permettra de conna tre les m thodes que cette classe poss dait ce moment Dans un langage typage dynamique toutefois il ne sera pas possible de savoir l avance si un objet sera en mesure de r pondre ou non un message qui lui est envoy car le receveur sera d fini sans type statique seul l envoi lui m me permettra de d terminer si l objet supporte ou non le message d autant plus qu on peut via r flexivit d finir dynamiquement des m thodes L un des aspects les plus int ressants de Ruby est qu il permet d intercepter les envois de message auxquels un objet n a pu r pondre Pour ce faire il faudra d finir la m thode method_missing dans la classe d finissant cet objet Lorsque cette m thode est d finie l envoi de messages se fera comme l habitude sauf en pr sence d un appel une m thode inconnue Dans ce cas au lieu de poursuivre la recherche un niveau hi rarchique plus lev ou soulever une exception si le niveau le plus lev tait d j atteint la m thode method_missing sera ex cut e Une telle fonctionnalit peut servir employer les appels de m thode
95. d en le compilant puis en utilisant JUnit pour effectuer un test unitaire sur la classe obtenue Les r sultats sont ensuite affich s l cran sous forme de rapport D abord le script d finit deux variables de type cha ne de caract res fclient et ctest Ces variables repr sentent respectivement le nom du fichier Java de l tudiant et le nom de la classe de test fournie par l enseignant Ensuite l objet groupe repr sente l ensemble du groupe corriger lequel est utilis pour manipuler tout ce qui doit concerner le groupe Dans ce cas nous allons ex cuter des modules individuels il faut donc manipuler chacun des l ments du groupe un la fois La m thode each nous permet de le faire elle nous offre chacun des TP tp et nous permet de lui passer un bloc de code contenant les instructions ex cuter pour chacun Pour chacun des TP nous commen ons par copier le contenu de l valuation dans le r pertoire du TP Cette tape nous permet ici de copier la classe de test ClientTest class fournie par l enseignant en vue de son utilisation avec JUnit Nous utilisons ensuite le mo dule compiler_javac sur le TP pour compiler le fichier Java fourni par l tudiant Ce mo dule s ex cutant sur le TP nous devons le fournir en param tre Nous passons galement un param tre au module pour indiquer le nom du fichier Java compiler fichiers gt gt fclient Le r sultat de la compilation c est dire l
96. de fichiers oto se justifie par la simplification des cas de tests 92 la m moire virtuelle 6 2 Analyse des r sultats Comme nous l avons constat exception de certains cas de tests int gr s o le nombre et la nature des tests ont t consid rablement modifi s d une version l autre Oto 2 s est r v l plus rapide que son pr d cesseur dans toutes les situations d utilisation ce niveau l cart obtenu d pendait de la nature de la t che Les r sultats obtenus la section 6 1 2 d montrent les diff rences de gains en fonction du surco t associ l utilisation d Oto par rapport un appel manuel des t ches de correction Contrairement aux versions initiales Oto 2 ne charge et n ex cute le script qu une seule fois par instance r duisant d autant le surco t associ de courtes t ches de correction r p t es par exemple de courts appels de commandes Par contre l outil lui m me ne peut r duire le temps n cessaire l ex cution d une t che de correction qui serait intrins quement longue comme dans l exemple du test de vitesse o la vaste majorit du temps tait pass ex cuter les programmes des tudiants activ s par une commande bash Le passage Oto 2 a toutefois permis dans ce cas d acc l rer l g rement la correction par une r duction du surco t au niveau de l appel des commandes mais ne peut l acc l rer de mani re plus significative s
97. derrahmane Leshob un des meilleurs quipiers avec qui j ai eu la chance de collaborer Dunarel Badescu qui pour moi est l incarnation de la passion de l informatique ainsi que Romdhane Ben Younes et Maryem Ourti Mentionnons galement St phanie Lanthier du Sitel pour nos discussions d lirantes et son aide lorsque nous avons migr Oto vers plusieurs machines du Labunix alors en chantier Je tiens galement remercier ma famille pour son support et ses encouragements depuis toujours notamment au cours de mes tudes coll giales de mon baccalaur at et encore lors de ces derni res ann es de ma trise Sans vous tous je n y serais pas parvenu Merci ceux d entre vous qui ont lu mon m moire et ainsi qu ceux qui pour me faire plaisir ont tent de le lire Finally a very special thank you will go to my beloved fianc e Catherine Wilkins Cathe rine I love you to pieces and to you I dedicate this master s thesis on which you have seen me working so often lately By your side I feel like I could move mountains Thank you for your infinite tolerance your patience your guidance and your lovely presence during this endeavour After annoying you an insane amount of times with Oto let s indulge ourselves with some well deserved time together before considering whether or not to go for more TABLE DES MATI RES LISTE DES FIGURES 0 928020 eee et Ae ee Ge Goi ee eee ae ei fe viii LISTE DES TABLEAUX
98. diquant l utilisateur quelle est la fonctionnalit en cours Elle est rendue n cessaire par le fait que le menu ne d sactive pas le bouton qui lui correspond En dessous se trouve une bande rouge qui n est popul e qu en cas de probl me avec les param tres fournis plus bas Sous celle ci se trouve un champ texte qui permet de saisir le nom de l enseignant ayant cr l valuation sur laquelle l utilisateur veut v rifier son travail Ce dernier doit ensuite cliquer sur le bouton Chercher valuation pour que les valuations associ es cet enseignant soient r cup r es et aillent populer une liste d roulante situ e en dessous et identifi e ID valuation Ce dernier terme est incoh rent avec le vocabulaire 121 d Oto o l identification porte un nom Sous l identification de l valuation la liste des fichiers t l verser l application doit tre sp cifi e Celle ci se fait au moyen d un champ texte et d un bouton ouvrant une bo te de choix de fichier Une fois le fichier sp cifi il est possible d ajouter d autres fichiers au moyen du bouton Ajouter fichier la droite du champ Cette section du formulaire contient une dissonance cognitive car le bouton ne confirme pas l ajout du fichier l valuation mais ajoute un autre champ La v rification se fait au moyen d un bouton V rifier situ en base du formulaire Toutefois le retour charriot du clavier en
99. doit tre retourn imm diatement lutilisateur par exemple si un fichier devant tre copi est introuvable car cette mani re d ex cuter les commandes affichera les sorties d erreurs l o elles se produisent dans le script Par contre l utilisation des backquotes n est pas toujours d sirable Par exemple si la commande make est utilis e pour lancer des corrections il sera plus int ressant d intercepter les erreurs et de les afficher dans la section correspondant au TP en cours de correction dans le rapport final Pour utiliser les commandes de cette mani re il ne sera pas n cessaire d avoir recours un module ou des instructions particuli res il suffira de les saisir au moment du script o il faudra les ex cuter Dans le script suivant Oto ex cute la commande 1s 1 pour afficher le contenu d taill du r pertoire courant par d faut le r pertoire partir duquel Oto a t ex cut Apr s l ex cution de la commande le contenu des canaux de sortie standard et d erreur sont plac s dans un objet r sultat conserv dans l exemple dans la variable res_1s Le script affiche ensuite le contenu de la sortie standard au moyen de l attribut STDOUT de cet objet Il aurait t possible de r cup rer le contenu de la sortie d erreur en utilisant l attribut 58 STDERR de la m me mani re groupe each tpl cp le_fichier tp repertoire res_ls ls 1 puts res_ls STDOUT
100. dre variable des informations dans une date pourrait tre mise en uvre par le paquetage et modifi e sans alt rer les commandes 2 3 6 Performances Oto doit supporter plusieurs circonstances d utilisation par un enseignant pour cr er des bo tes et prendre des TP par plusieurs tudiants pour v rifier leurs travaux lors d un laboratoire par un Correcteur corrigeant un groupe etc La performance attendue varie en fonction de Putilisateur Si un d lai de quelques minutes lors d une correction de groupe ne nuit pas la pertinence des r sultats une attente aussi longue risque de nuire un tudiant au cours d un laboratoire pratique limit dans le temps Dans le cadre de notre analyse de l outil nous avons cherch rep rer les causes des d lais qui ont parfois t observ s dans ses r ponses Dans les sections suivantes nous traiterons d aspects que nous avons jug s probl matiques dans les versions initiales d Oto Nous con sacrerons la section 2 4 une analyse dynamique de l outil qui avait confirm plusieurs de nos soup ons 29 2 3 6 1 Choix du langage Ruby Le langage Ruby demeure consid r comme l un des langages les moins performants sinon le moins performant disponible sur le march Sans nier ces informations nous n avons pas estim qu il tait n cessaire de r crire Oto dans un langage r put plus rapide par exemple le langage C et ce pour plusieurs raisons Pr
101. e conserver le r sultat 59 sous un nom plus court mais qui sera remplac par le nom d sir dans le rapport comme par exemple groupe each tpl tpl res_javac compiler_javac tp fichiers gt gt Test java if tpl res_javac reussi then end groupe commentaire_resultat res_javac R sultat obtenu la compilation du fichier Test java Notons qu il est galement possible d arriver au m me r sultat au moyen de n importe quelle expression retournant une cha ne de caract res ou un symbole Nous pouvons par exem ple d finir une variable contenant une cha ne et l utiliser comme identificateur res_javac R sultat obtenu la compilation du fichier Test java groupe each do tp tp res_javac compiler_javac tp fichiers gt gt Test java if tplres_javac reussi then end 4 1 1 8 Autres caract ristiques h rit es de Ruby Certains des aspects qui manquaient OtoScript et que nous d sirions rendre disponibles sont offerts directement par Ruby notamment les boucles De plus ces nouveaux scripts tant objets il est possible de cr er des classes et des m thodes l int rieur des scripts pour rendre ceux ci plus puissants 60 Les scripts tant bas s sur Ruby celui ci fournit sa biblioth que de classes l utilisateur d Oto permettant aux scripts de lancer des threads de communiquer par le r seau avec la bib lioth que Net etc Ces
102. e d taillerons pas ici pour ne pas alourdir ce texte B 3 Int grer la d tection du plagiat Oto Oto qui est un outil g n rique et extensible pour corriger les travaux de programmation pourrait gagner disposer d un module de d tection du plagiat que le correcteur pourrait in t grer ses v rifications priv es Pour ce faire il lui suffirait d ajouter l appel au module dans le fichier OtoScript correspondant son correcteur priv et de lui fournir les param tres appro pri s l instar de son utilisation le fonctionnement du module de d tection du plagiat serait relativement simple Celui ci n impl menterait pas lui m me la logique n cessaire la d tec tion du plagiat mais proc derait toutes les t ches n cessaires l appel d un ou de plusieurs 20u m me que la copie soit modifi e par l auteur du programme original 3Nous devons cependant noter ici qu il ne s agit pas forc ment d une maladresse de la part de celui ayant fait l oubli L un des outils employ s dans le cadre des premiers cours de programmation BlueJ rend particuli rement difficile l assurance que les fichiers d un projet soient bel et bien effac s De plus il ne serait pas inimaginable qu un tudiant puisse r cup rer des travaux supprim s par d autres s il recours un outil de restauration des donn es effac es 4La liste de ces param tres n est pas encore d finitive 5Du moins dan
103. e l application en g n ral une telle correction semble peu int ressante Cette situation est d autant plus probl matique que la pr sence d une application Web peut s av rer un atout fort int ressant pour l utilisation et la diffusion d Oto Repartir sur de meilleures bases appara t comme tant une meilleure solution Face cette situation nous n avons d autre choix que de recommander le d veloppement d une nouvelle interface Web pour Oto Celle ci pourrait viser le d veloppement d une applica tion Web se concentrant sur les qualit s de testabilit et d utilisabilit Il pourrait s agir d un projet de recherche int ressant pour une ma trise en informatique ou en g nie logiciel Notons qu au moment de r diger ce m moire le d veloppement d une nouvelle interface Web tait en projet La manipulation de cette nouvelle interface pourrait certainement tre facilit e par le mise en uvre d une extension pour Mozilla Firefox Elle permettrait d int grer Putilisation de Vapplication Web dans le fureteur lui m me vitant aux tudiants de devoir conna tre son adresse et acc l rant l acc s aux options les plus suceptibles d tre utilis es par eux Cette extension pourrait tre install e sur les postes de travail du laboratoire des sciences de l UQAM o les laboratoires pratiques de programmation sont tenus Elle pourrait galement tre t l char geable depuis le site des enseignants des cour
104. e par Ruby 1 9 0 contribue possiblement acc l rer le support de la r flexion avec laquelle ce m me module lance ses traitements raison de trois appels introspectifs par ex cution r ussie de plagiat 2 5 Faiblesses de l application Web L application Web d Oto dont nous avons d j fait mention au chapitre 1 m rite notre avis elle aussi d tre critiqu e tant au niveau de sa mise en uvre que de ses caract ristiques non fonctionnelles notamment la maintenabilit la testabilit et Putilisabilit notre avis cette application repr sente l un des maillons faibles d Oto sa qualit nous ayant apparu g n ralement fort discutable Par ailleurs pour ne pas alourdir ce chapitre nous avons pr f r transposer cette discussion l appendice C o nous en traiterons plus rigoureusement en effectuant notamment une v ritable analyse heuristique de son interface pour en v rifier l utilisabilit Pour r duire ses d fauts nous avons cherch am liorer l interface Web Par manque de temps nous avons d nous contenter de simplifier la page d accueil en supprimant des l ments d coratifs inutiles et Pavons rendu plus lisible en en haussant la taille de la police de caract re des libell s Comme nous le mentionnons dans l appendice nous croyons que l application n cessite une refonte majeure 2 6 Conclusion Au cours de ce chapitre nous avons examin la conception et la construction d O
105. ement de travail simplifi l UQAM au moment de r diger ce m moire BlueJ tait utilis dans les deux premiers cours de programmation en Java INF1120 et INF2120 Dans ces conditions l id e d int grer l utilisation d Oto ce logiciel facilitant d autant l emploi de l outil dans un contexte de laboratoire devenait int ressante car elle permettait d viter l apprentissage que demande l interface ligne de commande 12 Malheureusement bien que BlueJ dispose d un m canisme de modules d extension ce projet d extension a t mis de c t en raison de probl mes de coupures intermittentes de la connexion entre les machines locales et le serveur sur lequel Oto tait ex cut 1 3 3 Application Web L abandon du projet d extension Oto pour BlueJ combin e une incertitude quant Vavenir de l utilisation de cet environnement de d veloppement dans les premiers cours de pro grammation l UQAM a motiv le d veloppement d une application Web permettant d utiliser Oto partir d un fureteur au lieu de devoir utiliser son interface ligne de commande Cette t che fut confi e Mohamed Takim tudiant la ma trise en g nie logiciel 31 L application est disponible sur le site d Oto http www labunix uqam ca oto Si nous croyons qu elle a quelque peu facilit l utilisation d Oto particuli rement pour les tudiants une partie consi d rable de sa mise en uvre demeure discutable
106. ement le temps processeur tant un plus bas niveau d abstraction et souvent interpr t s par rapport aux langage g n ralistes disposant la plupart du temps de compilateurs optimisants ou de machines virtuelles tr s performantes comme la machine HotSpot dans le cas de Java 3 2 3 Types de DSL l int rieur m me des DSL nous pouvons distinguer deux approches diff rentes en terme de mise en uvre les DSL externes External DSL et les DSL internes Embedded DSL ou Internal DSL 13 Un DSL externe est un langage de programmation classique du code source d velopp dans ce langage doit subir une analyse lexicale syntaxique et s mantique avant d tre compil ou interpr t OtoScript faisait partie de cette cat gorie les phases d analyse syntaxique et s mantique taient support es par son traducteur externe alors que l interpr tation tait effectu e par le moteur d Oto Poppos un DSL interne vient se greffer un langage existant et exploite ses fonctionnalit s ce qui lui permet d h riter de plusieurs des caract ristiques de son langage h te qu il n a pas red finir explicitement Dans les prochaines sections nous examinerons les avantages et les inconv nients de cha cune de ces approches 3 2 4 DSL externes Les principaux avantages d un DSL externe sont les suivants e Dans un DSL externe la syntaxe du langage pourra repr senter tout concept qu il sera Shttp en wik
107. emi rement Oto tant d j d velopp en Ruby traduire une grande partie de son code source vers un nouveau langage aurait demand des efforts peu int ressants dans le cadre de la ma trise en informatique D ailleurs seuls certains cas d utilisation d Oto devaient tre compl t s rapidement et m me pour ceux ci certains modules taient plus lents que d autres Deuxi mement l UQAM disposant de meilleur quipement ex cutant Oto beaucoup plus rapi dement que le serveur Arabica une telle traduction devenait moins n cessaire 2 3 6 2 Difficult s li es au m canisme des modules Comme nous en avons d j fait mention les versions initiales d Oto appuyaient leur m canisme de correction sur un langage interpr t et des modules orient s individu Ces facteurs contribuaient la lenteur de l application laquelle s accroissait un rythme proportionnel la taille des groupes corrig s Les m canismes des versions initiales d Oto n taient pas con us dans une optique de performance 0 2 4 Profilage et mesure des performances Dans les sections pr c dentes nous avons mentionn que les principaux probl mes de performance d Oto taient caus s en majeure partie par le paradigme orient individu sur lequel le langage OtoScript reposait et par le fonctionnement m me des modules d extension Pour corroborer ces assertions nous avons analys le comportement d Oto l ex cution l aide du profileur
108. er P cran l erreur telle que l interface texte d Oto la fournit sans formatage De mani re g n rale Papplication Web poss de une apparence peu soign e et peu professionnelle 122 v S o Qu lt E b0 els ls Tl lgle a 0 2 6 2 ag EE oO sel 3 8 8 Q a SE S E o Oo Heuristique non respect e 41010 A gt Visibilit de l tat du syst me x x Ad quation du syst me au monde r el x x Contr le et libert de Vutilisateur x x x x x Coh rence et standards x x x x x Design minimaliste x x x x x Reconnaissance plutot que rappel x Flexibilit d utilisation x x x x Aide la gestion des erreurs x Pr vention des erreurs x x x Aide et documentation x x x x x Tableau C 1 Heuristiques non respect es par les pages de l application Web 123 C 3 Conclusion et travaux futurs L application Web d Oto comporte des d fauts tant dans sa mise en uvre que de la con ception de ses interfaces utilisateur Leur correction demanderait un effort consid rable Une simple modification de la page d accueil que nous avons effectu e a demand plusieurs heures de travail alors qu il s agissait d un d placement et d un renommage d l ments Modifier les autres interfaces lesquelles tant d une complexit bien plus grande exigerait vraisemblable ment beaucoup plus de temps Vue la qualit d
109. er_eval_filtre mais ex cute directement P valuation sur un ou plusieurs TP e tester_methodes Comme creer_et_activer_eval_methodes mais ex cute directe ment l valuation sur un ou plusieurs TP Ajout des modules e cmd_bash Lancement d une commande bash quelconque et r cup ration des r sultats obtenus e gcc Compilation de programmes C et C par le compilateur C GNU e junit4 Ex cution de tests introspectifs pour des classes Java avec JUnit 4 les diff rences entre les versions tant significatives particuli rement au niveau de la syntaxe d appel de tests 101 e plagiat D tection du plagiat intra groupe e tester_filtre Ex cution de tests bas s sur le filtrage des entr es sorties des pro grammes cibles A 3 Oto 2 Oto 2 est la version d Oto a partir de laquelle les scripts Oto ne sont plus d finis en OtoScript mais en Ruby valide interpr t dans le contexte du DSL Oto Si les commandes n ont pas t fondamentalement affect es par ces modifications majeures l exception ma joritairement des commandes ex cutant des valuations nous avons profit de l occasion pour corriger certaines limitations notamment celles de creer_boite en lui permettant de combiner l utilisation d valuations de remise la pr sence d une date limite de remise ainsi qu une liste de fichiers remettre Les modules existants ont t adapt s aux changements de la nouvelle version d sormais divis s
110. erns of plagiarism SIGCSE Bull 37 1 383 387 2005 Christopher Douce David Livingstone et James Orwell Automatic test based assess ment of programming A review J Educ Resour Comput 5 3 4 2005 Stephen H Edwards Using software testing to move students from trial and error to reflection in action In SIGCSE 04 Proceedings of the 35th SIGCSE technical sympo sium on Computer science education pages 26 30 New York NY USA 2004 ACM George E Forsythe et Niklaus Wirth Automatic grading programs Commun ACM 8 5 275 278 1965 Sandra P Foubister Greg Michaelson et N Tomes Automatic assessment of elementary Standard ML programs using Ceilidh J Comp Assisted Learning 13 2 99 108 1997 Martin Fowler A pedagogical framework for domain specific languages IEEE Software 26 4 13 14 2009 Xiang Fu Boris Peltsverger Kai Qian Lixin Tao et Jigang Liu Apogee automated project grading and instant feedback system for web based computing In SIGCSE 08 Proceedings of the 39th SIGCSE technical symposium on Computer science education pages 77 81 New York NY USA 2008 ACM David Gitchell et Nicholas Tran Sim a utility for detecting similarity in computer programs SIGCSE Bull 31 1 266 270 1999 16 17 18 19 20 21 22 26 27 28 29 30 31 32 140 Dick Grune et Matty Huntjens Detecting copied submissions in computer science worksho
111. es manipulations qui peuvent tre accomplies par une ou plusieurs commandes bash Le traitement des r sultats peut varier de l affichage d un rapport complexe l cran l criture de celui ci sur disque ou de l utilisation des donn es d autres fins telles que la transmission par courrier lectronique ou une application permettant aux tudiants de consulter leurs notes 4 Oto tant d velopp en langage Ruby l emploi de ce langage ouvre la porte l limination du traducteur de l interpr te et d OtoScript lui m me Ce dernier sera avantageusement rem plac par un langage sp cifique au domaine de type interne 23 29 s appuyant sur Ruby Les caract ristiques recherch es par ce nouveau langage sont d taill es la figure 2 2 en comparaison de celles des versions initiales d Oto Nous traiterons plus en d tails des langages sp cifiques au domaine au chapitre 3 de ce m moire Notre solution et sa mise en uvre seront l objet du chapitre 4 14Comme par exemple les applications R sultats http wuw resultats uqam ca et Moodle http waw moodle uqam ca utilis es l UQAM 34 Caract ristique Oto 1 Oto 2 Paradigme de fonction nement Un seul TP consid r la fois Correction de tout le groupe la fois Chargement et ex cution du script de correction Une fois par TP Une fois pour tout le groupe Fonctionnement des modules Indiv
112. es appels de modules de rapports et de commandes Retrait dynamique de m thodes Le initialize de Environnement Execution apr s utilisation Tableau 4 1 Concepts de m taprogrammation utilis s dans le DSL Oto 4 2 6 Modifications comportementales Dans cette section nous examinerons certains changements apport s au comportement d Oto certaines tapes de la correction et les probl mes la base de ces changements SA l exception des rapports obtenus l utilisation de corriger_groupe o la commande effectuait une partie du travail de formatage du rapport 67 4 2 6 1 Retrait de l indicateur de dossier courant Les nouvelles capacit s de correction ayant retir la n cessit d inclure un indicateur du TP en cours de correction dans le groupe ce qui tait fait par corriger_groupe nous avons pu la supprimer Cet indicateur tait utile pour les modules visant le groupe entier comme la d tection du plagiat tant donn que la manipulation de chacun des TP tait d sormais explicite et que les modules de groupe recevaient un objet leur permettant de traiter le groupe entier cette solution temporaire n avait plus de raison d tre Un tel changement acc l rera l ex cution tant de la commande corriger_groupe elle m me en vitant une criture disque par TP corrig que du module detecter_plagiat qui vitera une lecture disque intrins quement lente et co teuse 4
113. es cours que nous avons suivis que de ce projet L analyse d Oto a t l occasion pour nous de comprendre le fonctionnement d une application qui n tait pas triviale d velopp e dans un langage que nous ne connaissions pas Nous nous sommes habitu s au contact de notre directeur de recherche justifier nos prises de position de mani re pr cise et d taill e ainsi qu accepter ses conseils et ses critiques constructives Cette recherche fut pour nous l occasion d enrichir consid rablement nos connaissances en informatique et en g nie logiciel dans le cadre d un projet de plus longue haleine que ceux auxquels nous avions t habitu s Par dessus tout ces tudes de ma trise nous ont permis d acqu rir une plus grande confiance en nous m mes et en nos capacit s professionnelles Finalement notons qu en ce qui nous concerne l aventure Oto gt n a pas d but en entreprenant nos tudes de ma trise mais d s l hiver 2006 lorsque nous avons assist une pr sentation du projet donn e par le professeur Tremblay ce moment se doutait il que dans la salle se trouvait un tudiant de premi re ann e du baccalaur at en informatique et g nie logiciel fascin notre grande surprise par le sujet abord qui saisirait plus tard l occasion de poursuivre ce projet Pour nous revenir sur cela en crivant les derniers mots de ce m moire apr s avoir apport notre contribution personnelle O
114. es programmes Ruby en g n ral que si celles ci taient limit es au seul outil comme OtoScript En b tissant Oto 2 autour du DSL Oto nous avons pu hausser consid rablement les capacit s des scripts Nous avons aussi augment la flexibilit des scripts en d couplant la production de rap ports de correction permettant de d crire les r sultats obtenus l ex cution des commandes utilis es pour lancer la correction et en offrant la capacit entre autres de les sauvegarder sur disque au lieu de les afficher sur la sortie standard de mani re syst matique Nous avons galement ajout un support am lior pour les commandes simplifiant consid rablement leur utilisation ainsi que la r cup ration de leurs r sultats Nous avons galement diminu le surco t associ leur utilisation en ne les associant plus des appels de modules Cette modification a galement t pour nous l occasion de permettre Oto de supporter les corrections intra groupe Nous avons d montr ces derni res en mettant au point deux modules collectifs de correction qu il n aurait pas t possible de mettre en uvre proprement dans les versions initiales d Oto Les r sultats que nous avons obtenus nous permettent de conclure de mani re g n rale une r ussite Les scripts Oto sont plus souples plus puissants et plus simples utiliser pour quiconque conna t le langage Ruby Ils permettent d effectuer de mani re naturelle plusie
115. et de leurs faiblesses 2 3 1 Le langage OtoScript Le langage OtoScript tait le langage de programmation propre aux versions initiales d Oto qui servait coordonner la manipulation des modules d extension pour effectuer une t che de correction donn e Le correcteur pouvait utiliser des constantes des variables et des 6Par exemple les tests avec JUnit exigent le fonctionnement pr alable du module de compilation de programmes Java Ces d pendances ne doivent toutefois pas tre circulaires 22 assertions simples utilisables sur les r sultats obtenus Avec ces derni res le correcteur pouvait hi rarchiser l ex cution de tests dans un m me script Il pouvait galement d corer un script en ajoutant des tiquettes qui commentaient le rapport de correction OtoScript tait un langage interpr t l activation d une valuation le fichier OtoScript la d crivant tait fourni en param tre Celui ci subissait une analyse lexicale syntaxique et s mantique r alis e par un programme externe Ce programme le traducteur Oto recevait un fichier OtoScript brut et retournait une version pur e appel e image Cette image tait conserv e par Oto pour tre utilis e lorsque cette valuation serait invoqu e Lorsque le cor recteur effectuait une correction l valuation tait charg e et interpr t e par un moteur int gr Oto qui en analysait l image et en ex cutait les t ches s quentiellement Cette ap
116. eux un entretien du module Oto Deuxi mement avoir recours une solution ext rieure pour le traitement des travaux des tudiants rend difficile le respect du droit d auteur des tudiants par rapport leurs travaux car rien ne nous assure que cette solution ext rieure ne conserverait pas une copie du travail qui lui est soumis 108 ses capacit s de d tection Dans le but de v rifier la performance des outils r pondant aux deux premiers crit res nous avons effectu quelques tests sur quelques uns des travaux d tudiants qui nous ont t fournis pour mettre l preuve les outils dont nous avons pu obtenir le code source Pour ce faire le travail pratique no 2 semblait tre le meilleur choix pour un tel essai Les outils que nous avons mis l preuve sont SIM Plaggie et Sherlock SIM 15 qui d coupe le fichier en une s rie de jetons ce qui le rend peu sensible des changements superficiels du code source fut le premier outil que nous avons test Il a Pavantage d tre compilable en plusieurs versions visant chacune un langage en particulier Dans sa version pour Java il a imm diatement mis en lumi re une grande disparit dans la similitude entre les divers travaux pour un pourcentage aux environs de 0 pour la plupart jusqu un tonnant 84 pour deux d entre eux Les cas fort pourcentage consid r s suspects furent inspect s manuellement par nos soins et semblaient effectivement tr
117. eview 63 81 97 1956 Jakob Nielsen et Rolf Molich Heuristic evaluation of user interfaces In CHI 90 Proceedings of the SIGCHI conference on Human factors in computing systems pages 249 256 New York NY USA 1990 ACM L Prechelt G Malpohl et M Philippsen Finding plagiarisms among a set of programs with JPlag Non publi Soumis au Journal of Universal Computer Science 2000 Saul Schleimer Daniel S Wilkerson et Alex Aiken Winnowing local algorithms for document fingerprinting In SIGMOD 03 Proceedings of the 2003 ACM SIGMOD international conference on Management of data pages 76 85 2003 Diomidis Spinellis Reliable software implementation using domain specific languages In G I Schu ller et P Kafka diteurs Proceedings ESREL 99 The Tenth European Conference on Safety and Reliability pages 627 631 Rotterdam septembre 1999 ESRA VDI TUM A A Balkema Diomidis Spinellis Notable design patterns for domain specific languages Journal of Systems and Software 56 1 91 99 f vrier 2001 Mark Strembeck et Uwe Zdun An approach for the systematic development of domain specific languages Software Practice and Experience 39 15 1253 1292 ao t 2009 M Takim Applications Web pour l utilisation des services de l outil Oto Rapport de projet D p d Informatique Universit du Qu bec Montr al d cembre 2006 http www info2 ugam ca tremblay Maitrises takim html David Thoma
118. exte d utilisation sp cifi Dans un tel contexte l efficacit signifie que la t che est accomplie correctement l efficience signifie que les ressources utilis es pour accomplir la t che le temps et l effort requis sont Thttp wwuw usabilis com methode test utilisateur htm 114 raisonnables dans le contexte d utilisation et la satisfaction est une mesure subjective de l attitude de l utilisateur durant la r alisation de la t che C 2 2 Utilisabilit Web Dans le cas d une application Web le probl me de Putilisabilit est d autant plus impor tant que l utilisateur ne disposera que rarement d une formation sp cifique cette application particuli re Cette situation rend difficile la r alisation par le d veloppeur d une solution prenant en compte les caract ristiques physiologiques de toutes les cat gories d utilisateurs potentiels de son application Face cette difficult des chercheurs comme Jakob Nielsen ont tabli des heuristiques que peuvent utiliser les d veloppeurs pour viter les erreurs les plus courantes en terme d ergonomie logicielle C est en nous basant sur ces heuristiques que nous analyserons l interface de l appli cation Web d Oto pour mettre en vidence ses d fauts L exercice que nous avons effectu ici une analyse heuristique est l une des techniques permettant de d couvrir les d fauts des interfaces l autre technique majeure tant le test d utilisabilit
119. extension d Oto lui fournissent sa grande g n ricit d couplant compl te ment le noyau de l outil de la mise en uvre des corrections Toutefois certains choix des versions initiales d Oto sont discutables particuli rement au niveau du mod le d ex cution d OtoScript et de la conception de leurs modules Ces versions taient bas es sur un principe que nous quali fierons de correction orient e individu o chacun des travaux composant un groupe tait corrig Pun apr s l autre de mani re purement s quentielle comme s il s agissait de v rifications de TP individuelles La commande corriger_groupe validait les param tres qui lui taient pass s par Putilisateur puis pour chacun des travaux le copiait dans un r pertoire temporaire chargeait et interpr tait le script Oto correspondant puis cumulait les r sultats obtenus dans un rapport de correction Une fois tous les travaux trait s ce rapport tait affich sur la sortie standard Cette mani re de faire tait peu efficace et limitait les utilisations possibles d Oto Nous expliquerons pourquoi dans les sections suivantes 25 2 3 2 2 Surco ts et probl mes de performances D s le d but de notre analyse nous avons constat que l ex cution orient e individu util is e par les modules des premi res versions d Oto et coordonn e par le langage OtoScript n tait pas optimale lors des corrections de groupe puisque plusieurs t ches y taient
120. facilement dans le langage h te e L exploitation de structures du langage h te hors de leur contexte naturel par le DSL interne par exemple utiliser un appel de m thode pour effectuer un calcul entra ne des messages d erreurs parfois difficiles comprendre tant g n r s par le langage h te qui ne connait pas le contexte du DSL interne ce qui contribue complexifier le d bogage 3 3 Ruby et les DSL internes Ruby est un langage convenant particuli rement bien au d veloppement de DSL internes Ses aptitudes la m taprogrammation et l introspection son typage dynamique sa souplesse syntaxique au niveau de l appel des m thodes ainsi que la pr sence d un biblioth que de classe relativement riche en font un environnement int ressant pour ceux ci Nous verrons ces capacit s plus en d tails la section 3 3 1 Au moment de r diger ce m moire plusieurs projets int ressants taient construits autour du principe d un DSL interne bas sur Ruby Nous mentionnons quelques uns de ces projets au tableau 3 2 qu une recherche rapide sur le Web nous a permis d identifier 4Ce qui nous en convenons peut parfois tre contradictoire avec le principle d utilisation d un DSL 5Ou les parenth ses sont optionnelles dans le cas d un seul appel par ligne 44 Nom du DSL interne Nature et domaine d affaires Aquarium Programmation aspects pour Ruby Peerant DSL pour la t
121. fi par les accolades bloc qui n est pas obligatoire si les param tres du module sont tous optionnels Comme dans Oto 1 les modules re oivent des param tres dont certains sont obligatoires et d autres optionnels Sous Oto 2 les param tres sont pass s dans des blocs Dans le bloc chaque ligne repr sente un param tre diff rent Sur chaque ligne deux informations sont crites D abord le nom du param tre est crit la gauche ici le param tre se nomme fichiers et l objet pass est plac la droite ici fichier java L op rateur que nous utilisons pour assigner une valeur un param tre dans l appel du module l op rateur d assignation gt gt est obligatoire Nous avons choisi cet op rateur dont la syntaxe est identique l op rateur de flux de C car il s agissait parmi les divers op rateurs dont la surcharge est possible en Ruby de celui qui nous semblait le mieux repr senter l attachement d un attribut une valeur res_javac compiler_javac tp fichiers gt gt fichier java L objet retourn par le module permet d en traiter les r sultats notamment en indiquant si objectif du module a t satisfait Dans Oto 2 nous introduisons le principe d objectif de module Chaque module doit d finir un objectif qui devra tre satisfait pour que la m thode reussi retourne vrai Pour compiler_javac par exemple l objectif sera que la compilation a r ussi sans erre
122. ici sous le nom Message avec une majuscule pour en faciliter la lecture dans le rapport mais ce n est en rien obligatoire Une fois le travail sur chacun des TP termin nous produisons un rapport de correction complet Ce rapport re oit tous les r sultats que nous voulons y inclure dans ce cas le groupe Ce rapport est une cha ne de caract re L instruction Ruby d affichage de cha ne puts affiche ensuite le rapport sur la sortie standard 4 1 1 2 Concepts de TP et de groupe Dans notre DSL le TP repr sente le travail d une quipe d tudiants Le param tre tp est un objet contenant toutes les informations n cessaires sa manipulation par les modules et la conservation des r sultats obtenus Le groupe quant lui contient l ensemble des TP soumis Oto pour la correction en cours C est galement un objet auquel nous faisons appel pour plusieurs t ches notamment l ex cution de la correction sur chacun des TP l appel de modules collectifs et la production de rapports L objet tp sert galement conserver les r sultats obtenus l ex cution Pour ce faire il faut utiliser Pop rateur crochets 1 Entre les crochets nous identifions le nom que nous souhaitons donner au r sultat ce que nous pouvons faire avec les guillemets simples doubles ou au moyen d un symbole par exemple tp Details Une fois conserv le r sultat sera accessible en lecture et en criture pouvant tre utilis
123. iduel seulement Individuel et collectif Param tres d un module Tous de type String Objets de divers types Valeur de retour d un mo dule Structure Ruby Objet Principe des rapports Un seul type de rapport cod en dur non param trable Modulaires et param trables Affichage du rapport Obligatoire la fin de la cor Facultatif n importe quel rection moment du script Possibilit d crire le rapport Non sauf en redirigeant Oui directement dans le sur disque la sortie standard l appel script d Oto Positionnement des r sultats des modules collectifs dans le rapport Avec chacun des TP S par ment et ou avec cha cun des TP Contr le du flux d ex cution Par assertions seulement Tests et ex cution condition nelle boucles blocs asser tions etc Support d appel de comman des bash Par un module Directement dans le script sans appel de module Paradigme du langage D claratif la makefile Proc dural objets D veloppement de classes et de m thodes dans le script Non Oui Tableau 2 2 Caract ristiques et comportement selon la version d Oto 35 2 6 1 2 Refonte du m canisme de modules Oto Notre profilage d Oto nous a permis de confirmer nos soup ons au niveau du comporte ment des modules Ceux ci consacraient beaucoup de temps agir titre d interface avec
124. ier crire le contenu d une cha ne dans un fichier chemin_absolu_fichier cha ne texte Si le fichier n existe pas il est cr s il existe d j son contenu est cras Tableau E 4 Services suppl mentaires destin s au traitement des r sultats dans les scripts E 2 4 Rapports Les rapports peuvent recevoir une ou plusieurs valeurs Dans ce dernier cas les valeurs seront combin es pour produire le rapport Les r sultats de groupe appara tront dans le rapport produit dans le m me ordre qu ils sont pass s entre parenth ses dans les param tres de l appel du module rapport res_rapport nom rapport groupelresultat_de_groupe H nom_parametre_rapport gt gt valeur_parametre E 2 5 Commandes Dans les scripts Oto les commandes peuvent tre utilis es tant l int rieur qu l ext rieur du groupe each Leurs r sultats peuvent tre conserv s dans l objet tp commande parametres res_ commande nom commande_bash parami 134 E 2 6 Contr le de l ex cution Les scripts Oto fournissent des m thodes permettant de contr ler l ex cution Dans le DSL Oto les seuls scripts dans lesquels l chec d une assertion doit arr ter leur ex cution seront ceux utilis s la cr ation d une bo te Dans un tel cas l chec d une assertion annule la remise d un TP dans cette bo te Le module Pass facilite la manipulation des assertion
125. ifficile la lecture du texte crit au dessus Au niveau du texte la taille du caract re utilis est trop petite ce qui rend difficile sa lecture d autant plus que l interface dispose de suffisamment d espace pour employer un caract re plus gros Un autre probl me est le positionnement des boutons radio permettant de choisir entre une connexion en tant qu tudiant ou en tant qu enseignant 117 O Se connecter Noyau Oto r alis par Fr d rio Gu rin et Guy Tremblay Interface Web r alis e par Mohamed Takim UQ M Figure C 1 L cran de connexion de l application Web 118 Vraisemblablement le concepteur de linterface tait convaincu que la majorit des utilisateurs de cette interface seraient des tudiants car cette valeur est choisie par d faut Or la valeur Enseignant est mise plus en vidence que la valeur Etudiant tant gauche ce qui est contradictoire De plus leur positionnement l horizontal align sur les tiquettes la gauche brise le d placement de l oeil qui doit se d placer en zig zag au lieu de s lectionner les options les unes apr s les autres Finalement les boutons ne sont pas plac s de mani re optimale car le bouton Se connecter n est pas align avec les champs texte ce qui rend sa localisation plus difficile Par ailleurs le bouton Annuler qui vide les champs texte nous semble inutile car le formulaire est de petite taille d
126. ilisant pas les backquotes Dans l exemple method_missing recevra compiler_javac et le cherchera parmi les noms de modules et de rap ports Il le trouvera et chargera le module correspondant En plus de recevoir entre parenth ses le param tre tp qui est l objet du TP en cours de correction obtenu de la m thode each au d but du bloc cet appel de m thode re oit galement un bloc contenant les param tres destin s au module invoqu 64 4 2 2 2 Blocs En Ruby un bloc permet entre autres de passer une s rie d instructions en param tres une m thode Dans le DSL Oto le bloc sert passer des param tres aux modules et aux rapports Le bloc est d limit par les instructions do end ou par les accolades 4 2 2 3 Surcharge des op rateurs Dans notre exemple nous souhaitons que le r sultat de l appel du module compiler_javac soit conserv en vue d tre ventuellement inclus dans un rapport Pour ce faire nous pla ons Pobjet retourn par le module dans le tp courant Ruby permet de le faire de mani re l gante en surchargeant l op rateur crochets assignation Un symbole ou un String plac entre les crochets sert d identificateur la valeur qui y est assign e La consultation des r sultats comme nous la faisons la ligne suivante de l exemple pour v rifier si la compilation a r ussi se fait en surchargeant l op rateur crochets 1 La m thode retourne le r sultat associ
127. inc str_inc split echoues 1 split assert inc 0 strip to_i unless str_ast nil end tpl Resultat sur 100 100 0 ast ast_inc nbAssertionsAttendues end rapport produire_rapport_complet groupe ecrire_fichier rapport resultats nom_sorte nb_threads txt rapport groupe effacer_resultats Pour le prochain nombre de processeurs end Figure 5 2 Exemple de script de correction avec param tre et criture vers des fichiers 84 correction a t faite sur quatre travaux inspir s de l exemple de l appendice F du m moire de ma trise de Fr d ric Gu rin 17 En tout six tests sont ex cut s Une note est attribu e en fonction du nombre de tests r ussis un travail ne compilant pas obtenant la note 0 Pour tester les diff rents cas possibles un travail ne compile pas obtenant 0 un autre choue deux tests introspectifs obtenant une note de quatre sur six soit environ 66 667 et deux travaux r ussissent tous les tests et obtiennent 100 5 3 3 Analyse de l exemple Les scripts d Oto 2 comme ceux des versions initiales permettent d ex cuter des modules et de choisir si leur contenu sera affich ou non dans le script Toutefois Oto 2 va encore plus loin car il permet de choisir pour un r sultat de module individuel quelles seront les informations qui seront incluses Par d faut tout sera inclus mais exclure certains identificateurs peut tre utile lorsqu on ne souh
128. ion r elle Par exemple supposons qu un correcteur souhaitait effectuer un test l aide du module junit S il avait nomm la constante retourn e par ce module resultat le nombre d erreurs survenues durant l ex cution du module aurait t stock comme attribut de la constante resultat nberreurs Si nous supposons maintenant que notre correcteur souhaitait s assurer que le nombre d erreurs tait gal 0 l aide d une assertion il aurait pu le faire par l instruction assurer resultat nberreurs 0 Dans ce cas il pouvait manipuler la valeur directe ment La situation n aurait pas t la m me s il avait souhait inclure le nombre d erreurs obtenues dans le rapport de correction l aide de l instruction sortir OtoScript ne lui per mettait pas d utiliser directement la valeur resultat nberreurs Il devait d abord assigner cette derni re une variable puis fournir cette variable sortir Cette exigence compliquait Putilisation d OtoScript d autant plus qu il tait n cessaire de tenter d activer une valuation pour qu un message d erreur produit par le traducteur puisse signaler un probl me syntaxique ventuel Citons titre anecdotique une conversation entre l auteur de ces lignes et Jean Privat professeur au d partement d informatique de l UQAM Celui ci bien qu int ress par les capacit s de correction de l outil ne lutilisait pourtant que pour la remise des TP de ses
129. ion 3 3 1 7 se fait l aide de la m thode Ruby instance_eval De cette mani re cette analyse se fait r cursivement jusqu au dernier niveau d imbrication En dernier lieu la balise fermante est ajout e au r sultat def method_missing sym args amp block last lt sym to_s if args size gt 0 and args 0 is_a Hash never hurts to be sure args 0 each do key value last key to_s value to_s end end if block nil last gt if there s no children just close the tag else last gt builder XMLBuilder new builder instance_eval block last builder last last lt sym to_s gt end end Figure 3 2 Code de la m thode method_missing de XML Builder section 3 4 51 CHAPITRE IV MISE EN UVRE DU DSL INTERNE ET DES EXTENSIONS quoi ressemble le DSL Oto Quels sont ses principes inh rents Comment a t il t mis en uvre Quels m canismes de Ruby utilise t il pour accomplir ses objectifs Comment Pavons nous int gr Oto Comment avons nous adapt les modules aux changements apport s aux scripts Quelles sont les difficult s auxquelles nous avons fait face Dans ce chapitre nous discuterons de la mise en uvre des modifications que nous avons apport es Oto 2 pour am liorer sa flexibilit et ses performances au moyen d un nouveau m canisme de coordination des t ches de correction de type DSL interne bas sur Ruby ap pel DSL
130. ipedia org wiki Domain specific_language 42 souhaitable d utiliser avec le domaine cibl permettant d exprimer pleinement ce dernier en utilisant les termes et symboles qui lui sont propres e Le langage n tant pas li un langage h te il ne devrait pas souffrir de biais de mise en uvre ou de compromis li s l environnement dans lequel il sera int gr notamment au niveau de la syntaxe ou de la plateforme cible 30 Par contre les inconv nients des DSL externes sont les suivants e La mise en uvre d un DSL externe est complexe Comme il s agit litt ralement de d velopper un nouveau langage de programmation partir de z ro sa grammaire devra tre d finie des analyseurs lexicaux syntaxiques et s mantiques devraient tre mis au point avant de pouvoir finalement le compiler ou l interpr ter Toutes ces tapes demandent en g n ral un effort non n gligeable notamment si une attention particuli re est accord e Voptimisation du code g n r li e des contraintes de performances e Une fois le langage d velopp il sera n cessaire de lui offrir des fonctionnalit s maintes fois support es par une multitude de langages telles que l criture de fichiers ce qui est co teux en temps 3 2 5 DSL internes Les avantages d un DSL interne sont les suivants e Compar un DSL externe le DSL interne est priori plus simple mettre en uvre car les tapes d analyses lexica
131. ique au domaine poss dant des mots clefs et tant structur pour repr senter les concepts du domaine d affaires Utilis dans le domaine pour lequel il est concu un DSL entra ne des gains de productivit de la part de ses utilisateurs Un niveau d abstraction plus lev diminue le temps n cessaire au d veloppeur pour comprendre l intention derri re le code 13 Les DSL r duisent les co ts d entretien du code par rapport un langage g n raliste pouvant utiliser des notations et des concepts propres leurs do maines 23 Ils permettent galement d exprimer la r solution d un probl me dans une langue Ihttp martinfowler com bliki DomainSpecificLanguage html 40 que les sp cialistes du domaine sont en mesure de comprendre Consid rant la difficult que repr sente la communication entre les d veloppeurs et les sp cialistes du domaine dans le cadre d un d veloppement logiciel l emploi d un DSL repr sente un avantage non n gligeable 13 3 2 Langages sp cifiques au domaine 3 2 1 Historique des DSL L id e de langages sp cifiques au domaine n est pas r cente Selon Martin Fowler celle ci serait presque aussi ancienne que les langages de programmation eux m mes Le concept serait en effet apparu dans la seconde moiti des ann es 1950 avec APT un langage visant la programmation de machines outils 23 Une difficult de d crire Vhistoire des DSL est qu il n y aurait pas unanimit qua
132. iques Par exemple l Peut tre avec raison dans les circonstances actuelles Sans pr tendre que la supposition d une im punit probable face au plagiat ferait partie de l habitus de l tudiant universitaire pour citer Bourdieu sup posons que la tentation sera forte en l absence d une d tection rigoureuse syst matique et m diatis e du plagiat 104 l universit nationale de Singapour a d tect en lan 2000 dans le cadre d un premier travail pra tique de programmation qu un nombre aussi important que 98 travaux sur 712 taient plagi s soit pr s de 15 7 Face cette possibilit l int r t d un outil permettant de d tecter automatiquement les cas de plagiat appara t clairement Cette id e n est certes pas nouvelle la litt rature nous per mettant d identifier plusieurs outils vou s cette fin YAP 38 Moss 27 SIM 15 JPlag 26 et autres Roboprof 8 parmi plusieurs dont les algorithmes ont chacun des forces et des faib lesses Plus pr s de nous faisons mention d un rapport informel r dig par notre directeur de recherche il y a d j presque 10 ans 36 o il exposait les caract ristiques de plusieurs outils qui existaient ce moment et exprimait le souhait que l UQAM dispose de logiciels destin s Pautomatisation de la correction des travaux de programmation et de la d tection du plagiat L outil Oto 17 33 tant d j venu r pondre en partie Pautomatisation
133. istant 107 B 5 Les d fauts des solutions actuelles 109 B 6 Conclusi n Moet Eaa nd E ig DE DE EE EN A Li 110 APPENDICE C ANALYSE DE L APPLICATION WEB D OTO 111 G l Mis ren uvre 1 288 prenante aaa go ete ee au AA a e r A 111 C 1 1 Technologies utilis es 111 C 1 2 Limitations et critiques de la mise en uvre 112 C 2 Interface utilisateur et utilisabilit 113 vii CA D finitions soa en st wh lat te ea eee bee ee A eS 113 G22 Utilisabilit Web sers s rasa oe a i ee ee a o es 114 C 2 3 Heuristiques de Nielsen 114 C 2 4 Description de pages types de application Web 116 C 2 5 R sultats Le bee SP PEA A Pe ee EE ge 121 C 3 Conclusion et travaux futurs 123 APPENDICE D RESULTATS DU PROFILAGE DOTO 1 124 D 1 Suite de tests compl te 124 D 2 Correction d un groupe d tection du plagiat 125 D 3 Synth se et analyse des r sultats obtenus 128 APPENDICE E SYNTAXE DES SCRIPTS DU DSL OTO 129 E 1 Appel Oto sur la ligne de commande 130 E 1 1 Ex cution de commandes Oto 130 E 1 2 Ex cution par
134. itante que plusieurs cadres de tests existants permettent de faciliter les tests des applications Web Une rapide recherche nous a permis de d couvrir IeUnit http code google com p ieunit un cadre de tests unitaires pour les pages Web JsUnit http jsunit net une adaptation de JUnit pour le langage JavaScript et JTF http jtf ploki info destin tester le fonction nement d un site avec plusieurs fureteurs Il est fort probable qu une recherche plus exhaustive nous aurait permis d en identifier encore davantage C 2 Interface utilisateur et utilisabilit Au del de la mise en uvre de son code source et des qualit s non fonctionnelles de celui ci interface utilisateur de l application Web souffre de plusieurs d fauts importants notamment au niveau de son apparence peu soign e mais surtout de sa faible utilisabilit Dans cette section nous traiterons de la question de l utilisabilit des interfaces de l application Nous pr senterons d abord cette qualit non fonctionnelle avant d effectuer une analyse d un sous ensemble de pages de l application la lumi re de celle ci Les r sultats que nous obtiendrons nous aiderons tablir des conclusions et des id es de travaux futurs reli s cette application C 2 1 D finition Selon la norme ISO 9241 11 Un syst me est utilisable lorsqu il permet l utilisateur de r aliser sa t che avec efficacit efficience et satisfaction dans le cont
135. ite Dans le cas d une erreur dans l valuation il fallait la d sactiver corriger l erreur dans le script et activer nouveau l valuation processus lourd et d courageant Pour all ger l utilisation de l outil nous avons ajout la capacit de lancer Oto directement avec un fichier de script oto les fichiers 75 n cessaires l valuation ainsi que les TP corriger en une seule commande Dans ce cas les deux seuls l ments obligatoires sont le script qui doit appara tre en premier apr s l appel Oto sur la ligne de commande et tous les TP corriger Oto activera une valuation temporaire nomm e al atoirement et la d sactivera la fin de la correction ou si le script choue 4 5 2 Modification des commandes Le passage au DSL Oto a galement t l occasion de revisiter certaines des commandes d Oto notamment pour les adapter la nouvelle r alit ou pour retirer certains d fauts li s la mise en uvre des versions initiales 4 5 2 1 Lancement des valuations Apr s avoir d velopp le DSL Oto nous avons d modifier les commandes capables de lancer l ex cution d un script y compris rendre_tp qui peut avoir besoin d ex cuter des scripts de remise de TP Ces modifications n ont suscit qu une seule difficult significative Oto ne permettait pas de cr er les dossiers temporaires de tout un groupe la fois avant de corriger et ensuite supprimer ces dossiers
136. itialement prouver la faisabilit d un outil de correction g n rique et extensible et non produire ces r sultats en dec d un d lai le moindrement raisonnable 20 2 2 Analyse et structure de l application Ayant identifi certains des probl mes d Oto nous avons par la suite cherch en trou ver la cause Dans cette section nous traiterons de la structure interne des versions initiales d Oto de la disposition de son code dans les r pertoires o il est install et quelques uns des aspects int ressants de son architecture contribuant sa souplesse sa g n ricit ainsi que son extensibilit et renfor ant ses capacit s de correction 2 2 1 Aspects techniques Si Oto se pr sente comme un seul logiciel il s acquitte de deux t ches relativement in d pendantes manipuler des fichiers et ex cuter des corrections de TP 17 Dans leur mise en uvre ces t ches partagent un certain nombre de principes et de m canismes notamment des tests unitaires Oto est d velopp en Ruby 32 qui est un langage objets interpr t L outil est form d un noyau autour duquel viennent se greffer des commandes lui permettant de communiquer avec l ext rieur et des modules d extension mettant en uvre ses fonctionnalit s de correction 2 2 2 Chargement anonyme des modules Le chargement anonyme des modules d crit par Fr d ric Gu rin dans son m moire 17 donne l utilisateur d Oto la possi
137. itiales ex cutaient un script comprenant une erreur l ex cution de ce script une fois par TP ignorant le fait qu une erreur s tait produite Oto 2 arr te imm diatement l ex cution de la correction Cette capacit de propagation des erreurs facilite le d bogage des scripts De mani re g n rale les temps d ex cution que nous avons obtenus nous sont apparus raisonnables et acceptables davantage que ceux de ses pr d cesseurs l exception de la cor rection de vitesse dont le temps d pend principalement des temps requis par l ex cution des programmes des tudiants l ensemble des r sultats obtenus furent produits en au plus quelques minutes Une v rification de TP individuelle se fait en une seconde ou deux ce qui est un temps acceptable en laboratoire Pour ce qui est des correcteurs nous avons r duit tant le temps n cessaire la correction au total que le d lai avant la mise en vidence d une erreur dans un script ce qui repr sente un progr s int ressant 6 3 Am liorations possibles Un des points les plus importants que notre travail sur Oto a pu d montrer demeure que les performances d un outil d aide la correction seront tributaires de la nature de la t che effectuer Pour cette raison des travaux futurs visant am liorer les performances d Oto pourraient reposer davantage sur le d veloppement de modules plus efficaces et plus performants en prenant notamment avantage des
138. javac et d un autre lui permettant d effectuer des corrections introspectives de classes Java avec JUnit Techniquement parlant un module d extension est un fichier Ruby rb qui d finit plu sieurs constantes et une classe contenant des m thodes utilis es par Oto lorsque le module est utilis dans un script Pour effectuer leur travail les modules peuvent accepter des param tres 3On peut aussi utiliser Oto travers son interface Web Il n est toutefois pas inexact d affirmer qu Oto demeure manipul travers la ligne de commande car c est en fait ce qui se produit l arri re plan l entr e et retournent habituellement des r sultats Ces param tres et r sultats doivent tre d clar s dans le fichier du module Initialement Oto ne disposait que de deux modules Ce nombre t quelque peu aug ment au fil du temps haussant les capacit s d Oto Dans le cadre de notre travail nous avons t appel s modifier plusieurs l ments des modules pour en augmenter les capacit s notam ment en ce qui trait la correction intra groupe pour laquelle Oto n tait initialement pas con u 17 Nous y reviendrons plusieurs reprises dans le pr sent m moire et l instar des commandes pr senterons une liste de l volution des modules l appendice A 1 2 3 valuation et script d valuation Derri re la correction automatis e apport e par Oto se trouve l valuation
139. la correction d un groupe entier corriger_groupe La litt rature que nous avons consult e au sujet du plagiat dans les travaux de program mation nous tonn par sa diversit Pour ne pas alourdir ce chapitre nous avons pr f r placer l appendice B un rapport que nous avons r dig sur le sujet contenant les principales avenues que pourraient prendre un module de d tection du plagiat D s le d but nous avons r alis que le travail r alis par un module de d tection du plagiat pourrait se diviser en deux t ches distinctes d abord pr parer la liste des fichiers comparer puis appliquer un algorithme de comparaison sur ceux ci et en traiter les r sultats La pr paration de la liste de fichiers comparer semblait naturellement relever du module lui m me lequel pourrait traiter diverses options d inclusion ou d exclusion de fichiers de pr paration des fichiers etc Toutefois la mise au point d un algorithme de comparaison de fichiers s il s agissait d un sujet de recherche int ressant semblait loign e de notre objectif d am liorer Oto d autant plus que nous avons pu trouver plusieurs logiciels dont c tait l objectif Pour cette raison notre choix s est finalement arr t sur une approche ayant recours un logiciel externe s occupant de la d tection et laissant au module Oto la charge de pr parer les fichiers corriger et traiter les r sultats de comparaison 1 4 1
140. le ils occupent 63 01 du temps de l ex cution et ce malgr le fait que ces m thodes ne soient invoqu es que 407 fois sur les dizaines de milliers de m thodes invoqu es pour l ensemble de l ex cution Les autres m thodes essentiellement consacr es la manipulation de r pertoires et d entr es sorties sont moins dominantes en terme de pourcentage Il est noter que si Oto passe une quantit non n gligeable de temps 15 52 secondes ex cuter la m thode each sur des tableaux il s agit de code ex cut l int rieur de blocs de code qui n influence pas n gativement les temps d ex cution comme le montre la valeur self D 2 Correction d un groupe d tection du plagiat la figure D 2 se trouvent les extraits les plus importants du profilage d une correction de groupe r alis e par Oto Celle ci qui a t r alis e sur les 37 TP d un groupe d tudiants consiste en un appel conventionnel du module de d tection du plagiat Ce dernier a comme particularit d effectuer un nombre lev de manipulation de dossiers et de fichiers tudiants en plus d avoir recours au logiciel externe pour la comparaison des travaux Dans l extrait pr sent la figure nous constatons qu Oto passe le plus clair de son temps 47 73 effectuer des appels syst mes consacr s majoritairement dans ce cas pr cis au logiciel SIM voir la section 1 4 1 Les autres m thodes concernent essentielleme
141. le syntaxique et s mantique ainsi que la compilation ou l interpr tation seront effectu es par l environnement du langage h te Par exemple un DSL interne bas sur Java sera compil par le compilateur javac e Le DSL interne peut h riter des structures et services offerts par le langage h te diminuant d autant la t che du d veloppeur du langage sp cifique au domaine e Dans un DSL interne il sera habituellement possible d acc der aux biblioth ques de code du langage h te code que le d veloppeur du langage sp cifique au domaine n aura pas r crire ou adapter 43 Par contre leurs inconv nients sont les suivants e Pouvant tre consid r comme une extension du langage h te le DSL interne n est pas enti rement libre de prendre toutes ses d cisions de mise en uvre et doit respecter les conventions et contraintes de l environnement qu il tend Par exemple en Ruby il ne sera pas possible d utiliser le tiret dans les noms de classes de m thodes d attributs et de variables Un DSL interne bas sur Ruby devra se pl