33
Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

Embed Size (px)

Citation preview

Page 1: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés  

Frank Guiducci

Page 2: 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

Page 3: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

Page 4: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

Page 5: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

Page 6: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

Page 7: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

Page 8: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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)

Page 9: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

Page 10: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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é

Page 11: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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é

Page 12: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

??

Page 13: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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.

Page 14: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

Page 15: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

15

Les spécifications du processus

Page 16: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

16

Implémentation du processus: Médiateur (version pro-active)

Page 17: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

17

Abstraction de la connection: Facade

Page 18: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

18

Facade et Médiateur: composition

Page 19: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

19

Et L’observer? – avec le médiateur

Page 20: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

20

Observer (suite) – avec le médiateur

Page 21: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

21

L ’observer tout seul

Page 22: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

22

Le BAM: point fort du médiateur

Page 23: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

23

Du framework de développement à l’architecture d’entreprise: .Net 3.x

Page 24: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

24

Du framework de développement à l’architecture d’entreprise: .Net 3.x

Page 25: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

Page 26: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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)

Page 27: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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).

Page 28: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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 ?”

Page 29: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

Page 30: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

30

Un médiateur réactif

Page 31: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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)

Page 32: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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

Page 33: Comment devenir un bon Architecte ? Épisode 3 – Mes 3 patterns préférés Frank Guiducci

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??