Retour d’expérience de Promyze à l’INSA
Cet article a été rédigé pour Frédéric Baucher, enseignant à l’INSA (Institut National de Sciences Appliquées). Il nous partage son ressenti et son retour d’expérience sur l’utilisation de Promyze dans le cadre d’un enseignement.
Contexte et déroulement du cours
Le groupe INSA rassemble 7 écoles, dont 6 en France et 1 à Fès (Maroc) avec l’école Euromed. C’est dans cette école qu’a eu lieu l’expérimentation. Après une première expérience à l’automne 2019 avec des étudiants de niveau Master 2 (5ème année ingénieur), une nouvelle opportunité de mesurer l’intérêt de Promyze dans l’enseignement informatique à l’INSA s’est présentée avec le confinement lié à la Covid19. Prévu à la mi-mars en présentiel, l’organisation de l’enseignement « Base de données (BD) – Interaction avec une Base de données” a dû être repensé en quelques jours pour un contexte distanciel.
Dispensé à des étudiants de niveau L2 (2ème année ingénieur), l’enseignement « Bases de données » s’articule autour d’une acquisition théorique (modélisation et conception de bases de données), et une réalisation au niveau du code source est abordée dans le langage Java. La notion de bonnes pratiques est introduite avec quelques patterns de mise en œuvre issus de l’ouvrage “Patterns of Enterprise Application Architecture” auquel a participé notamment Martin Fowler. Ces derniers sont mis en œuvre dans un projet réalisé par des équipes de 3 à 4 étudiants.
Etant donné la maturité des étudiants (et la durée de l’exercice: 6 semaines), le projet (au format FilRouge) a pour ambition pédagogique de faire pratiquer avant tout les grandes activités d’un cycle de développement sans pour autant insister sur leur positionnement dans un type de cycle donné (en cascade : V, W, Y / agile : SCRUM, KANBAN, …). Pour éviter la dispersion, la chaîne de développement est imposée aux groupes d’étudiants, et la liste des livrables est clairement définies. Une attention particulière est accordée à ce que la qualité des livrables soit incluse dans le processus et outillé (de manière automatisé ou pour accompagner une intervention manuelle).
Pourquoi le choix de Promyze ?
Un catalogue des besoins auxquels doit répondre la chaîne de développement a été établi. Si Github et Jenkins ont été retenus pour le stockage du code et l’intégration continue, les analyses de code, l’évolution de la couverture de code ou encore la possibilité de faire des revues de code ont également été des critères de décision. D’autres critères sont venus compléter :
- La prise en charge des langages Java, SQL (et accessoirement JavaScript et HTML)
- La disponibilité en SaaS
- L’ouverture à une utilisation collaborative : partage des données entre tous les étudiants d’une équipe, accès possible à l’enseignant pour annotation
- La cohérence entre les outils retenus
- Une charge mentale limitée en évitant la multiplication des différents outils
Si un outil comme SonarQube a fait partie des candidats, Promyze apportait une réponse supplémentaire sur 2 points dans notre contexte pédagogique :
- La fonctionnalité “Atelier Craft” qui facilite l’illustration et la mise en oeuvre des bonnes pratiques, notamment celles que nous présentons dans les cours.
- Une évolution sur la qualité de code et le taux de couverture de code, avec une approche individualisée par développeur, plus propice à la sensibilisation et à l’accompagnement des étudiants.
On peut signaler tout de même qu’une expérience plus grande acquise lors de projets pédagogiques précédents ainsi qu’un accompagnement de l’équipe Promyze ont aussi contribué à la sélection de leur solution (notamment dans le timing imposé par le Covid19). Dans la suite de cet article, l’étude des 2 fonctionnalités principales de Promyze vont montrer son apport pour les projets de type FilRouge.
Atout #1 : Une revue de code réutilisable grâce aux Ateliers Craft
La fonctionnalité Atelier Craft a été identifiée comme une bonne expérimentation pour organiser des sessions de revue de code. Ces activités étaient souvent pratiquées, jusqu’à cet épisode, de manière informelle, dans la salle de TP, par un échange en proximité, au moyen du pointage du doigt à l’écran des morceaux codes commentés !
Les Ateliers Craft de Promyze sont pensés pour animer la mise en oeuvre des bonnes pratiques. L’objectif est d’organiser des sessions collectives de revues de code pour faire émerger et documenter les bonnes pratiques à appliquer, les challenger et les faire évoluer. Une appréciation humaine sera ici nécessaire, on ne parle de code smells identifiables par des outils de qualimétrie. Ces sessions régulières permettront à chaque personne d’annoter du code pour identifier des zones d’amélioration ou valoriser la mise en oeuvre de bonnes pratiques.
Dans notre cadre pédagogique, l’Atelier Craft est utilisé pour évaluer l’acquisition de compétences des étudiants. Le code source n’est qu’une trace de l’application (correcte ou non) de bonnes pratiques. Une session correspond donc à l’évaluation des projets à un jalon de l’activité pédagogique. Dans notre contexte, un Atelier Craft va regrouper tous les fichiers d’un certain type, que l’on va retrouver au sein de chaque projet. L’objectif est de mettre en lumière certaines mises en oeuvre, d’expliquer à nouveau certains concepts qui n’ont pas été suivis, et de faire évoluer si besoin notre référentiel de bonnes pratiques.
L’Atelier Craft permet de travailler aussi bien en aval, de manière proactive (en documentant les bonnes pratiques a priori) qu’en amont, de manière réactive, en documentant, à la vue des comportements des étudiants, les éventuelles bonnes pratiques dont la mise en exergue n’avait pas été anticipée.
L’Atelier Craft présente des caractéristiques intéressantes sur 2 plans :
- Sémantique : L’exemple ou la bonne application de la bonne pratique (le positif) ou le contre-exemple, soit l’absence ou la mauvaise application d’une bonne pratique (le négatif) sont tous deux des bons moyens de véhiculer ce type de connaissance : la revue de code dans un Atelier Craft permet de typer la sémantique du lien entre un extrait de code et une bonne pratique (pour un exemple, annotation en vert, pour un contre-exemple, annotation en orange)
- Productivité : Lorsqu’une bonne pratique est identifiée dans un fichier, le code correspondant peut être ajouté pour illustration en cliquant sur le bouton Exemple de la barre d’annotation. Lorsqu’un contre-exemple est relevé dans un fichier, une correction peut être proposée pour montrer comment mettre en application la bonne pratique sur le cas annoté, par simple clic sur le bouton Proposer une correction de la barre d’annotation.
Aperçu d’un atelier avec ici 2 axes d’amélioration proposés |
Dans la capture ci-dessus, nous observons que 2 bonnes pratiques ont été proposées, dont une qui préconise d’annoter les méthodes à implémenter avec un commentaire “//TODO”.
Certains “tags” peuvent faire l’objet d’un commentaire, comme on le voit ci-dessous avec une suggestion formulée pour définir une convention de nommage :
À noter que d’autres pratiques, applicables sur des outils de revue de code plus classique ont déjà été documentées. Mais elles ne permettent d’atteindre ni la productivité pour l’auteur ni l’ergonomie pour le développeur, tels que Promyze le permet dans un même contexte.
De plus, la sédimentation de la connaissance dans la bonne pratique permet de la réutiliser et de la faire évoluer d’Atelier Craft en Atelier Craft.
Atout #2 : Une sensibilisation aux outils d’analyse de code
Pour faire prendre conscience du concept « qualité » dans son ensemble, la centralisation des informations au sein d’une même interface permet d’éviter la dispersion dans les outils et contribue à forger chez les étudiants la cohérence du concept. La disponibilité sur un seul portail, sur une seule page, de l’évolution de la couverture de tests et des résultats d’analyse statique sur le code du projet donne une conscience globale des actions de l’équipe.
Un des points forts de Promyze consiste à individualiser la contribution à la dette technique. Dans son cockpit, l’étudiant peut apprécier sa contribution personnelle où lui sont remontées toutes les actions, évaluées saine, réparatrice et nocive, avec un lien vers le code annoté pour localiser la source de chaque évaluation. Ces dernières sont calculées en fonction des outils d’analyse de sources (linter). Pour des raisons de commodités, un linter embarqué dans Promyze a été activé (Java – Checkstyle) et configuré pour un sous-ensemble de règles fixé grâce à l’édition d’un fichier de configuration depuis Promyze. Cette individualisation de la donnée rentre dans le cadre d’une démarche d’amélioration continue et de sensibilisation bienveillante.
Conclusion et perspectives
Cet article rend compte de l’usage fait de Promyze dans le cadre d’un enseignement de niveau L2. Au-delà de l’usage comme portail fédérateur autour de la qualité de code, l’un des apports innovants de l’outil réside dans la notion d’Atelier Craft. Avant l’expérience décrite dans cet article, l’annotation du code était plutôt rempli par des outils de revue de code (voire par des séances de relecture sur écran en séance de TP). La mise en perspective de ces outils permet de mieux comprendre les finalités qu’on pourra attendre de l’un ou l’autre :
- Sur un outil de revue de code classique, on effectue une relecture d’un morceau de code avant son ajout au code global d’une application, pour vérifier certaines conventions et améliorer le code avant fusion.
- Avec les Ateliers Craft, le travail consiste à définir, diffuser et améliorer en continu un référentiel de bonnes pratiques, afin de partager et capitaliser plus facilement sur les connaissances. On comprend pourquoi l’Atelier Craft s’inscrit naturellement dans un cadre pédagogique pour faire monter en compétence et accompagner la progression de l’étudiant.
Alors que le contexte sanitaire était exceptionnel, les étudiants de L2 ont pu continuer à se perfectionner en utilisant Promyze dans le cadre des Ateliers Craft. Bien que leur rôle était limité à celui d’observateur, ils ont pu analyser la qualité de leur code de manière individuelle et collective. Cela leur a permis d’apprendre directement les bonnes pratiques et les améliorations à faire à partir de leur propre travail. Un atelier pratique que les étudiants ont apprécié et que nous réitérons avec les M1 lors de la rentrée 2020. Nous prévoyons aussi de faire évoluer le rôle des étudiants pour les rendre plus acteurs et animateurs de la démarche.
Rendez-vous donc début 2021 pour un nouveau retour d’expérience sur ces usages !