Développement de logiciel pour un Enseignant

publicité
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
Téléchargement