Archive

Archives de l'auteur

Software Craftsmanship, ou le marketing de l’échec

Suite à l’intéressant article de Nicolas Martignole sur le Software Craftsmanship et surtout, à tout le buzz qui en a suivi (même si le buzz a, en fait, démarré bien avant dans la communauté anglophone suite à des articles critiques de Dan North et Martin Fowler et aux réponses de Robert « Uncle Bob » Martin), j’ai publié un billet d’humeur en réaction.

Pour éviter d’y associer directement Objet Direct, je l’ai publié sur mon blog perso, mais je me permets néanmoins d’y faire référence ici.

Comme il se doit, les opinions que j’y exprime n’engagent que moi et en aucune manière ma société :-)

QCon London 2010 – Udi Dahan – Avoid a Failed SOA

“Business & Autonomous Components to the Rescue”

image Malgré un sujet pas très original, avec peu d’idées réellement neuves, probablement la meilleure présentation à laquelle j’ai assisté aux QCon 2010 de Londres. J’y ai été particulièrement sensible, du fait que j’ai moi-même réalisé et animé des séminaires sur des sujets similaires. Et j’ai pris une leçon, sur la forme comme sur le fond.

Sur le fond, finalement, un seul message simple est véhiculé par Udi Dahan : une condition nécessaire à la réussite d’une SOA c’est l’émergence de composants très faiblement couplés. Pas vraiment une surprise. Mais c’est grâce à une forme étudiée que son discours (simple mais pas simpliste) amène à se poser des questions profondes.

Sur la forme donc, un discours extrêmement clair sans utilisation d’aucun buzz, et un enchaînement logique des idées qui mène inexorablement l’auditoire à ses conclusions inéluctables. Quand la vidéo de cette présentation sera en ligne sur InfoQ (malheureusement, ils les distillent pendant six mois), ne la ratez pas.image

Je vais tenter de résumer.

Le sujet c’est le projet d’intégration. Pourquoi ça rate souvent, et comment faire que ça rate moins :-) On a le droit de se tromper plusieurs fois, mais à chaque fois différemment !

La présentation oscille autour de l’architecture entre la vision métier et la vision technologique.

SOA et couplage faible

Un des objectifs de la SOA est d’atteindre un couplage faible entre composants métiers autonomes. Tout le monde est d’accord là-dessus. Mais ce couplage faible doit être une exigence à la fois métier et technique qu’il faut prendre en compte à la conception comme à l’exécution.

imageUdi part d’un SI théorique plutôt bien aligné sur le métier (avec une véritable architecture fonctionnelle explicite) dont on pourrait se dire qu’il est facilement “SOAisable”.

Il montre qu’une intégration des applications par des services (une SOA) peut, en fait, mener facilement à des applications très fortement couplées qui amènent, en production, leur lot de contentions (mémoire, threads, locks base de données…) .

So what ? Qu’est-ce qu’on a loupé ?

On a oublié que pour obtenir le découplage à l’exécution il faut des communications asynchrones (d’un point de vue fonctionnel et pas seulement technique). Et il y a de fortes conséquences sur… la conception.

Il faut donc basculer du requête/réponse à la publication/abonnement (d’une architecture orientée services vers une architecture orientée événements). C’est la succession d’émission d’événements qui matérialise le processus et non l’orchestration d’appel de services. Et c’est l’émetteur qui définit le contrat de service et non le receveur. On parle d’Event Driven Architecture (EDA).

Mon avis

Même si ce qui vient d’être dit est parfaitement logique en terme d’affectation de responsabilités, la plupart des démarches de conception travaillent dans l’autre sens : le contrat de service est défini à partir du besoin du client du service (c’est ce qu’on fait quand on fait de la conception d’application : c’est le scénario d’utilisation qui définit les services publiés par le serveur métier). Il faut donc changer radicalement son mode dimagee conception lorsqu’on fait de la SOA/EDA : les contrats de service doivent être définis uniquement par les changements d’état des objets métier et non par les “clients” de ces changements d’état.

Autre réflexion que m’inspire cette vision (originale) de ce qu’est un processus SI : un enchainement infini d’événements. On ne peut plus définir un Processus avec un début (l’Evénement déclencheur) et une fin (un Produit de sortie) créant de la valeur pour son Client. C’est une révolution conceptuelle (on remet en cause la définition d’un processus selon l’ISO !) et surtout, ça pose un gros problème. Comment appliquer la doctrine millénaire du consultant en processus : “centrer les processus de l’entreprise sur le client”, si le client de l’entreprise n’est plus le client du processus ? Je n’ai pas de réponse pour le moment :-)

Composants métier autonomes

Udi Dahan évoque ensuite une autre question délicate. Comment partitionner les services en composants autonomes ? A nouveau, une réponse évidente est : aligner les composants sur le métier. Un composant métier par bloc fonctionnel. Un rêve d’urbaniste !

Il montre qu’en fait, ce partitionnement “idéal” ne répond pas toujours au besoin et  imageparticulièrement aux exigences non fonctionnelles. Il donne l’exemple des SLA différents en fonction du type de client et propose donc des composants métier autonomes techniquement (potentiellement très différents dans l’implémentation), définissant les mêmes contrats de service mais implémentés différemment.

Mais à nouveau, comment éviter un couplage si, finalement le routage des événement doit se faire en fonction de leur contenu (l’événement contenant un “petit client” doit être routé vers le composant dédié petit client, l’événement “gros client” vers le composant dédié gros client).

Le fonctionnement EDA précédent permet, à nouveau, à chaque composant d’être autonome dans la prise de décision : tous les composants d’un même métier sont abonnés aux mêmes événements et chacun décide de manière autonome de traiter ou non un événement particulier en fonction de son contenu.

A bientôt pour d’autres conférences QCon.

Categories: Web Services - SOA Tags: , , , ,

QCon, Modèles et Intégrisme

This post is available in english on my personal blog.

QConJe rentre juste de trois jours aux QCon de Londres. C’est comme toujours un grand moment permettant une véritable prise de recul. Je peux respirer, ouvrir les yeux sur ce que font les autres et comment ils travaillent, sentir quelles sont les tendances et surtout, tenter d’appréhender ce que sera mon job dans un an, voire, plus loin.

Promis, je vous ferai, dans les jours qui viennent, une compilation des meilleurs moments de la conférence et des points les plus marquants. Mais avant tout, je voulais vous faire une réaction à chaud sur quelque chose qui me semble important.

Je reviens aujourd’hui avec un goût désagréable dans la bouche (non ce n’était pas la bière qui était, comme toujours, excellente). Un goût amer et un peu de colère aussi.

En deux mots : la modélisation n’est plus simplement absente (comme c’était pratiquement le cas lors des deux dernières éditions), c’est devenu un gros mot.

Que le code soit à l’honneur, c’est bien naturel dans une conférence consacrée au développement. Que l’on fustige les erreurs commises par le passé (en particulier la “sur modélisation” symptomatique d’un déficit de confiance dans les processus de développement) me semble aussi plutôt sain.

Mais que l’on entende des sentences définitives du genre “comme chacun le sait, les modèles ne servent absolument à rien” dans la bouche de stars comme Robert C. Martin, alias Uncle Bob (qui a pourtant écrit en 2003 un remarqué “UML for Java Programmers” !), qu’un Dan North (par ailleurs excellent, je vous en reparlerai) considère l’usage d’un modeleur comme une inutile “complification”, relève de l’hypocrisie, de la démagogie ou de l’intégrisme (voire de la simple bêtise, indissociable du dernier).

La seule conférence à laquelle j’ai assisté qui faisait encore la part belle aux modèles était celle d’Eric Evans qui parlait de conception agile. Encore avait-il rayé le mot Modèle du titre, pour celui de Design plus consensuel. C’est lui qui a, d’ailleurs, eu le mot juste : en abandonnant la modélisation, la communauté du développement a, un peu trop rapidement “jeté le bébé avec l’eau du bain” (sic).

En fait, j’ai eu l’impression d’être dans le domaine du religieux et d’assister à des professions de foi.

Il y a, d’un côté, les fondamentalistes du code, pure monothéistes, nostalgiques d’un âge d’or mythique où le développeur était le seul maître de sa production, en relation directe avec Dieu (le Product Owner), dépositaires d’un savoir millénaire (le Software Craftsmanship) qui se transmet de bouche de gourou à oreille de disciple.

Et il y a la secte des UMListes, vus comme de dangereux illuminés schismatiques, dont les délires auraient corrompus le monde parfait des précédents et qu’il faut exterminer par tous les moyens. J’ai eu l’impression d’être soumis à une fatwa.

Comme toujours lorsqu’il y a des problèmes, il faut trouver des boucs émissaires. Les modèles (et ceux qui les font) semblent jouer ce rôle aujourd’hui : symboles du “Big Upfront Design”, c’est eux qui portent la responsabilité des échecs des grands projets. Les modèles sont vus comme des artefacts de pure documentation : modéliser serait une activité chronophage et inutile (voire perverse), en particulier dans un monde agile.

Dans un tel environnement, impossible de sortir ma carte de visite : sous mon nom, il y a marqué “MDA business line manager”. Comme une maladie honteuse.

Pourtant, il me semble que modéliser, au contraire de développer, permet :

  • d’analyser un problème,
  • de compresser sa complexité,
  • d’appréhender sa globalité,
  • de s’abstraire de contingences techniques,
  • de communiquer.

Mon cerveau n’est pas suffisant pour faire tout ça sans assistance. J’ai besoin d’UML (ou de tout autre formalisme), à la fois comme d’une béquille, d’un tableau blanc, d’une extension de mémoire et d’un formulaire de maths.

Modéliser n’est pas antagoniste de développer (sans parler de MDA qui combine les deux activités) : modéliser permet simplement de mieux développer.

Et d’ailleurs, le code EST un modèle (“système d’abstractions qui décrit des aspects sélectionnés d’un domaine”), au même titre qu’un diagramme UML. Juste un peu plus verbeux (et un peu plus facilement exécutable).

Pour conclure, il me semble que ce hiatus est, avant tout, très représentatif de modes de pensées différents : une pensée analytique “à la française” (après tout, Descartes et Merise sont des créations bien de chez nous) face à une pensée pragmatique anglo-saxonne.

J’aime à penser qu’il y a du bon dans les deux mondes et que les deux se complètent agréablement. C’est même ce qui, à mon avis, constitue l’intérêt principal de notre métier : analyser des problèmes pour informatiser leur résolution. C’est ce qui quotidiennement renouvelle ma motivation : comment faire rentrer dans un (bon) programme la complexité du monde réel.

Lancement du Domain Driven Design Users’ Group Paris

LogoDDDFR Je (Grégory Weinbach) m’associe avec un autre féru de modélisation de Domaine, Jérémie Grodziski, pour initier un groupe d’utilisateurs du Domain Driven Design sur Paris.

Le Domain Driven Design (DDD) est une approche de la conception de logiciel dont les principes fondateurs sont :

  • Le point d’attention principal doit être le domaine et sa logique,
  • La conception de domaine complexe doit être basée sur un modèle.

Le Domain Driven Design n’est pas une technologie ni une méthodologie. C’est une manière de penser et un ensemble de priorités, dont l’objectif est d’accélérer la réalisation des projets qui gèrent des domaines complexes.

L’idée est de faire vivre une communauté, d’échanger sur le sujet, et en particulier de partager des retours d’expérience concrets.

Une rencontre sera organisée tous les deux mois, associée à un atelier ou à une présentation plus formelle.

Le lancement officiel du groupe se fera à l’occasion de la venue en France d’Eric Evans, créateur et pape du DDD lors d’une conférence gratuite (inscription obligatoire) qu’il animera le 17 février sur les “Modèles en action”.

L’inscription au groupe est gratuite. Un site plus complet sera bientôt disponible sur le sujet.

Longue vie au DDDUG (prononcez Didideug) Paris !

Roadmap Enterprise Architect 8.0

J’ai pu assister, avant-hier, à une des deux sessions de présentation à destination des partenaires de Sparx, des nouvelles fonctionnalités de la version 8.0 d’Enterprise Architect qui devrait sortir d’ici quelques semaines.

Il ne s’agit pas d’une révolution mais plutôt d’une version apportant des améliorations ponctuelles mais importantes.

Je ne vous ferai pas une présentation exhaustive mais plutôt un survol de quelques points marquants selon moi.

Saisie structurée des scénarios

La nouveauté la plus importante pour les utilisateurs de l’outil dans les phases de recueil de besoin : les scénarios associés à un Use Case sont maintenant structurés (auparavant, ils étaient saisis sous forme de texte libre) et peuvent être associés à des diagrammes. Mieux, ces diagrammes (séquence, communication ou activité) peuvent être générés à partir du contenu textuel structuré.

clip_image001

Chaque étape d’un scénario apparait dans une ligne, une icône en en-tête caractérisant l’étape courante (sollicitation par l’acteur ou réponse du système). La numérotation des étapes est automatique et est maintenue dans les scénarios alternatifs qui y font référence.

Le descriptif de l’étape est textuel mais intègre éventuellement des renvois (sous forme de lien hypertexte) vers les termes définis dans le glossaire.

Cette fonctionnalité est d’ailleurs aussi disponible dans le texte des Notes :

clip_image001[8]

Workflow de projet

On peut créer un Workflow décrivant un enchainement de tâches à réaliser par les utilisateurs de EA en fonction de leur rôle (défini par la notion de “groupe” d’utilisateurs). Une tâche peut-être associée à un script (une requête). Cela permet, par exemple, d’affecter au “Project Manager” une tâche de validation des « exigences approuvées » ou de contrôle des « classes non implémentées ».

La présentation (très rapide !) de cette fonctionnalité n’a pas permis de comprendre toutes les conséquences de ces nouvelles fonctionnalités mais il semble qu’il s’agisse d’un premier pas vers la possibilité d’instrumenter une démarche projet.

Environnement de travail

Les “Visual Layouts” personnalisés (sauvegardes de l’environnement de travail avec position des fenêtres, toolbars customisées…) sont maintenant nommés et en nombre illimité.

image

Duplication de package

Il est maintenant très simple de dupliquer un package entier. Les fonctions “Copy package / Paste package” sont maintenant disponibles. Le résultat est le même que lorsqu’on fait un export XMI suivi d’un réimport.

Tests unitaires pour Google App Engine

google-app-engine Les développeurs Cloud le savent, tests unitaires et Google App Engine ne sont pas franchement compatibles : si on veut exécuter les tests unitaires sur le GAE depuis un script ou son IDE préféré, on est obligé de les invoquer via http (ou xmpp) et on est vite limité par le timeout de 30 secondes.

Le projet App Engine Unit tente de combler le vide. Le principe est de découper une suite de tests JUnit en tâches asynchrones et de les empiler ensuite dans la Task Queue.

Sur le papier, ça semble plutôt prometteur. Mais le projet en est encore à ses balbutiements (version 0.0.6 !). A suivre de près néanmoins.

Google Wave en vrai

(suite de mon post précédent)

Ayè ! J’en suis :-) J’ai mon accès Google Wave.

Premiers contacts pas à pas :

  • Je regarde la vidéo de présentation incluse dans la Vague d’introduction. J’apprends un nouveau mot : un “blip”. C’est le bout de message ajouté ou modifié quand on intervient sur une Vague (une Vague est une composition de Blips).
  • Demie-surprise : je retrouve dans ma liste de contacts Wave mes contacts Google qui ont déjà un compte Wave (5 personnes seulement : on a tout de suite l’impression d’appartenir à un club très “select”). Ca veut dire que tous ces correspondants savent que je suis “Wavisé”. Petit malaise : Big Brother n’est pas loin.
  • J’édite mon profil (c’est assez bien caché : il faut cliquer sur son nom dans les contacts mais celui-ci n’est pas apparemment “sensible”). Big Brother 2, le retour : il me propose d’ajouter des liens vers des sites qui ont un rapport avec moi. On retrouve dans la liste, des sites “Google” en relation avec moi (Picasa, Youtube), mais aussi d’autres sites sans rapport directs avec Google !!! En fait, il s’agit de domaines dont je suis le propriétaire et dont les sites sont hébergés chez OVH…
  • Difficile de trouver les “robots”, ces contacts qui permettent des usages alternatifs de Google Wave (publier un Twit ou un blog par exemple). Je dois faire un passage par l’aide en ligne pour arriver à faire mon premier Wave Twit.
  • Déception : je ne trouve pas le robot magique qui m’aurait permis de publier ce post directement via une Vague. En revanche, j’ai trouvé quelques robots amusants via un site tiers.
  • Les forums sont très vides et il n’y a pas de FAQ (il y a plus de buzz autour de GW que de vrai info dedans !)

Conclusions à chaud :

  • Le nom est bien choisi, mais les initiales me posent un petit problème personnel…
  • Si mes amis et collègues ne sont pas sur la Vague, je n’ai pas les moyens de communiquer avec eux par ce biais (pas de passerelle simple vers le courriel traditionnel ni même vers Google Talk). Donc, pour le moment, ça ne sert pas à grand chose et je ne peux même pas faire une démo sympa :-(
  • La peinture n’est pas sèche. On voit en permanence des fonctions qui manquent, des erreurs d’ergonomie flagrantes… qui expliquent l’usage “restreint” (100 000 c’est restreint à l’échelle Google) ou des trucs qui ne fonctionnent pas (comme le robot “Bloggy” permettant de blogger une Vague mais qui affiche en permanence un message d’erreur) ou accessibles uniquement à certains utilisateurs.
  • A contrario, au fur et à mesure qu’on s’en sert, plein d’usages nouveaux viennent à l’esprit. En vrac et sans filtre (à chacun des usages suivants, il faut ajouter systématiquement l’adjectif “… collaboratif”) :
    • Mind Mapping
    • prise de note et compte-rendu de réunion
    • constitution de FAQ
    • modélisation
    • interview
    • pair programming

Maintenant j’attends avec impatience :

  1. D’avoir la possibilité d’inviter du monde et d’échanger avec mon entourage
  2. D’avoir accès à la sandbox pour que mon côté geek puisse s’exprimer.

A bientôt pour la suite donc.

Categories: Actualités, Cloud Tags: , , ,

Google Wave, révolution ?

Logo Google Wave Je me suis avalé l’intégralité de la vidéo de présentation de Google Waves (1h20 !) mais ça valait le coup. Depuis l’annonce faite en mai à la conférence Google I/O à quelques (600) happy few, le buzz a considérablement enflé. Jusqu’il y a quelques jours où Google a annoncé qu’il élargissait le nombre d’invitations à 100 000 et où le sport à la mode est devenu d’avoir SON accès (voire, encore plus fort, l’accès à la sandbox développeur). Il parait même que certains les achètent aux enchères sur e-bay !

Mais qu’est-ce donc que cet OVNI. L’ambition de Google est tout simplement de succéder à l’e-mail (et donc à SMTP) en terme d’usage et de popularité !

La solution ? Fournir un client unique pour toutes les usages collaboratifs d’Internet : le courriel donc, mais aussi le chat, le twitt, le blogging, la publication dans un Wiki, dans Facebook ou tout autre réseau social, jusqu’à l’écriture de compte-rendus de réunion, la planification d’un voyage ou même le jeu, ou toute autre activité qui induit un échange, une collaboration, une publication. Rien que ça !

Comment Google présente-t-il son nouveau bébé ? Qu’est ce qu’une Vague ?

  • Une Vague, c’est moitié conversation, moitié document
  • Une Vague c’est partagé
  • Une Vague c’est vivant

Mais encore? Quoi de neuf par rapport à un courriel traditionnel ?

  • On est plus proche d’une conversation que d’un courrier : tous les participants peuvent intervenir à tout moment (voire se couper la parole !). En ce sens ça ressemble plus à du chat.
  • Les échanges se font instantanément. Toute modification (frappe d’un caractère, mais aussi ajout de pièce jointe, ou d’image) est propagée instantanément à tous les participants ce qui rend effectivement l’échange extrêmement vivant (fini le temps d’attente pendant lequel apparaît le message “votre correspondant rédige un message”) mais aussi très intrusif (quand on chat on peut faire autre chose en même temps, c’est beaucoup plus difficile quand on est sur une Vague).
  • Une nouvelle dimension intervient, le temps : l’historique des échanges qui ont amené la Vague dans l’état courant est conservé et peut être restitué.
  • On peut intervenir à tout endroit de la conversation sans la dupliquer : on rassemble en un seul document un thread complet (i.e. le mail initial et toutes ses réponses ou mises à jour)
  • C’est réellement et nativement multi-media (même si le support initial est aujourd’hui majoritairement le texte).
  • On peut gérer des habilitations : l’accès à une Vague ou à certaines de ses parties peut être finement contrôlé.

L’équipe de Lars Rasmussen et Stephanie Hannon (les créateurs de Google Maps) est partie de la question suivante : à quoi ressemblerait l’e-mail s’il était inventé aujourd’hui ? La présentation du résultat est bluffante et, sans faire du “Googlisme” primaire, le concept me semble effectivement révolutionnaire.

Google Wave, c’est trois composants :

  • Un produit : un client écrit en GWT accédant à un serveur hébergé sur Google AppEngine
  • Une plateforme : des APIs pour développer
  • Un protocole : basé sur XMPP

Le tout est intégralement open source, l’objectif étant de développer des APIs et des usages nouveaux (j’ai admiré l’initiative de la R&D SAP pour proposer un outil collaboratif de modélisation de Business Process s’appuyant sur Google Wave).

J’attends avec impatience mon accès pour vous donner un retour concret (incluant aussi les points négatifs ;-)

Eric Evans au Paris JUG

Merci à Mathieu qui m’a donné l’info.

Un événement à ne pas manquer à Paris : la venue en France de Eric Evans.
Recevez en direct la parole du créateur du Domain Driven Design : le paris JUG organise une soirée exceptionnelle lundi soir prochain.
A ne manquer sous aucun prétexte : en plus c’est gratuit !

Franchement, je pense que son propos est exactement dans la ligne stratégique d’Objet Direct : à mi chemin entre la MOA et le développement, il propose des solutions pour adresser  le problème le plus important dans le développement d’applications informatique : comment gérer la complexité métier.

Pour les novices, il existe un résumé de son livre sur InfoQ.

Pour les gens intéressés j’ai animé en avril, un séminaire interne AMOA sur le sujet à Paris. Je peux le réorganiser à la demande.

Pour ceux qui veulent aller plus loin :
http://www.domaindrivendesign.org
http://www.domainlanguage.com