BT

Introduire de la simplicité dans un système via des composants Event Driven simples

par Jan Stenberg , traduit par Grégory Weinbach le 18 juin 2013 |

Pour rendre un système simple, utilisez des événements pour supporter les interactions entre de petits composants métiers, c'est ce qu'a suggéré Russ Miles lors d'une récente présentation Développer des composants Event Driven simples pour du logiciel agile.

Cette présentation fait suite à une autre qu'il a donnée un mois plus tôt, Des Evénements pour simplifier l'architecture d'un système, au cours de laquelle Russ a mis en place les bases de ses idées sur la Simplicité : une architecture où de petits composants collaborent entre eux en échangeant des Evénements.
Ce type de design permet à Russ d'être en situation de faire évoluer ces composants au même rythme que l'application ou le système en s'affranchissant des "frottements" entre eux qui font qu'un simple petit changement peut tout mettre par terre.

Pour Russ la base ce sont les composants, et la simplicité, le principe permettant de réduire le couplage entre eux. Comment évaluer si un composant est simple ou non ? Un bon test : est-il simple de déplacer le composant. Si le déplacement est difficile, c'est un bon indicateur de trop grande complexité. Il compare le déplacement d'un composant complexe avec une guirlande de Noël : on tire sur une lampe et tout le reste suit.
Pour simplifier un composant complexe, il sépare les responsabilités et les effets de bord en évacuant ceux-ci dans d'autres composants plus petits. Un exemple d'effet de bord, l'intégration avec le reste du monde, par exemple la production de logs, responsabilité que Russ déplace vers l'infrastructure.

Des événements supportent l'échange de données entre composants. A première vue, cela conserve un point de couplage, l'émetteur devant connaître le receveur. On l'élimine en introduisant un événement pivot intermédiaire et un système de distribution des événements.

La manière la plus simple d'implémenter un événement est une classe immutable partagée, mais cela introduit à nouveau du couplage. L'étape suivante de réduction de la complexité est de remplacer cette classe par des paramètres nommés (des paires clés-valeur).

Le coté négatif de cette approche, c'est l'indirection : selon Russ, cela diminue la complexité mais cela retarde la confrontation avec d'autres problème potentiels. La réponse : une bonne couverture de tests à la fois unitaires et d'intégration entre composants.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2014 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT