Développeur de demain
Lundi, février 11th, 2013
Un 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.
