RECHERCHE :
Bienvenue sur le site de Michel VOLLE
Powered by picosearch  


Vous êtes libre de copier, distribuer et/ou modifier les documents de ce site, à la seule condition de citer la source.
 GNU Free Documentation License.

Modèle en couches

21 novembre 2003

Le « modèle en couches » a été conçu par des techniciens pour penser un objet du monde réel dans lequel plusieurs logiques s’articulent. Ainsi dans un ordinateur on rencontre des phénomènes électromagnétiques (des électrons se déplacent, des tensions se modifient) ; ces phénomènes reçoivent une interprétation logique (ils sont traduits en 0 ou 1) ; des suites binaires représentent des instructions ou des données ; les règles qui gouvernent le codage des données et instructions sont fournies par les langages de programmation ; le langage le plus proche de la machine étant incommode pour l’être humain, des « langages de haut niveau » sont élaborés pour faciliter la programmation ; enfin, des « applications » sont programmées pour satisfaire les utilisateurs. Or le mouvement des électrons ne peut pas être décrit selon la même grille conceptuelle que les applications, ni que le « compilateur » qui traduit un langage de haut niveau en instructions exécutables. Néanmoins tous ces phénomènes jouent conjointement[1].

Un autre modèle en couches, le modèle OSI de l’ISO[2], est utilisé pour représenter les réseaux de télécommunications : il organise en sept couches les diverses fonctions que remplit un réseau, de la couche physique (transport des bits) jusqu’à la couche « application »[3].

Le modèle en couches ne s’applique pas qu’à la technique. Des philosophes ont raisonné en couches. Saussure[4] a décrit les couches psychologique, linguistique, neurologique, phonétique, sonore etc. par lesquelles passe la conversation entre deux personnes  (cf. ci-dessous). Pour comprendre comment fonctionne une conversation on doit identifier ces couches et examiner le protocole qui règle le fonctionnement de chacune d’elles, ainsi que les interfaces qui leur permettent de communiquer. On peut citer aussi Karl Popper et son « modèle des trois mondes »[5] qui distingue et articule le « monde 1 » des objets et forces physiques, le « monde 2 » des états mentaux et le « monde 3 » des symboles, théories, problèmes, langages etc. Maurice Blondel évoque un modèle en couches lorsqu’il dit, dans une phrase d’une remarquable densité, « entre (la science, la morale et la métaphysique), il n’y a point de contradiction, parce que là où l’on a vu des réalités incompatibles il n’y a (…) que des phénomènes hétérogènes et solidaires[6] ».

Michel Foucault a décrit l’événement qui, à la fin du XVIIIème siècle, marqua le passage de la représentation classificatoire à la représentation organique de la nature : « Cuvier fera main basse sur les bocaux du Muséum, il les cassera et dissèquera toute la grande conserve classique de la visibilité animale[7] ». La classification des êtres vivants est une opération ensembliste : l’évaluation des ressemblances et différences permet de définir une « distance » puis une relation d’équivalence entre espèces, les espèces « semblables » étant celles qui sont proches selon la distance choisie[8]. L’approche organique considère par contre non des collections d’êtres semblables, mais l’articulation d’organes qui remplissent des fonctions complémentaires dans un même organisme. Si l’on peut définir le corps d’un animal comme un ensemble de cellules, il est souvent plus pertinent de le représenter comme un organisme : l’appartenance d’un bras ou d’un poumon au corps d’un être humain n’est pas de type ensembliste (ce n’est pas une inclusion), mais de type organique (l’organe a une fonction particulière, en relation avec les fonctions des autres organes). De même on peut définir un système d’information comme un ensemble de lignes de code source, mais il sera souvent plus pertinent de le représenter comme un organisme.

Le modèle en couches, qui articule des logiques différentes, relève de l’approche organique. Bien que son explicitation soit d’origine technique, elle constitue une innovation philosophique. Il ne semble pas cependant que les philosophes aient vu dans ce modèle un outil au service du travail intellectuel, même s’ils l’utilisent à l’occasion. Ce modèle est utile, plus généralement, à la pensée engagée dans la vie quotidienne. Ainsi dans un paysage comme « La montagne Sainte-Victoire vue de Bellevue », de Cézanne[9], on trouve une montagne (géologie) ; des arbres (botanique) ; un pont, des routes, des champs cultivés (action humaine) ; des nuages (météorologie). Ce paysage articule donc des êtres relevant chacun d’une logique et d’un rythme spécifiques. L’unité de temps est pour la géologie le million d’années, pour la couverture végétale le millénaire ou le siècle, pour les constructions humaines le siècle ou la dizaine d’années, pour le déplacement des animaux ou des nuages l’heure ou la journée. Chacune de ces couches se relie aux autres tout en obéissant à sa propre logique. Il serait impossible de rendre compte d’un paysage selon une seule logique, si ce n’est celle de la superposition des couches qui le composent : le modèle en couches permet de penser l’articulation de diverses logiques et de leurs divers rythmes.

Couches de l’ordinateur

Le processeur d'un ordinateur fonctionne très vite mais il ne peut reconnaître et exécuter qu'un nombre limité d'instructions élémentaires comme « copier dans un registre l’enregistrement  stocké dans la mémoire à telle adresse», « additionner le contenu de deux registres et noter le résultat dans un troisième », « vérifier si le contenu d’un registre est égal ou non à zéro », « vérifier si le contenu d’un registre est supérieur à celui d’un autre registre », « stocker le contenu d’un registre dans un enregistrement ayant telle adresse » etc.

L'ensemble de ces instructions constitue le langage machine que nous noterons L1. L1 est pauvre ; ses instructions s’écrivent sous forme de 0 et de 1 et il est très pénible de programmer dans ce langage. On écrit donc en L1 un ensemble d'instructions plus riche et plus proche du langage naturel et on construit à partir de ces instructions un nouveau langage L2 (« assembleur[10] ») qui sera plus facile à utiliser.

Il existe deux façons d'exécuter un programme écrit en L2 :
- un programme en L1 (traducteur ou compilateur, ces deux termes sont synonymes) remplace chaque instruction du programme en L2 par la suite équivalente des instructions en L1 (traduction ou compilation). L'ordinateur exécute ensuite le programme en L1 ainsi obtenu.
- on utilise un programme en L1 (interpréteur) capable, après avoir lu une instruction en L2, d'exécuter immédiatement la séquence en L1 équivalente (interprétation). L'interprétation évite de générer un programme en L1 mais elle est plus lente que l’exécution d’un programme compilé en L1.

Du point de vue de l'utilisateur, l'ordinateur doté d'un traducteur ou d'un interpréteur obéit aux instructions écrites en L2 aussi docilement que si elles étaient écrites en L1 : l'ensemble constitué de la machine physique M1, des langages L1 et L2 et de l'interpréteur (ou du traducteur) constitue la « machine virtuelle » M2. Pour celui qui écrit un programme en L2, M2 est aussi réelle que M1 (et son usage est plus commode).

Il existe cependant des limites à la complexité acceptable pour un traducteur ou un interpréteur. L2, bien que plus commode que L1, peut ne pas être encore le langage le plus convenable pour programmer. On écrit donc en L2 un ensemble d'instructions et on construit un nouveau langage plus commode, L3, qui définit la nouvelle machine virtuelle M3. Langages et machines virtuelles s'empilent ainsi jusqu'à la couche n.

Dans les années 40, les ordinateurs n'avaient que deux couches (ou « niveaux ») : le niveau machine traditionnel, dans lequel on programmait, et le niveau physique qui exécutait les programmes. Les circuits de ce dernier niveau étaient complexes, difficiles à construire et peu fiables.

Maurice Wilkes conçut en 1951 un ordinateur à trois couches pour simplifier le matériel. La machine disposait d'un interpréteur qui exécutait les programmes du niveau machine traditionnel. Le matériel ne devait plus alors exécuter que des microprogrammes dont le répertoire d'instructions était limité, et non des programmes en langage machine. Les assembleurs et compilateurs furent écrits dans les années 50. En 1954, le premier système d'exploitation (gestion automatique de la mémoire, gestion des répertoires de fichiers) fut conçu par Gene Amdahl pour l’IBM 704.

La plupart des ordinateurs actuels possèdent six couches :

Quelqu'un qui utilise un ordinateur pour faire du traitement de texte met en oeuvre un programme dont les instructions parviennent à la couche physique de l'ordinateur (processeur et mémoires) après une cascade de traductions et d'interprétations. Mais l'utilisateur peut ignorer ces opérations : pour lui, et dans le cadre de cette application, l'ordinateur fonctionne comme une machine de traitement de texte, et il n'a à connaître que cette machine. C’est pourquoi il est inexact de dire que son activité est « numérisée » même si l’ordinateur, pour exécuter ses ordres, les transcrit sous la forme de suites de 0 et 1.

Une instruction du niveau applicatif, traduite ou interprétée en cascade, engendre dans la couche microprogrammée de nombreuses instructions. Le temps d’exécution d’un programme peut s’évaluer en additionnant les temps unitaires d’exécution de chacune de ces dernières : ce calcul est une étape importante de l’évaluation d’un algorithme[11]. Si l'on veut optimiser le délai de traitement, il faut maîtriser la succession des instructions et pour cela programmer dans les « couches basses ». Cependant l'accroissement des performances des processeurs et de la taille des mémoires limite l'utilité de cette optimisation sauf pour certaines applications où la rapidité est cruciale. Les programmes sont presque tous écrits dans des langages de niveau élevé ; l’art du programmeur s’appuie alors sur une connaissance des propriétés du langage de programmation suffisante pour évaluer les conséquences « physiques » des choix faits dans les couches hautes.

L’utilisateur d’un ordinateur n’a à se soucier que du service rendu par la couche dont il se sert et qu'il considère comme une ressource physique (« matériel et logiciel sont équivalents ») ; celui qui programme un ordinateur optimise l’utilisation des ressources couche par couche, et non en considérant le processus d'ensemble : la simplicité que l’on gagne ainsi fait plus que compenser une éventuelle perte en efficacité physique.

Portée du modèle en couches

Pour montrer à quel point le modèle en couches est présent (le plus souvent de façon implicite) dans notre vie quotidienne, considérons la conversation entre deux personnes[12]. Elle emprunte les couches suivantes : conception et compréhension des idées à communiquer (logique) ; expression et décodage de ces idées dans un langage (sémantique) ; expression et décodage de ce langage dans des phonèmes (phonétique) ; mécanismes de l'articulation et de l'audition (physiologie) ; émission et réception d'ondes sonores (physique).

Deux personnes qui conversent font fonctionner ces diverses couches alternativement dans les deux sens mais elles ne s'intéressent qu'aux idées qu'elles émettent ou reçoivent. Les couches inférieures n'attirent l’attention que si elles fonctionnent mal : le passage de la couche phonétique à la couche sémantique se fait mal si l'un des locuteurs parle une langue ignorée de l'autre ; des interfaces peuvent être détériorées : c’est le cas si l'un des deux interlocuteurs est sourd ou aphasique ; les ondes sonores ne sont utilisables que si les deux interlocuteurs sont assez proches l’un de l’autre et si le milieu sonore ambiant n’est pas trop perturbé par le bruit.

Il suffirait d’ajouter quelques couches en bas du modèle pour représenter une conversation téléphonique : l’onde sonore est codée sous la forme d’une onde électromagnétique, numérisée dans le commutateur de départ, transportée par le réseau et décodée à l’arrivée.

Cet exemple montre que le modèle en couches décrit un empilage de conditions toutes simultanément et également nécessaires. Si, dans un produit qui comprend des 0 et des 1, tous les termes sont égaux à 1 sauf un seul qui est égal à 0, le produit est nul. De même, lorsqu’un phénomène obéit à plusieurs conditions simultanément nécessaires, elles doivent toutes êtres respectées pour que le phénomène puisse se produire. Dès lors il serait vain de se demander laquelle de ces couches est « la plus importante » ou de tenter d’établir entre elles une « hiérarchie » : le phénomène ne peut avoir lieu que si elles fonctionnent et communiquent toutes ensemble.

Le modèle en couches permet ainsi de faire l’économie de certaines réflexions stériles. On tente parfois de déterminer l'origine et le responsable de la réussite d'un processus, mais cet effort est vain puisque le processus a traversé plusieurs couches toutes nécessaires à sa réussite. Si le stratège doit concentrer son attention sur la question la plus importante du moment, il n'en doit pas moins rester attentif à la coopération de diverses couches toutes indispensables au processus ; son aptitude à coordonner des activités diverses se fonde sur sa connaissance de leur articulation. Cette coordination n'est pas mélodique (une seule ligne dont il faut suivre le déroulement dans le temps), mais polyphonique (plusieurs lignes qu’il faut suivre ensemble et qui s’articulent entre elles).


La conception d'un ordinateur
(Tracy Kidder, The Soul of a New Machine, Atlantic-Little, Brown 1981)

Ce livre raconte les étapes de la conception du mini-ordinateur Eclipse MV/8000 lancé par Data General en avril 1980.

Projet, réalisation, intégration, déboguage, sont autant d'aventures qui s'articulent lors de la conception sous une contrainte de délai toujours présente, toujours violée, toujours renouvelée. La mise au point des langages et celle du matériel se renvoient la balle ; des spécialités diverses, aux psychologies contrastées, s'entrecroisent. Assurer la compatibilité du produit avec la gamme de l'entreprise, le respect des interfaces, suppose des compromis fondés sur le sens du marketing et du possible technique. 

Les hommes qui font ce travail sont des ingénieurs au sens complet du terme : ils réalisent de façon ingénieuse un travail d'ingénierie. Ils se trouvent au front de taille de la recherche pratique, au point où elle pose des problèmes intellectuels d'une extrême subtilité, où elle rencontre la limite de notre connaissance de la nature. Ce sont des rêveurs pratiques, des passionnés. L'argent n'est pas leur moteur, ils le disent avec insistance et s'en étonnent eux-mêmes : ils ressemblent plutôt à ces alpinistes qui se lancent des défis. La limite qu'ils cherchent, ce n'est pas tant une limite individuelle qu'une limite humaine : ils veulent voir jusqu'où un être humain peut aller dans la clarté de la conception, la maîtrise de la complexité, la concentration de la pensée, la rapidité d'exécution, l'élégance de la démarche. Ce ne sont pas des égoïstes, mais des explorateurs de la nature humaine.

L'animateur de l'équipe, Tom West, manifeste son respect pour ses collaborateurs en étant froid et distant. « Pas de tapes dans le dos », dit-il : mais il leur délègue des responsabilités qu'ils n'auraient jamais pu avoir ailleurs, et conduit en stratège l'affaire vers le succès en assumant le poids des reproches et des frustrations de l'équipe. 

On trouve dans ce livre une excellente description intime de l'ordinateur, de la façon dont il est perçu, pensé, voulu par ceux qui le conçoivent. Les pages consacrées au microcode, à l'assembleur, à la conception des cartes, sont très pédagogiques. L'articulation des couches de l'ordinateur devient intuitive, palpable.

Les concepteurs de l'ordinateur en restent cependant à « la machine ». Ils ne s'intéressent pas à la diversité de ses utilisations potentielles (c'est une autre question, qui devra être traitée par d'autres personnes à un autre moment que celui de la conception), mais ils veillent à la doter des performances qui lui permettront d’être efficace dans la plus grande diversité d'utilisations possible. Ils créent et balisent ainsi l'espace où devra se conduire une recherche postérieure à la leur : la recherche sur les usages, sur l'assistance qu'apporte « la machine » au travail humain organisé. Le livre, qui s'arrête au moment où « la machine » quitte les mains des ingénieurs pour passer dans celles des vendeurs (la rencontre entre ces deux populations est décrite avec humour), ne considère pas cette deuxième phase de la recherche, celle qui se déroule chez les utilisateurs, les clients, les intégrateurs. 
 

Un changement du rapport avec la nature

On peut représenter l’effet des NTIC[13] sur l’économie selon un modèle à trois couches :

 

 

 

 

 

 

 

A la source se trouvent les techniques fondamentales : d’une part la fabrication des microprocesseurs et mémoires ; d’autre part les systèmes d’exploitation, langages et outils de programmation. Ces deux sous-ensembles sont d’ailleurs reliés entre eux (on n’utilise pas les mêmes langages de programmation selon la ressource de mémoire ou de puissance disponible).

Immédiatement en aval de cette source, se trouvent des équipements qui mettent en œuvre les techniques fondamentales (ordinateurs, réseaux, terminaux etc.), ainsi que les logiciels et progiciels applicatifs.

En aval des équipements et logiciels, se trouve leur mise en œuvre par les entreprises, associée à la maîtrise des processus de production, à la définition de la relation avec les clients, fournisseurs et partenaires, ainsi qu’à des formes spécifiques de concurrence.

Pour étudier les effets des NTIC sur l’économie on doit situer la frontière entre ce qui est appelé « NTIC » et ce qui est appelé « reste de l’économie ». On peut la placer de deux façons : la plus courante consiste à considérer que les ordinateurs et autres machines utilisant les techniques fondamentales relèvent des NTIC, et que la frontière se situe donc au niveau B ci-dessus.

Personne ne peut nier que les ordinateurs, commutateurs etc. ne soient des représentants éminents des NTIC. Cependant les évolutions de ces machines résultent, pour l’essentiel, des progrès des techniques fondamentales. Par exemple l’évolution exponentielle des performances des microprocesseurs et mémoires dont la « loi de Moore » rend compte est déterminante pour l’évolution des performances des ordinateurs.

Dans la couche finale, celle des utilisations, il s’agit de tirer le meilleur parti des évolutions permises par les ordinateurs, réseaux etc. ; dans la couche intermédiaire des équipements, il s’agit de tirer le meilleur parti des ressources offertes par les techniques fondamentales. Si chacune de ces deux couches obéit à sa logique propre, le moteur de leur évolution se trouve en amont. Si l’on souhaite isoler la source de l’évolution, qui réside dans les techniques fondamentales, il faut placer la frontière au niveau A.

Dans la couche initiale, celle des techniques fondamentales, il ne s’agit pas d’utiliser des ressources produites en amont, mais de créer des ressources par la maîtrise des propriétés physiques du silicium, et (osons le dire) par la maîtrise des conditions mentales de la production et de l’utilisation des langages de programmation, le terme « mental » recouvrant un ensemble de dimensions intellectuelles, psychologiques et sociologiques.

Ainsi, alors que les deux autres couches résolvent un problème économique (il s’agit de faire au mieux avec les ressources dont elles disposent), la couche initiale considère la nature elle-même, sous les deux aspects de la physique du silicium et de la « matière grise » des êtres humains, aspects dont elle vise à faire fructifier la synergie. Dans la couche des techniques fondamentales s’opère le changement des rapports avec la nature ; dans les deux autres couches s’opère l’adaptation à ce changement.

Élargir, par des procédés de mieux en mieux conçus, les ressources que fournit la nature, c’est une tâche analogue à la découverte ou plutôt à l’exploration progressive d’un continent nouveau que des pionniers transformeraient et équiperaient pour produire des biens utiles. Or découvrir un continent, puis l’explorer pour le mettre en exploitation, c’est transformer les prémisses de la réflexion et de l’action économiques, c’est modifier les conditions de la vie en société.

Tout raisonnement économique est fondé sur des exogènes (techniques, ressources naturelles, fonctions d’utilité, dotations initiales). Il en tire les conséquences, élucide les conditions de leur utilisation optimale, mais il ne tente pas d’expliquer leur origine. Sans doute la recherche du profit n’est pas pour rien dans l’ardeur des pionniers ou des chercheurs ; mais cette ardeur se dépenserait en pure perte si elle ne pouvait pas mettre en exploitation une ressource naturelle féconde (ici le silicium, la « matière grise », et leur synergie).

On rencontre donc dans les techniques fondamentales un phénomène qui n’est ni économique ni sociologique, même s’il a des conditions comme des conséquences économiques et sociales : un changement du rapport entre les êtres humains et la nature. L’innovation qui se déverse dans l’économie, dans la société, à partir des techniques fondamentales est analogue à un phénomène naturel, extérieur à l’action humaine qu’il conditionne comme le font le climat, les courants océaniques, la reproduction des êtres vivants, les gisements légués par l’histoire géologique de la Terre etc.

Est-ce à dire que l’économie ou la sociologie n’ont rien à voir avec les NTIC ? certes non, puisqu’elle doit répondre aux problèmes que pose leur bonne utilisation : les exogènes étant modifiées, comment « faire au mieux avec ce que l’on a » et qui est nouveau ? comment faire évoluer des institutions adaptées aux exogènes antérieures, mais qui ne le sont pas nécessairement aux exogènes nouvelles ? comment définir le « savoir vivre » nouveau qui permettra de préserver la cohésion sociale dans une société bouleversée par l’innovation ?

Cette tâche n’est pas facile. Considérons les efforts que doivent réaliser les entreprises pour modifier les processus et les conditions de travail des opérationnels de la première ligne ; adapter les périmètres des directions, les missions et les espaces de légitimité des dirigeants, les indicateurs de pilotage ; équiper et faire évoluer les relations avec les clients, partenaires et fournisseurs etc.


[1] Andrew Tanenbaum, Operating Systems, Design and Implementation, Prentice-Hall 1987.

[2] « Open Systems Interconnection » publié de 1977 à 1986 par l’International Standard Organization.

[3] Andrew Tanenbaum, Computer Networks, Prentice-Hall 1989.

[4] Ferdinand de Saussure, Cours de Linguistique générale, Payot 1916, p. 27.

[5] Karl Popper, Objective Knowledge, Oxford University Press, 1979 ; traduction La connaissance objective, Flammarion 1998, p. 181.

[6] Maurice Blondel, L’Action, Félix Alcan 1893, p. XXII.

[7] Michel Foucault, Les mots et les choses, Gallimard 1966, p. 150.

[8] Michel Volle, Analyse des données, Economica 1997, p. 251.

[9] Paul Cézanne, La montagne Sainte-Victoire vue de Bellevue, 1882-1885, New York, Metropolitan Museum of Art.

[10] Pour expliciter la façon dont la machine exécute les algorithmes et donner à ceux-ci la forme précise et complète que seule procure l’écriture d’un programme, Donald Knuth  a défini l’ordinateur MIX (1009 en chiffres romains) et le langage assembleur MIXAL (Donald Knuth, The Art of Computer Programming, Addison Wesley 1997, pp. 124 et 144). Le lecteur peut ainsi, moyennant un effort d’attention, comprendre entièrement la façon dont l’algorithme est exécuté et en déduire les limites du calcul, la durée d’exécution etc. Pour tenir compte de l’évolution des processeurs Knuth a aussi défini le MMIX (2009) dont on trouve la description sur son site http://www-cs-faculty.stanford.edu/~knuth/ .

[11] Donald Knuth , The Art of Computer Programming, Addison Wesley 1997, p. 170.

[12] Ferdinand de Saussure, Cours de Linguistique générale, Payot 1916, p. 27.

[13] « Nouvelles technologies de l’information et de la communication » (il aurait mieux valu dire « nouvelles techniques » : le mot « technologie », dont l’étymologie est « discours sur la technique », est emphatique).