Caractérisation des services
Que ce soit lors de la conception d'un système orienté service, ou de la création d'une architecture de référence, l'identification des services est une étape incontournable.
On peut s'aider de la typologie ci-dessous pour identifier les services :
les services fonctionnels
les services déduits des modèles de données
les services applicatifs
les services d'orchestration de processus
les services techniques et d'infrastructure
Ces services peuvent être déduits de l'analyse des processus de l'entreprise. L'analyse d'un processus aboutit à une décomposition en opérations réalisées par les acteurs de l'entreprise (voir le guide de HOPEX Business Process Analysis pour plus de détails). Pour chaque opération, il est possible de déterminer dans quelle mesure elle doit être outillée à l'aide d'un service informatisé. On obtient alors un ensemble de services utilisés lors de la réalisation du processus.
Les services déduits des modèles de données 
Les données utilisées dans le contexte des processus de l'entreprise constituent également des indicateurs pour la détection des services. Dans l'exemple précédent, l'opération "Finaliser la proposition de crédit" met en évidence la nécessité de disposer d'un ou plusieurs services de gestion de l'entité "Offre de crédit". Le crédit est lié lui-même à l'entité client dont on voudra consulter les propriétés.
Les services de lecture, de mise à jour, de création et de destruction de chacune de ces entités peuvent ainsi être définis. Ces quatre services de base sont généralement référencés par l'acronyme CRUD (Create, Retrieve, Update, Delete) et aboutissent le plus souvent à une implémentation dans une base de données relationnelle. De ces services atomiques découlent également les services d'interface homme-machine les mettant en œuvre.
Les services applicatifs 
Les services applicatifs encapsulent des algorithmes réalisant des calculs complexes ou mettant en œuvre des règles métiers. Dans l'exemple de crédit, un service de simulation de prêt immobilier est utilisé lors de l'entretien commercial avec le client. Ce service met en œuvre des algorithmes de calculs centralisés et peut-être partagé par d'autres processus.
Les services d'orchestration de processus 
Les services d'orchestration de processus permettent d'enchaîner des tâches implémentées par des services élémentaires dans le but d'automatiser tout ou partie de la chaîne de valeur d'un processus métier.
Par exemple, un système de réservation de billets d'avion prend en charge la mise en attente d'un client au cas où un vol est complet. Dès qu'un désistement survient, le service gérant le processus prend automatiquement en charge le rappel du client (envoi du courrier électronique) et opère la réservation. Dans ce cas de figure, le service gère l'état courant de la transaction de réservation (en attente, réservé, annulé) pendant une période qui peut aller de quelques heures à plusieurs semaines.
Les moteurs d'exécution de processus du marché (BPMS : Business Process Management System) reposent sur la description formelle des processus par le biais d'un langage. Le plus populaire est BPEL (Business Process Execution Language). Il existe également une notation graphique pour représenter ces définitions de processus : BPMN (Business Process Management Notation).
Voir le guide HOPEX Application Designer pour plus de détails.
Les services de communication 
Une architecture orientée service est basée sur les services et leurs échanges. La gestion des échanges donne lieu elle-même à la mise en place de services dédiés. Dans une architecture de ce type, il est impératif d'utiliser des protocoles et des services standard capables de transporter les messages entre les différents services fonctionnels. Ces derniers étant de nature hétérogène, le système de communication repose sur des protocoles indépendants des messages transférés. Il est alors nécessaire de disposer de services dédiés à la "traduction" des messages depuis le format natif vers le format indépendant et inversement.
SOAP est un bon exemple de protocole mis en place pour répondre à cette problématique. On trouve bon nombre de services capables de prendre en charge ou de transférer un message SOAP que ce soit sur des plates-formes Unix, Windows ou autres.
Les services d'administration 
Le système d'information est un des leviers majeurs de la mise œuvre des processus. En tant que tel, il nécessite une administration qui doit permettre de prendre des décisions relatives à son évolution. Il est donc opportun de définir une architecture spécifique pour son administration. L'objectif est généralement de déterminer :
si l'ensemble des services mis en place répondent aux besoins
s'ils sont correctement dimensionnés du point de vue de la performance
s'ils sont continuellement accessibles
s'ils sont régulièrement et facilement mis à jour, etc.
Pour répondre à ces problématiques internes, on pourra avoir recours aux services définis ci-dessous (liste non exhaustive) :
Services de recensement des incidents
Services d'analyse du trafic réseau
Services de mise à jour des applications
Services d'administration de la sécurité
Services d'identification des ressources matérielles, etc.
Les services de sécurité 
Tout comme celle d'administration, la notion de sécurité du système d'information peut être vue en dehors de l'aspect fonctionnel de l'entreprise. C'est une problématique à part entière qui traverse toutes les couches de services quel que soit le métier adressé. Ici, l'objectif est de protéger le système d'information contre toutes sortes d'agressions qu'elles soient logicielles ou matérielles, intentionnelles ou non.
Parmi les services correspondant à cette problématique, on trouve :
Les services d'accès : l'objectif est de contrôler l'accès aux applications, aux serveurs ou à certaines parties du réseau. Les applications de type pare-feu sont dédiées à cette problématique.
Les services d'authentification : il s'agit de contrôler l'identité des personnes accédant à des ressources logicielles. Des protocoles comme SSO (Single Sign On) permettent d'unifier l'authentification pour plusieurs applications utilisées sur le même poste.
Les services d'intégrité : le but est d'assurer que les données transmises n'ont pas été altérées pendant leur transport. Ces services sont généralement basés sur le calcul d'une clé dont la valeur dépend du contenu transféré. A l'arrivée, la clé et le contenu sont comparés pour détecter une éventuelle faille d'intégrité.
Les services de confidentialité : il s'agit de contrôler que les données transférées à une personne ne peuvent pas être lues par une autre. Des services d'encryptage sont généralement la solution.
Un certain nombre d'organismes se sont donnés pour tâche de recenser les risques envisageables en termes de sécurité afin de mieux les appréhender. On trouve parmi eux les recommandations ITIL (Information Technology Infrastructure Library), ou celle du CERT (Computer Emergency Response Team).
Identification des échanges 
L'identification des échanges est réalisée conjointement à l'identification des services. De la découverte d'un service découlent les échanges qui s'y rattachent. Par exemple, à partir d'un service "Simulateur de crédit" on identifie un message entrant "Demande de simulation crédit" et un message sortant "Simulation crédit".
Cet exemple montre qu'un message seul ne suffit pas à représenter l'ensemble des interactions nécessaires à l'obtention d'un résultat. A cette fin, il est nécessaire de regrouper ces messages au sein d'une interaction.
Une interaction est un contrat d'échange entre deux partenaires.Chaque partenaire est représenté par le rôle qu'il joue dans le contrat d'échange. Chaque échange élémentaire est spécifié par un message.
Les interactions permettent de décrire les interfaces des services, c'est à dire l'ensemble des messages en entrée et en sortie qu'ils doivent prendre en compte. Dans notre exemple l'interaction Simulation Crédit comporte les deux messages Demande de simulation crédit et Simulation crédit.
Exemple d'interaction
L'application "Simulation de crédit" offre un service "Simulateur de crédit." Celui-ci joue le rôle de "Fournisseur de simulation". Il doit donc pouvoir répondre au message "Demande de simulation crédit" par le message "Simulation crédit". Le diagramme d'architecture interne de l'application "Simulation de crédit" montre comment le service "Simulateur de crédit" est sollicité au moyen de l'interaction "Simulation crédit". Ce même service doit lui-même collaborer avec les services "Consultation situation client" et "Evaluation risques immobiliers" afin de pouvoir effectuer ses traitements.
Exemple de services collaborant - Application Simulation de crédit