A l'origine de l'informatique, un ordinateur n'était qu'une grosse machine à calculer capable de faire très vite des calculs simples.
A chaque utilisation de la machine, on écrivait le logiciel qui allait avec.
La philosophie était simple: Pour utiliser un ordinateur, il fallait savoir programmer !
Il y avait très peu d'ordinateur pour beaucoup de monde.
Puis, le système d'exploitation est arrivé. Un programme qui reste toujours sur la machine est chargé de gérer les entrées/sorties de donnée, les périphériques, la mémoire etc… En bref, c'est un programme qui permet à l'utilisateur de ne plus avoir à se préoccuper de la machine, il ne doit plus se préoccuper que de son propre programme.
Ensuite, on a perfectionné le système d'exploitation pour lui permettre de faire croire à l'utilisateur que plusieurs programmes peuvent être utilisés en même temps.
Par manque d'ordinateurs, on a aussi permis au système d'exploitation de gérer plusieurs utilisateurs.
Nous avons donc plusieurs utilisateurs qui utilisent plusieurs programmes sur une seule machine.
Ensuite, la micro-informatique est née.
Le prix des ordinateurs a chuté, un ordinateur est devenu une machine abordable pour un particulier.
Le système d'exploitation capable de gérer plusieurs utilisateurs est tombé dans la désuétude. l'ère de l'ordinateur personnel est arrivée, l'ère du PC (Personal Computer).
Les systèmes d'exploitation habituels ont été abandonnés au profit d'autres.
Un certain Bill Gates à très bien compris la chose et a réussi à imposer "son" système comme système de référence.
Il avait compris que le logiciel allait prendre le dessus sur le matériel. Fait auquel les gens de chez IBM ne croyaient pas.
Dans les années suivantes, les systèmes d'exploitation destinés à des ordinateurs personnels, n'ont fait que de grandir et d'intégrer de plus en plus de fonctions.
Maintenant, pour être un utilisateur, il n'est de loin plus nécessaire de savoir programmer.
Puis, est arrivé le World Wide Web. Premier service internet à dépasser le cercle des initiés aux réseaux informatiques.
De l'information en provenance du monde entier est disponible dans le foyer de chacun via un navigateur Web.
Les systèmes d'exploitations ré-intégrent les fonctionnalités réseaux qui avaient été abandonnées avec l'arrivée du PC.
Les applications en réseau deviennent de plus en plus nombreuse, les gens se "connectent".
Une refonte des systèmes d'exploitation de PC est observée.
De fonctionnalité annexe en option, les piles de protocoles réseau deviennent des fonctions de base intégrées dans les noyaux.
Le concept de multi-utilisateurs revient. Cependant, il n'est plus utilisé pour partager une même machine. Il est plutôt utilisé pour partager des données réparties sur plusieurs machines.
Le web est devenu plus qu'une source d'information statique. Le web, (ou plutôt le couple HTML navigateur web) est devenu le premier système d'interface graphique universel.
Le commerce électronique est lancé, toutes les entreprises utilisent des portails web pour partager les données et faire leur gestion d'entreprise.
En plus de sa mission de mise à disposition d'informations, le web est bricolé pour fournir des services.
Parallèlement à toute cette évolution de l'informatique, la téléphonie à aussi évoluée. On est passé de l'ère du téléphone fixe à l'ère du téléphone mobile.
Téléphoner, ce qui ne se faisait que depuis un endroit précis est fait depuis partout. Les gens sont mobiles. Il communiquent plus. Ils sont en réseau.
La téléphonique est en voie d'être fusionnée avec le monde des réseaux informatique. Les mêmes services sont proposés via une plateforme ou l'autre.
La parole n'est plus le seul service proposé par les opérateurs de téléphonie. le transfert de données prend de l'ampleur. Le téléphone se rapproche de l'ordinateur.
Au début de l'informatique nous avons donc une seule machine partagée pour beaucoup de monde.
Ensuite, nous avons le boum de l'informatique avec le PC. Nous avons une machine par personne.
Puis le nombre de machine augmente encore, chaque appareil ménager a son microprocesseur. Les fonctionnalités réseau se développent de plus en plus.
Et nous passons du présent à une projection dans l'avenir…
… Dans l'avenir, il se pourrait que le nombre de machine dépassent le nombre d'utilisateurs. Mais que paradoxalement, le nombre d'utilisateurs par machine augmente aussi énormément !
L'avenir est à l'informatique des services. Chaque machine propose un service à une énorme communauté d'utilisateurs.
Chaque utilisateur compose son application comme il l'entend avec des services qui lui sont disponibles via un réseau informatique.
Actuellement, les applications sont figées, elle fonctionnent sur une seule machine. Eventuellement, elles utilisent une connexion réseau pour aller chercher des informations ailleurs. Tout au plus, une application est capable de se mettre à jour via un réseau.
A l'avenir, une application sera dynamique. Une application sera un assemblage de diverses fonctions. Une application pourra mettre ensemble et faire des corrélations entre des fonctions qui n'aurons pas du tout été prévues pour être reliées. Les possibilités de créer d'autres macro-fonctions sont colossales.
Un service peut non seulement être une "brique" informatique et faire du traitement d'information comme c'est le propre de l'informatique. Mais un service, peut également être un objet; Un objet tel qu'une télévision, un frigo, une lampe, un chauffage, une radio, un store, un aspirateur, une caméra, etc …
Un service/objet est donc également une entité physique qui a un état et qui est capable de réaliser des actions.
Dans le modèle classique de l'informatique, un ordinateur ne communique qu'avec très peu d'objets physiques. Ce sont en général ce que l'on appel des périphériques et qui sont l'écran (quoi que presque assimilé à l'ordinateur), l'imprimante, le scanner, l'appareil photo, etc … Et j'ai fait le tour des plus courants. Dans la philosophie chère à Apple fabriquant de matériel et logiciel, un Mac est selon leur slogan "un hub numérique…".
Cela signifie que pour les gens de chez Apple, un ordinateur est la pièce maîtresse du puzzle. Que c'est la seule pièces capable de faire communiquer toutes les autres ensemble. l'appareil photo ne peu communiquer avec l'imprimante, que si un ordinateur est présent !
Dans le modèle de l'informatique des services, il n'y a pas de service "maître". Nous avons affaire à une véritable démocratie de l'informatique.
Il y a une foule de services en tout genre qui communique directement entre eux.
Ce modèle permet de créer des programmes/services qui sont très simples, fiables et que l'on peu tester de manière efficace. Au contraire d'un programme qui est sensé savoir tout faire et qui est de par ce fait très complexe, difficile à tester et donc peu fiable !
Le modèle de l'informatique des services permet un niveau d'abstraction supplémentaire du modèle objet.
Avec un système d'exploitation, on à fait abstraction du matériel. Avec un réseau informatique on fait abstraction de la localisation d'une ressource.
Avec un modèle de service, on fait abstraction du système d'exploitation et du réseau. Donc la seule préoccupation de l'utilisateur est de mettre ensemble les bons services pour arriver à ses fins.
Le défi actuel des programmeurs est donc de concevoir l'architecture informatique capable de rechercher et d'utiliser des services.
On appel ce genre d'architecture des SDUS, des Services de Découverte et d'Utilisation de Service.
Actuellement il en existe quelques protocoles et architectures qui vont dans ce sens. Il y a entre autre UPNP qui fait partie de Windows XP et qui est donc en position de force. Mais l'architecture qui va le plus dans le sens de l'informatique des services est JINI basée sur le langage Java.
Cette architecture repose entre autres services, sur un service d'un type particulier, c'est le service de recherche. c'est la porte d'entrée d'une fédération de services. c'est l'équivalent du moteur de recherche web qui nous permet de trouver la page web qui nous intéresse. Sans moteur de recherche, le web ne serait pas autant attractif pour faire des recherches d'information.
Le service de recherche jini est donc le moteur de recherche de services. Ce service peut être localisé à une adresse internet connue, ou être recherché par le client via une requête multicast.
Il est donc possible de penser pouvoir utiliser des services de manière contextuelle lorsqu'ils sont dans un environnement proche. Ou alors, il est possible d'utiliser des services très lointains, mais dont on connait l'adresse du service de recherche dans lequel ils sont enregistrés.
Par exemple, les services permettant de télécommander votre TV, ou d'allumer la lampe du salon, sont des services utiles principalement lorsque l'utilisateur est dans l'environnement proche de l'objet physique. Ce sont des services contextuels.
En revanche, donner à manger aux poissons lorsque l'on est en vacances, ou allumer le chauffage à distance dans son chalet de montagne sont des services distants enregistrés dans un service de recherche qui n'est probablement pas physiquement le service le plus proche de l'utilisateur.
L'utilisateur, indiquera donc probablement l'adresse du service de recherche de sa maison ou de sons chalet.
Mais ne fera pas le recherche du service de recherche le plus proche.
La recherche et la normalisation du service étant prise en compte par l'architecture, il reste au programmeur de concevoir une méthode, ou une sorte de navigateur de service (à l'instar su navigateur web) pour utiliser des services et éventuellement les assembler pour en faire des macro-services.
En bref, il faut concevoir une sorte de "système d'exploitation" de services pour faire croire à l'utilisateur que son application n'est qu'un seul bloc, alors que c'est une multitude de blocs disséminés dans les endroits les plus divers de quatre coins de la terre.