Développeur de demain

11 février 2013

TronUn logiciel constitué d’un corpus de plusieurs millions de lignes de code s’apparente à un système complexe (grand nombre de paramètres) : il devient difficile en particulier, de le faire évoluer de manière importante (refactoring massif, évolution de l’architecture) en garantissant sa stabilité. Les méthodes comme l’outillage à mettre en oeuvre pour ce genre de manipulation sont encore à découvrir.

Directement concernés par le sujet, nous travaillons, chez mon nouvel employeur (Kyriba) à l’élaboration d’un “outil de développement du futur” à travers le projet “Tron” (le nom étant déposé, il s’agit juste d’un nom de code interne).
Les travaux s’articulent autour de plusieurs axes :

  • représentations du code (mots clés : modélisation, rétro-modélisation, projection, invariants, métriques, code mining) ;
  • navigation dans le code (mots clés : interface homme-machine, réalité virtuelle, immersion, expérience utilisateur) ;
  • manipulations du code (mots clés : interface homme-machine, refactoring, automatisation, model driven engineering, synchronisation, transformation de code).

Il y a plein de questions extrêmement ouvertes à l’heure actuelle. La première est celle de la représentation “alternative” du code : comment dépasser la vision hiérarchique du code via le couple arborescence de fichiers/code source ?
Comment “voir” le code d’une application complexe ? Quelles sont les projections pertinentes ? Comment extraire l’information du code (i.e. quelles parties du code peuvent être abandonnées, ou mutualisées sans altérer ou en altérant faiblement sa sémantique) ? En d’autres termes comment obtenir une représentation visuelle “compressée sans perte” du code (ou en maîtrisant précisément le niveau de perte) ? Comment peut-on décorer le code avec de l’information calculée (métriques) et utiliser cette information comme support de la représentation ? Peut-on adapter la représentation à l’utilisateur, à son « modèle mental du code » ?
Un exemple intéressant de ce qui se fait dans certains labos ne peut dissimuler le fait que ce sont des sujets relativement balbutiants (pas de grosse bibliographie sur le sujet).

Je vous parlerai des questions liées à la navigation et à la manipulation dans le prochain post.

6 Responses to “Développeur de demain”

  1. Frédéric ZgudNo Gravatar Says:

    C’est un sujet très intéressant, qui ne peut que titiller les anciens utilisateurs d’un outils comme D.OM. J’en conserve notamment l’impression d’une plus grande lisibilité (statique) des objets, des relations => modèles, boites et fils plutôt que fichiers et arbre de rangement.

    Par ailleurs, sur un projet, j’avais été amené à faire un analyseur de code permettant de se déplacer dans le graphe d’appels. C’était assez pratique et c’est à rapprocher des outils d’analyse de couverture de code, qui fonctionnent par opposition à l’exécution de tests et pas en analyse statique. Il me parait intéressant d’avoir cette vision : je suis à un endroit (appel de méthode), qu’est-ce que je couvre, où je vais passer ? (avec une jolie représentation 3D, de préférence :) )

    Mais ce que tu suggères vers la fin est (hélas!) fondamentale : la représentation propre à l’utilisateur. Car si j’ai listé un certain nombre de mes intérêts ou préférences, je sais que ce ne sont pas (forcément) ceux/celles de mon voisin. Personnellement, la représentation de la vidéo en lien ne m’apporte rien.

  2. GregNo Gravatar Says:

    @Fred
    Merci, Fred, de ton commentaire. Si tu as des besoins précis, ou si, dans ton quotidien de développeur, tu imagines des représentations qui te sembleraient utiles mais qui ont pu te sembler « science-fictionnesques », je suis à la recherche de ce genre de choses : vu ce qu’on fait aujourd’hui dans les jeux, je pense qu’il n’y a pas grand chose qui ne soit pas à notre portée ;-)

  3. yannick grenzingerNo Gravatar Says:

    Projet de grande envergure où il va falloir tester de nombreuses hypothèses. ;)

    Il faudrait déjà faire l’inventaire des autres moyens de visualiser le code (autre que fichier/répertoire). Je pense au TreeMap ou à ce que veux proposer Jérémie dans http://www.zenmodeler.com/.

    Après avoir trouvé des métriques ou des concepts à présenter, l’idée serait de fouiller les méthodes de représentation de données.
    http://patternbrowser.org/code/pattern/pattern.php?4,1,0,1,0,6.php
    http://selection.datavisualization.ch/

    Intéressé par suivre l’avancement du projet!

  4. Nicolas FedouNo Gravatar Says:

    Une visualisation pertinente existe pour les jeux en HTML5,
    L’auteur de cet IDE est Bret Victor.
    Un article présente son travail :
    http://www.hteumeuleu.fr/bret-victor-et-le-futur-des-interfaces-de-developpement/

    Pour vous donner envie d’y aller, voici un petit extrait:
    Si nous écrivons du code sur un ordinateur, pourquoi est-ce que nous simulons ce que l’ordinateur devrait faire dans notre tête ? Pourquoi l’ordinateur ne peux pas juste le faire et nous le montrer ?

  5. GregNo Gravatar Says:

    Merci Nicolas, très intéressant. On a très envie d’appliquer ça aux applications de gestion.
    L’idée serait de visualiser en temps réel et en permanence, le déroulement des tests liés au code qu’on modifie.
    Je pense que la notion de temps, sur laquelle Jérémie a beaucoup insisté lors de sa (brillante) présentation d’hier soir au Meetup DDD, est ici fondamentale.
    Dans le jeu, ce qui permet au développeur d’apprécier l’impact des modifs du code est le déroulement d’une phase de jeu (déroulement dans le temps matérialisé par la slide bar en haut). En gestion, notre slide bar gouvernerait les changements d’état de nos Entités lors du déroulement du scénario.

  6. jumpstar trampolineNo Gravatar Says:

    Bonjour, cet article est vachement bien écrit. Merci pour l’info.

Leave a Reply

buy sale viagra
buy viagra online price
buy discount levitra
buy sale viagra
viagra 100 mg
buy cheap cialis
buy viagra
cheapest levitra
buy viagra online
buy viagra usa
buy viagra online
buy now viagra
buy price viagra
buy now levitra
buy discount viagra
cheap viagra online
buy viagra fedex
buy viagra overnight
buy viagra las vegas
generic viagra
cheap price viagra
Pfizer viagra free samples
generic cialis
cialis black reviews
buy cheap cialis
free madonna ringtones
cheapest cialis
buy now viagra online