550 likes | 689 Views
L’école d’ingénieurs des sciences et technologies de l’information et de la communication. JNEWS ( J ava N ew E valuation W eb S ervice) Une plate-forme de dépôt, test fonctionnel, et analyse de code source pour Travaux Pratiques en programmation. Le Conservatoire National
E N D
L’école d’ingénieurs des sciences et technologies de l’information et de la communication JNEWS (Java New Evaluation Web Service) Une plate-forme de dépôt, test fonctionnel,et analyse de code source pour Travaux Pratiques en programmation Le Conservatoire National des Arts et Métiers ESIEE,
Présentation et plan Jean-Michel DOUIN (CNAM Paris)&Denis BUREAU (ESIEE) • I. Introduction • II. L’outil JNEWS • III. Technique et outils • IV. Bilan au CNAM • V. Bilan à l’ESIEE • VI. Perspectives & conclusion • Questions ?
Contenu de la partie I. • I. Introduction • I.1 Présentation des intervenants • I.2 Historique de JNEWS à l’ESIEE • I.3 Démonstration • pour étudiant • pour enseignant
I.1 Présentation des intervenants • Jean-Michel Douin : • Enseignant au CNAM Paris(Cedric) • concepteur et implémenteur de JNEWS • Denis Bureau : • Enseignant permanent à ESIEE Paris (A2SI) • Spécialisé en langages de programmation (M. OO)
I.2 Historique de JNEWS à l’ESIEE • 1998/1999 et 1999/2000 : rendu par mail ! • 2000/2001 et 2001/2002 : dépôtbalbutiements : Brazil, requêtes SQL par les enseignants ! • 2002/2003 et 2003/2004 : dépôtlien vers page web avec applettes et sources (serveur cnam, mais consultation étudiants)- risque de copie sauvage dénoncé par les étudiants- risque d’ inaccessibilité des pages web par les enseignants • 2004/2005 : dépôtpage web avec applettes et sources sur serveur cnam • 2005/2006 et 2006/2007 : autoévaluation et dépôtjunit3 : sur serveur a2sidepot : sources par php (pas BdD) sur serveur a2si
Métriques de Berkeley • PMD(http://pmd.sourceforge.net/) , etc…
Dépôt des sources et du rapport • En fonction d’un agenda
I.3 Démonstration 2007/2008 : junit3 et depot à l’ESIEE (serveur a2si) En résumé (étudiant / enseignant) : • Compilateur : erreurs de syntaxe • Tests locaux : fournis, ou pensés par l’étudiant • Tests distants : pensés par les enseignants • Consultations : historique, et résultats des autres • Visualisations : erreurs, assertion, source • Analyses des sources : outils pointilleux, verbeux • Dépôt des sources : TP rendu !
Contenu de la partie II. • II. L’outil JNEWS • II.1 Objectifs & Principe • II.2 Côté enseignant : gains • II.3 Quelques statistiques • II.4 Quelques interrogations
II.1 Objectifs • Enseignement de la programmation … • Cours magistral et éventuellement des Exercices Dirigés • Travaux Pratiques (pour de futurs professionnels) • Quels types d’applications ? • Combien de classes ? de lignes ? Complexité ? • Qualité des programmes ? • Tests fonctionnels, analyse des sources, documentation, preuves ? • Comment encourager les étudiants ? • Comment vérifier le travail fourni ? • Étudiants comme enseignants
II.1 Principe • Principe initial de JNEWS • Auto-évaluation • Pour les étudiants : une aide à la réponse attendue • Pour les enseignants : mesures et statistiques • Enseignant/correcteur : mise en place de tests, d’assertions • JNEWS maintenant • Une analyse des sources et du code par des outils existants • Un dépôt des travaux effectués avec un échéancier
II.2 Enseignants : gains escomptés • Identifier les échecs/réussites rencontrés afin de : • Reprendre une partie du cours, • Vérifier les acquisitions • Ajouter d'autres questions, • Retirer les questions triviales, • Ajouter de nouveaux tests, • Retirer certaines ambiguïtés de l’énoncé • ...
II.2 Quelles mesures ? • Statistiques pendant et après la remise du TP • Le nombre d'auditeurs et leurs tentatives, • Les échecs et leur occurrence, • Le nombre d'auditeurs ayant réussi, en une seule soumission, • Les échecs les plus fréquents pour un TP donné, • Des ratios comme le nombre d'échecs sur le nombre de réussites, • Le source des assertions ayant engendré un échec, • Le nombre de réussites ou d’échecs pour chaque assertion • …
II.3 Ratio échecs/succès : taux de complexité ? • Un exemple d’interrogation • tp7 et tp8 • tp9 en cours
II.3 Aide à la correction d’un TP (1/2) • Par tp, le tp8 était facile
II.3 Aide à la correction d’un TP (2/2) • Le tp7 était moins facile … • * Traces sur la console détectées System.out.print indésirables ?
En détail ou une mesure de l’effort ? II.3 Tous les résultats par étudiant • Un bilan
II.3 Assertions référentes du correcteur • Quels échecs rencontrés ? Quelles mesures ?
II.3 Assertions en clair et statistiques • Soit pour cette assertion du tp7 :
II.4 Accès aux échecs rencontrés pendant le TP • En temps-réel, un poste/portable dédié • Moniteurs de TP, vacataires • Accès aux sources des tests établis par le correcteur Réponse immédiate • Aux doutes, aux questions de l’étudiant :« expected: "az" but was: "bz" »mais à quel test ?
II.4 Interface administrateur : agenda et outils • Interface extensible
Contenu de la partie III. • III. Objectifs, technique et outils • III.1 Brazil et HSQLDB • III.2 Java, IDE, plugin : JDK6, BlueJ, Submitter • III.3 Tests et java : junit • III.4 Dépôt • III.5 Autres outils distants(pmd, findbugs, jass, esc/java, prolog, …) • III.6 Ajouter un nouvel outil • III.7 Sécurité, permissions
III.1 Objectifs • Accessible depuis internet • Étudiants et enseignants, correcteurs et administrateurs • Assurer un couplage faible • JNEWS / Outils • N’importe quel outil, n’importe quel exécutable ? • Quel que soit le système d’exploitation ? • Sécurité, permissions ?
III.1 Brazil et HSQLDB • Technologies utilisées • Serveur Brazil de Sun, 100% Java (Sun Public License) • Choix historique • Boîte à outils pour la construction de serveurs Web • Modulaire, léger, simple • BSL langage de script associé (cf. PHP, …) • HSQLDB, 100% Java (BSD License) • Base de données éprouvée (OpenOffice 2.0, Hibernate, …) • 20 classes développées + une vingtaine de scripts BSL • 2 JVM indépendantes
III.2 IDE, plugin • BlueJ : • IDE avec Outil submitter intégré, • envoi des travaux au protocole HTTP • Via un simple formulaire
III.3 Tests et java • Tests fonctionnels en « Boîtes Noires » • Outil www.junit.org ou www.httpUnit.org • Exemple : void test_ajouter_référent() { • liste.ajouter(3); // méthode ajouter de la solution de l’étudiant • assertTrue("ajouter est en échec ???", liste.contient(3)); // le test } ajouter est en échec ??? C’est le commentaire retourné à l’étudiant
III.4 Agenda, soumissions et dépôt • Échéances gérées par l’agenda de JNEWS • Échéance rappelée à chaque soumission • Dépôt de la solution de l’étudiant • Un document HTML comme rapport de TP (avec ou sans applette) • Seul ou en binôme, • À temps, en retard …
III.5 Autres outils distants implémentés • Autres tests unitaires (inspirés de jUnit) • HttpUnit, jWebUnit, • Pour Prolog (swi-prolog), • Analyse de sources • PMD, checkstyle, findbugs, jlint • Programmation par contrats • Jass3, ModernJass • Aide à la « Preuve » de programme • ESC/JAVA2
III.6 Ajout d’un nouvel outil • Scénario pour un couplage faible JNEWS / Outil • Envoi du travail de l’étudiant • Exécution de l’outil côté serveur • Analyse de l’affichage résultant • Transmission des résultats d'évaluation 2. : Exécution de l’outil Une balise BSL <exec nouvel_outil paramètres> 3-4. : Analyse de l’affichage résultant Une nouvelle balise BSL <nouvel_outil paramètres> Déclenche un programme Java d’analyse de l’affichage et de calcul du résultat
III.6 Table OUTILS_JNEWS pmdhttp://pmd.sourceforge.net/ checkstylehttp://checkstyle.sourceforge.net/ findbugshttp://findbugs.sourceforge.net/ escjavahttp://kindsoftware.com/products/opensource/ESCJava2/ prologhttp://www.swi-prolog.org/ …
III.7 Sécurité, permissions • Exécution d’un « Outil » ? • À l’identique d’une commande effectuée localement • Exécution du programme d’un étudiant • Qui boucle ? • délai de garde • Qui exécute des appels systèmes ? (fichiers, requêtes, …) • SecurityManager en Java, • adaptable en fonction du TP ou de la question
Contenu de la partie IV. • IV. Bilan au CNAM • IV.1 CNAM Paris(plusieurs unités, plusieurs années) • IV.2 Les centres associés CNAM(diffusion, utilisation locale, agrégation) • IV.3 Observations- sur étudiants (monôme, à distance)- sur enseignants
IV.1 CNAM Paris • Programmation Avancée (niveau L3) (NFP121) • 250 auditeurs/an, 10 TP, plus de 10000 soumissions • « Il est fortement conseillé de faire les TP » • environ 150 auditeurs/an pour plusieurs UE en M1 et M2 • 20 auditeurs pour une unité M1 totalement à distance (FOD) • Écoles d’ingénieurs notamment l’ESCPI-CNAM.
IV.2 Les centres associés CNAM • Un site JNEWS par centre associé CNAM • Gestion/soumissions autonomes • Diplôme national : même contenu et même examen • Exemple : NFP121 (Programmation Avancée L3) • Collecte des résultats des Centres Cnam, • Statistique nationale des tentatives aux mêmes TP, • Export en XML des journaux de JNEWS • Cf. projet ESIEE/IN4 en 2007 • par Aymen Boudrigua et Aymen Bouzouita
IV.3 Observations • NFP121 : Côté auditeur ( cours/ED en présentiel, TP à domicile) • + Les tests/JNEWS deviennent l’objet de discussions animées sur le forum • « je ne comprend pas, mes tests fonctionnent … à la soumission, j’ai les problèmes suivants … » • + Motivation accrue, • + Interactions avec les enseignants en ED ! • - Critiques • Sur le canevas des classes imposé • Sur le nom imposé des méthodes Créativité moindre
IV.3 Observations • Côté correcteur • + Un cadre imposé des réponses attendues, • + Tests/JNEWS + rapport = correction facilitée (ou bien les tests réussis induisent une lecture plus rapide du rapport … en moyenne 120 TP à corriger par semaine !) • - Un test référent se construit sur au moins 2 années • + Acquis effectifs pour la poursuite de la formation
Contenu de la partie V. • V. Bilan à l’ESIEE • V.1 IN413 passées (depuis 1999) • V.2 IN413 2007/2008 (junit3, depot) • V.3 OV5-SEJA 2007/2008 (junit3, depot) • V.4 Observations
V.1 IN413 passées • Statistiques sur les 4 premiers TP 2006/2007686 soumissions junit3 :réparties entre 9h40 et 19h24, + 1 22h10 dont 368 avec 0 fautesdont 285 hors créneaux de TPdont 5 le week-end ( => à l’ESIEE !)43 soumissions pmd par 17 étudiants25 soumissions findbugs par 15 étudiants62, 62, 58, 57 sur 65 ont rendu leur TP 1, 2, 3, 4
V.2 IN413 2007/2008 • 1735 soumissions (dont 850 succès et 135 exceptions) • Seulement 20 findbugs et 14 pmd • Et 525 dépôts (dont 450 à temps) • 67 (60) étudiants sur 69 ont soumis (déposé) 7 TP • groupe1: 456, groupe 2 : 478, groupe 3 : 649 • Tests unitaires pour • Applettes, graphique, junit • Clients et Serveurs Web junit, HttpUnit
V.3 OV5-SEJA (COSI) 2007/2008 • 221 soumissions (dont 107 succès et 41 exceptions) • Et 60 dépôts (dont 38 à temps) • Tests unitaires pour • Applettes, graphique, junit • Clients et serveur RMI, junit • Clients et Serveurs Web junit, HttpUnit • Dépôt du projet
V.4 Observations • Les étudiants travaillent !- pendant les 2h de TP : 611 dont 498- pendant les heures scolaires - TP : 1125 dont 738- 7h30-8h, 12h-13h, 19h-22h : 447 dont 188- 22h-2h20 : 109 dont 74donc 2/3 hors des TP et 1/4 hors heures scolaires • Les étudiants vont au bout de chaque questionet acceptent les remarques … de l’ordinateur !- [4, 1, 3, ] n’est pas acceptable- [4,1,3] est différent de [4, 1, 3]
Contenu de la partie VI. • VI. Perspectives & conclusion • VI.1 Analyse des sources(générale ou particulière) • VI.2 Autres développements futurs • VI.3 Développement « en cours » • VI.4 Utilisations futures(à l’ESIEE / ailleurs ?)