page 1  (10 pages)
2to next section

Techniques de g?nie logiciel pour l?EAO

B. Ibrahim, A. Aubord, B. Laustsen, M. Tepper
D?partement d?Informatique
Universit? de Gen?ve
12, rue du Lac
1207 Gen?ve SUISSE

R?sum?:

Le d?veloppement de logiciels d?Enseignement Assist? par Ordinateur (EAO) n?cessite un travail d?envergure si l?on ne veut pas se limiter ? quelques le?ons d?utilit? purement personnelle. Nous concevons donc le d?veloppement de tels logiciels comme un travail d??quipe. La voie la plus couramment utilis?e dans ce domaine est celle des langages auteurs, lesquels imposent trop de contraintes aux concepteurs de le?ons. Nous avons choisi d?utiliser un formalisme de sp?cification de le?on tr?s simple et un langage de programmation d?utilit? g?n?rale pour implanter ces sp?cifications. Tout un environnement de d?veloppement a alors ?t? con?u sur station de travail graphique pour faciliter la transcription des sp?cifications de le?ons en programmes pouvant ?tre ex?cut?s sur diverses machines cibles. Cet environnement comporte entre autres, un ?diteur graphique de scripts, un g?n?rateur automatique de programmes et un ?diteur multi-fen?tres synchrones pour faciliter le travail des programmeurs qui doivent compl?ter le code g?n?r? automatiquement.

1. Introduction:

Lorsque nous nous sommes lanc?s dans le domaine de l?enseignement assist? par ordinateur, deux orientations principales se dessinaient alors: les syst?mes auteurs d?une part et les biblioth?ques de modules de programmation d?autre part, les premiers ?tant g?n?ralement li?s ? un langage auteur et les seconds ? un langage de programmation dit "classique".

L?avantage g?n?ralement per?u des syst?mes auteurs est l?absence de la n?cessit? de conna?tre un langage de programmation pour pouvoir les utiliser. Cela en fait un outil de choix pour des enseignants d?sireux de d?velopper leurs propres le?ons ? moindre frais. A nos yeux, cet avantage constitue en fait un inconv?nient puisque la simplicit? d?utilisation se fait g?n?ralement au d?triment de la richesse d?expression. Quelques rares syst?mes offrent des possibilit?s de programmation plus ?tendues, mais leur complexit? d?utilisation augmente d?autant. De plus, ces possibilit?s de programmation ne r?pondent que de loin aux crit?res modernes de s?curit? et de lisibilit? des programmes.

Soucieux de n?imposer aucune limitation aux enseignants d?sirant d?velopper des le?ons d?EAO, nous avons choisi l?alternative consistant ? utiliser un langage de programmation se pr?tant bien au travail en ?quipe, c?est-?-dire incorporant la notion de module. Ind?pendamment du choix d?un langage de programmation, nous utilisons un formalisme de sp?cification des le?ons, d?velopp? par l??quipe du professeur A. Bork (Bork86) et qui, tel un sc?nario de film, permet de d?crire le dialogue entre l?ordinateur et l?apprenant ainsi que la logique de d?roulement de la le?on, prenant en compte les r?ponses fournies ? l?ordinateur.

2. Formalisme de sp?cification:

Le formalisme de sp?cification que nous utilisons est fond? sur trois primitives de base: le texte ? faire appara?tre ? l??cran, le commentaire au programmeur et la bo?te de test (contenant g?n?ralement un crit?re d?analyse de r?ponse). La sp?cification d?une le?on se pr?sente donc sous la forme d?un graphe orient? dont chaque noeud correspond ? l?une des trois primitives cit?es pr?c?demment et o? les arcs indiquent le s?quencement des op?rations (exemple fig. 1).

Fig. 1 : exemple de script.

Que vaut 5x7

{R?ponse de l??tudiant}

Pas de r?ponse en 20 sec. 31..2

12, douze
Non,.
tu additionnes. 1

35, trente cinq Bien!

R?fl?chis bien

fois

1

2

2

R?ponds, s.t.p.

Tu confonds
encore addition)

Tu a encore
de la peine

passons au probl?me
suivant.

Essaie encore.

et multiplication

et essaie encore une

Revoyons cela ensemble.
5 x 7 = 35
Essayons un autre probl?me.

Les diff?rents crit?res d?analyse d?une r?ponse (ou d?une action) de l?apprenant sont sp?cifi?s dans une suite de bo?tes de tests qui se suivent en s?quence. Les arcs partant d?une bo?te de test sont g?n?ralement num?rot?s et indiquent ce qui doit ?tre fait la premi?re fois, la deuxi?me fois, etc, que le crit?re inscrit dans la bo?te de test est satisfait. Si le crit?re d?une bo?te de test n?est pas satisfait, c?est le crit?re suivant qui est ?valu?. S?il n?y a plus d?autre crit?re, des arcs partant de la base de la derni?re bo?te de test peuvent indiquer ce qui doit ?tre fait le cas ?ch?ant.

3. Premi?re ?tape: r?utilisation de code

Les premiers d?veloppements que nous avons faits comportaient d?j? une phase de conception p?dagogique s?par?e de la phase de programmation. Le groupe d?enseignants et de p?dagogues charg?s de la conception p?dagogique n??prouvent g?n?ralement aucune difficult? ? ma?triser notre formalisme de sp?cification assez simple. Le plus gros du travail incombe ensuite ? l??quipe de programmeurs qui doivent transcrire cette sp?cification en programmes.

C?est dans le but de faciliter cette transcription et pour ?viter que les m?mes efforts soient r?p?t?s ? chaque fois qu?une s?rie de modules r?utilisables ont ?t? d?velopp?s. Ces modules permettent de g?rer des fen?tres de texte et de graphique ? l??cran, des entr?es au clavier ou ? la souris, des fichiers de messages en acc?s direct pour s?parer la logique de d?roulement des textes des dialogues, des fichiers d?images matricielles pour assurer une certaine ind?pendance vis-?-vis de la r?solution de l??cran (Ibra88), l?acc?s ? un r?seau local pour contr?ler le d?roulement des le?ons et r?colter des statistiques (Ibra85), ainsi que des algorithmes de classification permettant l?analyse des r?ponses de l?apprenant.

Bien que d?une utilit? certaine, ces divers modules n?offrent d?aide que dans une petite partie du cycle de vie d?un logiciel d?EAO. De plus, une bonne partie du travail de programmation qui reste ? faire et qui a trait ? la logique de d?roulement est assez fastidieuse et sujette ? des erreurs d?implantation.

4. Environnement de d?veloppement

De l?exp?rience acquise ? d?velopper diverses le?ons d?EAO, nous avons pu cerner les besoins li?s ? l?utilisation d?un langage de programmation d?utilit? g?n?rale. Ces besoins sont d?ailleurs assez similaires ? ceux de tout projet d?envergure: des outils de sp?cification, des outils d?implantation, des outils de prototypage et de mise au point, et des outils de maintenance.

Les diff?rentes phases de l??laboration d?un didacticiel peuvent ?tre repr?sent?es par la figure 2.

C?est pour faire correspondre ? chacune de ces phases un ou plusieurs outils appropri?s et pour r?duire autant que possible le travail de codage que nous avons d?marr? le projet "IDEAL" (Infrastructure de D?veloppement et d?Elaboration Automatis?e

de Le?ons). Cet environnement de d?veloppement a ?t? en priorit? con?u pour ?tre utilis? par des informaticiens. Cela signifie que la puissance de fonctionalit? a ?t? privil?gi?e par rapport ? la simplicit? d?utilisation, sans pour autant renoncer ? toute convivialit?. Nous pensons en effet que, m?me pour un professionnel de l?informatique, la convivialit? constitue un facteur d?terminant de la productivit?.

Fig. 2 : Les phases de l??laboration d?un didacticiel.

Cet environnement de d?veloppement utilise une station de travail avec grand ?cran. Pour des raisons de portabilit? et d?ind?pendance vis-?-vis des constructeurs le langage de programmation utilis? est le langage Ada et l?environnement de gestion de fen?tre est X-Windows, d?velopp? au M.I.T. dans le cadre du projet Athena (Sche86). Les le?ons d?velopp?es ? l?aide de cet environnement sont con?ues pour ?tre ex?cut?es sur un ordinateur personnel et n?cessitent des ressources nettement plus modestes. Parmi les langages cibles envisag?s, on peut citer Ada, Modula 2, Pascal UCSD, Turbo Pascal...

L?environnement de d?veloppement comporte, pour la phase de conception p?dagogique, un ?diteur de script permettant d?introduire graphiquement la sp?cification d?une le?on ou de modifier la sp?cification d?une le?on pr?-existante.

La phase de r?vision de la conception p?dagogique utilise un traducteur automatique (g?n?rateur automatique de programmes) qui, m?me s?il ne peut traduire la totalit?

d?coupage du sujet en
le?ons et de chaque le?on
en activit?s.
Initial
Planning

Conception
p?dagogique

Mod?lisation
visuelle

Codage

R?vision

Produit
fini

Traduction

R?vision

R?vision

pr?paration du sc?nario
sp?cifiant le contenu de
chaque activit?

mise en page ce qui doit
appara?tre ? l??cran l??cran

transcription du script en programme
sur ordinateur.

traduction des
dialogues en
d?autres langages

du script, est capable de g?n?rer pour faire du prototypage rapide un programme dont l?ex?cution donnera une id?e assez pr?cise de ce que sera le produit final. A ce stade, l??diteur de script peut ?tre utilis? pour apporter des modifications au sc?nario avant m?me que la phase de codage n?ait commenc?.

La phase de codage ainsi que celle de r?vision du code font, elles, appel ? un ?diteur multi-fen?tres synchrones qui permet ? un programmeur de compl?ter dans une fen?tre le code g?n?r? par le traducteur automatique tout en visualisant dans une autre fen?tre la partie du script correspondante. C?est ici que l?utilisation d?un langage cible modulaire apporte un avantage certain. Cela permet en effet de s?parer dans des modules le code ajout? par le(s) programmeur(s), ne n?cessitant pas ainsi la modification du code g?n?r? par le traducteur automatique.

La phase de r?vision du code fait usage d?un outil de supervision ? distance (sur une machine de d?veloppement) pour suivre le d?roulement d?une le?on (sur une machine cible reli?e au m?me r?seau local), permettant de visualiser directement sur le script le cheminement du programme cible. Il est ainsi plus facile de d?terminer ? quel endroit de la le?on a lieu telle ou telle erreur. L??diteur multi-fen?tres synchrones permet alors au programmeur de se placer directement sur le code concern? pour le corriger.

Un m?canisme similaire permet de r?colter automatiquement des statistiques sur le d?roulement des le?ons, une fois que le didacticiel est op?rationnel. L??tude de ces statistiques peut alors amener les concepteurs ? revoir la conception p?dagogique en utilisant l??diteur de script.

A c?t? de la conception et de la mise au point de le?ons, il est une phase qui est assez importante ? nos yeux: la traduction des dialogues. En effet, tous les didacticiels que nous d?veloppons sont ?tudi?s pour pouvoir ?tre facilement traduits dans diverses langues utilisant le m?me alphabet (? quelques variantes de lettres accentu?es pr?s). Cette phase de traduction pouvant intervenir avant aussi bien qu?apr?s des r?visions du script, elle n?cessite l?emploi d?un outil d??dition qui poss?de aussi les fonctionalit? d?un gestionnaire de versions et g?re une base de donn?es de mises ? jour.

Tous ces outils sont interd?pendants et forment un ensemble coh?rent qui peut ?tre illustr? par la figure 3.

5. L??diteur de scripts

L??diteur de scripts est principalement un ?diteur graphique dont les primitives de base ont ?t? choisies en fonction de la finalit? de l?outil. Il est utilis? dans la phase de conception p?dagogique pour construire la sp?cification d?taill?e d?une le?on, tel l?exemple vu pr?c?demment en figure 1. Cet ?diteur est interactif et utilise une souris pour presque toutes les op?rations (sauf l?entr?e de texte) : choix d?une commande par menu jaillissant (pop up menu), s?lection d?une zone ? modifier, placement du point d?insertion . . .

Fig. 3 : Vue d?ensemble des outils et des structures formant l?environnement.

La structure de donn?e construite par cet ?diteur et charg?e de repr?senter le contenu de la le?on est un graphe orient? o? chaque noeud repr?sente une action ?l?mentaire: l?affichage d?un texte (message) ? l??cran, l?ex?cution d?une op?ration quelconque (commentaire au codeur) ou l??valuation d?un test sur une action de l?apprenant. Les arcs orient?s repr?sentent quant ? eux l?encha?nement des op?rations. Cette structure est non-lin?aire puisqu?un noeud repr?sentant un test (g?n?ralement un crit?re d?analyse de r?ponse) peut avoir plusieurs successeurs:

- un successeur implicite (pas d?arc visible) qui est le noeud contenant le test suivant. Ce test suivant n?est ?valu? que si le test courant s?av?re n?gatif.

- un ou plusieurs successeurs explicites qui sont indiqu?s par des arcs ?tiquet?s. Les ?tiquettes sont soit un nombre entier soit un intervalle d?entiers. Elles indiquent quel arc doit ?tre utilis? chaque fois que le test s?av?re positif. La i-?me fois qu?un test est positif, on suivra l?arc qui porte l??tiquette i ou un intervalle contenant i.

de

script

?diteur de script

graphe

g?n?rateur automatique
de programmes
?diteur synchrone
gestionnaire de superviseur

fichier(s) de
messages statistiques

automate ?
?tats finis
compl?mentaires
modules

base de donn?es
de mises-?-jour

formateur

cible

paquets contenant
la variable d??tat

traceur

donn?es

programmes

mat?riel

station

ex?cution

copie papier
du script

machine
sur

traductions

travail

Les primitives de positionnement comportent, en plus des primitives classiques de d?signation directe et de m?canisme d?ascenseur, des primitives d?avancement le long des arcs (en avant ou en arri?re) permettant ainsi de se d?placer facilement en fonction de la structure.

En plus des primitives d??dition, l??diteur de script permet de contr?ler la coh?rence du graphe, mettant ainsi rapidement en ?vidence des arcs oubli?s ou des chemins incomplets.

En sortie, cet ?diteur cr?e un fichier contenant le graphe correspondant ? la le?on et un fichier de messages contenant le texte des dialogues (contenu des noeuds de type message). Ces deux fichiers pourront ensuite ?tre utilis?s par les autres outils de l?environnement (fig. 3) pour obtenir une sortie papier ou pour produire les programmes correspondants.

6. Le g?n?rateur automatique de programmes

La structure de graphe orient? obtenue ? l?aide de l??diteur de scripts se pr?te assez facilement ? une traduction automatique en programme. En effet, ? la structure de graphe, l?on peut faire correspondre un automate ? ?tats finis o? chaque ?tat de l?automate contient l?ex?cution de l?action sp?cifi?e dans le noeud correspondant du graphe. Les arcs sont, quant ? eux, traduits en instructions de changement de la variable d??tat.

Un noeud de type message sera traduit en un appel ? la primitive d?affichage de texte sur l??cran avec, en param?tre, le nom du message correspondant. Un noeud de type test sera traduit en un appel ? une fonction bool?enne dont le corps sera d?fini dans un module externe. Un noeud de type commentaire au codeur sera traduit en un appel ? une proc?dure dont le corps sera lui aussi d?fini dans un module externe.

Le code qui devra ?tre ajout? par les programmeurs se trouve donc dans des modules s?par?s du code produit par le g?n?rateur automatique. Ces modules externes ont leur d?finition (interface) fix?e par le g?n?rateur automatique et leur implantation pourra ?tre d?finie ? l?aide de l??diteur multi-fen?tres synchrones.

Pour permettre un prototypage rapide des le?ons, le g?n?rateur automatique peut produire une implantation "bidon" des modules externes dans laquelle les proc?dures correspondant aux commentaires au codeur ne contiennent qu?une instruction d?affichage du commentaire et les fonctions correspondant aux tests sollicitent interactivement le r?sultat qu?elles sont sens? retourner.

7. L??diteur multi-fen?tres synchrones

Un des probl?mes principaux li?s ? l?utilisation de code produit par un g?n?rateur automatique est que ce code est difficilement lisible par un humain, la plupart des symboles utilis?s ?tant produits par des m?canismes simplistes les rendant assez in-

compr?hensibles. C?est donc dans le but de rem?dier ? cet inconv?nient que nous avons con?u un ?diteur qui, en plus des fonctionalit?s d?un ?diteur de texte dans une fen?tre, g?re une fen?tre auxiliaire dont le contenu est en correspondance directe avec le contenu de la fen?tre principale.

Cette fen?tre auxiliaire affiche la partie du script que le code de la fen?tre principale est sens? implanter. Toutes ces fen?tres (principale et auxiliaire) permettent d?introduire des commandes de positionnement qui provoqueront un d?placement synchronis? de l?autre fen?tre. En plus du code sur lequel il travaille, le programmeur a ainsi en permanence sous les yeux la sp?cification correspondante, qui constitue une documentation nettement plus lisible.

8. Le gestionaire de traductions

Comme il a d?j? ?t? dit plus haut, les didacticiels que nous concevons sont ?tudi?s d?s le d?part pour permettre une traduction facile des dialogues. Si cette traduction n??tait effectu?e qu?apr?s l?ach?vement de la version initiale, il n?y aurait aucun inconv?nient ? utiliser un simple ?diteur de texte pour cr?er une traduction du fichier de messages d?origine. Il arrive toutefois souvent que des modifications soient apport?es au script ? plusieurs reprises apr?s un long moment d?utilisation r?elle, ? la suite de remarques provenant des utilisateurs ou des enseignants.

Pour faciliter le maintien de la coh?rence entre les diff?rentes traductions, un utilitaire multi-fen?tres de gestion des modifications apport?es aux messages permet de se placer automatiquement ? l?endroit o? une modification a eu lieu pour une langue et pas pour une autre, d?afficher dans diff?rentes fen?tres le message modifi? avant et apr?s modification ainsi que la traduction qui doit ?tre mise ? jour. Il y a donc une fen?tre active permettant de mettre ? jour une langue et des fen?tres passives permettant de voir les modifications apport?es ? d?autres langues. Ces diff?rentes fen?tres sont synchronis?es et tout d?placement dans l?une d?elles provoque le m?me mouvement dans les autres.

En plus des primitives d??dition de texte, cet outil poss?de donc des primitives de gestion de versions tenant ? jour une base de donn?es de modifications.

9. Le superviseur de le?ons

Le fait que le graphe du script est traduit en un automate ? ?tats finis permet de facilement visualiser l?avancement du d?roulement d?une le?on. Il suffit pour cela que la machine cible et la station de d?veloppement soient sur le m?me r?seau local. Pour exploiter cette liaison, le g?n?rateur automatique de programmes peut alors ajouter dans l?automate ? ?tats finis une instruction permettant d?envoyer sur le r?seau, ? chaque changement de la variable d??tat, la valeur de cette variable ainsi que l?identification de la machine cible et de la le?on en cours d?ex?cution.

Lorsque la le?on se d?roule sur la machine cible, il suffit alors de mettre une station

de travail ? l??coute du r?seau pour pouvoir visualiser ? l??cran de la station de travail l?avancement de la le?on directement sur le dessin du script. Parall?lement ? la visualisation de l?avancement de la le?on, il est possible de r?colter par le m?me m?canisme des statistiques sur le d?roulement de l?ensemble des le?ons. Ces statistiques permettent ensuite de mieux se rendre compte de l?impact des le?ons sur les apprenants,

en d?voilant les parties o? un grand nombre ont eu des difficult?s, n?cessitant ?ventuellement une modification du script en vue d?am?liorer la situation. Nous avons d?ailleurs par le pass? d?j? tir? profit de machines connect?es en r?seau pour r?colter des informations sur le d?roulement de le?ons (Ibra85).

Moyennant l?adjonction du nom de l?apprenant dans les informations envoy?es par la machine cible, il serait aussi possible de faire du curriculum automatique. Nous sommes toutefois peu partisans d?une telle solution car il n?est pas toujours facile de contr?ler l?identit? r?elle de la personne qui suit la le?on. Cela nuirait aussi au climat

de confiance qui r?gne quand l?apprenant sait qu?il n?y a personne pour le surveiller et qu?il peut par cons?quent faire des erreurs sans se sentir culpabilis?.

Il va de soi que le module d?acc?s au r?seau est con?u de telle fa?on qu?en cas de d?- faillance de ce r?seau, la machine ne soit pas bloqu?e pour autant. En plus de son utilit? ?vidente dans la phase d?exploitation des didacticiels, cette possibilit? de suivre le d?roulement d?une le?on est tr?s utile durant la phase de mise au point. En effet, s?il est possible de savoir ? quel point du script on se trouve lorsqu?une le?on se "plante", l??diteur multi-fen?tres synchrones permet de se placer tr?s rapidement sur le code correspondant, facilitant ainsi la recherche des erreurs de programmation.

10. Extensions futures

Bien que la r?alisation de cet environnement ne soit pas encore compl?tement ache-

v?e, nous envisageons d?j? une direction dans laquelle il serait possible d?en ?tendre la fonctionalit?. Comme le lecteur aura pu le remarquer, le formalisme de sp?cification que nous utilisons est tr?s ouvert puisqu?il permet de fournir une partie de la sp?- cification en langage naturel sous forme de commentaires au codeur. Pour la premi?- re phase de notre projet, nous avons pr?vu que le g?n?rateur automatique de programmes ne s?occupe que des messages et de la logique de d?roulement, faisant correspondre ? chaque commentaire au codeur une proc?dure se trouvant dans un

module externe et dont le corps devra ?tre d?fini par un programmeur.

Nous envisageons donc, dans une deuxi?me phase, d?augmenter la puissance de traduction ? l?aide de techniques d?intelligence artificielle, en l?occurrence des m?canismes d?apprentissage et de g?n?ralisation. Cela consistera ? essayer de reconna?tre des similitudes entre diff?rents commentaires au codeur et de solliciter du programmeur un pr?dicat permettant d?associer des param?tres sp?cifiques ? chaque commentaire.

11. R?f?rences:

Bork86 Bork, Alfred; Weinstock, Harold; editors
Designing Computer Based Learning Material,
Springer-Verlag, 1986.

Ibra85 Ibrahim, Bertrand; K?hni, Crhistiane.
Online Supervision of CBL through LANs,
Education & Computing 1985, vol 1 No 4, pp 243-247,
North Holland, 1986.

Ibra88 Ibrahim, Bertrand.
Portability Aspects for Raster Graphics on Microcomputers,
34th ISMM International Conference: Mini and MicroComputers,
Lugano, June 29 - July 1, 1987, pp 15-18.

Sche86 Scheifler, R.W.; Getty, J.
The X Window System,
ACM transactions on Graphics, Vol 5 No 2, April 1986, pp 79-109.