2008
MORA Cédric
IFIPS 5ème année
DEP. Informatique
MÉMOIRE DE SYNTHESE :
SOA
DÉFINITION,
UTILISATION DANS LE MONDE DE LA BANQUE
ET METHODOLOGIE DE TESTS
SOMMAIRE
Introduction
4
Qu'est-ce que SOA ?
5
La theorie SOA
5
Les Web Services
7
Les ESB (Enterprise Service Bus)
9
EDA (Event-Driven Architecture)
10
SOA dans le monde de la banque
12
La banque
12
IBM, COBOL, CICS
13
Stratégie de l'entreprise
16
Comment tester SOA ?
17
Pourquoi est-ce si particulier de tester
SOA ?
17
Les bases de la méthodologie de test
18
Méthodologie de test
20
Dans le monde de la banque
27
Conclusion
28
Annexes
29
CICS - Détails
29
Cobol - Exemple de réutilisation en tant que
Web Service avec les logiciels Acucorp
30
Le modèle de test « Onsite -
Offshore »
31
Bibliographie
32
Sites internet
32
Documents Electroniques (PDF)
33
Livres
33
Documents Audio
33
INTRODUCTION
L'architecture SOA est de plus en plus utilisée dans
les entreprises. Cette Architecture Orientée Service apporte beaucoup de
nouveautés au monde des systèmes d'information et à
l'informatique en général. D'ici fin 2008, 60 % des
entreprises opéreront leurs applications métiers par le biais
d'une architecture SOA et le marché mondial des Web Services (une
implémentation de SOA) est passé de 950 millions de dollars en
2004 à 6,2 milliards en 2008.
J'ai d'ailleurs réalisé mon stage de
quatrième année à Thales sur un sujet impliquant les
SOA : il s'agissait d'une étude sur les SOA et ainsi voir comment
les utiliser dans le contexte de Thales. Depuis des années, de multiples
études de ce type ont été menées dans toutes les
entreprises. En effet, cette architecture permet une refonte complète
tout en gardant des briques existantes mais peut très bien être
instaurée de manière incrémentale. Les entreprises, dont
les banques, qui n'ont, bien sûr, pas envie de repartir de zéro
avec leur systèmes d'information, peuvent ainsi progressivement utiliser
une architecture SOA de plus en plus complète.
Effectuant mon stage cette année dans une banque, je me
suis intéressé au monde SOA dans la banque où la
notion de qualité de service est très importante. Les banques s'y
intéressent particulièrement : comment vont-elles passer
d'infrastructures créées il y a des dizaines d'années
à une architecture SOA ? Ce qui va surtout m'intéresser dans
ce document concerne la qualité SOA et la méthodologie pour
tester une architecture SOA. Pendant l'adoption incrémentale, il va
falloir utiliser une stratégie particulière qui diffère
des phases de tests habituelles. Nous verrons pourquoi c'est si important et
comment il est possible de réaliser cette tâche, en
général, et plus particulièrement dans le monde de la
banque.
En concevant une architecture SOA, l'année
dernière, il n'a jamais été question de qualité SOA
ou de méthodologie de test et c'est ce qui manque à mon
expérience sur ces architectures.
Je vais ainsi présenter SOA avec mes acquis du stage de
quatrième année puis voir les systèmes d'information
existants dans le monde de la banque et comment planifier ces tests dans une
architecture SOA.
QU'EST-CE QUE SOA ?
LA THEORIE SOA
Depuis le début, le terme SOA est évoqué
mais la traduction de cet acronyme « Service-Oriented
Architecture » par Architecture Orientée Service ne permet pas
de comprendre exactement ce qu'il signifie. Une définition simple
pourrait être la notion d'intégrer et de manipuler les
différents composants d'un système informatique en tant
qu'ensembles fonctionnels appelés services.
Cette architecture à la mode répond aux
problèmes de réutilisation d'outils (ou produits) des
entreprises. Pour mieux comprendre sa définition, il faut voir cette
architecture comme une philosophie. C'est une approche permettant de
réutiliser et d'organiser des ressources existantes, dans une solution
autorisant une interopérabilité entre plateformes et
environnements, une évolutivité des modules applicatifs et une
flexibilité autorisant l'utilisation dynamique d'applications. Cette
solution permet donc d'intégrer divers systèmes : chaque
ressource peut être accessible en tant que service possédant une
interface. L'implémentation du fournisseur de service est donc libre de
changer sans qu'il y ait un impact sur son utilisation. On peut voir ce service
comme une boîte noire : on sait qu'elle va rendre le service voulu
sans savoir comment est faite la boite noire. On peut choisir de la remplacer
par un autre service implémenté différemment mais
répondant aussi à la même fonctionnalité.
Un exemple concret est le service qui a été
créé par la SNCF : réserver une place de train. Une
architecture SOA a été implémentée et l'un des
services offre la possibilité de réserver une place de
train : que l'on y accède de leur site internet ou d'un guichet, le
service est le même. La personne qui fait la réservation utilise
un client pour se connecter : un consommateur de service.
Cependant, l'interaction entre consommateur et fournisseur
n'est pas directe mais faite par le biais d'un médiateur responsable de
la mise en relation des composants.
Un consommateur de Service X (resp. Y) passe par un
médiateur pour accéder au bon fournisseur de Service X (resp.
Y).
Consommateur de Service X
Consommateur de Service Y
Fournisseur de Service Y
Fournisseur de Service X
Médiateur (« Middle-Tier »)
Pour mieux voir comment fonctionne une architecture SOA, il
est important de savoir ce qu'est un service. Il assure une fonction bien
définie et est autonome, ne dépendant d'aucun contexte ou
service externe. On retrouve dans un service les caractéristiques
suivantes :
· Couplage faible : les services sont exposés
via des standards qui assurent la réduction des dépendances. Le
terme « loosely-coupled » est souvent utilisé.
· Grande Maille : les opérations
proposées par un service encapsulent plusieurs fonctions et
opèrent sur un périmètre de données large. Un
service contient des objets, des composants qu'il utilise pour répondre
à sa fonction. Le terme récurrent est
« coarse-grained ».
· Interface : le contrat d'utilisation du
service.
· Synchrone ou asynchrone : attente de
réponse après l'utilisation d'un service ou non.
· Activable à distance et interopérable.
Une architecture orientée service consiste donc en une
collection de services, indépendants les uns des autres, qui
interagissent et communiquent entre eux.
Il est intéressant de comparer l'architecture SOA
à une autre architecture qui met en avant des différences
importantes. Cette architecture est l'architecture orientée objet. Dans
cette architecture, les données manipulées sont directement
associées au mode de traitement qui leur est appliqué. La
programmation orientée objet (POO) implique deux choses : liaison
forte à un modèle spécifique et un nombre d'appels
important entre les deux couches de présentation et métier
(contenant les objets métiers).
Architecture Orientée Objets
Au contraire, l'architecture SOA permet à la couche de
présentation de passer par des services pour manipuler les objets
métier sans avoir besoin de les connaître explicitement. Les
services agissent ainsi en tant que boites noires faisant abstraction de la
complexité du modèle objet.
Architecture Orientée Services
Pour mettre en pratique cette théorie, une
implémentation s'est vite imposée : les Web Services.
Même si ce n'est pas l'unique choix d'implémentation, elle est
souvent associée à SOA.
LES WEB SERVICES
Les Web Services représentent l'implémentation
la plus utilisée pour appliquer l'architecture SOA. Le concept de Web
Service regroupe un ensemble de technologies basées sur XML, permettant
de créer des composants logiciels distribués, de décrire
leurs interfaces et de les utiliser en mettant en oeuvre des standards tels que
SOAP, XSD, WSDL et UDDI. Les Web Services respectent donc des protocoles et des
normes informatiques utilisés pour échanger des données
entre les applications : ils ont été définis, pour la plus
grande part, par le W3C (World Wide Web Consortium), qui a été
fondé pour promouvoir la compatibilité des technologies du Web et
émet des recommandations à valeur de standards industriels.
Un Web Service peut, dans un exemple simple, laisser un client
communiquer avec lui en utilisant des messages XML qui répondent au
standard SOAP (Simple Object ou Service Oriented Architecture Protocol). Il
représente donc le format d'échange de données dont les
protocoles primaires sont HTTP et HTTPS. On y trouve un en-tête et un
corps. Dans l'en-tête, on peut faire référence à un
fichier XSD (XML Schema Definition), permettant de définir les types des
différentes données échangées. Dans le corps, les
données indiquant la méthode utilisée et les bons
paramètres sont présents. Prenons un Web service donnant, pour un
identifiant client particulier et un identifiant produit, le prix du produit
désiré. Un message SOAP contenant les bonnes informations et un
champ prix vide pourra être envoyé au service. En retour, sera
renvoyé le message avec le prix du produit renseigné.
Un fichier WSDL (Web Services Description Language)
décrit un web service : c'est la fameuse interface évoquée
précédemment dans la description d'un service. Pour faire un
rapprochement, on peut voir ce fichier comme une interface en langage JAVA : on
connaît les méthodes mais par leur implémentation. Elle
contient aussi d'autres informations comme le fichier XSD (si jamais il y a des
types complexes) mais surtout les informations permettant d'accéder au
service (protocole, port et "EndPoint" - l'endroit où se trouve le
service).
Un registre UDDI Universal Decription Discovery and
Integration) est un annuaire basé sur XML qui permet de publier des
services et facilite leur découverte par d'autres services en
définissant comment ils interagissent. Un scénario d'utilisation
possible est donc la publication d'un fournisseur de service (donc de son WSDL)
auprès d'un registre en créant tout d'abord une entreprise et une
catégorie de service. Un client demande ensuite à un registre
UDDI la localisation d'un service qui correspond au service venant d'être
ajouté à l'annuaire. Le WSDL du service demandé est alors
reçu par le client qui peut communiquer avec le fournisseur de services
en SOAP.
1 - Service fournit le WSDL
2 - Le Client veut un service et reçoit son WSDL
3 - Le Client peut communiquer avec le service
Schéma volontairement simplifié au niveau du
middleware qui, ici, offre la possibilité d'accéder à un
registre UDDI..
Derrière l'acronyme BPEL (Business Process Execution
Language), se cache la notion d'orchestration qui est de plus en plus
utilisée et qui, comme son nom l'indique, fait jouer les web services
comme un chef d'orchestre. Cette couche, permettant de gérer le lien
entre plusieurs services, pourrait offrir, par exemple, de mélanger un
service d'envoi de SMS, un service donnant la température et un service
donnant des conseils pour s'habiller selon la température. BPEL appelle
un premier service pour connaître la température cet
après-midi, utilise ce résultat pour interroger le service
indiquant comment s'habiller et envoie la réponse avec le service
envoyant des SMS. Un client, faisant appel à un BPEL, pourrait savoir
qu'il doit emporter un pull car il va faire froid en fin de journée.
Derrière cet exemple très simple, on comprend
que BPEL est lui-même un web service : il possède son propre
WSDL. Mais son WSDL est particulier car il contient des informations
supplémentaires : entre autres, les WSDL des services qu'il va
invoquer pendant son exécution.
SOA est une théorie et on ne doit pas oublier que l'on
peut faire une architecture SOA sans Web Services et inversement car,
réaliser des web services, ne veut pas dire mettre en place une
architecture SOA. « Une façon de concevoir et
d'implémenter les applications de l'entreprise qui possèdent un
couplage faible, sont à grandes mailles et sont des services
réutilisables, accessibles par des interfaces bien définies et
indépendantes de toute plateforme. »
Cette définition n'inclut donc pas de protocole de
communication obligatoire et il n'y a aucune restriction évoquée
: pas d'obligation d'envoyer des messages SOAP en HTTP. SOA est beaucoup plus
que seulement des Web Services et sa vraie force intervient réellement
quand il n'y a plus ces restrictions et autorise les services à
être invoqués par une multitude de protocoles. L'ESB permet
justement de mettre en oeuvre un environnement ne se limitant pas aux limites
évoquées.
LES ESB (ENTERPRISE SERVICE
BUS)
La définition de l'ESB permet de se rendre compte que
c'est l'environnement parfait pour appliquer SOA. L'ESB est le médiateur
: c'est une technologie informatique intergicielle permettant à des
applications hétérogènes d'interagir au travers de
services standards qu'elles mettent à disposition. Les principes sont la
découverte dynamique (notre annuaire de services), la
chorégraphie et l'orchestration de services (pas de coordinateur central
dans la chorégraphie, chaque service connaît les services qu'il
doit appeler) et la communication par messages. Les standards sont ceux des
services web (SOAP, WSDL, ...) mais aussi la norme JBI (ESB est une
implémentation de cette norme qui permet à des composants de
communiquer via des messages), les messages JMS (Java Message Services) que je
vais décrire plus tard, ... L'ESB permet de surveiller le trafic
(« monitoring », console d'administration, fichiers de log,
...), d'imposer une qualité de service (gestion des transactions, assure
la réception, permet de mettre en place des sécurités).
On peut voir l'ESB s'intégrer très bien en tant
que médiateur :
L'ESB se place en médiateur entre les fournisseurs et
les consommateurs de service.
Schéma simplifié d'un ESB (beaucoup de
possibilités sont offertes).
Il existe beaucoup de patterns d'intégration - le terme
français patron est peu utilisé - pour un ESB, qui modifient un
peu le schéma ci-dessus et le complètent. J'ai
détaillé ces patterns en annexe. Ils m'ont alors permis
d'identifier, pour chaque projet dont on m'a donné la documentation, le
pattern utilisé. J'ai d'ailleurs pu me rendre compte qu'un des projets
ne faisait pas non plus vraiment du SOA mais plutôt des Web Services sans
respecter l'architecture. Chaque pattern s'applique dans des conditions
particulières et tout est possible si l'architecture SOA est
respectée. Il est même possible, même si ce n'est pas
recommandé, d'avoir plusieurs ESBs sous certaines conditions.
Les ESBs sont devenus très importants dans
l'architecture SOA, ils offrent des possibilités qui deviennent
indispensables à toute architecture. Parmi ces possibilités, il
est possible de compléter SOA avec EDA (Event-Driven Architecture) qui
est l'architecture dirigée par les évènements.
EDA (EVENT-DRIVEN
ARCHITECTURE)
Un ESB permet aussi de faire de l'EDA qui est parfois vu
comme un mode d'implémentation asynchrone de SOA ou juste une extension
permettant de compléter l'architecture. Le fonctionnement est ici un peu
différent : nous avons été habitués au
« Request and Reply » (envoi d'une requête et
réception de la réponse) alors qu'ici le principe est
« Publish and Subscribe » (les informations sont
publiées et si on veut les recevoir, on s'y abonne).
Une application publie des évènements dans un
topic. Toutes les applications peuvent s'abonner à ce topic pour
recevoir les évènements quand ils sont publiés.
La publication est dynamique : si jamais il y a de
l'information à transmettre, elle est publiée et tout le monde
peut souscrire à ce service à n'importe quel moment.
Les messages sont envoyés par une application dans une
queue. Une autre application peut lire un message dans cette queue : elle
le consomme. (Point à Point)
Le format des messages échangés pour utiliser
cette fonctionnalité est, par exemple, JMS (Java Message Services). JMS
permet deux modes de fonctionnement : le « Publish and
Subscribe » - cela s'appelle un Topic -, et le « Send and
Receive » - la Queue, envoi et récupération de messages
-.
Les queues et les topics sont hébergés sur
l'ESB. Un message JMS peut contenir un objet java ou du texte (donc du XML ou
même des messages SOAP). Ce même message contient un en-tête
permettant d'ajouter des informations (durée de vie, queue ou topic de
retour de réponse, ...)
Pour comparer avec les Web Services appelés avec des
messages SOAP sur HTTP, on a, d'un côté les Web Services avec des
fichiers générés des 2 côtés pour faire le
lien entre les messages échangés, et de l'autre une queue ou un
topic faisant le lien :
· Web Service (HTTP)
Web Service
Skeleton
Stub
Client
· Queue (JMS)
Queue
Application
Application
En expliquant cette possibilité, on comprend que ce
qui est important est la conception du service. L'idéal serait de
proposer plusieurs moyens pour accéder au service selon la situation. On
peut imaginer un objet natif qui gère les achats et utilise des
applications de l'entreprise pour propager l'information. Cet objet peut avoir
des méthodes pour acheter, ajouter des produits au panier, donner les
informations de l'acheteur, etc. Appeler ces méthodes à un niveau
local ne pose pas de problème mais, comme évoqué dans la
définition des services, ce n'est pas une solution.
La solution est de fournir une méthode unique pour
ajouter un ordre d'achat contenant toutes les données
nécessaires. Cette méthode peut être décrite par le
biais d'une interface et accessible par diverses technologies. Le service ne
change pas, seulement le protocole de communication et le format des
données échangées. Au consommateur du service de choisir
le meilleur moyen d'accéder au service.
SOA DANS LE MONDE DE LA
BANQUE
LA BANQUE
De nos jours, plus de 90 % des transactions du secteur
financier se basent sur des systèmes statiques constitués
d'infrastructures informatiques développées il y a de nombreuses
années. Les institutions bancaires vont devoir adapter et repenser sans
cesse leurs stratégies et leurs objectifs pour effectuer les meilleurs
choix. Les architectures SOA sont une des clés pour répondre
à ces besoins à condition de bien comprendre les projets et les
objectifs de l'entreprise. Ainsi, de nombreux établissements exploitent
des systèmes technologiques qui ne leur permettent pas de
répondre de manière efficace aux changements de stratégies
imposés par de nouvelles orientations. Ces infrastructures sont
performantes mais elles doivent évoluer avec
l'entreprise pour répondre aux besoins existants et aux
développements futurs. Les architectures orientées services
proposent une alternative efficace à ces exigences fortes. De nombreuses
situations vont nécessiter cette évolution de l'infrastructure
informatique avec les changements réglementaires imposés aux
banques. Les banques doivent faire face à de nouvelles normes
réglementaires comme le projet d'espace unique de paiement en euros
(SEPA) ou les accords BALE II, qui constituent un dispositif prudentiel
destiné à mieux appréhender les risques bancaires et
principalement le risque de crédit ou de contrepartie et les exigences
en fonds propres, ou encore à des projets de rapprochement entre deux
institutions bancaires.
Microsoft, SAP et 15 autres sociétés acteurs du
monde bancaire ont créé en 2008 l'association
BIAN (Banking Industry Architecture Network) pour partager
leurs expertises techniques et méthodologies pour faciliter
l'évolution des systèmes informatiques des banques vers ces
architectures SOA. Les architectures SOA permettent d'éviter de repartir
de zéro et, au contraire, elles sont assez souples pour reconstruire un
nouveau système informatique sur l'existant et les faire évoluer
à la demande du service informatique. Mais, il y a aussi de nombreux
projets qui ont été des échecs car les processus de
l'informatique d'une banque sont étroitement liés aux processus
de l'entreprise. Un projet SOA ne peut être réussi que si le
projet est modélisé à partir des besoins de l'entreprise.
Comme les banques comportent une grande part de développements
spécifiques et que ces derniers constituent une entrave gênante
avec la globalisation des marchés financiers, BIAN encourage le
développement de services standardisés, vers lesquels les banques
pourraient évoluer par étape.
IBM, COBOL, CICS
Le monde informatique bancaire a toujours été un
très grand utilisateur de tous les systèmes IBM. Ces
systèmes hôtes représentent un grand investissement qui est
intégré au niveau des processus et des sources de données.
Le challenge des projets SOA est donc aussi d'intégrer l'ensemble des
applications développées sur les systèmes IBM, qui sont
appelés application Mainframes ou System i. Les Web Services vont
permettre de publier les processus métiers bancaires offerts par le
système informatique existant et de les mettre à disposition de
façon standard, peu importe le langage de développement
utilisé.
L'histoire du Mainframe dans les banques est vieille de 50 ans
et est liée au Cobol. C'est un langage de programmation
de troisième génération créé en 1959 et est
l'acronyme de Common Business Oriented Language dont le but est d'être un
langage commun pour la programmation d'applications de gestion. Ce langage
était le plus employé des années 1960 à 1980 et
reste donc très utilisé dans les institutions financières.
En effet, l'immense majorité des plus grandes entreprises du secteur
financier ont encore des Mainframe et leur confient leurs applications et leurs
données les plus critiques. Les révolutions architecturales ont
entre temps eu lieu mais n'ont pas remplacé les Mainframe : elles
se sont superposées à l'existant, les complexifiant et nuisant
à toute évolutivité.
C'est cette situation figée que les entreprises veulent
faire évoluer en s'affranchissant de la dépendance aux
développeurs Cobol et de la complexité à
appréhender le patrimoine applicatif. Le but de l'utilisation de SOA est
donc de rénover les pratiques du développement sur Mainframe. La
solution logicielle que préféreront les banques est la solution
IBM Rational Software du fait de ce lien particulier avec IBM. La modernisation
des architectures est un point essentiel car il y a un trop fort couplage entre
les composants, empêchant la flexibilité des solutions et la
réutilisation du code. Les solutions comme Rational (d'autres existent
sur le marché) vont permettre de transformer les applications
« green screen » (un écran vert servant de client)
en interfaces ou en Web Services, de pouvoir développer des Web Services
à partir de langages comme Cobol ou Java ou à partir
d'application CICS avec le Service Flow Modeler. Le
système CICS (Customer Information Control System) est un système
qui permet d'effectuer des opérations transactionnelles, comme la
consultation ou la mise à jour de bases de données ou de
fichiers, avec une très grande économie de moyens. Service Flow
Modeler est l'outil permettant de construire un flow de services en se basant
sur des Commarea (fichiers Cobol de définition de données) et
applications Terminal CICS (voir annexes).
On peut ainsi exposer des flows de données en tant que
service avec des logiciels rendant possible l'utilisation des technologies
CICS dans une architecture SOA.
On expose ainsi le service CICS par le biais d'une interface
WSDL générée. En détail, on obtient le
schéma suivant où un service consommateur (requester) envoie une
requête au service fournisseur (provider).
Remarque : une application CICS peut aussi être le
service consommateur.
Toute une gamme de logiciels existe pour accompagner la vie
d'un projet SOA et IBM fonctionne beaucoup avec ces entreprises travaillant
dans le monde bancaire. Des logiciels existent et suivent une
méthodologie particulière pour surveiller la qualité et
les tests : cette méthodologie sera évoquée dans la
deuxième partie de ce document. Cet aspect est important car les tests
fonctionnels non intégrés et les tests de performances
différents entre îlots et des processus de fabrication
inconsistants contribuent à fragiliser le processus de
développement et en augmenter les coûts.
Les possibilités de modernisation des Systèmes
d'Information traditionnels sont :
- L'analyse du patrimoine : détection de
l'ensemble des interactions d'une application Cobol/CICS avec le reste du parc
applicatif
- La séparation de la couche de présentation de
traitement métier
- La transformation de ce module de traitement écrit en
cobol, en web service invocable au sein d'une architecture SOA, sans impact sur
le fonctionnement du système d'information.
C'est bien sûr compliqué de réorganiser
les composants applicatifs, de les récrire, ou de les mutualiser dans
des architectures SOA. Des outils permettent de détecter des
interdépendances applicatives pour pouvoir mettre en évidence la
structure complète du programme : quelles sont les transactions
CICS, quels sont les programmes COBOL, ... Cette étape est importante
dans l'optique d'un passage à SOA pour repérer les programmes les
plus utilisés et ainsi récolter des informations stockées
dans un référentiel utilisé par les outils de cartographie
et d'analyse d'impact. Un des objectifs est donc, bien entendu,
d'améliorer les taux de réutilisation des composants. en se
servant des analyses précédemment effectuées. Les outils
existants (comme Rational Developer for System Z d'IBM) permettent ensuite la
suppression de la partie cobol de l'application et la création d'un
service web utilisant la partie métier écrite en Cobol/CICS. Les
possibilités sont énormes et permettent la visualisation
transparente des programmes quelque soit leur origine et leur structure dans
une présentation type station de travail, avec une unité de
navigation et d'outils d'analyse et de débogage pour toutes les sources.
Toutes les combinaisons sont possibles : création depuis le
début d'un service, transformation d'un module métier en cobol en
nouveau service, ...
STRATÉGIE DE
L'ENTREPRISE
Les processus initiaux pour la mise en place d'un projet
d'architecture SOA sont l'identification d'une
activité, la segmentation des processus métiers
liés à cette activité, puis les regrouper
au sein de services web. Ce sont des processus compliqués et la
difficulté principale dans le cadre des projets SOA reste la
définition sémantique des services. C'est
justement ce sujet qui intéressait l'entreprise SAP pour le secteur
bancaire lorsqu'elle a créé en 2005 le regroupement IVN (Industry
Value Network) for Banks qui rassemble 37 éditeurs et institutions
financières.
Les architectures SOA possèdent une grande richesse
qu'il faut maîtriser en ne tombant pas non plus dans la multiplication
des services à outrance : le projet peut être un échec
avec une architecture manquant de toute cohérence fonctionnelle. La
modification d'un processus métier a une incidence sur l'ensemble des
processus de l'entreprise dessinant un lien essentiel entre la direction
de l'entreprise et l'entité informatique. Une stratégie doit
être mise en place pour la réussite d'un projet SOA : partir
de la mission de l'entreprise et collaborer entre la direction et
l'entité informatique est primordial. La direction stratégique de
n'importe quelle entreprise est amenée à évoluer et
à faire naître de nouvelles stratégies de gestion.
Une gouvernance SOA efficace apporte toutes les
réponses aux questions métier fondamentales concernant :
- Le droit décisionnel : le
modèle de service à utiliser pour un nouveau processus, les
responsables du financement et des mises à niveau pour les services
partagés, l'incitation à la réutilisation d'un service,
les droits et fréquence d'utilisation d'un service.
- Les services métiers
appropriés : les services métiers communs dont une banque a
besoin, des applications potentielles qui vont réutiliser les services,
des règles communes ou uniques, l'existence de services existant
déjà et pouvant être réutilisés.
- Le cycle de vie des ressources de service :
l'autorisation de modification d'un service utilisé par d'autres, les
utilisateurs concernés par un service modifié, éviter la
prolifération inutile de services
- La mesure de l'efficacité : la
mesure de l'utilisation et des coûts du service, la mesure de l'avantage
pour l'entreprise.
La nature de SOA se prête bien à une
adoption incrémentale reposant sur la planification,
l'élaboration, l'évolution et le dimensionnement des processus
métiers. Chaque phase du processus est
indépendante, ce qui permet aux institutions bancaires
d'optimiser leurs déploiements de SOA en fonction des premiers besoins.
Cette approche itérative et interactive oblige à avoir des phases
de tests importantes que je vais décrire dans la suite de ce
document.
COMMENT TESTER
SOA ?
POURQUOI EST-CE SI PARTICULIER
DE TESTER SOA ?
Tester l'intergiciel d'une entreprise (middleware - sert
d'intermédiaire de communication entre plusieurs applications) qui
utilise une architecture orientée services est compliqué.
L'architecture SOA fait évoluer le système d'information
où les applications étaient au centre vers un monde où ce
sont les processus qui sont au centre. Comme évoqué
précédemment, l'intégration des mécanismes de SOA
permet une intégration avec un couplage faible et on peut ainsi changer
les applications sans impacter les autres applications.
SOA, pouvant être implémenté de multiples
façons, sera donc testé de façon
particulière : il existe peu de méthodologies conçues
spécifiquement pour les applications SOA et des nouvelles approches et
méthodologies ont dû être créées pour
vérifier et valider de telles applications. On peut se poser la
question : Pourquoi est-ce si différent de tester SOA ? La
réponse est complexe mais elle peut se résumer à
« agilité » et
« flexibilité ». Ce qui fait tout
l'intérêt d'une architecture SOA est aussi ce qui demande une
approche différente au niveau des tests. Il faut ainsi tester les
interfaces et les services qui peuvent rapprocher différents
systèmes et plateformes mais aussi s'intéresser aux dimensions de
sécurité et de performance. Un autre point important de la
méthodologie de test pour SOA est la disponibilité de
l'environnement. Derrière cette notion, est présent
l'essence même de SOA où interviennent les différents
services ou applications dans l'environnement : la disponibilité de
ces services internes autonomes, qui composent les Business
Process (BPEL - Orchestration de Services), est très importante
pendant les différentes phases de tests d'intégration. Il faut
ainsi pouvoir tester ces processus d'orchestration comme un tout complet mais
aussi tester chacune des parties qui le composent.
Les applications intergicielles basées sur SOA sont
donc plus complexes que les applications que l'on rencontre habituellement qui
sont liées à l'interface graphique (GUI). Ici, l'interface
machine n'est pas intuitive pour une personne humaine qui voudrait interagir
avec : les messages qui sont échangés, par exemple, sont
conçus conformément aux données de l'entreprise mais ne
sont pas forcément compréhensibles humainement. Il faut bien
sûr des outils pour pouvoir déchiffrer des messages mais aussi des
outils de génération de tests qui ne peuvent pas tous être
écrits spécifiquement pour chaque cas, ...
De plus, en ajoutant plus de complexité pour atteindre
un état flexible et réutilisable, l'architecture SOA devient
d'autant plus stratégique pour l'entreprise. Le retour
sur investissement d'une telle architecture peut être important si cette
architecture est bien testée. Une architecture SOA non testée
peut se transformer en échec et faire perdre de l'argent.
LES BASES DE LA
MÉTHODOLOGIE DE TEST
On peut identifier certains points importants lorsque l'on
teste un service d'une architecture SOA : la distribution, les
données, le comportement, l'intégrité, la conception et le
niveau de performance des services. Les services sont
distribués au sein de l'entreprise dans des
environnements hétérogènes et peuvent être
découverts en cours d'exécution. Une architecture SOA n'est pas
figée et la découverte dynamique de service implique une phase de
tests couvrant cette possibilité. Le test des
données est critique car il faut contrôler les
données utilisées par le service et vérifier la
cohérence entre les données entrantes et sortantes. Les messages
qui circulent contiennent beaucoup de champs (les services sont appelés
de façon indépendante et n'ont pas d'état
prédéfini donc pas de contexte) et les possibilités de
permutations des champs sont importantes. Le comportement d'un
service est bien sûr ce qu'il y a de plus important : est-ce qu'il
répond correctement à ce pour quoi il a été
créé ? Et si le service a plusieurs fonctionnalités,
il faut le surveiller pendant tous les traitements.
L'intégrité permet de savoir jusqu'à quel
point un service est capable de continuer à jouer son rôle pendant
une longue période. Ces tests doivent bien sûr refléter des
cas d'utilisations possibles en production. Tester la
conception d'un service permet de savoir si pour un service
particulier et sa fonctionnalité intrinsèque, le bon patron de
conception (design pattern) est utilisé. Cette phase demande une
attention particulière car elle demande une interaction entre les
architectes, les designers et les développeurs. Enfin, le dernier point
correspond au niveau de performance spécifique que peut
fournir un service et mesurer ce niveau en condition réelle pour voir
s'il respecte bien le niveau prévu. Un mauvais niveau de performance
d'un service peut faire baisser la performance globale de l'architecture
SOA : un processus d'orchestration qui utiliserait un service avec un
faible niveau de performance aurait, lui, un mauvais niveau de performance,
...
De plus, les données échangées dans une
requête et dans une réponse sont
figées : les services sont accessibles par des
interfaces connues (WSDL). Ceci implique donc une prédictibilité
entre les services qui interagissent. Les données et les
fonctionnalités évoluent constamment ce qui
implique une évolution permanente de l'application et ces
évolutions amènent donc de plus en plus d'interactions entre les
différents systèmes. Aussi, les services sont souvent
pensés synchrones mais il existe aussi des services qui fonctionnent de
manière asynchrone et on peut donc voir des interfaces
qui ne correspondent pas au traditionnel questions/réponses avec les
standards SOAP des web services. Chaque protocole (qui utilise
par exemple des queues de message Java Message Services) ajoute de la
complexité aux tests. Il est impossible de réellement tester
l'architecture SOA comme une boite noire classique
(vérification que l'implémentation fournit bien le
résultat attendu par la spécification sans savoir comment cela a
été réalisé ; à différencier la
boite blanche où on a accès à la structure du code et
où on peut donc faire des tests au plus bas niveau possible). En effet,
les données pouvant être modifiées dans différents
systèmes, il est nécessaire de vérifier que les
systèmes impactés ont bien pris en compte cette évolution
au niveau données (il n'y a que très rarement des impacts sur la
fonctionnalité du service).
Enfin, SOA étant une architecture, il est important de
tester l'architecture de manière holistique :
considérée comme un tout et non comme une composition
d'éléments (services, processus, ...). On peut ainsi voir si
l'architecture dans sa globalité réussit à atteindre les
objectifs de réutilisation et flexibilité et étudier les
composants principaux de l'architecture comme la persistance de l'information
(qui correspond aux données qui sont sauvegardées une fois une
opération terminée).
On peut donc voir différents problèmes outre
ceux de l'application elle-même : l'environnement et les besoins
logiciels que l'on va avoir. L'environnement est complexe car
on peut intégrer différentes technologies et il faut pouvoir
gérer ces technologies comme points d'intégration : plus les
technologies sont différentes, plus la complexité des tests sera
grande. Ce qui fait la force de SOA alourdit ainsi la complexité de la
phase de tests. Les outils dont a besoin doivent
répondre ainsi aux problèmes soulevés :
Problèmes
|
Besoins
|
L'application n'a pas d'interface
graphique.
|
Les testeurs ont besoin d'une interface de test facile
à utiliser et permettant de générer des requêtes
à partir d'un fichier WSDL.
|
Messages contenant beaucoup de
données.
|
Outil permettant l'automatisation de la permutation des
données.
|
L'application a des interfaces précises
(WSDL).
|
Outil permettant de vérifier que la
réponse correspond au service.
|
L'application évolue rapidement et
constamment.
|
Outil permettant de générer des types de
tests modulaires et de les exécuter rapidement.
|
L'application peut supporter différents
protocoles.
|
Outil gérant les divers protocoles existants
(Ex : HTTP/HTTPS, MQ, JMS, ...)
|
Impossible de tester en tant que boîte noire
classique.
|
Outil pour automatiser la validation des fichiers et
des bases de données, et permettant d'automatiser des scénarios
de tests qui soient paramétrables.
|
Les dépendances de l'environnement ne peuvent
être contrôlées.
|
Outil pour gérer les données sur
différents systèmes.
|
La maintenance des données est
coûteuse.
|
Outil permettant de réutiliser les
données sur les différents cas de test.
|
MÉTHODOLOGIE DE TEST
Pour créer un plan de test SOA, il est donc
nécessaire de comprendre le fonctionnement de l'architecture à un
méta-niveau puis de voir comment découper cette architecture en
différents composants pouvant être testés individuellement.
Ces parties doivent aussi pouvoir être testées en tant que
composants liés entre eux. Enfin, l'architecture doit être
testée de manière holistique. Il est donc nécessaire de
créer des standards et des procédures qui permettent de tester
jusqu'au niveau des projets.
SOA n'est qu'une théorie et il existe beaucoup
d'implémentations différentes de cette théorie : les
architectures ne sont pas toutes identiques et les solutions sont propres
à chaque problème. En créant son propre plan de tests SOA,
il faut comprendre cela car cela veut dire qu'il y aura des besoins
spécifiques pour chaque architecture.
SOA assure une réduction des dépendances mais il
existe une interdépendance entre les différents composants. On
peut voir, dans le schéma suivant, comment ils sont reliés et
nous allons comprendre comment ils fonctionnent indépendamment et
collectivement.
On distingue ainsi plusieurs patrons de conceptions (design
patterns) en fonction du type d'architecture. Les architectures de
transactions sont celles où les services de
transactions sont très utilisés : on peut prendre le cas des
applications où il y a beaucoup de services de transactions en ligne et
qui sont invoqués plus que les autres. Les architectures de
données sont celles où les services les plus
utilisés sont les services de données ou les services qui
distribuent de l'information. Les architectures de processus
sont celles où le coeur de l'architecture se trouve au niveau des
processus : ce sont des architectures qui évoluent souvent et
où les services principaux peuvent être changés facilement.
Selon les besoins, on identifiera donc un certain type d'architecture et on
testera différemment.
Pour pouvoir tester une architecture, on peut voir le
problème de trois façons :
- « Bottom
Up » (« de bas en haut ») :
cette approche permet de tester l'architecture en commençant par les
caractéristiques les plus simples puis de tester les plus
sophistiquées. Si on regarde le schéma précédent,
cela correspond à tester des données aux processus, puis la
couche de données (services de données, abstraction de
données), des couches de services de transaction vers les couches de
processus et enfin les couches de contrôle et de gestion des
évènements. Pour simplifier, cela revient à tester chaque
composant en déplaçant des couches du bas vers les couches du
haut.
- « Top Down »
(« de haut en bas ») : cette approche inverse l'ordre
des tests de l'approche « Bottom Up ». On teste chaque
composant des couches les plus hautes vers les couches les plus basses.
- Système : l'approche
Système permet de tester comme un tout. Ainsi, on regarde l'architecture
comme une unité fonctionnelle en testant toutes les interfaces de toutes
les couches en regardant ce qui rentre et ce qui sort en observant les
différents comportements.
Ces trois approches sont distinctes et se
complètent. Même si on peut n'utiliser qu'une des
trois approches, les projets de tests SOA les plus réussis sont ceux qui
utiliseront les trois approches. Le choix dépend bien sûr des
besoins de l'architecture.
Pour créer un plan de tests, il ne faut pas oublier le
domaine fonctionnel de l'architecture. Ainsi, il faut comprendre le domaine du
problème avant de savoir comment le tester : au niveau
sémantique, au niveau des services et au niveau des processus.
L'approche va donc se décider au moment de la création de
l'architecture.
Toutes les activités comme la conception, l'analyse, la
planification et l'exécution doivent être testées tout au
long de la vie du projet. Le fameux « modèle en
V » est ainsi une bonne méthodologie qui permet de
mettre en place une bonne discipline de tests durant toute la vie du projet. Le
projet commence ainsi par une définition des besoins (« User
Requirements ») puis les critères d'acceptation des tests
(« Prepare User Acceptance Testing ») avant de commencer la
phase de conception technique. De même, avant la phase suivante de design
technique, le modèle en V demande de définir le niveau d'exigence
technique et ainsi de suite. Ce modèle en V permet donc aux
équipes projet de déterminer continuellement ce qu'il faut pour
bien tester une application.
Ce modèle en V permet d'abord une approche
« Top Down » en respectant la définition des
exigences des processus, la conception technique fonctionnelle, ... Il
encourage ensuite une approche « Bottom Up » en testant les
fonctions à l'intérieur d'un service, puis les services
eux-mêmes, les orchestrations de services et finalement le test du
système complet. Le modèle en V incite donc à tester tout
au long du développement de l'architecture. Nous reviendrons sur cette
idée de tests continus, et non pas exclusivement à la fin du
développement, par la suite.
Pour tester à un moment donné une application
SOA, on distingue ainsi les catégories suivantes : test de
gouvernance (Governance), test des données (Link Testing), test au
niveau des composants du service (Component Testing), test des services
(Service Testing), test d'intégration (Integration Testing), test au
niveau des processus comme l'orchestration (Workflow Testing), test du
système (System Testing) et test de sécurité (Security).
On peut ainsi identifier à partir du schéma
présenté précédemment, les couches impactées
par ces catégories de test.
Le test de gouvernance. La gouvernance SOA
correspond à l'assurance que les services existants (et les futurs
services créés) soient conformes aux standards politiques et
objectifs de l'entreprise. Elle permet par exemple de maintenir une
qualité de service ou une flexibilité des processus car elle
fournit une structure, un engagement et un support pour le
développement, l'implémentation et la gestion de l'architecture
SOA. Il s'agit donc ici de vérifier que les engagements soient
respectés : la qualité de services en terme de performance
ou transaction, les évènements qui doivent être
notés et pendant combien de temps, ou les politiques sur
l'infrastructure (droits d'accès, sauvegardes, plantages, ...). Ces
tests interviennent à tout niveau.
Le test des données. Ces tests
s'intéressent aux données liées aux services. Les
données peuvent provenir des bases de données mais aussi de tous
les systèmes utilisant des données. Il faut tester les
données qui sont utilisées à l'intérieur des
services : pas seulement la valeur de l'information mais son
utilisation.
Le test au niveau des composants du service.
Ces tests sont généralement exécutés par les
développeurs pour vérifier le code compile, et que le
fonctionnement de base des composants ainsi que les fonctions internes d'un
service respectent les spécifications. Il est ainsi possible de tester
ces petites parties de l'application en les isolant et voir si elles
fonctionnent avant de les intégrer dans un ou plusieurs services.
Le test des services. Ce test est le plus
important car beaucoup d'entreprises font, par exemple, des web services et il
faut donc faire particulièrement attention aux tests unitaires. Ces
tests doivent non seulement répondre aux engagements prévus pour
le service mais aussi aux engagements des processus qui vont l'utiliser. Les
services ne sont pas des applications ou des systèmes complets et ne
doivent pas être traités de cette façon. Ils font partie de
différentes applications et doivent être testés de
façon indépendante : ils peuvent
fonctionner seuls ou à l'intérieur d'un processus. La meilleure
approche pour tester des services est de lister les cas d'utilisation pour
chaque service. Toutes les configurations doivent être
considérées : un service utilisé seul, un service qui
est appelé par un autre qui est lui-même appelé par un
autre service, ou des services appelés à distance par des
systèmes non contrôlés. Les services doivent avoir un
couplage cohérent avec leur utilisation pour
maximiser les performances. Ainsi, un service avec un couplage trop faible va
avoir tendance à baisser les performances car le nombre de
communications va être trop important avec la multiplication de
services.
Les tests d'intégration. Ces tests
s'intéressent aux différentes interfaces des services et si elles
respectent bien les spécifications. Tous les services livrés par
une équipe de développement doivent bien correspondre à la
définition des services en termes de standard, format et données.
De plus, les tests se portent aussi sur les scénarios incluant les
différentes couches de communication et les protocoles réseau.
Les services externes à l'entreprise sont aussi testés. Les
services doivent atteindre l'interopérabilité,
qui permet à un système de travailler facilement avec d'autres,
en respectant scrupuleusement les interfaces ou en utilisant des services
capables de convertir les données d'une interface de service à la
volée. Il faut donc avoir une interopérabilité au moment
de la conception mais aussi en cours d'exécution pour pouvoir
intégrer des éléments indépendamment des
protocoles, du système d'exploitation ou langage de programmation. Le
test de rétrocompatibilité permet aussi de
savoir comment sont affectés les consommateurs d'un service dont on
change l'interface. Si ces consommateurs sont affectés par ce
changement, ce n'est pas rétrocompatible et il faudra donc mettre en
place une stratégie, gérer l'impact de tels changements. Une
interface de service évoluera forcément un jour et un tel
changement doit être analysé.
Le test des processus. Ces tests permettent
de s'assurer que les processus intégrant plusieurs services fonctionnent
selon les spécifications. Cette phase de tests concerne donc la logique
des processus, l'ordre d'utilisation des services, la gestion des erreurs et la
réutilisation des processus. Les services sont orchestrés,
assemblés pour former une solution cohérente et donc on peut
ajouter, changer et enlever des services à volonté. Les processus
peuvent évoluer rapidement et il faut donc vérifier que la
conception permet ceci. Il y a beaucoup d'approches et de standards
différents pour séquencer et manager des collections de services.
Outre l'orchestration, on peut voir ainsi une chorégraphie de services
(les services connaissent les autres services dont ils ont besoin contrairement
à l'orchestration) ou encore les processus propriétaires :
il faudra donc tester ces processus de manière adéquate.
Le test du système. Cette phase permet
de vérifier que la solution technique de l'architecture SOA correspond
bien aux engagements et satisfait les critères d'acceptation. Les tests
ciblent les scénarios clés de la solution et interviennent
après les tests précédents.
Le test de sécurité. Plus
l'architecture SOA deviendra grande au sein de l'entreprise, plus ces tests
seront importants. Il faut donc planifier dès la création de
l'architecture et ne pas attendre la fin du développement de
l'architecture. En effet, il faut se demander si les données qui
parcourent ce réseau interne et externe sont
protégées. Si jamais les tests de
sécurité sont exécutés seulement à la fin,
il y a un risque de trouver des problèmes de sécurité
sévères mais, plus important, de voir que le système n'a
pas eu une conception adéquate pour une architecture
sécurisée.
Nous avons pu voir que tous ces tests ne doivent pas
être effectués seulement à la fin du développement
si l'on ne veut pas avoir de surprise concernant les performances ou la
sécurité. Tester tôt dans la
réalisation de l'architecture peut sembler compliqué mais c'est
nécessaire si l'on veut éviter les échecs. Tester un
service rapidement permet de se rendre compte de ses erreurs plus rapidement et
donc de réagir plus vite et éviter une perte de temps et
d'argent. Il faut donc tester dès le début et en
continu. Un service qu'on ne pensait pas stratégique peut
devenir important dans le futur. Et la qualité et les performances des
services peuvent être altérées par les configurations de
l'ESB, les règles de transformations ou la politique de
sécurité. Tester en continu permet à l'architecture SOA de
changer facilement - l'empêchant de devenir statique et rigide. Les
bénéfices sont importants : on peut tester et valider
quotidiennement tôt dans le cycle de développement quand c'est
facile (et donc moins cher) de réparer les problèmes.
Une des conséquences de la correction d'un
défaut est la possibilité d'introduire des nouvelles erreurs. En
introduisant de nouveaux éléments, on ne peut être certains
que tous les tests qui ont été passés correctement se
passeront bien à nouveau. La stratégie de
régression permet de ne tester à nouveau qu'une
sélection de services tout en s'assurant qu'aucun autre service
précédemment testé ne sera compromis par les changements
effectués. Cette stratégie ne s'intéresse pas à
tester la correction du défaut mais plutôt que le système
et les services qui le composent n'aient pas été affectés.
Ces tests ne peuvent rendus possibles que par l'utilisation d'outils
automatisant la vérification des tests : nous allons voir les
produits pouvant être utilisés.
Beaucoup d'entreprises adoptent l'approche de tests
basée sur les risques : les cas et scripts de
tests exécutés selon un ordre justifié par les
implications financières des tests qui ne passeraient pas et sur la
possibilité d'échec de ces tests.
L'analyse de tous ces tests nous permet de comprendre la
complexité de l'architecture SOA. Cela se complique lorsque l'on
multiplie les différentes technologies, applications protocoles,
processus, les systèmes hétérogènes et
distribués. On peut comprendre qu'il est difficile de trouver un outil
miracle permettant de réaliser tous ces tests. Le but n'était pas
ici de décrire toutes les solutions mais bien de définir une
méthodologie de tests et de bonnes pratiques et amenant à une
réflexion continue lorsque l'on développe une architecture SOA.
On peut tout de même identifier plusieurs produits offrant une palette
d'outils : les outils de la société Green Hat qui sont parmi
les plus utilisés ou ceux de la société IBM (Rational),
peut-être moins complets mais offrant plus de maintenance, ou encore les
produits « Open Source » mais plus simplistes comme SOAP
UI.
DANS LE MONDE DE LA BANQUE
Beaucoup d'institutions comme les institutions bancaires se
tournent vers les architectures SOA. L'environnement que l'on teste est souvent
hors de contrôle de l'entreprise de tests. L'environnement n'est
habituellement pas dédié aux tests de l'application mais est
souvent partagé par beaucoup d'applications. Les sous-systèmes
qui contiennent les données dont les tests dépendent sont aussi
hors de contrôle.
Dans les environnements bancaires, il est impossible
d'arrêter les processus de sous-systèmes dépendants :
par exemple, les comptes avec un solde de zéro vont être
analysés et fermés chaque mois. Cette violation de données
rend l'automatisation de tests difficile car il faut une grande
compréhension des applications de la part des personnes de ces
sous-systèmes dont l'application dépend. La configuration
initiale des données dans ces sous-systèmes dépendants est
difficile à mettre en place et il est ainsi nécessaire de payer
un autre groupe pour configurer les données ou former des membres de
l'entreprise sur chaque sous-système dépendant.
Comme nous l'avons vu, l'environnement est complexe dans les
SOA et on retrouve cette complexité dans les banques. Les technologies
peuvent aller des web services et autres applications intergicielles aux
applications CICS. Les tests sont alors d'autant plus complexes mais le
bénéfice est important. La vitesse de développement de
nouveaux produits et services est accélérée et cela
permet aux banques d'apporter des nouvelles offres plus rapidement sur le
marché.
Les tests peuvent être mis en place par tous les
standards offerts par l'architecture SOA (échange de données et
interopérabilité) et ainsi réfléchir à une
politique commune de tests multi environnements.
Les banques, qui avaient déjà utilisé
l'architecture SOA sur des petits projets, vont pouvoir étendre leur
expérience maintenant que la technologie qui accompagne la
théorie est plus mature, qu'ont eu lieu les premiers retours
d'expérience et que les offres de framework SOA (conception,
réalisation et tests) sont plus complètes et faciles à
mettre en oeuvre.
CONCLUSION
Ce document permet de comprendre les principes d'une
architecture SOA et de mettre en évidence les points qui en font sa
particularité : tous les avantages apportés par cette
architecture en termes de souplesse et de facilité d'évolution
complexifient la méthodologie de test. On comprend alors qu'on ne peut
pas aborder les tests de la même manière qu'une application
classique. Pour créer un plan de tests, il faut donc avoir en tête
tous les problèmes évoqués précédemment mais
aussi comprendre ce qu'il y a d'unique dans l'architecture. Ainsi, s'ajoutent
en plus les spécificités du monde de la banque : multiplateforme,
multi environnement, multi technologie, ...
Le point important est bien sûr de d'impliquer
les équipes de tests dès la phase de conception de l'architecture
SOA : prévoir l'approche de tests lors de la définition des
besoins et ne pas avoir des surprises à la fin au niveau performance ou
sécurité. Il y a beaucoup d'éléments dans
l'architecture SOA et il n'est pas forcément possible de tout tester :
il faut ainsi savoir ce qui y est important et ainsi satisfaire tous les
engagements pris lors de la conception de l'entreprise.
Les applications basées sur SOA évoluent
constamment et il est nécessaire de pouvoir passer rapidement des
scripts de tests permettant de tester toutes les fonctionnalités. Il est
bien sûr important d'utiliser des outils, avec une interface Homme
Machine facilement utilisable, qui permettent de tester les aspects uniques des
applications SOA qui sont sans interfaces graphiques et où il y beaucoup
d'échanges de messages. Aucun outil ne peut satisfaire toutes les
applications, environnements et tests possibles : il faut donc se construire
une solution adaptée en n'hésitant pas à utiliser
différents logiciels.
Si la qualité est au coeur de l'architecture SOA,
toutes les possibilités offertes pourront être
utilisées.
ANNEXES
CICS - DÉTAILS
Comparaison entre les différentes couches de CICS et
J2EE :
COBOL - EXEMPLE DE
RÉUTILISATION EN TANT QUE WEB SERVICE AVEC LES LOGICIELS ACUCORP
Il est possible de transformer le programme Cobol en service
web. Ici, un exemple avec les logiciels de l'entreprise Acucorp (fournit
un moyen d'invoquer un programme Cobol, génération d'un fichier
WSDL à partir des spécifications, génération d'une
interface permettant d'appeler le service, outils donnant des informations
statistiques pendant l'exécution, ...).
LE MODÈLE DE TEST
« ONSITE - OFFSHORE »
Le modèle de test « Onsite -
Offshore », qui permet d'externaliser les procédures de tests,
est très utilisé. Le client est donc
« Onsite » (à gauche) et l'entreprise ou service
dédié aux tests est « Offshore » (à
droite).
On peut imaginer qu'une petite équipe travaillerait
chez le client alors qu'une plus grande serait à l'extérieur.
L'équipe chez le client fournit alors une interface avec le client et
coordonne le travail externe, et l'équipe externe peut exécuter
tous les cas de tests et rapporter tous les défauts.
BIBLIOGRAPHIE
SITES INTERNET
Définitions Wikipedia -
http://en.wikipedia.org/wiki/Main_Page
Compréhension de SOA -
http://www.dotnetguru.org/articles/dossiers/soadouceur/soaendouceur.htm
Compréhension de SOA -
http://pie.bonnet.ifrance.com/
Commentaires autour de l'architecture EDA -
http://soa-eda.blogspot.com/
Compréhension des Web Services -
http://www.zdnet.fr/builder/architecture/services_web/
Compréhension de l'orchestration de services
(BPEL) -
http://www.orchestranetworks.com/
Compréhension de JMS -
http://www.javalobby.org/articles/distributed-jms/
Autour des Webservices -
http://java.boot.by/wsd-guide/
Les enjeux de la gouvernance SOA -
http://www-306.ibm.com/software/fr/soa/gov/challenges/
L'association BIAN, Banking industry
architecture network -
http://www.bian.org/index_en.html
http://www.journaldunet.com/solutions/breve/26636/bian--un-reseau-pour-promouvoir-le-soa-dans-la-banque.shtml
SOA et stratégie d'entreprise, l'équation
gagnante -
http://www.financefactory.fr/article/detail/id/721
L'architecture SOA séduit les entreprises
françaises -
http://www.indexel.net/1_20_5093___/L_architecture_SOA_seduit_les_entreprises_franaises.htm
CICS -
http://fr.wikipedia.org/wiki/Customer_Information_Control_System
COBOL -
http://fr.wikipedia.org/wiki/Cobol
Le Cobol fait son retour dans les
écoles -
http://fr.smartbusiness.be/news.cfm?id=83379
Les temps forts de la conférence sur la banque
du futur: comment concilier différentiation et industrialisation?
http://www.atelier.fr/banque-assurance/7/20072006/temps-forts-conference-banque-futur-comment-concilier-differentiation-industrialisation-32670-.html
SAP et Microsoft veulent aider les banques dans leurs
projets SOA
http://www.lemondeinformatique.fr/actualites/lire-sap-et-microsoft-veulent-aider-les-banques-dans-leurs-projets-soa-26008.html
Greenhat, integrated product suite for supporting your
SOA project -
www.greenhat.com
SOA Testing Framework -
http://soa.sys-con.com/node/136191
Acucorp -
www.acucorp.com
A New Foundation : SOA Implementation and Bank
Transformation -
www.banktech.com/showArticle.jhtml?artilceID=198700451
Pursuing the Promise of SOA -
www.banktech.com/showArticle.jhtml?artilceID=208701020
DOCUMENTS ELECTRONIQUES
(PDF)
Communication par événements et bus
à messages - Sacha Krakowiak - Université Joseph
Fourier
SOA Maturity Model - BP Trends - Srikanth
Inaganti, Sriram aravamudan
Agile load checking for SOA Quality -
Mindreef's White Paper
The foundation of SOA Quality - Mindreef's
White Paper
Effective team collaboration for SOA projects
- Mindreef's White Paper
Key Strategies for SOA Testing - Mindreef
- David S Linthicum, Jim Murphy
SOA Test Methodology - Tony Harris
Automating what you can't see - Testing Middleware for
enterprise - Jon Howarth, Robert Ryan
Tests - Lionel Seinturier - Université
des Sciences et Technologies de Lille
SOA Global Integration - Solstice Software
LIVRES
Les Web services - Dunod, Hubert Kadima,
Valérie Monfort.
DOCUMENTS AUDIO
Banques et assurances, les grands profiteurs de
SOA - Entretien avec François PETIT, PDG de ITN -
http://www.econotique.com/Banques-et-assurances,-les-grands-profiteurs-de-SOA_a148.html
|