lundi 8 mars 2010

Passer d'élève à prof

Aujourd'hui j'ai eu la chance de me glisser pendant 2 heures dans la peau d'un enseignant, très franchement je ne suis pas déçu mais je ne m'attendais pas à ça non plus.

Contexte de départ 

Le lycée Camille Claudel de Digoin (71) accueil plusieurs fois par semaine des élèves en difficultés en provenance de différents collèges. Le but est de leur montrer que l'école ne se limite pas aux mathématiques, français et anglais, mais qu'elle permet de voir d'autres choses. Le fait de monter d'autre choses à ces jeunes leur permets de comprendre que les matières que l'ont étudies à l'école sont importantes. Dans cette optique on m'a demandé si je serais d'accord pour avoir un petit groupe de collégiens pou leurs faire un cour dans ma spécialité, qui est, qui est ?? l'informatique, et plus particulièrement le développement logiciel. Ce ne fut pas simple car après examen on m'a dit qu'en fait ce ne serait pas possible car je n'étais pas licencié et donc qu'on ne pourrait pas me payer. Je me suis alors proposé pour le faire bénévolement car d'une part cela me permet de voir ce que c'est que de transmettre sa passion à des élèves et d'autres part, cela me permet de voir comment réagissent les élèves au cour que je suis susceptible de réaliser pour eux.

Le choix difficile du programme

Après accord et quelques recherches de salles d'informatique libres, je me suis mis en quête du programme parfait pour ces jeunes élèves. La première question que je me suis posée à été : Quoi ? et j'y est naturellement répondu par : Java. Je me suis ensuite demandé : Pourquoi ? et j'ai alors pensé que c'était bien d'utiliser Java car c'est une technologie relativement simple coté base. Mais quelque chose c'est imposée à mon raisonnement, quelque chose qu'il fallait respecter.. Si je veux faire passer ce que j'aime, je ne doit pas dégouter mon publique, or commencer avec un langage de programmation typé orienté objet n'est peut être pas la meilleur solution.. bien qu'en réalité j'imaginais déjà un petit RPG textuel dans une Applet (j'avais préparé le TP sur netbeans).. Je me suis alors tourné vers python car c'est un langage simple (type de variable dynamique, tableau très simples à utiliser, un module Tkinter pour faire des petites fenêtres..). Après un week end "déménagement" et quelques courbatures plus une bonne douche, je me suis dit qu'il serait préférable de commencer par quelque chose de concret rapidement, quelque chose de tellement simple que ça serait accessible à tout le monde.. J'ai alors choisie le HTML.

Déroulement de la séance

Nous avions une séance de 2 heures de 9h00 à 11h00 dans une grande salle pleine d'ordinateur avec un tableau, un rétro-projecteur (relier à un PC) et du chauffage (c'est un point essentiel croyez moi :-) ). Lorsque les 3 élèves sont arrivés (accompagnés d'un éducateur), nous avons commencés. Le début fut assez difficile car les pauvres ne savaient pas du tout ce qui les attendaient. Je leurs ai donc expliqués grossièrement le déroulement de la séance (qui c'est presque passée comme je le voulais). Une fois la glace brisée et les présentations faites, nous attaquâmes les bases du HTML avec un document vide sans balises avec un peu de texte.
Première chose que je note : Les jeunes (2 sur 3) avaient réellement du mal avec le clavier pour trouver certaines touches comme les crochets, la tabulation, le slash, les double quottes (que j'appelais guillemets).
Deuxième chose qui m'a marqué : Aucun ne savaient ce qu'était une extension de fichier ni même un dossier.
J'ai donc dans un premier temps affiché un clavier avec les touches stratégiques au tableau via le retro-projecteur, puis j'ai fait un petit résumer sur les formats de fichiers et pourquoi ils avaient une extension (dire que sous linux les fichiers n'ont généralement pas d'extensions.. mais passons).
J'ai adapté le cour à la vitesse des élèves car le but n'était pas de les brusquer, mais de leur montrer qu'on pouvait être maitre de l'ordinateur et plus un simple utilisateur (être un créateur, un artiste, n'est pas merveilleux ?). Coté HTML nous n'avons pas vue les balises <html>, <head>, <title>, <body> pour simplifier la chose, cependant nous avons largement abordés <#h[1-6]#> (désolé pour l'expression régulière, c'était plus fort que moi ^^'), <p>, <a>, <ul>, <li>, <ol>, <strong>, <ins> et <img>. Il s'est avéré que travailler avec des images les a éveillés d'un coup car c'est graphique, c'est concret et ce n'est pas du texte. Nous nous sommes amusés avec la vielle propriété align pour centrer nos images ou les déplacer sur le coté droit ou gauche (pas de css la première fois).
Les deux heures sont passée relativement vite et je n'ai pas eu le temps de m'ennuyer, car j'étais soit sollicité à droite à gauche pour expliquer qu'il fallait fermer ces balises ou alors j'étais au tableau à expliquer la logique de certaines choses.

Conclusion

Et bien si c'était à refaire je le referais ! on me l'a d'ailleurs proposé. J'ai été agréablement surpris par les élèves qui m'ont demandés à la fin du cour où récupérer notepad++ pour qu'ils puissent essayer de refaire ce qu'ils avaient fait dans la matinée chez eux. L'éducateur qui les accompagnait à beaucoup aimé ce cour lui aussi et attend le prochain. C'est donc un bilan très positif pour une première approche d'enseignement. Il y a une chose que je tiens tout de même à signaler : Les jeunes ne savent pas ce qu'est un fichier jpeg ou comment créer un dossier par contre.. ils savent poster des images sur facebook.. Sacré génération..

Contrat Creative Commons

dimanche 7 mars 2010

Modélisation Merise : La prise de tête des logiciels

Je ne sais pas si vous avez déjà été face au problème que je vais décrire mais je vous propose un début constructif de solution. Je vais vous parler d'un projet qui me trotte dans la tête et qui a comme sujet la méthode de modélisation Merise.

Mise en situation

Vous êtes étudiant en informatique et on vous demande de modéliser un système d'information que ce soit pour un devoir, un exercice.. Vous prenez alors votre feuille et vous lisez jusqu'à l'épuisement le sujet de votre prof qui en plus de ça est un gros sadique dans ses sujets (tout les profs d'analyse que j'ai vue étaient sadiques, je finirais peut être sadique moi aussi qui sait..). Alors vous commencez par dessiner, puis gommer (car vous avez eu la bonne idée de ne pas utiliser un stylo bille, mais plutôt un crayon de papier :-D ), puis de faire des gros changements, et pour finir vous vous apercevez que la feuille n'est plus assez grande (c'est l'enfer !).

L'informatique : Un outils pratique pour économiser des feuilles

Oui, passons sur l'informatique car cela nous permettra d'économiser quelques bloc notes et nous fera aussi gagner du temps (plus besoin d'effacer et de redessiner un traitement au milieu de la feuille car il n'avait pas sa place à droite..). Pour réaliser tout ça il va nous falloir un logiciel de modélisation. Deux solutions s'offrent à nous
  1. Utiliser un logiciel payant
  2. Utiliser un logiciel gratuit
Comme nous n'avons pas les moyen d'acheter PowerAMC ou WinDesign nous regarderont du coté des logiciels gratuit et que nous propose l'offre ? Pour les MCD, MLD et MPD :
  1. Analyse SI (abandonné depuis 2008)
  2. Devaki NextObject (abandonné depuis 2004)
  3. Open ModelSphere
Pour les autres diagrammes : MOT, MCT, Diagramme acteur flux..
  1. Microsoft Viso (raté j'avais dit gratuit)
  2. Dia
  3. Inkscape
  4. The Gimp
  5. Paint..
Comme vous pouvez le constater il a quelques logiciels cependant (et j'insiste) ils ne répondent généralement pas au formalisme Merise/2.

Concernant la modélisation des données, Analyse SI est très pratique pour faire de petites modélisation mais ne gère pas les association réflexives ainsi que les extensions (premier problème). NextObject (dont j'ai réalisé la traduction et le port vers Java 1.6) est plus complet mais ne supporte pas  lui non plus les extensions de Merise/2 (deuxième problème). Open ModelSphere est ma foie assez bien fait mais là encore ... (ou alors les extensions comme les association d'ordre N (2 généralement) sont cachée et le logiciel est complètement in-intuitif).

Coté traitement c'est encore pire ! enfin il faut relativiser ce propos, pour réaliser un diagramme Acteur/Flux ont peut utiliser sans problème un soft comme Gimp ou Paint par contre pour concevoir un MCT ou un MOT c'est une autre paire de manche (dans un MCT les cases de traitement n'ont pas forcement la même taille donc faire des graphiques générique n'est pas une solution).

Qu'est ce qu'on apprend en regardant les logiciels de modélisation de données ? Ils sont tous codés en Java, n'est ce qu'une Coïncidence ? J'y reviendrais.

Est-on le mieux servie que par soie même ?

C'est pour cela que je fait des études dans le développement logiciel donc voilà ce que je propose : Concevoir un logiciel de modélisation Merise/2 avec ses extensions (ça ne servirait strictement à rien sinon) gratuit pour tous. Examinons un début de cahier des charges :

Coté données :
  1. Modèle conceptuel de données : MCD (Héritage, Associations d'ordre 2, Contraintes (exclusivité, partition, etc..)
  2. Modèle logique de données : MLD
  3. Modèle physique de données : MPD
  4. Génération de script SQL (compatible MySQL)
Coté traitement :
  1. Modèle conceptuel de traitements
  2. Modèle opérationnel de traitements
Coté graphique :
  1. Digramme Acteur/Flux
Il serait fort intéressent que le logiciel soit disponible sous Windows, Linux et Mac et bien entendu qu'il soit gratuit. Vers quelle technologie se tourner ?

Coté technologies

Java : C'est une bonne plateforme, j'étudie actuellement certaines choses mais il est claire que coté déploiement ça serait le pied et on pourrait toucher un maximum de personne (en local, sur le web via une applet ou via JavaWebStart). Je suis donc à la recherche d'une (ou plusieurs 1,n) API ou framework permettant de réaliser des dessins de manière relativement simple, souple et portable.

C#/.Net : Au risque d'en étonner plus d'un, je ne pense pas que la plateforme .Net soit un bon choix pour ce type d'application, car même si le développement serait largement facilité par le contenu du framework .Net et de ses outils (Visual Studio), un port vers Linux et Mac ne se ferait qu'avec l'utilisation de Mono et sans doutes GTK#. Les options de déploiements sont intéressantes avec .Net mais Java est encore largement supérieur sur ce point.

Python/PyQT4 : Cela pourrait être une très bonne idée car le langage python est relativement simple et souple et l'utilisation du framework Qt4 permettrais d'avoir un rendu coté fenêtre impeccable. Coté déploiement nous serons obligés de distribuer Python et PyQt4 avec la version windows ce qui à mon sens est lourd (en plus là je part du principe qu'on n'utilise que Python ET Qt4 et rien d'autre..)

C++/Qt4 : Je ferais les mêmes remarques pour le coté Qt par contre pour le coté C++ les exécutables seront compilés pour chaque plateformes et il faudra s'assurer que chaque plateformes est compatible avec le code, la difficulté est bien plus grande.

PHP/technos Web : Cela peut être encore plus intéressent car à l'heure du cloud je vois assez bien sur le net un mini AGL simple d'accès (comme le son les outils en ligne de google). On pourrais aussi l'installer en local sur un serveur apache/php. Dans tous les cas nous n'aurions pas à nous soucier du code, car ça sera au navigateur de faire le boulot de rendu ! (il faudra peut être prendre en compte de vieux navigateurs comme IE7.. mais c'est sans doute un des seuls inconvénients) 

Coté APIs/Framework j'ai déjà parlé de Qt4 mais on peut aussi penser à OpenGL et à DirectX (Une entité qu'est ce que c'est ? au final c'est 6 vertex avec une texture 2D qui contient le texte à afficher).


C'est donc un projet intéressent qui rendrait service à plus d'une personne, que ce soit un étudiant qui n'a pas les moyens de s'acheter un PowerAMC ou une jeune entreprise qui à besoin de modéliser son système d'information de manière efficace. 

N'hésitez pas à réagir !

Contrat Creative Commons