Meta-programmation Matthieu MEZIL - Infinite Square matthieu.mezil@live.fr - @MatthieuMEZIL - http://msmvps.com/blogs/matthieu - MVP C# - INETA speaker
Développement d’une application de gestion orientée données Où est la valeur pour le client ? Persistance Règles métiers UI La « plomberie » n’a pas de valeur pour le client
Développement d’une application de gestion orientée données Pourtant la « plomberie » représente une partie très importante du temps de développement du projet est la partie la plus technique englobe à elle seule la quasi-totalité du risque
Quels sont les risques ? Sous-estimation du temps de développement Sous-estimation de la complexité technique échec du projet impact sur le temps de développement Impact sur les performances du code
Qu’est-ce que la méta-programmation peut apporter ? Avec la méta-programmation il est possible de générer la « plomberie » Augmentation considérable de la productivité Réduction drastique du risque Augmentation de la maintenabilité et diminution du risque « effet de bord »
Pourquoi la méta-programmation est-elle si peu développée aujourd’hui ? L’idée de la méta-programmation n’est pas nouvelle Par le passé : rarement un franc succès Rarement très performant Difficile à customiser Prenant rarement en compte les règles métiers Imposant le plus souvent un formalisme restreint
Qu’est-ce qui a changé ? Microsoft permet aujourd’hui une méta-programmation mâture Les développeurs peuvent personnaliser très facilement le code généré Visual Studio permettant permet de régénérer l’ensemble de la « plomberie » sans avoir à se soucier de l’impact de notre modification Une technologie (Roslyn) nous permet d’analyser le code source. Ecriture de règles métier en C# (i.e. sans aucune contrainte)
Qu’est-ce qu’il est possible de faire maintenant ? Construire un meta-framework génère l’ensemble de la « plomberie » en se basant sur les dernières technologies de Microsoft Tout en assurant un code généré optimal Tout en permettant la customisation Tout en restant flexible L’intégration pour les développeurs est simple
WAQS Application Scaffolding feedbacks clients « WAQS est une innovation, aucune autre société ne peut concevoir un système avec autant de règles et si peu de code à écrire. » (Responsable R&D) « WAQS est une révolution pour les développeurs et apporte un gain de productivité exceptionnel » (Architecte) « On passe plus de temps sur le métier et moins sur la technique » (Chef de Projet) « WAQS génère du code plus performant que celui qu’on aurait écrit manuellement alors pourquoi s’en passer ? » (Développeur senior)
Meta-programmation Matthieu MEZIL - Infinite Square matthieu.mezil@live.fr - @MatthieuMEZIL - http://msmvps.com/blogs/matthieu - MVP C# - INETA speaker