Amadeus Hotel Call CenterArchitecture modulaire et VS2012Vincent Dieulesaint / Julien DuttoSoftware Development EngineersA...
• Amadeus• L’application Amadeus Hotel Call Center• Rappels géneraux sur Prism / MVVM / Unity• Amadeus Hotel Call Center A...
AMADEUS
Amadeus
Amadeus
Amadeus
Amadeus
Amadeus
Amadeus Hotel Platform
AMADEUS HOTEL CALL CENTERL’application
• Application destinée à des agents de centre d’appel : optimisation de prise deréservation de chambres dhôtel par télépho...
• Enjeux / besoins techniques : Application évolutive / adaptable– Architecture complexe et modulaire– Développement commu...
PRISM / MVVM / UNITYRappels
• Prism– Framework pour l’application du pattern MVVM– Possibilité de découpage d’application en modules• MVVM– Séparation...
Zoom sur UnityDépendance de ServiceA etServiceB sur ClasseAInjection de dépendance
Zoom sur UnityContainer.RegisterType<InterfaceA, ServiceA>();Container.RegisterType<InterfaceB, ServiceB>();Container.Regi...
Prism / MVVM / Unity
demo
DIAGRAMMES DE COUCHEArchitecture & Design
• Modèle théorique de l’application– 3 Couches distinctes• UI (Vues – Commandes)• Core (Business logic – Actions)• Data Ac...
demo
GRAPHES D’APPELSArchitecture & Design
• Architecture Modulaire– Basée sur Prism v4– Séparation fonctionnelle– Indépendance maximaleentre les modulesGraphe d’app...
Graphe d’appelsApplication HostModule commun -CommunicationModule RéservationModule DisponibilitésModule ProfilModule “Map...
demo
DIAGRAMMES UMLArchitecture & Design
• Diagrammes de classe – Diagrammes deséquence– Reverse engineering– Refactoring• Architecture ExplorerDiagrammes UML
demo
DUPLICATION DE CODE (CODE CLONES)Architecture & Design
• Plus de 400 000 lignes de code• 10 modules fonctionnels•  Redondance/duplication de code !Duplication de code
demo
CONCLUSION
• Application évolutive– .Net !– Prism: Modularité, Extensibilité– MVVM: Découplage vues / modèles• Dette technique limité...
Formez-vous en ligneRetrouvez nos évènementsFaites-vous accompagnergratuitementEssayer gratuitement nossolutions ITRetrouv...
Concevoir et valider l'architecture d'une application WPF modulaire avec Visual Studio 2012
Prochain SlideShare
Chargement dans…5
×

Concevoir et valider l'architecture d'une application WPF modulaire avec Visual Studio 2012

1 784 vues

Publié le

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.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 784
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
39
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Intro code / devAfin de concevoir une application durable, évolutive et facilement maintenable, l&apos;utilisation de bonnes pratiques en matière d&apos;architecture et de design est essentielle. Cette session basée sur le retour d&apos;expérience d&apos;Amadeus illustrera les choix architecturaux qui répondent aux enjeux des logiciels d&apos;aujourd&apos;hui: flexibilité, modularité, maintenabilité, limitation de la dette technique, etc. Nous exposerons en détail les apports d&apos;une architecture modulaire basée sur Prism (Unity) couplée au pattern MVVM (Model View - ViewModel). Nous y aborderons l&apos;utilisation de Visual Studio 2012 pour la conception, le design et la validation de l&apos;architecture de l&apos;application &quot;Amadeus HotelCallCenter&quot; 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 &lt;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 =&gt; 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 =&gt; 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=&gt; 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&apos;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=&gt; Validation de la structure de l’application=&gt; Facilité de compréhension pour les nouvelles ressourcesHaute performance &amp; Haute qualité de code=&gt; 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
  • Intro code / dev
  • Intro code / dev
  • Concevoir et valider l'architecture d'une application WPF modulaire avec Visual Studio 2012

    1. 1. Amadeus Hotel Call CenterArchitecture modulaire et VS2012Vincent Dieulesaint / Julien DuttoSoftware Development EngineersAmadeusCode / Développement@AmadeusHotel_IThttp://www.amadeus.com/
    2. 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 CodeAgenda
    3. 3. AMADEUS
    4. 4. Amadeus
    5. 5. Amadeus
    6. 6. Amadeus
    7. 7. Amadeus
    8. 8. Amadeus
    9. 9. Amadeus Hotel Platform
    10. 10. AMADEUS HOTEL CALL CENTERL’application
    11. 11. • Application destinée à des agents de centre d’appel : optimisation de prise deréservation de chambres dhôtel par téléphone• Equipe de 10 personnes responsables des spécifications, du développement etdes déploiements• Bangalore (Inde) – Sophia-AntipolisAmadeus Hotel Call CenterHTTPSUSERINTERFACESWPFINTERFACEUI/CORECOREINTERFACECORE/COMCOMXAML / VOM VOM óBOM BOM ó XMLMessagesAMADEUSSERVICESPrismWCF
    12. 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
    13. 13. PRISM / MVVM / UNITYRappels
    14. 14. • Prism– Framework pour l’application du pattern MVVM– Possibilité de découpage d’application en modules• MVVM– Séparation couche UI / logique– Principes de binding– Facilité de test• Unity– Conteneur d’injection de dépendances– Léger, extensiblePrism / MVVM / Unity
    15. 15. Zoom sur UnityDépendance de ServiceA etServiceB sur ClasseAInjection de dépendance
    16. 16. Zoom sur UnityContainer.RegisterType<InterfaceA, ServiceA>();Container.RegisterType<InterfaceB, ServiceB>();Container.RegisterType<InterfaceC, ServiceC>();Container.RegisterType<InterfaceD, ServiceD>();– Phase de configuration– Phase d’utilisationISomeInterface m_SomeObject = Container.Resolve<ISomeInterface>();[Dependency]public ISomeInterface SomeService{protected get;set;}Ou
    17. 17. Prism / MVVM / Unity
    18. 18. demo
    19. 19. DIAGRAMMES DE COUCHEArchitecture & Design
    20. 20. • Modèle théorique de l’application– 3 Couches distinctes• UI (Vues – Commandes)• Core (Business logic – Actions)• Data Access Layer (Services –Messages)– Communication Inter-couches viaclasses « Translators »Diagrammes de coucheUIVOMCoreDALBOMMessages ServicesActionsViewsCommandsTranslatorTranslatorCallsCallsUsesUsesUsesUsesData Layers Code Layers
    21. 21. demo
    22. 22. GRAPHES D’APPELSArchitecture & Design
    23. 23. • Architecture Modulaire– Basée sur Prism v4– Séparation fonctionnelle– Indépendance maximaleentre les modulesGraphe d’appelsApplication HostAdaptationServiceAdaptersIAdapterServiceActionCatalogActionsIActionCatalogCommandCatalogCommandsICommandCatalogViewsCoordinatorViewsIViewsCoordinatorRegionsModule Module Module Module
    24. 24. Graphe d’appelsApplication HostModule commun -CommunicationModule RéservationModule DisponibilitésModule ProfilModule “Map”Module “Content”Module commun
    25. 25. demo
    26. 26. DIAGRAMMES UMLArchitecture & Design
    27. 27. • Diagrammes de classe – Diagrammes deséquence– Reverse engineering– Refactoring• Architecture ExplorerDiagrammes UML
    28. 28. demo
    29. 29. DUPLICATION DE CODE (CODE CLONES)Architecture & Design
    30. 30. • Plus de 400 000 lignes de code• 10 modules fonctionnels•  Redondance/duplication de code !Duplication de code
    31. 31. demo
    32. 32. CONCLUSION
    33. 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 clonesConclusion• 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 (Builddefinitions)
    34. 34. Formez-vous en ligneRetrouvez nos évènementsFaites-vous accompagnergratuitementEssayer gratuitement nossolutions ITRetrouver nos expertsMicrosoftPros de l’ITDéveloppeurswww.microsoftvirtualacademy.comhttp://aka.ms/generation-apphttp://aka.ms/evenements-developpeurshttp://aka.ms/itcamps-franceLes accélérateursWindows Azure, Windows Phone,Windows 8http://aka.ms/telechargementsLa Dev’Team sur MSDNhttp://aka.ms/devteamL’IT Team sur TechNethttp://aka.ms/itteam

    ×