Afin de concevoir une application durable, évolutive et facilement maintenable, l'utilisation de bonnes pratiques en matière d'architecture et de design est essentielle. Cette session basée sur le retour d'expérience d'Amadeus illustrera les choix architecturaux qui répondent aux enjeux des logiciels d'aujourd'hui: flexibilité, modularité, maintenabilité, limitation de la dette technique, etc. Nous exposerons en détail les apports d'une architecture modulaire basée sur Prism (Unity) couplée au pattern MVVM (Model View - ViewModel). Nous y aborderons l'utilisation de Visual Studio 2012 pour la conception, le design et la validation de l'architecture de l'application "Amadeus Hotel CallCenter" autour de démonstrations présentées en direct.
Concevoir et valider l'architecture d'une application WPF modulaire avec Visual Studio 2012
1. Amadeus Hotel Call Center
Architecture modulaire et VS2012
Vincent Dieulesaint / Julien Dutto
Software Development Engineers
Amadeus
Code / Développement
@AmadeusHotel_IT
http://www.amadeus.com/
2. • Amadeus
• L’application Amadeus Hotel Call Center
• Rappels géneraux sur Prism / MVVM / Unity
• Amadeus Hotel Call Center Architecture & Design
– Diagramme de couche
– Graphe d’appels
– Diagrammes UML
– Duplication de Code
Agenda
11. • Application destinée à des agents de centre d’appel : optimisation de prise de
réservation de chambres d'hôtel par téléphone
• Equipe de 10 personnes responsables des spécifications, du développement et
des déploiements
• Bangalore (Inde) – Sophia-Antipolis
Amadeus Hotel Call Center
HTTPS
USER
INTERFACES
WPF
INTERFACE
UI/CORE
CORE
INTERFACE
CORE/COM
COM
XAML / VOM VOM óBOM BOM ó XML
Messages
AMADEUS
SERVICES
Prism
WCF
12. • Enjeux / besoins techniques : Application évolutive / adaptable
– Architecture complexe et modulaire
– Développement communautaire
– Haute performance
– Haute qualité de code
• Enjeux / facteurs humains : Intégration de ressources
– Equipe à taille humaine
– Formation
– Compréhension du code
– Contrôle de qualité
Amadeus Hotel Call Center
33. • Application évolutive
– .Net !
– Prism: Modularité, Extensibilité
– MVVM: Découplage vues / modèles
• Dette technique limitée
– VS2012 Ultimate: Un outillage complet
• Documentation & Références
• Refactoring & code clones
Conclusion
• Application sûre
– VS2012 Ultimate: Un outillage complet
• Refactoring & code clones
• Validation de l’architecture
– TFS2012: Contrôle permanent
• Code reviews (Work items)
• Validation de l’architecture (Build
definitions)
34.
35. Formez-vous en ligne
Retrouvez nos évènements
Faites-vous accompagner
gratuitement
Essayer gratuitement nos
solutions IT
Retrouver nos experts
Microsoft
Pros de l’ITDéveloppeurs
www.microsoftvirtualacademy.comhttp://aka.ms/generation-app
http://aka.ms/evenements-
developpeurs
http://aka.ms/itcamps-france
Les accélérateurs
Windows Azure, Windows Phone,
Windows 8
http://aka.ms/telechargements
La Dev’Team sur MSDN
http://aka.ms/devteam
L’IT Team sur TechNet
http://aka.ms/itteam
Notes de l'éditeur
Intro code / devAfin de concevoir une application durable, évolutive et facilement maintenable, l'utilisation de bonnes pratiques en matière d'architecture et de design est essentielle. Cette session basée sur le retour d'expérience d'Amadeus illustrera les choix architecturaux qui répondent aux enjeux des logiciels d'aujourd'hui: flexibilité, modularité, maintenabilité, limitation de la dette technique, etc. Nous exposerons en détail les apports d'une architecture modulaire basée sur Prism (Unity) couplée au pattern MVVM (Model View - ViewModel). Nous y aborderons l'utilisation de Visual Studio 2012 pour la conception, le design et la validation de l'architecture de l'application "Amadeus HotelCallCenter" autour de démonstrations présentées en direct.
VD : Ajout Logo 1A?
Compagniecree en 1987 et aujourd’hui: numero 1 des GDS dans le monde : GDS : global distribution system.Centralisation des offres de produits de voyage et de tourisme et distribution sur les canaux de vente : agence de voyages, site internet (opodao, expedia, site de compagniesaeriennes). Societe cosmopolite, bureau commerciaux partout dans le monde, siege social a Madrid, centre de production en Allemagne a Erding,Centre de developpement a Nice, Toronto, Sydney, Boston … More than 195 countries servedAround 10,000employees worldwide948 million billed transactions(a) in 2011
Amadeus en quelqueschiffres :1.6 Milliard de transactions par jour+ de 3 Millions de réservations par jourPlus de 20000 requetes par seconde et <0.5 sec response time40.000 messages/secsur le front end+ de 500000 acces database / seconde150 million lines of written programme code 400 application SW load monthCapacité de stockage de 8 PetabytesSoitl’équivalent de….
81000 foisl’ensemble des publications de la bibliothèque du Congrès aux US106 ans de vidéos HDTV ou 291460 films160 millions de meubles de classeurremplis de texte
D’autreschiffres:Amadeus c’est:Plus de 10 000 employésdans le monde, dont 4000 sur le site de Nice440 compagniesaériennes, soit 95% de la capacitémondiale100 000 hotels
Innovation :Amadeus propose nonseulement des services de distribution maisaussiunevaleurajouté à ces services:Ex: calcul de routes (direct oureaccomodation), de tarifs.Distribution = activitetraditionnelled’Amadeussur mainframe à ses debuts, maintenant C++ surlinux.Depuis les années 2000, se positionnedansl’ITdansl’industrie du voyage et du tourismeIT dansl’industrie du voyage = gestiond’inventaire , centrales de reservations dansl’industrieaérienne, hotelière.IT => autres technologieset se positionnecommeacteurtechnologique se positionnantsur des technologies plus innovantesLe projet Amadeus Hotel Call center fait partie de l’offrecentralisee de 1a pour l’industriehoteliere : CRS + PMS + IBE + Call Center + canaux de disctributionclassique.
Innovation :Amadeus propose nonseulement des services de distribution maisaussiunevaleurajouté à ces services:Ex: calcul de routes (direct oureaccomodation), de tarifs.Distribution = activitetraditionnelled’Amadeussur mainframe à ses debuts, maintenant C++ surlinux.Depuis les années 2000, se positionnedansl’ITdansl’industrie du voyage et du tourismeIT dansl’industrie du voyage = gestiond’inventaire , centrales de reservations dansl’industrieaérienne, hotelière.IT => autres technologieset se positionnecommeacteurtechnologique se positionnantsur des technologies plus innovantesLe projet Amadeus Hotel Call center fait partie de l’offrecentralisee de 1a pour l’industriehoteliere : CRS + PMS + IBE + Call Center + canaux de disctributionclassique.
Client riche, deploiement local ou access via un provider d’IT. Aujourd’hui en production surserveur CITRIXChoix techniques/architecture:PRISM pour modularite : construction de l’application par briquesfonctionnelles pour repondre aux besoin des clientsMVVM :decouplagevue/objet , tests unitairesWCF : https serveuramadeus, dependance forte surautresequipesNbre de lignes de codes : 300 000 lignes de codeNbre de modules : 10 modules PRISMOuitllage : VS 2010, TFS 2010, Blend 4 et plus récemment VS2012 – TFS 2012Equipe responsible du designe des ecrans : developpeur, designer, analystesfonctionels=> WPF introduit un langagecommun entre designers et developpeurs
Plusieursenjeux pour cette applicationTechniques d’une part, maiségalementhumains.Techniques:L’application se veutévolutive et adaptableArchitecture complexe et modulaireBesoin de hautes performances pour s’alignersur les temps de réponsetrès courts des systèmes AmadeusExcellence technique : Haute qualité de code, s’appuyantsur reviews, tests unitaires et de non-regHumains:Qui dit architecture complexedit temps de formation/adaptation.Temps de formationCompréhension du code (documentation)Controle de qualité – Code review, validation d’architecture et violation de règles
PRISMCertains diront qu’il s’agit d’un Framework permettant d’appliquer le pattern MVVM, d’autres qu’il permet de découper son application en modules. nous permet bien de réaliser ces deux opérations, mais c’est avant tout un ensemble d’outils qui au travers de bonnes pratiques, donne la possibilité de construire des applications testables, maintenables et évolutives.UNITYDI : Implémentation du principe de l’inversion de contrôleCreation dynamique de dépendances entre les différentes classesDécouplage entre les objets
De quoi s’agit-il ?Le problème à résoudre est assez simple dans son principe : imaginons une classe dont le fonctionnement dépend de services (au sens le plus large du terme) dont les implémentations réelles ne seront connues qu’au runtime. Pb :Pour remplacer ou mettre à jour les dépendances vous devez faire des changements dans le code de la classe (la classe A dans le petit schéma ci-dessus), cela n’est bien entendu pas ce qu’on veut (c’est même tout le contraire !).Les implémentations des services doivent exister et être disponibles à la compilation de la classe, ce qui n’est pas toujours possible dans les faits.La classe est difficile à tester de façon isolée car elle a des références « en dur » vers les services. Pas de mock/stub utilisables=============================================================L’Injection de Dépendance consiste à créer dynamiquement (injecter) les dépendances entre les différentes classes en s'appuyant généralement sur une descriptionIl existe un « Builder » par lequel on passe pour créer des instances de classA. Ce builder recense les services proposés, comme ici le ServiceA, qui exposent des interfaces, ici IServiceA. La classe consommatrice des services (classA) se voit ainsi « injecter » l’implémentation concrète ServiceA lors de son initialisation. Elle ne connait pas cette classe concrète et ne fait qu’utiliser une variable de type IServiceA. C’est cette variable que le Builder initialisera après avoir construit l’instance de ClassA.
Deux phases : 1ere phase de configuration (Bootstrapper, modules initialization)Configuration du conteneur pour y enregistrer des services : Mapping entre interfaces et classes concretes2eme phase d’utilisation ([Dependency]Attribute ou Resolve)Also, when you test Consumer you can replace the actual implementation of the services with mock versions which allow you to test Consumer in isolation.
PRISMCertains diront qu’il s’agit d’un Framework permettant d’appliquer le pattern MVVM, d’autres qu’il permet de découper son application en modules. nous permet bien de réaliser ces deux opérations, mais c’est avant tout un ensemble d’outils qui au travers de bonnes pratiques, donne la possibilité de construire des applications testables, maintenables et évolutives.UNITYDI : Implémentation du principe de l’inversion de contrôleCreation dynamique de dépendances entre les différentes classesDécouplage entre les objets
Intro code / dev
Presentation Archi / MVVM / Prism Unity- Demo: validation de l’architecture avec VS2012 / projet de design sous vs 2012
Intro code / dev
Presentation Archi / MVVM / Prism UnityQuelssont les bénéficesd’unetellearchi?- Demo: validation de l’architecture avec VS2012 / projet de design sous vs 2012
Presentation Archi / MVVM / Prism UnityQuelssont les bénéficesd’unetellearchi?- Demo: validation de l’architecture avec VS2012 / projet de design sous vs 2012
Intro code / dev
Référence aux enjeux pour l’application:Techniques : Application évolutive / adaptableArchitecture complexe et modulaire=> Validation de la structure de l’application=> Facilité de compréhension pour les nouvelles ressourcesHaute performance & Haute qualité de code=> Mise en application des best practicesHumains : Outsourcing – Intégration de ressourcesFormationCompréhension du codeContrôle de qualitéVérification de la structure des objets « Business »Lien entre analystes et développeurs – langage communCompréhension/analyse des modèles/séquencesSynchronisation code/documentation