# Normalisation de l'intégration et de l'interopérabilité en informatique

Des applications émergentes telles que l'administration en ligne, la formation en ligne, les bibliothèques électroniques... nécessitent l’accès à diverses sources d’information. Ces dernières sont généralement hétérogènes, que ce soit au niveau syntaxique ou sémantique. En effet, des conflits sémantiques surviennent puisque les systèmes n’utilisent pas la même interprétation de l’information qui est définie différemment d’une organisation à l’autre. Dans ce contexte, les systèmes d’informations (SI), conçus et développés par des organisations différentes, constituent généralement des sources de données autonomes et hétérogènes. De ce fait, l’interopérabilité entre ces systèmes d’information est complexe puisque les applications doivent être adaptées pour pouvoir déterminer, pour chaque requête, les sources de données pertinentes, la syntaxe requise pour l’interrogation, la terminologie propre à la source, et pour pouvoir combiner les fragments de résultats issus de chaque source en vue de construire le résultat final.

## Intégration de composant
### Définition

L’évolution et l’urbanisation des systèmes d’information, des logiciels, et des applications dans différents domaines, tels que l’industrie, fait appel à l’intégration. Les entreprises doivent s’adapter en permanence, en adaptant le système d’information et les applications logicielles, et être de plus en plus réactives aux variations des marchés telles que les fusions, les acquisitions, les scissions, les diversifications d'offres commerciales, les changements technologiques. L’intégration est un processus qui permet de connecter les différents systèmes d’information, logiciels et applications physiquement ou fonctionnellement, dans le but d’agir comme une entité unique. Dans le domaine des technologies de l'information, l’intégration est le processus qui rassemble les composants sous-systèmes dans un système, et qui veille à assurer le fonctionnement des sous-systèmes tous ensemble comme un seul système. Face à la complexité des nouveaux systèmes mis en place, l’intégration des systèmes rentre dans une dimension supérieure et devient essentielle dans la phase de conception et de réalisation de systèmes, dans le but de fournir aux utilisateurs un système répondant à leurs critères, et disposant de tous les services requis pour le bon fonctionnement ainsi que la maintenance du système.

### Principes de l’Intégration de systèmes

* Les principes de l’intégration des systèmes sont multiples. Elle permet de :
* Faciliter l’intégration de nouveaux systèmes.
* Mettre en place de systèmes flexibles et évolutifs permettant de s’adapter à de nouvelles exigences.
* Réaliser des systèmes pouvant interagir avec les systèmes déjà existants.
* Faire interagir des systèmes existants entre eux.
* Résoudre les problèmes d’adaptabilité de systèmes hétérogènes en :
** Améliorant les applications et en les rendant complémentaires.
** Adaptant et optimisant le partage de données entre les systèmes.
** Adaptant les outils technologiques utilisés.

### Le défi de l’intégration

Le système d’information est construit avec une architecture en couches : la couche métier, la couche application et la couche technologique. Un bon système d’information garantit une forte coopération entre ces couches. Or, L’adoption d’une nouvelle approche, méthode, composant ou nouvelle source d’information n’est pas aussi simple à intégrer ou à connecter au système d’information tout en assurant un haut niveau de coopération entre les couches. Et ce à cause des problèmes causés par : l’hétérogénéité, la distribution des ressources, et aussi le niveau d’autonomie de sous-systèmes.

### Niveaux d'intégration de composant

Il existe différentes formes et méthodes d’intégration :
* L’intégration verticale, qui consiste à prendre le contrôle de plusieurs niveaux de systèmes d’information. Par exemple prendre le contrôle d’un système et de son sous-système. C'est un type d’intégration visant à diminuer les échanges avec les tiers pour des raisons spécifiques (Confidentialité, la peur de voir son système d’information menacé par un système extériorisé défaillant).
* L’intégration horizontale : c’est l’intégration des systèmes qui supportent un type différent de fonctionnalité du métier.C'est une méthode d'intégration dans laquelle un sous-système spécialisé est consacré à la communication entre d'autres sous-systèmes. Ceci permet de couper le nombre de connexions des interfaces à seulement un par sous-système qui connectera directement à l'ESB. L'ESB est capable de traduire l'interface dans une autre interface. Avec des systèmes intégrés utilisant cette méthode, il est possible non seulement de remplacer complètement un sous-système par un autre sous-système qui fournit une fonctionnalité semblable, mais également d'exporter des interfaces différentes ; et tout ceci de manière complètement transparente pour le reste des sous-systèmes.

### Typologie d’intégration de composant
#### Intégration par les données

L'intégration des données (Data integration en anglais) permet d’utiliser les données manipulées par un système aux bénéfices d’autres systèmes. Elle s'effectue à l’aide des technologies pouvant être utilisées comme format standard d'échange de donnée, à l'instar du XML. L’intégration de données impose les exigences suivantes lors de l’intégration :
* La méthode d’accès : décrit comment des applications peuvent accéder aux données d’autres applications.
* Le protocole d’échange : spécifie le format sous lequel les données sont valables à être utilisées. Parfois il faut changer le format de données de la source pour répondre aux critères du système intégrateur.
* La transformation : il s'agit de la transformation subites par les données au cours de l'intégration.
L'intégration par les données permet donc un accès uniforme à des sources multiples, autonomes, hétérogènes et structurées (ou semi-structurées).

#### Intégration par interface

L’intégration par interface permet aux applications de fonctionner tous ensemble comme si elles étaient développées comme une seule application, mais par l’intégration de leurs interfaces et moyen de représentation et pas par les applications en elles-mêmes ou leurs données. Cette intégration consiste à écrire des programmes qui manipulent les interfaces et extraire leurs données pour les visualiser dans une seule interface. Néanmoins, l’utilisation de cette intégration reste limitée aux circonstances où le système n’a pas un accès facile, ou direct aux données à travers l’intégration par les données. Un exemple de ce type d'intégration est l’intégration par interface utilisée dans les sites web pour géolocaliser une cible, grâce à l’API Google Maps.

#### Intégration par messages

Cette intégration assure une connexion des applications à un système d’échange des messages. Afin de déclencher des fonctionnalités, ou bien d’échanger des informations. Le couplage des applications se fait en communiquant à travers les messages et d’une manière asynchrone. Les bases du "messaging" sont :
* La chaine de communication qui transfère les messages entre les applications. En fait, la chaine de messagerie choisie dépend de type de messages et aussi de son application réceptrice. Il ne suffit pas de déposer le message dans le système de messagerie.
* Le message : c’est le paquet des données à envoyer par l’application 1 et recevoir par l’application 2 après l’extraction des instructions ou d’informations.
* Adaptation avant l’envoi : transformation du format de message, si l’application réceptrice n’accepte que d’autres types de messages.Routage : un système de routage veille à envoyer les messages dans les chaines adéquates et dans la bonne direction jusque son arrivée au récepteur.
* Message "Endpoint" : le bout de code capable de mettre une commande ou des données dans un message et les envoyer. Et aussi recevoir un message, en extraire le contenu, le traduire et le présenter à l’application d’une manière compréhensible.

#### Intégration par composant métier

L’ajout d’un composant métier qui offre des fonctionnalités intéressantes peut paraître nécessaire au cours de la conception d’un logiciel ou d’un système d’information, ou encore au cours de l’évolution de systèmes existants. L’intégration de composants métiers fait référence à l’intégration de composants récupérables comme des off-the-shelf-products. Ce type de composants a plusieurs avantages :
* Composant à bas coûts, ou gratuit.
* Un bon rapport qualité/prix/délais.
* Simple à maintenir.
Cependant, les off-the-shelf-products incluent différentes contraintes dont :
* La nécessité du respect des normes ISO de l’interopérabilité par exemple.
* Ils sont écrits dans des langages différents de ceux utilisés par les traditionnels systèmes d’informations. Ce qui peut pousser des entreprises à abandonner certaines décisions à cause de cette hétérogénéité.
* Ils utilisent des différents types de données.
Afin de surmonter ces problèmes, l’intégration par composant métier se sert d’un intergiciel (en anglais middleware). C’est un outil qui se place entre plusieurs applications informatiques pour leur permettre l'interopérabilité afin de communiquer entre elles. Un middleware va ainsi permettre d'intégrer des composants dans un système plus global. Il existe trois (3) niveaux d'intégration implémentés par les middlewares :
* l'intégration de données, qui consiste à transmettre des données entre des composants informatiques stockant des données brutes (base de données, datawharehouse…),
* l'intégration applicative, qui consiste à transmettre des messages entre applications (CRM, ERP, WMS, e-commerce…),
* l'intégration de processus, qui consiste à définir les flux opérationnels (processus métiers).

## Interopérabilité

L'interopérabilité décrit la mesure dans laquelle des systèmes et des dispositifs peuvent échanger des données entre eux, et interpréter ces données échangées. Ainsi, pour que deux systèmes soient interopérables, ils doivent être capables d’échanger des données, puis de les restituer par la suite de manière compréhensible pour un utilisateur.

### Définition et usages

Une définition large prenant en compte les facteurs sociaux, politiques et organisationnelles ayant un impact sur la performance des systèmes stipule que l’interopérabilité consiste à : construire des services cohérents pour des utilisateurs quand les composants individuels sont techniquement différents et gérés par des organisations différentes Il convient également de distinguer entre interopérabilité et compatibilité. La compatibilité est la possibilité pour deux systèmes de types différents de communiquer ensemble. Ainsi, lorsqu'un acteur devient dominant dans un domaine, les autres acteurs font en sorte d'être compatibles avec lui. L'ensemble des systèmes peuvent alors à peu près communiquer ensemble. Cependant l'acteur dominant contrôle d'une certaine manière cette possibilité, on parle de standard fermé. À l’opposé, L'interopérabilité est la possibilité pour différents systèmes de communiquer entre eux sans dépendre d'un acteur particulier. Elle repose sur la présence d'un standard ouvert. Autrement dit, on ne peut parler d'interopérabilité d'un produit ou d'un système que si on connaît intégralement toutes ses interfaces. L’interopérabilité intervient dans plusieurs domaines qui incluent l'informatique, le secteur médical, la sécurité publique, l'aérospatiale, le domaine militaire et l'industrie en général. Dans le domaine informatique, le terme interopérabilité est utilisé pour décrire la capacité de programmes différents à échanger des données via un ensemble commun de formats d'échange, ainsi qu’à lire et à écrire les mêmes formats de fichiers et utiliser les mêmes protocoles. D’après la norme ISO/IEC 2382:2015, l’interopérabilité est « la possibilité de communication, d'exécution de programmes ou de transfert de données entre unités fonctionnelles différentes, de telle manière que l'utilisateur n'ait que peu ou pas besoin de connaître les caractéristiques propres à chaque unité »

### Typologie d'interopérabilité

Il convient généralement d’identifier trois (03) types d’interopérabilité : l’interopérabilité technique « pouvoir communiquer », l’interopérabilité sémantique « savoir se comprendre » et l’interopérabilité syntaxique « savoir communiquer ».

#### L’interopérabilité technique

Elle concerne les problèmes techniques de liaison entre systèmes, la définition des interfaces, le format des données et les protocoles, y compris les télécommunications. Elle décrit la capacité pour des technologies différentes à communiquer et à échanger des données basées sur des normes d'interface bien définies et largement adoptées.

#### L’interopérabilité sémantique

L'interopérabilité sémantique (en) assure que la signification exacte des informations échangées soit compréhensible par n’importe quelle autre application, même si celle-ci n’a pas été conçue initialement dans ce but précis. En effet, des conflits sémantiques surviennent lorsque les systèmes n’utilisent pas la même interprétation de l’information qui est définie différemment d’une organisation à l’autre. Pour réaliser l'interopérabilité sémantique, les deux côtés doivent se référer à un modèle de référence d'échange d'informations commun.

#### L’interopérabilité syntaxique

La syntaxe traduit le sens en symboles. Il y a entre la sémantique et la syntaxe le même rapport qu'entre le fond et la forme. L’interopérabilité syntaxique concerne la façon dont sont codées et formatées les données en définissant notamment la nature, le type et le format des messages échangés, Elle conduit à la notion de système ouvert permettant d'assumer l'hétérogénéité des composants.

### Mécanismes aidant à l’interopérabilité

Tout au long de ces dernières années une panoplie de techniques ont été mises en œuvre pour permettre l’interopérabilité des systèmes d’information. L’Unified Modeling Language (UML), le Business Process Model and Notation (BPMN) , l’Extensible Markup Language (XML) et les interfaces definition langage (IDL)sont autant de mécanismes permettant une interopérabilité syntaxique$^,$. En outre, les services web REST et SOAP, et plus globalement l’architecture orientée services permettent une interopérabilité à l’échelle technique. On note également le Common Object Request Broker Architecture (CORBA), le Component Object Model (COM) ou l’ Open Database Connectivity (ODBC) qui sont autant d’intergiciel (middleware) permettant interopérabilité technique entre les objets distribués. L’Architecture guidée par les models ou Model Driven Architecture (MDA) intervient également comme outil dans le cadre de l’interopérabilité technique. Les ontologies quant à eux constituent un puissant outil intervenant dans le cadre de l’interopérabilité sémantique.

### L’importance de l’interopérabilité dans l’intégration de composant

Interopérabilité et intégration sont deux concepts complémentaires mais non substituables, intervenant dans le cadre de l’urbanisation des systèmes d’information. L’intégration est l’évolution de l’approche unifiée vers l’approche intégrée ; par contre, L’interopérabilité est l’évolution de l’approche unifiée vers l’approche fédérée L’interopérabilité revêt d’une importance capitale dans le processus d’intégration de composant. En effet, l'intégration des informations est confrontée à de nombreux conflits de données. Les conflits syntaxiques résultent de l'utilisation de modèles de données différents d'un système à l'autre. Les conflits schématiques résultent d'une structuration et d'une classification différente des informations. Les conflits sémantiques proviennent des différences d'interprétation des informations partagées entre différents domaines d'application. Face à ces conflits, l’interopérabilité permet d’obtenir une intégration de composant à faible coût. En effet, les différents niveaux sémantique, syntaxique et technique d’interopérabilité offrent des mécanismes qui permettent un couplage faible entre les composants du fait qu’ils reposent sur des standards ouverts. Ces différents mécanismes d’interopérabilité permettent ainsi d’intégrer des systèmes hétérogènes complexes, fortement distribués et pouvant coopérer sans recourir à une intégration spécifique et coûteuse. L’interopérabilité favorise donc la transparence, l’autonomie, la modularité, le découplage et couplage possible des composants.

## Normalisation

Organismes majeurs publiant des normes : Il existe différents organismes de normalisation dont le rôle est de valider des normes ou recommandations que les industries, notamment, utiliseront comme support pour rendre leurs services et produits interopérables, et a fortiori, compatibles :
* ISO : Organisation internationale de normalisation (émet des normes applicables au niveau international)
* ITU : Union internationale des télécommunications (le comité ITU-T émet des recommandations techniques uniquement, qui sont ensuite approuvées comme normes internationales par l'ISO, ou comme normes au niveau intergouvernemental ou national).
* ANSI : American National Standards Institute : comité national de normalisation aux États-Unis.
* CEN : Comité européen de normalisation : comité intergouvernemental de normalisation dans l’Union européenne.
* CENELEC : Comité européen de normalisation électrotechnique : sous-comité
* AFNOR : Association française de normalisation : comité national de normalisation en France, émet des normes NF dans la série Z pour l’informatique.
La norme : ISO 16100-1:2002 La partie 1 d’ISO 16100 spécifie un cadre pour l'interopérabilité d'un ensemble de produits logiciels utilisés dans le domaine de la fabrication et de faciliter son intégration dans une application de fabrication (manufacturing). Ce cadre porte sur des modèles d'information d’échange, des modèles d'objets de logiciels, des interfaces, des services, des protocoles, des profils de capacités, et les méthodes de test de conformité.
Le secrétariat ISO/TC 184/SC 5 de l'iso traite de l’Interopérabilité, l’intégration et l’architectures pour systèmes d’entreprise et applications d’automatisation. Ce secrétariat a publié 46 articles dans ce cadre dont:
* L' ISO 16100-1:2009: Systèmes d'automatisation industrielle et intégration -- Profil d'aptitude du logiciel de fabrication pour interopérabilité -- Partie 1: Cadre.
* L' ISO 16100-3:2005: Systèmes d'automatisation industrielle et intégration -- Profil d'aptitude du logiciel de fabrication pour interopérabilité -- Partie 3: Services d'interface, protocoles et gabarits d'aptitude.
* L'ISO 15745-4:2003 : Systèmes d'automatisation industrielle et intégration -- Cadres d'intégration d'application pour les systèmes ouverts -- Partie 4: Description de référence pour les systèmes de contrôle fondés sur Ethernet.
On distingue également également le secrétariat ISO/TC 46/SC 4 de l'ISO qui traite de l'Interopérabilité technique. Ce projet a publié 24 articles dans ce cadre dont :
* L'ISO 10160:2015 : Information et documentation -- Interconnexion de systèmes ouverts (OSI) -- Définition du service d'application pour les prêts entre bibliothèques.
* L'ISO/CD 20614 : Protocole d'échange de données pour l'interopérabilité et la préservation.