SlideShare une entreprise Scribd logo
1  sur  35
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/
• 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
AMADEUS
Amadeus
Amadeus
Amadeus
Amadeus
Amadeus
Amadeus Hotel Platform
AMADEUS HOTEL CALL CENTER
L’application
• 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
• 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
PRISM / MVVM / UNITY
Rappels
• 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, extensible
Prism / MVVM / Unity
Zoom sur Unity
Dépendance de ServiceA et
ServiceB sur ClasseA
Injection de dépendance
Zoom sur Unity
Container.RegisterType<InterfaceA, ServiceA>();
Container.RegisterType<InterfaceB, ServiceB>();
Container.RegisterType<InterfaceC, ServiceC>();
Container.RegisterType<InterfaceD, ServiceD>();
– Phase de configuration
– Phase d’utilisation
ISomeInterface m_SomeObject = Container.Resolve<ISomeInterface>();
[Dependency]
public ISomeInterface SomeService
{
protected get;
set;
}
Ou
Prism / MVVM / Unity
demo
DIAGRAMMES DE COUCHE
Architecture & Design
• 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 via
classes « Translators »
Diagrammes de couche
UI
VOM
CoreDAL
BOM
Messages Services
Actions
Views
Commands
TranslatorTranslator
CallsCalls
Uses
Uses
Uses
Uses
Data Layers Code Layers
demo
GRAPHES D’APPELS
Architecture & Design
• Architecture Modulaire
– Basée sur Prism v4
– Séparation fonctionnelle
– Indépendance maximale
entre les modules
Graphe d’appels
Application Host
Adaptation
Service
Adapters
IAdapterService
Action
Catalog
Actions
IActionCatalog
Command
Catalog
Commands
ICommandCatalog
Views
Coordinator
Views
IViewsCoordinator
Regions
Module Module Module Module
Graphe d’appels
Application Host
Module commun -
Communication
Module Réservation
Module Disponibilités
Module Profil
Module “Map”
Module “Content”
Module commun
demo
DIAGRAMMES UML
Architecture & Design
• Diagrammes de classe – Diagrammes de
séquence
– Reverse engineering
– Refactoring
• Architecture Explorer
Diagrammes 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é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)
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

Contenu connexe

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

Airbus - Projet I3M - Référentiel portail Web
Airbus - Projet I3M - Référentiel portail WebAirbus - Projet I3M - Référentiel portail Web
Airbus - Projet I3M - Référentiel portail Web
I3M Aérospace Multimédia
 
Pb voc-usage-cloud-101011065640-phpapp01
Pb voc-usage-cloud-101011065640-phpapp01Pb voc-usage-cloud-101011065640-phpapp01
Pb voc-usage-cloud-101011065640-phpapp01
cmichel65
 
Presentation cynapsys
Presentation cynapsysPresentation cynapsys
Presentation cynapsys
baltagi
 
Microsoft dynamics crm online, intégration avec windows azure
Microsoft dynamics crm online, intégration avec windows azureMicrosoft dynamics crm online, intégration avec windows azure
Microsoft dynamics crm online, intégration avec windows azure
Microsoft Décideurs IT
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
Thomas Conté
 
IBM ILOG Elixir: IHM riches pour applications SaaS et Cloud
IBM ILOG Elixir: IHM riches pour applications SaaS et CloudIBM ILOG Elixir: IHM riches pour applications SaaS et Cloud
IBM ILOG Elixir: IHM riches pour applications SaaS et Cloud
Erwan Paccard
 

Similaire à Concevoir et valider l'architecture d'une application WPF modulaire avec Visual Studio 2012 (20)

Airbus - Projet I3M - Référentiel portail Web
Airbus - Projet I3M - Référentiel portail WebAirbus - Projet I3M - Référentiel portail Web
Airbus - Projet I3M - Référentiel portail Web
 
Vocabulaire et Usage du Cloud
Vocabulaire et Usage du CloudVocabulaire et Usage du Cloud
Vocabulaire et Usage du Cloud
 
Pb voc-usage-cloud-101011065640-phpapp01
Pb voc-usage-cloud-101011065640-phpapp01Pb voc-usage-cloud-101011065640-phpapp01
Pb voc-usage-cloud-101011065640-phpapp01
 
I3M- Airbus Visite Virtuelle
I3M- Airbus Visite VirtuelleI3M- Airbus Visite Virtuelle
I3M- Airbus Visite Virtuelle
 
Objectif fluid&lt;fab />
Objectif fluid&lt;fab />Objectif fluid&lt;fab />
Objectif fluid&lt;fab />
 
Architecture Cloud Hybride
Architecture Cloud HybrideArchitecture Cloud Hybride
Architecture Cloud Hybride
 
Presentation cynapsys
Presentation cynapsysPresentation cynapsys
Presentation cynapsys
 
Microsoft dynamics crm online, intégration avec windows azure
Microsoft dynamics crm online, intégration avec windows azureMicrosoft dynamics crm online, intégration avec windows azure
Microsoft dynamics crm online, intégration avec windows azure
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
 
Atelier Microsoft MOCS-Exchange 2007-Hyperv
Atelier Microsoft MOCS-Exchange 2007-HypervAtelier Microsoft MOCS-Exchange 2007-Hyperv
Atelier Microsoft MOCS-Exchange 2007-Hyperv
 
Cloud Computing presentation
Cloud Computing presentationCloud Computing presentation
Cloud Computing presentation
 
IBM ILOG Elixir: IHM riches pour applications SaaS et Cloud
IBM ILOG Elixir: IHM riches pour applications SaaS et CloudIBM ILOG Elixir: IHM riches pour applications SaaS et Cloud
IBM ILOG Elixir: IHM riches pour applications SaaS et Cloud
 
fati projet.pptx
fati projet.pptxfati projet.pptx
fati projet.pptx
 
Aspectize meetup
Aspectize meetupAspectize meetup
Aspectize meetup
 
CV_MohamedHabibABIDI
CV_MohamedHabibABIDICV_MohamedHabibABIDI
CV_MohamedHabibABIDI
 
20090727 Cv Synca7 Eric Viala
20090727 Cv Synca7 Eric Viala20090727 Cv Synca7 Eric Viala
20090727 Cv Synca7 Eric Viala
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et Xamarin
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8
 

Plus de Microsoft Technet France

Plus de Microsoft Technet France (20)

Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex
Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex
Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex
 
Comment réussir votre déploiement de Windows 10
Comment réussir votre déploiement de Windows 10Comment réussir votre déploiement de Windows 10
Comment réussir votre déploiement de Windows 10
 
OMS log search au quotidien
OMS log search au quotidienOMS log search au quotidien
OMS log search au quotidien
 
Fusion, Acquisition - Optimisez la migration et la continuité des outils col...
 Fusion, Acquisition - Optimisez la migration et la continuité des outils col... Fusion, Acquisition - Optimisez la migration et la continuité des outils col...
Fusion, Acquisition - Optimisez la migration et la continuité des outils col...
 
Wavestone déploie son portail Powell 365 en 5 semaines
Wavestone déploie son portail Powell 365 en 5 semainesWavestone déploie son portail Powell 365 en 5 semaines
Wavestone déploie son portail Powell 365 en 5 semaines
 
Retour d’expérience sur le monitoring et la sécurisation des identités Azure
Retour d’expérience sur le monitoring et la sécurisation des identités AzureRetour d’expérience sur le monitoring et la sécurisation des identités Azure
Retour d’expérience sur le monitoring et la sécurisation des identités Azure
 
Scénarios de mobilité couverts par Enterprise Mobility + Security
Scénarios de mobilité couverts par Enterprise Mobility + SecurityScénarios de mobilité couverts par Enterprise Mobility + Security
Scénarios de mobilité couverts par Enterprise Mobility + Security
 
SharePoint Framework : le développement SharePoint nouvelle génération
SharePoint Framework : le développement SharePoint nouvelle générationSharePoint Framework : le développement SharePoint nouvelle génération
SharePoint Framework : le développement SharePoint nouvelle génération
 
Stockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le mondeStockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le monde
 
Bien appréhender le concept de Windows As a Service
Bien appréhender le concept de Windows As a ServiceBien appréhender le concept de Windows As a Service
Bien appréhender le concept de Windows As a Service
 
Protéger vos données avec le chiffrement dans Azure et Office 365
Protéger vos données avec le chiffrement dans Azure et Office 365Protéger vos données avec le chiffrement dans Azure et Office 365
Protéger vos données avec le chiffrement dans Azure et Office 365
 
Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...
Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...
Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...
 
Comprendre la stratégie identité de Microsoft
Comprendre la stratégie identité de MicrosoftComprendre la stratégie identité de Microsoft
Comprendre la stratégie identité de Microsoft
 
Vous avez dit « authentification sans mot de passe » : une illustration avec ...
Vous avez dit « authentification sans mot de passe » : une illustration avec ...Vous avez dit « authentification sans mot de passe » : une illustration avec ...
Vous avez dit « authentification sans mot de passe » : une illustration avec ...
 
Sécurité des données
Sécurité des donnéesSécurité des données
Sécurité des données
 
Déploiement hybride, la téléphonie dans le cloud
Déploiement hybride, la téléphonie dans le cloudDéploiement hybride, la téléphonie dans le cloud
Déploiement hybride, la téléphonie dans le cloud
 
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
 
SharePoint 2016 : architecture, déploiement et topologies hybrides
SharePoint 2016 : architecture, déploiement et topologies hybridesSharePoint 2016 : architecture, déploiement et topologies hybrides
SharePoint 2016 : architecture, déploiement et topologies hybrides
 
Gestion de Windows 10 et des applications dans l'entreprise moderne
Gestion de Windows 10 et des applications dans l'entreprise moderneGestion de Windows 10 et des applications dans l'entreprise moderne
Gestion de Windows 10 et des applications dans l'entreprise moderne
 
Office 365 dans votre Système d'Informations
Office 365 dans votre Système d'InformationsOffice 365 dans votre Système d'Informations
Office 365 dans votre Système d'Informations
 

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
  • 10. AMADEUS HOTEL CALL CENTER L’application
  • 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
  • 13. PRISM / MVVM / UNITY Rappels
  • 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, extensible Prism / MVVM / Unity
  • 15. Zoom sur Unity Dépendance de ServiceA et ServiceB sur ClasseA Injection de dépendance
  • 16. Zoom sur Unity Container.RegisterType<InterfaceA, ServiceA>(); Container.RegisterType<InterfaceB, ServiceB>(); Container.RegisterType<InterfaceC, ServiceC>(); Container.RegisterType<InterfaceD, ServiceD>(); – Phase de configuration – Phase d’utilisation ISomeInterface m_SomeObject = Container.Resolve<ISomeInterface>(); [Dependency] public ISomeInterface SomeService { protected get; set; } Ou
  • 17. Prism / MVVM / Unity
  • 18. demo
  • 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 via classes « Translators » Diagrammes de couche UI VOM CoreDAL BOM Messages Services Actions Views Commands TranslatorTranslator CallsCalls Uses Uses Uses Uses Data Layers Code Layers
  • 21. demo
  • 23. • Architecture Modulaire – Basée sur Prism v4 – Séparation fonctionnelle – Indépendance maximale entre les modules Graphe d’appels Application Host Adaptation Service Adapters IAdapterService Action Catalog Actions IActionCatalog Command Catalog Commands ICommandCatalog Views Coordinator Views IViewsCoordinator Regions Module Module Module Module
  • 24. Graphe d’appels Application Host Module commun - Communication Module Réservation Module Disponibilités Module Profil Module “Map” Module “Content” Module commun
  • 25. demo
  • 27. • Diagrammes de classe – Diagrammes de séquence – Reverse engineering – Refactoring • Architecture Explorer Diagrammes UML
  • 28. demo
  • 29. DUPLICATION DE CODE (CODE CLONES) Architecture & Design
  • 30. • Plus de 400 000 lignes de code • 10 modules fonctionnels •  Redondance/duplication de code ! Duplication de code
  • 31. demo
  • 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

  1. 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.
  2. VD : Ajout Logo 1A?
  3. 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
  4. 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….
  5. 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
  6. 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
  7. 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.
  8. 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.
  9. 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
  10. 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
  11. 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
  12. 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.
  13. 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.
  14. 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
  15. Intro code / dev
  16. Presentation Archi / MVVM / Prism Unity- Demo: validation de l’architecture avec VS2012 / projet de design sous vs 2012
  17. Intro code / dev
  18. Presentation Archi / MVVM / Prism UnityQuelssont les bénéficesd’unetellearchi?- Demo: validation de l’architecture avec VS2012 / projet de design sous vs 2012
  19. Presentation Archi / MVVM / Prism UnityQuelssont les bénéficesd’unetellearchi?- Demo: validation de l’architecture avec VS2012 / projet de design sous vs 2012
  20. Intro code / dev
  21. 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
  22. Intro code / dev
  23. Intro code / dev