Développement de logiciel pour un Enseignant-Chercheur Retour d'Expérience Bruno Mermet 2016 1 Enseignant-Chercheur Un métier multiple ● ● ● 2 Enseignement – 192h eqTD + heures complémentaires – Conception des cours (http://mermet.users.greyc.fr/Enseignement) – Sujets d'examens et corrigés – Jury, projets, stages – Veille technologique Chercheur – Biblio – Idées – Rédaction d'articles – Encadrements – Participation à des projets / Recherche de financements Ubiquité nécessaire – Réunion recherche / cours – ANF / cours – Conférence / JDEV – Cours / Cours Développements ● ● « Petits projets » – Bibliothèques utilitaires – Frameworks légers pour des TPs « Gros projets » – Enseignement ● ● – Recherche ● 3 Outil de génération de QCM Appli Web de gestion de notes Outil de simulation et d'aide à la preuve de SMA Outil de génération de QCM La base ● Idée Développer un logiciel permettant de gérer une base de questions, classées par thème, et de générer des QCM aléatoires équivalents, en version papier, avec une appli Swing mono-utilisateur pour faire passer des QCM ● ● 4 Caractéristiques – Langage : Java + Swing – Équipe : 1 seule personne – Taille : 2 KL environ Bibliothèques nécessaires – Lecture de fichiers XML – Génération de PDF Outil de génération de QCM Extension par étudiants ● Idée Offrir une version Web ● Réalisation Groupe d'étudiants de M2 ● Principe Génération d'un site web en PHP, avec génération d'une liste d'identifiants 5 Appli web de gestion de notes La base ● Idée Lorsque des examens sont corrigés à plusieurs, avec la correction effectuée « par partie », permettre aux différents enseignants de saisir leurs notes dès qu'ils le peuvent en évitant le partage par mail de fichiers excel. ● ● Caractéristiques – Langage : Java Web (JSP/Servlet + Framework perso) – Équipe : 2 personnes – Taille : 13 KL environ Bibliothèque nécessaire : – 6 JDBC 62 classes 44 JSP 13 KL de code Appli web de gestion de notes Extension 1 par étudiant ● Idée Permettre aux étudiants de consulter leurs notes ● Réalisation Groupe d'étudiants de Master 2 ● Principe Une deuxième appli web dédiée peut accéder à la base de données des notes 7 Appli web de gestion de notes Extension 2 par étudiant ● Idée Permettre aux enseignants même non informaticiens de définir des formules de calcul de moyenne relativement compliquées ● Réalisation Groupe d'étudiants de Master 2 ● Principe Rajout d'une page web dynamique permettant de facilement définir des variables intermédiaires et des formules de calcul pour chacune de ces variables 8 Outil de simulation et d'aide à la preuve de SMA : La base ● Idée Donner corps à nos travaux de recherche, qui consistent à pouvoir spécifier et prouver formellement des Systèmes Multi-Agents (SMA) ● ● 9 Caractéristiques – Langages : Java+Swing, Prolog, JavaCC – Équipe : 2+ personnes (G. Simon essentiellement) – Taille : 30 KL environ Bibliothèques nécessaires 170 classes 30 000 lignes de code – JPL (lien avec prolog) – JavaCC – Jdom (Lecture XML) – jfreechart+jcommon (Tracé de courbes) – (PVS) Outil de simulation et d'aide à la preuve de SMA : extension par étudiant ● Idée Permettre une définition graphique et texte via une page web de la spécification ● Réalisation Stage d'un étudiant de DUT ● Principe Édition graphique et/ou texte des spécifications pour pouvoir, à terme, utiliser le logiciel principal sans devoir l'installer ● 10 Caractéristiques – Langages mis en œuvre : HTML, CSS, Javascript, SVG, Java, XSL, JSP/JSTL – Bibliothèques utilisées : Jdom, jQuery, jsTree – Taille : 5KL – Outils de développements utilisés : git, maven, eclipse Difficultés ● Context switch ● Multiplication des bibliothèques ● Manque de reconnaissance ● Évolution des outils ● Habitudes différentes entre collègues ● Logiciels toujours en versions alpha ● Quelques ratés avec les projets étudiants ● Gestion des licences 11 Context switch ● Les faits – Rarement plus d'une demi-journée d'affilée sur un projet – Avancement par à-coups : ● ● ● 12 Fort avancement pendant 15 jours Reprise l'année d'après Conséquences – Remise en marche longue – Interventions « en urgence » – Perte du fil conducteur – Peur de se lancer dans de grandes évolutions qu'on risque de ne pas avoir le temps de terminer Multiplication des bibliothèques ● ● 13 Exemple – JPL – jDOM – JavaCC – JDBC – jFreeChart – Jquery – PDF – Swing Conséquences – Beaucoup de connaissances à acquérir – À cause du « context-switch », beaucoup d'oublis d'une fois sur l'autre Manque de reconnaissance ● Les faits – En recherche ● – En enseignement ● ● ● ● Ignoré de tout le monde Cas de WebNotes : abandonné du jour au lendemain pour passer à Scodoc, sans prévenir (Au Havre) : aucun outil support (gitlab, jenkins, sauvegarde, serveur apache/tomcat, etc.) Conséquences – Démotivant – Limite le temps que l'on peut y passer ● ● 14 N'intervient que très peu dans les évaluations Peu de tests Peu de documentation Évolution des outils et bibliothèques ● ● 15 Les faits – Eclipse → Netbeans → Eclipse – Junit 4 → Junit 5 ? – Java 5 → Java 6 → Java 7 → Java 8 → Java 9 – Maven → Gradle ? – Svn → GIT – AWT → Swing → JavaFX 8 ? Conséquences – Beaucoup de veille technologique à faire – Les collègues n'évoluent pas tous à la même vitesse – Le suivi d'une évolution peut ne pas être fait (risques, compétences de chacun) Habitudes différentes entre collègues ● ● 16 Les faits – Pas toujours le même IDE – Pas toujours le même langage – Pas toujours les mêmes normes de codage – Pas les mêmes rythmes de travail Conséquences – Compromis pas toujours évidents à trouver – Code quelques fois bancale Logiciels toujours en versions alpha ● ● 17 Les faits – Context switch – Non reconnaissance – Connaissance partielle des bibliothèques Conséquences – Logiciels pas finalisés – L'impression d'être toujours en mode « bricolage » Quelques ratés avec les projets étudiants ● Gestion de QCM, génération de site Web – ● Gestion de notes, appli étudiant – ● Pas opérationnel Édition de spécifications de SMA – 18 Déployé, interface… rudimentaire Gestion de notes, calcul des moyennes – ● Semble marcher, mais pas déployé Fonctionnel, mais pas déployé ni connecté au reste Et les licences dans tout ça ? 19 Les points positifs ● Change les idées ● Permet la mise en œuvre de techno/outils découverts ● Incite à découvrir de nouveaux outils ● Peut permettre de gagner du temps ● Peut permettre de valoriser un travail de recherche 20 Quelques voies d'amélioration ● Utiliser un outil de build type maven ● Organiser des séances « partage de connaissances » ● Pratiquer un peu de « pair programming » ● Utiliser à fond les branches de git ● Se réserver des journées thématiques 21 – Écriture de tests – Refactoring – Documentation