comment devenir un bon architecte ? Épisode 3 – mes 3 patterns préférés frank guiducci
TRANSCRIPT
Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés
Frank Guiducci
2
Agenda
Des Patterns et de leur utilisation
Description des 3 patterns
Les patterns pour les développeurs
Support des patterns en .Net avant 3.0
Les patterns pour les architectes: Un détour par l’architecture d’entreprise
Les apports fondamentaux de .Net 3.x pour le développement d’application et l’architecture d’entreprise
3
De la littératureDe la littérature
A Pattern Language - Towns Buildings Construction C. Alexander et alOxford University Press, 1977
Design Patterns Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Addison-Wesley, 1995
Enterprise Solution Patterns using Microsoft .NET
Microsoft Patterns & Practices, 2003
Integration PatternsMicrosoft Patterns & Practices, 2004
Pattern-Oriented Software Architecture Buschmann et alWiley, 1996
Pattern-Oriented Software Architecture Vol.2 Schmidt et alWiley, 2000
Patterns of Enterprise Application Architecture Martin FowlerAddison-Wesley, 2003
Enterprise Integration Patterns
Gregor Hohpe, Bobby WoolfAddison-Wesley, 2004
4
Patterns: Elements of Reusable O-O SwErich Gamma, Richard Helm, Ralph Johnson, John Vlissides
« … Simple and elegant solutions to specific problems … »
« Design patterns capture solutions that have developed and evolve over time »
« They aren’t the designs people tend to generate initially »
« They reflect untold redesign end recoding as developers have struggled for greater reuse and flexibility in their software . »
Utilisable • Pour du développement
• Comme de l’architecture d’entreprise
5
Fondamentalement
Du bon sens et de l’expérience avec un nom bizarre
Structure: Problème / Solution / Conséquence
• Comprendre et adapter/adopter
• Composer
Un pattern est un élément clé du cycle de vie du logiciel
• Conception
• Evolution
Ses buts
• Simplifie le développement
• Rend l’architecture plus lisible, prévisible et maintenable
Le côté obscur:
• La sur-architecture
• Les guerres de religion
6
Des patterns aux exécutables
Implementations des patterns,Blocks, Frameworks & Serveurs logiques
Sélection de Patterns
Liaison des Patterns à la plate forme
octets & machines
7
ScenariScenari
Baseline Architectures (Apps blanches - squelettes)
Patterns et modèle de Référence
Block Library
• Composition d’implémentation des patterns pour répondre aux exigences des scenari
• L’implementation des patterns comprend des blocks et du code généré par des outils (cf Software factories et DSL)
Scénari d’Architecture • Ex: client soumettant des demandes unidirectionnelles
de services via files de messages, SOAP, Transaction englobant les files de messages et des actions métiers, …
Outils• Selection de Pattern• Implementation de patterns• Utilisation de Block• Génération de code• Configuration
• Selection de patterns d’application distribuée
• Composition adhoc de patterns
• Une bibliothèque de block génériques configurables• Les blocks ou leur composition peuvent implémenter des
patterns, en incorporer ou non.
Abstrait Code
8
Facade
Facade• « fournit une interface unifiée à un ensemble d’interfaces de sous
systeme(s). Une facade définit une interface de plus haut niveau qui rend le(s) sous-système(s) plus simple à utiliser »
Fournit un niveau d’abstraction plus élevé
Simplifie l’utilisation du (des) sous-système(s)
Fournit une vue par defaut simple et adaptée à la plupart des clients
Découple les sous-systeme(s) des clients (Sunrise / Sunset…)
Permet une architecture en couches
Une facade peut avoir une fonction intrinsèque (transformations, gestion d’etat, gestion de communication (retry…), gestion des transactions…)
• Facade vs mediator: une facade est unidirectionnelle, un mediator permet un comportement cooperatif (multidirectionnel)
9
Observeur
Observer (aka dependents – publish/subscribe)• « Définit une relation 1:many de dépendance entre objets de manière
à ce que quand un objet change d’état tous ses dépendants soient notifiés et mis à jour »
• Application:
Une abstraction qui a deux aspects indépendants que l’on veut faire évoluer indépendamment.
Quand la modification d’un objet nécessite la modification d’un nombre inconnu d’objets.
Quand un objet doit informer d’autre objets sans présumer de leur type (couplage lache).
• Attention:
Mise à jour en cascade et définition du changement
10
Mediateur
Mediator• « Définit un objet qui encapsule une interaction entre objets. Le médiator
prone un couplage lache en evitant que les objets ne soient directement connectés et permet de faire évoluer l’interaction independamment des participants.»
• Utilisation:Un ensemble d’objets communique de manière bien définie mais complexe.
Quand la reutilisation d’un objet est difficile car il est connecté et communique avec d’autres objets.
Un comportement qui est distribué entre différentes classes et qui doit être paramétrable facilement
• BeneficesComportement centralisé (definition, administration)
Decouple les intervenants et les mediateurs: (indépendance dans la réutilisation)
Simplify les relations entre objets: de (many to many) à ( 1 to many) Facilité de maintenance, d’évolution et d’administration
Abstraction de la coopération entre objets Focus sur l’interaction vs le comportement individuel
Contrôle centralisé
11
Eléments d’utilisation des patterns pour le développement d’une application Façade:
Principalement dans le design de composants
Définition d’interfaces pour une classe
Utilisation de web services
Observer
Très utile dans les IHM
Systèmes Distribués (connectés?...)
Mediateur
Communication entre composants
Communication avec l’extérieur
Composition – en liaison avec la façade
Structuration de la communication entre les éléments du système distribué
12
.Net facilite-t-il l’utilisation de ces patterns (avant .Net 3.0) Façade
Interfaces
Web Services
Observer
Events et delegates
Pub/Sub sur MSMQ
Mediateur
??
13
L’évolution du système d’information•De 6 à 28 interfaces•De 4 à 8 technologies différentes
« 40% des budgets IT sont dépensés en intégration d’application » Source Gartner Group.« 20% à 80% du coût d’une nouvelle application est le coût de son interfaçage » Source Forrester Research.
14
La base des solutions d’EAI, aka Serveurs d’intégration… aka BizTalk chez Microsoft Connection
Abstraction de la couche technique
Transformations
Facade
Bus - EDA
Pub / Sub sur MiddleWare de messaging (corba, MSMQ, MQSeries,…)
Observer
Processus métiers / Technique
BAM
Médiateur
15
Les spécifications du processus
16
Implémentation du processus: Médiateur (version pro-active)
17
Abstraction de la connection: Facade
18
Facade et Médiateur: composition
19
Et L’observer? – avec le médiateur
20
Observer (suite) – avec le médiateur
21
L ’observer tout seul
22
Le BAM: point fort du médiateur
23
Du framework de développement à l’architecture d’entreprise: .Net 3.x
24
Du framework de développement à l’architecture d’entreprise: .Net 3.x
25
Du framework de développement à l’architecture d’entreprise: .Net 3.x Façade
Séparation contrat de service et de l’implémentation
Façade pour l’admin et pour le développeur
Séparation du schéma et de l’interprétation pour le déploiement
Observer
WCF async callback
Mediateur: (enfin)
Workflow Foundation: un médiateur pour tous
Séparation du schéma et de l’interprétation pour le déploiement
Qu’est qu’un workflow?
Une abstraction pour décrire un scénario réel
Un ensemble d’Activités qui coordonne des humains ou des logiciels ou des composants…Matérialise un état dans un cadre très large (au delà de l’EAI et du workflow
humain)
WF
SharePoint Exchange BizTalk00 02 04 06 CMS UIP (MVC)
Unification : Workflow Foundation
Un framework généraliste pour permettre de BATIR n’importe quelle application devant réagir à des stimuli externes modélisant l’interaction entre entités (la caractéristique principale étant que l’application peut attendre les stimuli durant une période indéterminée).
Point-clé pour WF: flexibilité
“Les Commandes validées dans les 48 heures et envoyées dans les 30 jours”
“Vérification de la validation de la
commande par le fournisseur”
Persistence Flexibilité Suivi
Workflow exécuté sur 30 jours
Ou: scénarios à très faible latence
modification du worklow en cours
d’exécution Ou: workflow rigides
Visualisation de l’état du workflowou: pas de tracking
“Etat de la commande ?
Etape suivante ?”
Les différents formalismes
Sequentiel• Structure séquentielle, workflow formel• Le workflow contrôle le déroulement
Machine à Etats• Les événements externes gèrent le
workflow• Informel et adaptatif
Rules Driven• Règles et données gère le comportement• Conditions simples, policies evoluées
30
Un médiateur réactif
Activités: extensibilité
Librairie d’activités de base• Activités OOB, Types de workflows, types de base• Générique• Activity libraries define workflow constructs
Librairie d’activités spécifique• Créer / Etendre / Composer des activités• App-specific building blocks• First-class citizens
Packages de workflow métiers• Activités et workflow métiers• Bonnes pratiques / connaissance métier (IP)
Architecture ouverte et extensible
Choix du designer (visuels ou code)
Activités extensibles
Choix de l’hébergement
De la persistance
Du tracking
De la communication• Humains
• Applications métiersHost Process
WindowsWorkflow Foundation
Workflow
Custom Activity Library
Visual Designer
Base Activity Library
Rules Engine
Runtime Engine
Runtime Services
33
Agenda
Des Patterns et de leur utilisation
Description des 3 patterns
Les patterns pour les développeurs
Support des patterns en .Net avant 3.0
Les patterns pour les architectes: Un détour par l’architecture d’entreprise
Les apports fondamentaux de .Net 3.x pour le développement d’application et l’architecture d’entreprise
QUESTIONS??