23 décembre 2005

Patterns génériques d'architecture

Pourquoi inventer quand on peut copier ?
Pourquoi refaire quand on peut réutiliser ?
Pour parvenir à ces malhonnêtes fins (on m'a toujours dit que copier c'était tricher) utilisons les "patterns" d'architecture.
Bref aperçu.

REST : un pattern d'architecture inter-applicative générique

Il est facile, en découvrant REST, de comprendre pourquoi un style d'architecture applicative peut influencer la stratégie de l'application, ses capacités d'ouverture et d'évolutions futures.
Le respect des principes REST dans les applications d'un SI permet de définir à l'avance les capacités futures du système à intégrer les services d'autres systèmes ou à fournir ses services à d'autres systèmes.

En d'autres termes, garantir que vous respectez un certain nombre de principes simples et intelligents, dont REST est un bon exemple, permet d'assurer l'évolutivité du système dans le cadre de ces principes (tautologie non ?), tout en étant sûr, puisqu'il en est ainsi dans REST, que vous ne fermez la porte à aucune technologie d'échange d'information.

REST n'est pas une solution en soit, mais un outil garantissant que vous ne faites pas entièrement fausse route.

A ne pas manquer, sur le même sujet :
- REST : http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
- protocole HTTP : http://www.w3.org/Protocols/rfc2616/rfc2616.html
- W3C : http://www.w3.org/TR/webarch/
- sur le site de JP. Figer : http://www.figer.com/Publications/REST.htm




MVC : un pattern d'architecture logicielle générique

Même si l'intérieur d'une application peut être conçu au style REST (bonne idée d'ailleurs), son design doit être vu de manière souvent plus précise. Ceci est d'autant plus vrai que l'application intégrera des données, des écrans et divers utilisateurs éventuellement simultanément.
La définition très précise de MVC (ou de MVC2) permet de concevoir l'application sans se poser la question du style d'architecture interne, du respect de tel ou tel pattern. Il ne reste plus au concepteur qu'à chercher le framework d'implémentation le plus adapté à l'application et au langage utilisé.

L'erreur classique du développeur qui consiste à "tout casser puisque le modèle n'était pas le bon" peut alors être évitée au moins en ce qui concerne les liaisons entre la visualisation, la présentation, la structuration et les modèles de données, l'internationalisation et éventuellement l'accès aux données persistantes.

A ne pas manquer, sur le même sujet :
- sorte de MVC pour les nuls (c'est vieux mais ça explique bien) : http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html
- la vision sun de MVC : http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html



Autres patterns...

Ce que je constate souvent c'est que l'application des patterns d'architecture se fait quel que soit le niveau (sorte de fractale, comme démontré dans [YCS]) : au niveau composant d'une librairie, au niveau application, au niveau liaisons inter-systèmes, au niveau application server, etc.
Un grand jeu de mon quotidien consiste à utiliser les Design Patterns [GOF] à tous les niveaux de l'architecture du SI, de la note de stratégie globale au détail d'un bout de code. Vous verrez, ça marche !

A votre tour, si ça vous chante, postez en commentaire de cet article les références vers vos meilleurs patterns.

A ne pas manquer, sur le sujet :
- Sun fait le lien entre des use cases et des patterns associés : http://java.sun.com/developer/technicalArticles/J2EE/despat/index.html
- l'architecture J2EE décrite, entre autre, au travers de patterns : http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/

Références ci-dessus :
[GOF] Design Patterns - E. Gamma, R. Helm, R. Johnson, J. Vlissides
[YCS] Urbanisation et BPM - Y. Caseau

19 décembre 2005

Little Indian vs Big Indian

Reflexion de comptoir...

En fait, rien n'a vraiment changé : l'un des grands problèmes des années 80 était la compatibilité entre matériels (mémoires, CPUs), applications (messages, fichiers), etc. : Little Endian ou Big Endian ?
Aujourd'hui, la vraie problématique des DSI c'est le degré d'offshore : Little Indian ou Big Indian ?

NB: vous remarquerez que j'évacue l'hypothèse "pas d'offshore"...

15 décembre 2005

Architecture de SI et Stratégie d'Entreprise

Les Architectes SI sont-ils enfermés dans leur sous-sol de DSI ?

Les Architectes SI sont-ils des animaux étranges, mi-humain mi-développeur (on sait bien que les développeurs ne sont pas des humains), incapables de voir autre-chose que l'informatique ?


Spectre large
Le métier d'Architecte SI couvre un spectre large des activités de l'entreprise, de la compréhension des besoins métier à l'implémentation des systèmes. Dans le titre, "SI" signifie "systèmes d'information" et non "informatique", car il est important de considérer les flux d'information inhérents au(x) métier(s) de l'entreprise et leur interaction avec les composants informatiques.
Mouture étrange de l'informaticien, l'Architecte SI peut se voir tour à tour confier des missions très "métier" ou très "techniques".

Le profil de l'Architecte SI doit permettre de gérer les situations où la stratégie de l'entreprise croise les technologies de l'information. Il se doit de donner au Système d'Information une dimension stratégique pour l'entreprise. Il doit enfin connaître aussi bien l'activité de l'entreprise (la partie "métier" ou "coeur de business") que les possibilités (actuelles ou futures) offertes par le SI.

En définitive, l'Architecte SI participe à la création d'un SI prêt à servir les desseins de l'entreprise autant qu'il contribue à organiser et créer les desseins de l'entreprise.
Conclusions...
  • ce mouton à 5 pattes n'est que très rarement un seul homme,
  • on doit pouvoir trouver de bons Architectes SI au sein des directions de la stratégie,
  • on doit pouvoir trouver de bons directeurs de la stratégie parmis les Architectes SI.