XPDEV
Cross-Plateform Developpement
Création d’un environnement de développement complet cross-plateforme C, spécialisé dans le développement d’applications pour les TPE, Caisses et dll Windows.
Autour d’un composant d’édition de fichiers du marché, cet outil gère l’arborescence des fichiers spécifiques aux plateformes (créant ainsi une couche d’abstraction), des fichiers communs aux plateformes et applications (librairies « utilitaires ») et des applications dans leurs différentes versions.
L’outil pilote directement les sous-process de compilation (chaînes de compilation spécifique à chaque plateforme : Keil C51, GCC, ARM) lancées grâce aux API Windows, récupère et analyse les messages de compilation et les unifie au sein de l’interface, et pilote le chargement de l’exécutable sur les différents terminaux.
Un analyseur de code interne permet la navigation facilitée dans les types de structures et les variables déclarées et l’utilisation des messages de compilation, tout ceci facilitant le développement, la maintenance et la compatibilité de code éparpillé dans plus de 100 modules.
La gestion du versioning et des sauvegardes, entre autres fonctionnalités avancées, sont gérées grâce à des applications externes (CVS, CompareIt, Ultra-Edit) également pilotées par l’environnement de développement.
L'outil ainsi décrit n'est que la partie visible de l'iceberg. La façon même dont j'ai organisé les fichiers de code ou les ressources de chaque plateforme décrivent à l'outil comment les manipuler, pas besoin de "fichier projet" pour chaque projet/plateforme.
J'exploite aussi à fond la puissance des macros du C pour lisser les différences entre les plateformes, et grâce à l'analyseur de code C, ajouter un système de débogage complet sans alourdir le code visible (avec une simple checkbox).
Pour parvenir à ce résultat, aucun doute que j'ai acquis une connaissance intime avec tous ces environnements, l'architecture hardware et logicielle des plateformes et le langage C lui-même. Je les ai désossés pour en extirper les outils essentiels, analysé les appels à chaque étape pour pouvoir répliquer le résultat, et rendu tout cela hautement configurable à un niveau d'abstraction commun. Chaque erreur qui peut être émise est récupérée, analysée, et relié au module ou la ligne source, facilitant la résolution.
Au final, je codai mes applications non plus comme si c'était pour telle ou telle plateforme, mais vraiment comme si c'était pour une machine virtuelle de ma propre création, avec l'assurance que le résultat serait conceptuellement identique partout (aux différences esthétiques prêt).
J'ai fait évoluer cette application au fur et à mesure, sans perdre de temps sur mes objectifs principaux, car chaque nouvelle fonctionnalité ajoutée à l'outil remboursait très vite le temps consacré. Ce qui était vrai avec 2 plateformes est vite devenu une évidence à 3 puis 4, 5...
Quand on a remporté un marché pour développer une application sur 3 plateformes pour le compte d'un distributeur de TPE, là ce fut le jackpot ! J'ai pu faire les 3 applications dans la moitié du temps alloué pour une seule, du premier coup. Nous avons même pu négocier l'intégration de notre application dans la leur, afin de distribuer les deux solutions à tous leurs clients (il ne restait alors "plus qu'à" la vendre et à l'initialiser).
Documentation de XPDEV et du projet TM-COLLECTOR



Fenêtre principale de XPDev
Configuration de la chaîne de compilation pour les différentes plateformes