FR 2848690 A1 20040618 FR 0216335 A 20021213 PROCEDE DE CONCEPTION D'UN SYSTEME TOLERANT AUX FAUTES La présente invention est relative à procédé de conception d'un système tolérant aux fautes. On connaît des ensembles de systèmes électroniques de ce type, conçus notamment pour équiper des véhicules automobiles. Un tel véhicule comprend couramment plusieurs systèmes assurant chacun l'exécution d'une prestation telle 10 que la commande du moteur propulsant le véhicule, la gestion de la climatisation de l'habitacle, la gestion des liaisons du véhicule au sol (freinage, suspension...), la gestion de communications téléphoniques, etc, etc... On a schématisé à la figure 1 du dessin annexé les 15 composants matériels de l'ensemble de ces systèmes. Ces composants comprennent essentiellement des unités de commande électroniques ou "calculateurs" UCEm, chaque calculateur étant éventuellement connecté à des capteurs Cni et à des actionneurs A7j, tous les calculateurs étant 20 connectés à au moins un même bus B pour y émettre ou recevoir des informations par exemple multiplexées, en provenance ou à destination des autres calculateurs connectés au bus B. Ce multiplexage est obtenu notamment, comme cela est 25 bien connu pour le bus CAN par exemple, en introduisant les informations en cause dans des messages matérialisés par des trames de signaux numériques. A titre d'exemple illustratif, le système S2 de "commande du moteur" comprend le calculateur UCE2, 30 plusieurs capteurs C 2i sensibles à des grandeurs telles que le régime du moteur, à combustion interne par exemple, la pression au collecteur d'admission de ce moteur, la pression de l'air extérieur, la température de l'eau de refroidissement du moteur, celle de l'air, l'état de charge 35 de la batterie, etc, etc..., et plusieurs actionneurs A 2. Le calculateur UCE2 est dment programmé pour exécuter plusieurs fonctions de commande du moteur telles que: la régulation de ralenti, la régulation de la richesse du - mélange air/carburant, le réglage de l'avance à l'allumage 5 de ce mélange et la recirculation des gaz d'échappement. Pour ce faire le calculateur UCE2 exploite des informations venues des capteurs C2 précités et élabore des signaux de commande des actionneurs A 2j constitués par une vanne de commande d'air additionnel et une bobine d'allumage de 10 bougie pour la fonction "régulation de ralenti", un injecteur de carburant pour la fonction "régulateur de richesse", la même bobine d'allumage pour la fonction "avance de l'allumage" et une vanne pour la fonction "recirculation de gaz d'échappement". Les autres "prestations" évoquées ci-dessus, "climatisation de l'habitacle", "liaison avec le sol", "condamnation/décondamnation du véhicule" etc.. sont exécutées par des systèmes d'architecture analogue à celle présentée ci-dessus pour la commande du moteur. Tous ces systèmes mis en communication par un même bus B constituent un réseau multiplexé. On conçoit alors que plusieurs fonctions relevant de systèmes différents peuvent exploiter des informations issues de mêmes capteurs, par exemple, ce qui évite de coteuses redondances dans la 25 structure de l'ensemble des systèmes. L'utilisation d'un réseau multiplexé permet aussi de réduire de manière très importante la longueur des lignes électriques interconnectant les différents éléments de l'ensemble. Un tel ensemble multiplexé permet aussi la mise en place de 30 fonctions non classiques et éventuellement complexes, faisant intervenir parfois plusieurs systèmes et dites pour cette raison "transversales". A titre d'exemple illustratif et non limitatif, la perception de l'information "sac d'air (ou "airbag") déclenché", significative de ce que le 35 véhicule a subi un choc, peut être traitée alors de manière à commander l'émission d'un appel au secours par un dispositif de téléphonie mobile embarqué dans le véhicule. Pour certains systèmes, dits critiques, c'est à dire dont une défaillance peut porter atteinte à la sécurité des 5 personnes, la conception et particulièrement le diagnostic des défauts de fonctionnement revêt une importance particulière en ce que les éventuelles erreurs doivent être absolument mises en évidence et la mise en oeuvre de mesures correctives doit se faire srement et parfois sans 10 que le système ne cesse de fonctionner. On parle alors de systèmes tolérants aux fautes. La tolérance aux fautes signifie que le système doit fonctionner même si une faute, par exemple une panne d'un capteur ou d'un actionneur, apparaît. Les exigences de tolérance aux fautes, les types de faute et ce qu'elles impliquent en terme de redondance sont des éléments bien connus lorsque l'on considère des problèmes très ciblés comme par exemple la synchronisation d'horloge entre calculateurs redondés, la transmission d'un 20 message entre deux processus, etc... Une telle exigence peut être spécifiée de manière plus ou moins précise. De manière la plus simple qui soit, la tolérance à une faute signifie que si seule une faute (quelconque) est observée, alors le système doit continuer 25 à fonctionner. Les fautes sont par exemple une erreur d'exécution d'un processus sur une cible matérielle (détectée par exemple par un Cyclic Redundancy Check ou test de redondance cyclique), un fil coupé, un court-circuit, un 30 bus de communication défectueux, une mauvaise synchronisation lors d'un envoi ou d'une réception de message. Les fautes ont des caractéristiques temporelles, leur durée, leur probabilité d'occurrence, leur caractère 35 prévisible ou imprévisible, leur caractère continu ou transitoire. A chaque faute peuvent correspondre des mesures correctives spécifiques visant à réduire sa probabilité d'occurrence et/ou de nuisance. Ces mesures correctives 5 correspondent souvent à une redondance dans le temps ou l'espace d'une exécution de programme ou d'un flot de données. Si l'on veut tolérer une erreur transitoire d'exécution d'un programme sur un processeur, une solution consiste à exécuter plusieurs fois ledit programme. Si l'on 10 veut tolérer la coupure d'un bus sur lequel circule une donnée critique, il faut redonder ledit bus afin que la dite donnée puisse circuler par deux chemins indépendants afin de continuer à être transmise en cas d'indisponibilité d'un des deux bus, etc... Evidemment, toute solution au problème de la tolérance aux fautes se traduit par un cot de développement et de ressources supplémentaires et paradoxalement par une plus grande exposition aux fautes, puisque par exemple deux processus ont plus de chance d'être affectés par une faute 20 qu'un seul. Cependant, l'exposition supplémentaire de deux bus en comparaison d'un seul à une panne est largement compensée par la petitesse du produit des probabilités que chaque bus tombe en panne, produit qui représente le cas o les deux bus tombent en panne en même temps, en comparaison 25 de la probabilité de défaillance d'un unique bus. Les fautes des différents composants d'une architecture fonctionnelle et/ou matérielle étant déterminées, plusieurs niveaux de réponse peuvent être apportés: - un composant sans garantie de tolérance aux fautes peut émettre une donnée erronée dans n'importe quel contexte, - un composant silencieux en cas d'occurrence d'une faute (en anglais Fail Silent) est un 35 composant qui émet une donnée correcte ou qui, s'il est affecté par au plus une faute, n'émet rien - un composant silencieux en cas d'occurrence de deux fautes est un composant qui émet une donnée correcte ou rien s'il est affecté par au plus deux fautes, - un composant tolérant à une faute (en anglais Fault tolerant) est un composant qui émet une donnée correcte s'il est affecté par au plus une faute, - on étend sans peine ces définitions à la tolérance d'un nombre arbitraire de pannes, On appelle "niveau de tolérance aux fautes" d'un composant, le niveau de réponse nécessaire pour satisfaire aux exigences de tolérances aux fautes dudit composant. La tolérance aux fautes peut être exprimée de manière probabiliste. On peut, par exemple, exiger qu'un composant soit tolérant à au plus deux fautes avec une probabilité d'échec de la tolérance de 10-9 par heure de fonctionnement. Dans ce cas, les caractéristiques de 20 probabilité de panne des composants matériels qui sont mis en oeuvre sont exploitées pour l'analyse. Par exemple, on connaît la probabilité d'un défaut de connexion d'une pine, ou broche, dans un connecteur. Pour ce qui est des applications tolérantes aux fautes 25 existantes, on peut citer le cas d'un avion de ligne à réaction qui s'il perd un de ses réacteurs doit encore pouvoir se poser dans de bonnes conditions. Dans l'état de l'art, la tolérance aux fautes se travaille en essayant de déterminer une architecture 30 matérielle tolérante aux fautes, après une analyse fonctionnelle préliminaire, puis en menant le développement sur l'architecture figée. Cette approche pose plusieurs problèmes. Tout d'abord, la complexité de l'analyse résultant du 35 fait que l'on aborde l'ingénierie système en "un bloc". Par exemple, des formalismes récents comme le bus critique TTP prétendent être une solution à la mise en oeuvre de systèmes tolérants aux fautes, le processus proposé étant de développer un systèmes tolérant aux fautes autour d'une 5 architecture de calculateur et d'un réseau TTP déjà établi avec ses propres outils. La question du développement logiciel se pose ensuite. Ensuite, le manque de rigueur résultant de cette complexité oblige à mélanger de nombreux concepts 10 différents. Par exemple, un bus temporel de communication comme le produit TTP ayant été choisi, ce bus contient intrinsèquement un certain niveau de redondance, mais les calculateurs connectés au bus n'ont pas de redondance à priori, de même l'exécution de logiciels sur ces dits 15 calculateurs n'est pas tolérante à priori, etc.. . Finalement, et c'est peut être le plus important, les approches existantes proposent une architecture matérielle dite "tolérante aux fautes" en amont d'un développement de l'application. De la sorte, la réutilisation de fonctions 20 critiques d'une architecture matérielle vers une autre est compromise dès le début de l'étape de conception. Pour répondre à ces problèmes, l'inventeur a découvert que l'on pouvait raisonner par couches en séparant: - une première étape de spécification de tolérance aux fautes à un niveau application qui débouche sur une architecture fonctionnelle faisant intervenir des capteurs des actionneurs et des fonctions; - une deuxième étape de spécification des exigences de tolérances aux fautes de l'architecture fonctionnelle résultant de la première étape; - une étape de raffinement des exigences de tolérances au fautes des deux étapes précédentes 35 lors du placement sur une architecture électrique électronique pour obtenir les exigences de tolérance aux fautes de l'architecture fonctionnelle et matérielle résultante. Pour reprendre l'exemple d'un avion bi-réacteurs, les 5 exigences de tolérance aux fautes au niveau application sont que l'avion doit pouvoir fonctionner avec les deux réacteurs ou avec un seul des ses réacteurs, qu'il s'agisse du gauche ou du droit. On fait de plus l'hypothèse qu'aucune réponse n'existe si les deux réacteurs ne 10 fonctionnent plus, auquel cas aucun comportement n'est garanti. Dans la première étape, le traitement des exigences de tolérance aux fautes au niveau fonctionnel fait apparaître par exemple trois fonctions de commande "Fnormal", 15 "Fgauche" et "Fdroit", chacune de ces fonctions prenant en entrée des données provenant de nombreux capteurs et commandant pour "Fnormal" l'alimentation en carburant des deux réacteurs, pour "Fgauche" l'alimentation du réacteur gauche et pour "Fdroit" l'alimentation du réacteur droit. 20 Notons qu'à la fin de cette étape, on fait l'hypothèse que les fonctions "Fnormal", "Fgauche" et "Fdroit" ont ellesmêmes un comportement garanti et c'est la validation de cette hypothèse qui motive la seconde étape. Dans la seconde étape, si l'on veut maintenant traiter 25 les exigences de tolérance aux fautes au niveau de l'architecture fonctionnelle des capteurs, actionneurs, alimentations et fonctions, il faut que les fonctions "Fnormal", "Fgauche", "Fdroit" répondent chacune aux mêmes exigences de tolérance aux fautes ou à des exigences 30 déduites de celles du niveau application. Notons qu'en effet, il ne sert à rien de prévoir des mécanisme complexes de vol avec un seul réacteur si la fonction qui commande le bon fonctionnement des deux réacteurs n'est elle- même pas sre. Ceci va impliquer un certain niveau de redondance des 35 capteurs, actionneurs, alimentations et fonctions comme précisé plus loin dans la description. Il est important de noter que cette affectation de tolérance aux fautes des capteurs, actionneurs, alimentations et fonctions est complètement indépendante de l'étape précédente. Dans la troisième étape, au moment du placement des différentes fonctions sur une architecture matérielle, c'est à dire en précisant quels calculateurs, bus de communication et autres éléments de connectique vont mettre en oeuvre les fonctions "Fnormal", "Fgauche", "Fdroit", il 10 faut vérifier que ladite architecture matérielle satisfait bien aux exigences de tolérance aux fautes des différents capteurs, actionneurs et fonctions mis en oeuvre ou, de manière duale, déduire dudit placement les exigences de tolérance aux fautes sur les composants de l'architecture 15 matérielle qui devront alors être redondés de manière idoine. Notons que l'énergie peut être considérée comme une donnée et la batterie, comme un calculateur procurant les données du type énergie. Finalement, il faut préciser que, dans la gestion des exigences de tolérance aux fautes, la prise en compte du facteur temps n'a pas besoin d'être spécifiée, bien que le système décrit puisse être temps-réel et même temps-réel dur. Du reste, elle peut être traitée séparément, par 25 exemple, en associant à chaque donnée, un entier qui caractérise un moment de saisie, un âge approché de la donnée dans un cadre "asynchrone" ou en prenant l'hypothèse dite "synchrone" que toutes les opérations sont réalisées en un temps nul ou négligeable. A posteriori, une fois le 30 design terminé, les processeurs et bus de communication doivent bien sr être dimensionnés pour répondre aux exigences temporelles de l'application tolérante aux fautes spécifiée, le retard d'un message pouvant être assimilé à une absence de message par un consommateur dudit message. Finalement, cette réponse aux problèmes énoncés cidessus permet une mise eu oeuvre économique dans la mesure o, dans chacune des étapes, on met en oeuvre la tolérance aux fautes au juste nécessaire, chaque copie ou réplicat étant duement justifié pour chaque fonction. Pour permettre la mise en oeuvre au juste nécessaire de la tolérance aux fautes sur une application critique, 5 l'invention vise donc un procédé de conception d'un système tolérant aux fautes caractérisé en ce que les exigences de tolérance aux fautes sont déterminées itérativement pour chaque fonction suivant les étapes: a) on spécifie des niveaux de tolérance aux fautes aux différents actionneurs du système, b) on détermine automatiquement l'ensemble des fonctions pour lesquelles les exigences de tolérance aux fautes ne sont pas 15 entièrement spécifiées, c'est à dire celles pour lesquelles des sorties ont été affectées de caractéristiques de tolérance et qui n'ont pas encore été traitées dans une des étapes précédentes, c) pour chaque fonction de l'ensemble calculé en b), on procède à une analyse spécifique pour déterminer: i) quelles sont les entrées sur lesquelles les caractéristiques de tolérance aux fautes 25 doivent être exigées, ii) quelle est l'exigence de tolérance aux fautes sur ladite fonction, d) on itère les étapes b) puis c) jusqu'à ce que l'ensemble déterminé à l'étape 30 b) soit vide. e) un capteur hérite du niveau de tolérance aux fautes de sa donnée émise de plus haut niveau de tolérance aux fautes. Grâce à ce procédé, on peut spécifier localement, pour 35 chaque fonction, des exigences de tolérance aux fautes qui permettront si elles sont toutes satisfaites d'atteindre le niveau de tolérance aux fautes de l'ensemble. Selon des caractéristiques particulières, dans le procédé succinctement exposé ci-dessus, i) étant donnée une exigence de tolérance aux fautes sur l'architecture fonctionnelle et une mise en oeuvre de 5 cette tolérance aux fautes, notamment par des copies, pour au moins un flot de données et/ou au moins une fonction et/ou au moins un capteur et/ou au moins un actionneur et étant donné un placement de l'architecture fonctionnelle sur une architecture matérielle comportant des calculateurs 10 et une connectique, ii) pour au moins un flot de données et/ou au moins une fonction, on détermine s'il existe un défaut des composants après placement du fonctionnel sur le matériel pouvant affecter deux copies d'un même composant, auquel 15 cas le placement ne satisfait pas les exigences de tolérance aux fautes. Grâce à ces dispositions, on peut réaliser une architecture matérielle qui satisfait les exigences de tolérance aux fautes spécifiées sur l'architecture 20 fonctionnelle lorsque ces exigences sont exprimées en nombre de fautes à tolérer. Selon des caractéristiques particulières, dans le procédé succinctement exposé ci-dessus, i) étant donnée une exigence de tolérance aux fautes 25 sur l'architecture fonctionnelle et une mise en oeuvre de cette tolérance aux fautes, notamment par des copies, pour au moins un flot de données et/ou au moins une fonction et/ou au moins un capteur et/ou au moins un actionneur, et étant donné un placement de l'architecture fonctionnelle 30 sur une architecture matérielle comportant des calculateurs, une connectique et des caractéristiques de tolérance aux fautes de ces composants, ii) pour au moins un flot de données et/ou au moins une fonction, on détermine si on a placé plus de copies sur 35 un composant que son niveau de tolérance aux fautes ne peut supporter. Grâce à ces dispositions, on peut réaliser une architecture matérielle qui satisfait les exigences de tolérance aux fautes spécifiées sur l'architecture fonctionnelle lorsque ces exigences sont exprimées en nombre de fautes à tolérer dans un laps de temps prédéfini, ou par une probabilité. D'autres buts, caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description qui va suivre et à l'examen du dessin annexé dans lequel - la figure 1 est un schéma d'un ensemble de sysLèmes électroniques qu'on se propose de doter de moyens de diagnostic de défauts de fonctionnement suivant la présente invention, cet ensemble étant décrit dans le préambule de la présente description et, - la figure 2 illustre le placement d'une architecture fonctionnelle sur une architecture matérielle, - la figure 3 illustre les étapes d'étiquetage par des exigences de tolérance aux fautes d'une 20 architecture puis un mode de réalisation de ces exigences, - la figure 4 illustre les mêmes étapes ainsi que le raffinement des exigences de tolérance aux fautes lors du placement sur une architecture 25 matérielle, - la figure 5 illustre la stabilité de l'étiquetage de tolérance aux fautes par composition fonctionnelle et - la figure 6 illustre le processus de conception d'une architecture tolérante aux fautes visée par cette invention En figure 2, la fonction "Calcul vitesse roue" 405 consomme une donnée brute "V' 403, provenant du capteur vitesse roue 401. Dans un mode de réalisation particulier, le capteur vitesse 420 est rattaché à un calculateur 436 et la fonction "Calcul vitesse roue" 405 est réalisée par un processus exécuté sur un autre calculateur 434. La transformation du capteur vitesse 401 d'une architecture fonctionnelle en capteur vitesse 420 d'une 5 architecture matérielle est symbolisé par la flèche 410. De même, l'implantation de la fonction "Calcul vitesse roue" 405 de l'architecture fonctionnelle sur le calculateur 434 est symbolisé par la transformation 412. On note que le flot de données entre le capteur vitesse 401 et la fonction 10 "Calcul vitesse roue" 405 est transformé en un chemin complexe de l'architecture matérielle impliquant: - deux calculateurs 436 et 434 et leur connecteurs respectifs 428 et 432, - un réseau 430, - des liaisons filaires 422 et 426 et - un connecteur de faisceaux 424 En Figure 3, on décrit une fonction F 603 ayant au moins un flot d'entrée "i" 601 et un flot de sortie "o" 605. D'autres données d'entrées ou de sortie ne sont pas 20 décrites pour la simplicité de la description. On décrit d'autre part, avec les objets 611 à 615, comment les entrées et sorties de F et F elle-même peuvent être affectés d'attributs de tolérance aux fautes. On note "FT(F)" (613) la fonction F affectée d'une exigence de 25 tolérance aux fautes., "FT(o)" (615) la donnée "o" affectée d'une exigence de tolérance aux fautes et "FS(i)" (611) la donnée "i" affectée d'une exigence de silence en cas de faute. Suivant le processus décrit dans l'invention, 30 l'exigence FT(o) provient à un moment donné du procédé, d'une exigence de tolérance aux fautes sur la donnée "o" déterminée par un consommateur de cette donnée. Dans la Figure 3, le concepteur a déduit de cette première exigence que F elle-même devait être tolérante aux fautes et que 35 l'entrée "i" devait être silencieuse en cas de défaut. Dans une étape ultérieure du procédé décrit ici, on voit, toujours en figure 3, avec les objets 621 à 655, comment les exigences de tolérance aux fautes sur la fonction F et ses entrées/sorties se traduisent par des réplicats ou copies d'exécution de la fonction F elle-même et des différents flots de données d'entrée et sortie. Dans 5 l'exemple, on prend l'hypothèse que les différentes fautes que l'on tolère sont symétriques et donc on construit trois réplicats d'un objet tolérant aux fautes et deux réplicats d'un objet silencieux en cas de faute, d'o une solution possible représentée en figure 3 o Fl 641, F2 643 et F3 10 645 sont des réplicats de la fonction F. les flots FT(o), 651, FT(o), 653, FT(o)3 655 sont des réplicats du flot "o", les flots FS(i)1 621, 625, 629 et FS(i)2 623, 627, 631 sont des réplicats du flot d'entrée "i'. On note que, dans le mode de réalisation choisit dans 15 cet exemple, le flot FT(o)1 est calculé en fonction des réplicats Ilo2I1(624) et 0o3" (626) de "o" provenant des exécutions de F, et FI d'une part et de l'exécution de F d'autre part. Dans un mode de réalisation particulier, 012"(624) et "o3"(626) sont utilisés notamment pour vérifier 20 que le calcul de F1 s'est déroulé de manière synchronisée avec F2 et F3. En effet, la description des flots de données ne présage pas d'un mode de réalisation synchrone ou asynchrone et il faut alors que les exécutions de Fi, F2 et F3 soient suffisamment rapprochées dans le temps pour 25 répondre aux exigences fonctionnelles de la fonction F. Exécuter deux copies de F avec des données d'entrées qui correspondraient à des échantillonage très distants dans le temps n'aurait aucun sens. On dira que des réplicats d'un objet sont libres si on 30 ne peut pas en trouver deux qui puissent être affectés par une faute commune. En cela l'exemple de la fonction G en figure 3, objets 671 à 675, montre un cas o deux flots de données xl 673 et x2 675 sont liés car un défaut de la fonction G 671 impacte potentiellement xl et x2. Associé à la mise en oeuvre de la tolérance aux fautes de la fonction F. ont déduit un certain nombre de conditions supplémentaires qu'il sera nécessaire de valider dans les étapes ultérieures de conception. D'abord, dans tout mode de réalisation, les flots FT(o), 651, FT(o)2 653 et FT(o)3 655 doivent rester libres, c'est à dire qu'il ne faut pas qu'une erreur dans le flot de données en amont puisse impacter à la fois deux de ces trois flots. De même, - FS(i)>et FS(i)2 doivent être libres, - F1, F2' F3 doivent être libres, - les échanges de "o1" à destination de F2 (622)et à destination de F3 (628) doivent être libres, - idem pour les échanges de "O2"l et "o3" provenant respectivement de F2 et F3, c'est à dire respectivement (624) et (630) d'une part, (632) et 15 (626) d'autre part. D'autres mises en oeuvres de la tolérance aux fautes sont possibles et l'on peut déterminer alors les contraintes associées. On peut par exemple envisager 4 réplicats pour la fonction F au lieu de 3 dans notre 20 exemple, les exigences évoluant en fonction du mode de réalisation. Dans le cadre d'un placement sur une architecture matérielle de l'architecture fonctionnelle résultant de l'analyse de tolérance aux fautes, constituée des éléments 25 621 à 655, ce placement doit respecter les exigences de liberté listées ci-dessus, c'est à dire que les éléments placés doivent satisfaire aux mêmes exigences de liberté que les éléments avant placement. En Figure 4, on illustre, de la même manière qu'en 30 figure 3, les différentes étapes de l'analyse de tolérance aux fautes mais dans le cas d'une fonction dont la sortie a pour exigence d'être silencieuse en cas de faute. Dans la première étape, objets 701 à 705, on décrit l'interface d'une fonction J 703 ayant un flot de données 35 d'entrée "ki" 701 et un flot de données de sortie "i" 705. Dans la seconde étape, objets 711 à 715, suite à l'analyse remontante de tolérance aux fautes depuis les actionneurs jusqu'aux capteurs du système, des attributs de 1-5 tolérance aux fautes ont été attribués à la fonction J et à ses flots d'entrée (711) et de sortie (715). FS(J) 713 est une indication que J doit être un processus silencieux en cas de défaut. Dans la troisième étape, objets 721 à 735, on propose un mode de réalisation de la tolérance aux fautes avec, comme en figure 3, des réplicats des différents objets. Ces réplicats sont affectés de conditions de liberté et notamment, à titre d'exemple, la condition que les flots de 10 données i1 et i2 soient libres, et que les processus Jl et J2 soient libres. Dans la quatrième étape, celle du placement, le processus J1 est exécuté sur un calculateur 741 et le processus J2 est exécuté sur un autre calculateur 743- Dans 15 ces conditions l'exécution de J1 et J2 est bien libre et la condition de liberté au niveau fonctionnel est bien satisfaite dans le mode de réalisation. Si par contre, les flots de données "il" et "i2' circulent tous deux sur le bus 745 par décision du concepteur, la condition de liberté des 20 flots "ilet "i2" n'est pas satisfaite car un défaut du bus peut créer une erreur sur ces deux flots. Il faudra donc pour répondre aux exigences de tolérance aux fautes, faire circuler par exemple le flot de données 'il' sur le bus 745, et le flot de données "i2" sur le bus 747. Notons que lors du placement, on procède bien à un raffinement des exigences de tolérance aux fautes. Par exemple, la condition que les flots "il' et "12" soient libres devient après placement que les mises en oeuvre respectives de chacun de ces flots lors du placement soient 30 libres. Si maintenant, on dispose de données probabilistes, le problème de la tolérance aux fautes est résolu de manière plus précise. Les conditions de liberté s'expriment maintenant avec des probabilités. Si "p"' est la probabilité maximale pour laquelle les flots de données "i' et "'i2" peuvent être affectés par une faute commune suite à l'analyse de tolérance aux fautes pour un laps de temps de référence, la probabilité"p" est représentative du degré de liberté des flots de données ''il'' et i2" . Alors si les flots de données "il|' et 12" circulent sur un bus dont la probabilité de panne est inférieure à "p", il n'y a aucun problème. Si au contraire 5 la probabilité de panne "pl" du bus 745 et la probabilité de panne "p2" du bus 747, sont telles que le produit pl*p2 est supérieur à "p', alors même en faisant circuler le flot de données Ili, sur le bus 745 et le flot de données "i2' sur le bus 747, on n'atteint pas l'objectif de tolérance 10 aux fautes et le concepteur doit envisager un mode de réalisation plus fiable. En figure 5, on montre comment la propagation des contraintes de tolérance aux fautes est stable par composition fonctionnelle. Cela illustre comment la gestion 15 des réplicats peut se faire au niveau de chaque fonction et comment l'intégrité du placement par rapport aux exigences de tolérance aux fautes peut se traiter au niveau de chanige fonction, puis pour un ensemble de fonctions. Les exemples des figures 3 et 4 sont repris pour les 20 deux premières étapes, composants 601 à 605 et 701 à 705 puis composants 611 à 615 et 711 à 715 pour montrer comment une analyse locale à chaque fonction reste pertinente lorsque l'on examine les échanges entre deux fonctions, et par extension entre un capteur et une fonction ou entre une 25 fonction et un actionneur. On note l'identification des flots de donnée 601 et 705 au moment de la composition, puisqu'on s'aperçoit que "i" appartient à la fois au producteur et au consommateur du flot. Il faut noter que si plusieurs consommateurs existent, c'est le plus exigent des 30 consommateurs qui fixe le nombre de réplicats. Si trois réplicats d'une donnée sont disponibles et qu'une fonction n'a pas d'exigence de tolérance aux fautes sur ce flot, elle en choisit un. Le contour 821 en figure 5 illustre la composition au 35 niveau fonctionnel des solutions retenues pour les fonctions F et J décrite en figures 3 et 4. On note que comme pour le flot de données "il', mentionné ci-dessus, les flots 725 d'une part et 621, 625 et 629 d'autre part sont identifiés, de même que les flots 735 et 623, 627, 631. Les exigences de liberté pour la composée des fonctions F et J est la réunion des exigences de liberté 5 pour la fonction F et des exigences de liberté pour la fonction J. De cette manière on conçoit itérativement toute l'architecture fonctionnelle tolérante aux fautes intégrant les réplicats nécessaires, à partir d'une architecture 10 fonctionnelle à laquelle on a attaché des attributs de tolérance aux fautes. Pour conclure sur la composition des fonctions, notons qu'un flot de données émis par une fonction hérite du niveau de tolérance le plus élevé imposé par les fonctions 15 consommatrices dudit flot. Dès lors si deux fonctions M et N sont consommatrices d'un flot de données f et si par ailleurs M impose que f soit tolérant aux fautes alors que N n'impose aucune contrainte de tolérance aux fautes, alors, si par exemple f possède trois réplicats pour 20 répondre aux contraintes de M, N peut très bien ne consommer que l'un de ces trois réplicats par soucis d'économie. Une fois le placement effectué, il est judicieux de choisir pour N le réplicat dont la mise en oeuvre est la moins coteuse, par exemple, ou la plus sre 25 suivant le(s) critère(s) que l'on souhaite optimiser. En Figure 6, on décrit le processus de conception d'une architecture tolérante aux fautes. Etant donnée au début 901 une architecture fonctionnelle composée de capteurs (logiques), de fonctions 30 et d'actionneurs. Certaines fonctions peuvent symboliser des alimentations. Les flots de données décrit ici peuvent être, par exemple, un courant continu dans un fil. On identifie dans l'étape a) les actionneurs qui ont des missions critiques et l'homme du métier indique les 35 caractéristiques de leur commande: tolérance aux fautes si la commande est critique et nécessaire, silence en cas de défaut si lactionneur peut être stoppé en cas de défaut, rien si aucune exigence n'est spécifiée. Par exemple un feu de signalisation n'a peut-être pas besoin d'être tolérant aux fautes... Puis, par un procédé itératif, on détermine les caractéristiques de tolérance aux fautes de l'architecture 5 de capteurs, actionneurs, fonctions dite architecture fonctionnelle Dans l'étape b), on détermine automatiquement l'ensemble des fonctions pour lesquelles les exigences de tolérance aux fautes ne sont pas entièrement spécifiées, 10 c'est à dire celles pour lesquelles des sorties ont été affectées de caractéristiques de tolérance et qui n'ont pas encore été traitées dans une des étapes précédentes, Dans une étape c), pour chaque fonction de l'ensemble calculé en b), on procède à une analyse spécifique pour 15 déterminer: i) quelles sont les entrées sur lesquelles les caractéristique de tolérance aux fautes doivent être exigées, ii) quelle est l'exigence de tolérance aux 20 fautes sur ladite fonction, On procède à l'itération suivant par exemple 907 et 911, et on itère ainsi les étapes b) puis c) jusqu'à ce que l'ensemble déterminé à l'étape b) soit vide. Dans l'étape e), chaque capteur hérite du niveau de 25 tolérance aux fautes de sa donnée émise de plus haut niveau de tolérance aux fautes. Puis, étape 931, pour chaque fonction, on choisit un mode de réalisation et on collecte les exigences de liberté entre réplicats conformément à ce qui a été décrit en 30 regard des figures 3, 4 et 5. Finalement, on place l'architecture fonctionnelle sur une architecture matérielle candidate 933 et l'on vérifie 935 que les conditions de liberté sur les réplicats, ces conditions ayant été raffinées lors du placement, sont 35 toujours satisfaites. Dans le contexte d'une approche probabiliste, on vérifie que les probabilités de liberté sont satisfaite après placement à l'instar de l'exemple donné en dans la description de la figure 3. Ce procédé peut être mis en oeuvre à l'aide d'un outil informatique permettant l'édition des différents objets nécessaires à la conception et l'automatisation partielle des différentes étapes du procédé constitué par l'invention. Iv 2 0 REVENDICATIONS 1. Procédé de conception d'un système tolérant aux fautes caractérisé en ce que: les exigences de tolérance aux fautes sont déterminées itérativement pour chaque fonction suivant les étapes: a) on spécifie des niveaux de tolérance aux fautes aux différents actionneurs du système, b) on détermine automatiquement l'ensemble des fonctions pour lesquelles les exigences de tolérance aux fautes ne sont pas entièrement spécifiées, c'est à dire celles pour lesquelles des sorties ont été affectées de caractéristiques de tolérance et qui n'ont 15 pas encore été traitées dans une des étapes précédentes, c) pour chaque fonction de l'ensemble calculé en b), on procède à une analyse spécifique pour déterminer: 20 i) quelles sont les entrées sur lesquelles les caractéristique de tolérance aux fautes doivent être exigées, ii) quelle est l'exigence de tolérance aux fautes sur ladite fonction, 25 d) on itère les étapes b) puis c) jusqu'à ce que l'ensemble déterminé à l'étape b) soit vide. e) un capteur hérite du niveau de tolérance aux fautes de sa donnée émise de plus 30 haut niveau de tolérance aux fautes. 2. Procédé de conception d'un système tolérant aux fautes selon la revendication 1. caractérisé en ce que, i) étant donnée une exigence de tolérance aux fautes sur l'architecture fonctionnelle et une mise en oeuvre de 35 cette tolérance aux fautes, notamment par des copies, pour au moins un flot de données et/ou au moins une fonction et/ou au moins un capteur et/ou au moins un actionneur, et étant donné un placement de l'architecture fonctionnelle sur une architecture matérielle comportant des calculateurs et une connectique, ii) pour au moins un flot de données et/ou au moins une fonction, on détermine s'il existe un défaut des 5 composants après placement du fonctionnel sur le matériel pouvant affecter deux copies d'un même composant, auquel cas le placement ne satisfait pas les exigences de tolérance aux fautes. 3. Procédé de conception d'un système tolérant aux 10 fautes selon les revendications 1 et 2 caractérisé en ce que, i) étant donnée une exigence de tolérance aux fautes sur l'architecture fonctionnelle et une mise en oeuvre de cette tolérance aux fautes, notamment par des copies, pour 15 au moins un flot de données et/ou au moins une fonction et/ou au moins un capteur et/ou au moins un actionneur, et étant donné un placement de l'architecture fonctionnelle sur une architecture matérielle comportant des calculateurs, une connectique et des caractéristiques de 20 tolérance aux fautes de ces composants, ii) pour au moins un flot de données et/ou au moins une fonction, on détermine si on a placé plus de copies sur un composant que son niveau de tolérance aux fautes ne peut supporter.