[Teched 2007] Build your Own Software Factory
Don Smith - Product Manager Microsoft
Dennis Doomen - Team Lead Avina Solution
Olaf Conijn
Objectifs de la session:
• Comprendre ce qu'est une Software Factory
• Définir ce qu'il faut avoir pour en construire une
• Comment en construire une
Qu'est ce que c'est, concrètement:
- Un outil pour créer un type spécifique de projet
- Qui s'exécute dans Visual Studio
- A base de modèles, de designers, d'éditeurs et d'assistants
- Qui génère en général un produit en sortie
- Qui contient des exécutables, des fichiers, des éléments réutilisables...
Première démonstration de factory: Web Service Software Factory - permettant de modéliser des WebServices. Utilisation d'un designer pour définir un modèle. Implémentation de celui-ci de manière automatique directement depuis Visual Studio pour générer un squelette de solution avec une organisation logique de projet. Puis génération de code dans ces projets directement via des clicks droit depuis le modèle.
La vrai question: Combien de temps cela prend?
• Pour construire une factory, 2 à 3 fois plus de temps que pour construire le produit directement
• Le retour sur investissement n'apparait réellement qu'après l'implémentation d'au moins 5 produits
Dans quels cas faut-il créer une factory?
• Pour créer plusieurs instances d'un même produit
• Réutiliser des fonctionnalités d'un socle existant
• Imposer une architecture dans un projet: tous les projets démarrent du même modèle et de la même organisation
• Augmenter productivité et qualité de produit: gain de temps et structure du produit bien défini
• Nécessite moins d'expérience humaine pour créer le produit: les fondations sont solides et auto-générées sans nécessiter de compétences techniques avancées
Cela requiert cependant:
• Un domaine fonctionnel bien compris
• Une connaissance globale des librairies, framework et types d'implémentations existants (une vision très globale)
• Des personnes possédant à la fois des compétences métier, techniques et en construction de factory pour son écriture
L'investissement augmente avec la complexité de la factory (du plus faible au plus élevé):
- Une librairie de classe / framework
- Un template de solution ou de projet Visual Studio
- des déclenchements d'actions automatiques
- Un générateur intégré
Démonstration: Création d'un "Guidance Package". Création d'un projet contenant un ensemble de fichier puis transformation de celui-ci en modèle de projet en utilisation l'option "export template" de Visual Studio, le tout dans le but de pouvoir repartir de ce modèle de base sur chaque nouveau projet.
Quels outils utiliser:
• Pour l'ajout de fonctionnalités: GAX/GAT
• Code / Artifact Templates : Visual Studio Text editor
• Projet / solution Template : Visual Studio Templates
• Logical Application et System Design: VS Team Edition for Architects
D'un point de vue organisation et méthodologique, les différentes phases de créations d'une factory sont: Développement => Test sur un projet pilote (génération de produit avec la factory pour valider son efficacité et le résultat) => Planification de l'itération suivante et retour en phase de développement. Le tout de manière cyclique jusqu'a l’aboutissement de la factory et son déploiement. Une fois déployée, des nouveaux scénarios peuvent apparaitre nécessitant de recommencer le cycle de développement afin d'améliorer la factory.
Quels sont les critères qualificatifs d'une factory? :
• Abstraction: doit augmenter la productivité en limitant la redondance de travail difficile
• Utilisation: l'outil doit être utilisé, documentée et les développeurs doivent y être formés / sensibilisés
Dernière démonstration, utilisation des Domain Specific Language (DSL) tools dans le but d'écrire un générateur de DSL permettant lui même de générer du code!
Plus d'informations en Français sur tout ceci et notamment les DSL Tools: http://www.dslfactory.org (je pense qu'il devrait y avoir en ligne les Webcast des extensibiliy days, événement référant sur le sujet, très prochainement)
Bon, sur le coup, mon résumé est un peu confus, mais ce n'est pas un sujet que j'arrive facilement à rédiger (et la fatigue commence a bien se faire sentir a la fin de ce troisième jour), donc je vous prie de m’en excuser !