PRATIQUE ALGO/METHODES 
Expliquez-moi... La génération de code
 
Produire automatiquement une application, en réglant certaines règles fondamentales... Un rêve qui se rapproche de la réalité avec ces outils combinant métadonnées et contexte d'utilisation. (09/06/2006)
  Forum

Réagissez dans les forums de JDN Développeurs

La génération automatisée de code (automated code generation), ou programmation générative, s'inscrit dans le mouvement du développement agile. En extrayant les métadonnées d'un projet (par exemple, son modèle de base de données) et en les combinant à certains modèles de conception (lire notre article du 18/04/03) et de règles de comportement, un générateur de code est en mesure de produire le code adéquat, de manière cohérente, rapide et sûre.

Un générateur peut être un simple script de correspondance de clefs, un programme de création d'API, jusqu'à un outil complet de traduction de modèles de logique métier en applications complètes et fonctionnelles. Les types de générateurs sont multiples, selon les besoins, mais la fonctionnalité principale reste la même : produire du code automatique, et soulager le développeur de certaines lourdeurs de mise en place.

Sans être la réponse à tous les problèmes d'intégration et de traitement de données ou de modèles de données, la génération de code peut apporter une aide réelle aux projets de développement, en s'occupant du travail laborieux. Le code obtenu peut être aussi bien du code source prêt à être modifié ou compilé, du byte-code pour une machine virtuelle, un exécutable... À partir du moment où le code produit est correct, rien n'empêche d'ajouter une étape où il sera compilé.

L'intérêt de laisser le générateur construire le code à partir d'un jeu de métadonnées connues, est d'être en mesure de modifier des pans entiers de l'application en ne retouchant que quelques métadonnées - et revenir à la version précédente en remettant les métadonnées initiales. L'idée de fork (lire l'article du 17/05/06) devient alors redondante, et le développement devient réellement agile, dans le sens premier du terme : un changement dans la structure de la base de données peut être intégré beaucoup plus rapidement qu'à la main.

Les outils en la matière sont nombreux tant en qualité qu'en capacité. Il faut avant tout différencier les types de générateurs :ceux qui transforment du code d'un langage en code d'un autre ; ceux qui développent certaines parties du code original ; ceux qui créent des coquilles de code à compléter par le développeur ; ceux, enfin, qui prennent une définition abstraite (en UML, par exemple) et construisent un code complet, dans l'idéal exploitable directement.

Les générateurs de code sont disponibles pour la grande majorité des langages (Java, .Net, PHP...), mais également pour les architectures abstraites, à commencer par UML.
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page