Header
 
 

Gestion des variantes de services dans les architectures SOA

La réutilisation d'un service pour un nouvel usage conduit souvent au développement d'une variante afin de modifier son comportement d'origine. Par exemple, le service doit s'adapter par canal, filiale, partenaire, pays… sur ses aspects visuels (marque blanche, charte graphique), fonctionnels (extension d'une règle métier) et techniques (qualité d'exploitation). Cette forte pluralité des contextes d'utilisation impose de retenir des techniques appropriées d'extensibilité du code : une variante d'un service doit pouvoir être implémentée rapidement sans compromettre les usages existants ni corrompre la lisibilité du logiciel.

Evidemment, une simple duplication du code du service à chaque nouveau contexte conduit à une impasse en génie logiciel. De même, des ajouts successifs de logique algorithmique sur une version unique du code rendent illisibles les programmes et impliquent des tests coûteux de non régression. Le principe d'ouverture/fermeture qui définit que l'on ajoute du code pour une variante mais que l'on ne modifie pas celui existant est déterminant.

Par ailleurs, la rationalisation des coûts de possession des applicatifs passe par la mutualisation des développements. Il n'est plus justifié de bâtir plusieurs fois un même service sous prétexte que le code d'origine n'est pas extensible. Grâce à l'expérience d'une décennie d'utilisation de l'objet et du nouveau pattern d'architecture Context-Aware il est maintenant possible d'obtenir un code extensif. Cette propriété devient une exigence des responsables du système d'information ; ce n'est pas une option de génie logiciel. L'ajout d'un nouveau contexte d'usage tel qu'un canal ou l'accès par un partenaire ne doit plus conduire à des charges lourdes de maintenance et de test. Le service d'origine autorise son extension sans duplication du code et sans générer des risques de régression.

L'enjeu économique de l'extensibilité du code est considérable. L'informatique extensible est la déclinaison technique des concepts d'informatique à la demande et d'informatique agile soutenus respectivement par IBM et Microsoft.

L'informatique extensible intervient au niveau du développement grâce à des techniques d'organisation du code mais aussi lors des spécifications pour favoriser la généricité des algorithmes et rationaliser l'organisation des variantes.

Ce papier fait le point sur les différentes techniques d'extensibilité du code et plus précisément les apports et contraintes de l'approche objet, du nouveau pattern d'architecture Context-Aware et de la programmation par les aspects.

Pierre Bonnet, Consultant senior, Orchestra Networks.

Lire l'article complet au format PDF