1. Qu’est-ce qu’un système ?
Un système est un ensemble de composants en interaction destiné à accomplir une
tâche donnée. C’est le cas par exemple des systèmes de production, systèmes de
transport, systèmes informatiques, etc…
Un système cohérent ?
Un système est dit cohérent si :
- la panne de tous les composants entraı̂ne la panne du système,
- le fonctionnement de tous les composants entraı̂ne le fonctionnement du
système,
- lorsque le système est en panne, aucune défaillance supplémentaire ne
rétablit le fonctionnement du système,
- lorsque le système est en fonctionnement, aucune réparation n’induit la
panne du système.
2. Qu’est-ce que la sûreté fonctionnement ?
La sûreté de fonctionnement (SdF, en anglais dependability) d’un système est la
propriété qui permet à ses utilisateurs de placer une confiance justifiée dans le
service qu’il leur délivre. Elle consiste à évaluer les risques potentiels, prévoir
l’occurrence des défaillances et tenter de minimiser les conséquences des
situations catastrophiques lorsqu’elles se présentent.
Quels en sont les 5 composants ?
2.1. La fiabilité (reliability) est la caractéristique du système exprimée par la
probabilité qu’il délivre le service attendu dans des conditions données et
pendant une durée déterminée. La fiabilité exprime l’aptitude à la continuité
du service.
2.2. La disponibilité (availability) est exprimée par la probabilité que le système
délivre le service attendu dans des conditions données et à un instant
donné. La disponibilité caractérise donc l’aptitude du système à fonctionner
quand on a besoin de lui.
2.3. La maintenabilité (maintainability) caractérise l’aptitude du système à être
réparé quand il est défaillant, ou à évoluer.
2.4. La sécurité-innocuité (safety) caractérise l’aptitude du système à ne pas
encourir de défaillances catastrophiques.
2.5. La sécurité-confidentialité (security) caractérise l’aptitude du système à se
prémunir contre les accès ou manipulations non autorisées (virus,
attaques,...)
3. Quels sont les catégories de défaillance
- Défaillance mineure: Défaillance qui nuit au bon fonctionnement d’un
système en causant un dommage négligeable au système ou à son
environnement sans présenter de risque pour l’homme
- Défaillance significative: Défaillance qui nuit au bon fonctionnement sans
causer de dommage notable ni présenter de risque important pour l’homme
- Défaillance critique: Défaillance qui entraı̂ne la perte d’une (ou des)
fonction(s) essentielle(s) du système et cause des dommages importants au
système en ne présentant qu’un risque négligeable de mort ou de blessure
- Défaillance catastrophique: Défaillance qui occasionne la perte d’une (ou
des) fonction(s) essentielle(s) du système en causant des dommages
importants au système ou à son environnement et/ou entraı̂ne la mort ou des
dommages corporels
Les modes de défaillance:
- Fonctionnement prématuré (ou intempestif): Fonctionne alors que ce n’est
pas prévu à cet instant
- Ne fonctionne pas au moment prévu: ne démarre pas lors de la sollicitation
- Ne s’arrête pas au moment prévu: continue à fonctionner alors que ce n’est
pas prévu
- Défaillance en fonctionnement
Les types de défaillance ?
- Matériel
- Logiciel
4. Quelle est la différence entre :
4.1. Système réparable et système non réparable ?
- Un système réparable est un système qui, après sa défaillance, peut
être remis en état de marche par des actions de réparation ou
maintenance. C’est le cas de tous les systèmes complexes et en
particulier des systèmes informatiques. Pour ces derniers, au lieu de
réparation, on parle plutôt de correction, débogage ou mise à jour.
- Un système non réparable est un système qui est mis au rebut dès
qu’il tombe en panne. C’est le cas des petits systèmes (par exemple
des ampoules) ou des systèmes qui coûtent plus cher à réparer qu’à
remplacer.
4.2. Maintenance corrective et préventive ?
- La maintenance corrective ou réparation remet en fonctionnement un
système après sa défaillance.
- La maintenance préventive est effectuée alors que le système
fonctionne et a pour but de retarder l’occurrence des défaillances
futures.
4.3. Approche structurelle et approche globale ?
- Approche boı̂te blanche ou structurelle : on considère qu’un système
complexe est constitué de composants et que sa fiabilité dépend à la
fois de la fiabilité de ses composants et de la façon dont le bon
fonctionnement ou la panne de chaque composant influe sur le bon
fonctionnement ou la panne du système tout entier. En particulier, on
considère souvent qu’un système réparable est constitué de
composants non réparables. Quand un composant tombe en panne,
on le remplace par un neuf, mais le système complet, lui, n’est pas
remis à neuf.
- Approche boîte noire ou globale : on considère le système comme un
tout, qu’on ne cherche pas à décomposer en composants. On
s’intéresse alors à la suite des défaillances et réparations successives
du système.
5. Quelles sont les grandes différences dans l’analyse de la fiabilité d’un logiciel
et celle d’un matériel ?
Les défaillances des matériels sont essentiellement dues à l’usure (ou vieillissement)
et aux facteurs environnementaux, tandis que celles des logiciels sont dues à des
fautes de conception (ou bugs), c’est-à-dire à des erreurs humaines.
- Un matériel s’use, un logiciel ne s’use pas.
- La maintenance des matériels ralentit le vieillissement des systèmes mais ne
l’empêche pas, tandis que la correction des logiciels augmente leur fiabilité.
- Un logiciel non utilisé ne tombe pas en panne (le terme de panne est
d’ailleurs peu utilisé pour le logiciel). Un matériel non utilisé peut tomber en
panne du fait de l’usure ou des facteurs environnementaux.
- En logiciel, une faute bien repérée et corrigée est éliminée définitivement et
ne peut plus se manifester. En matériel, on peut observer des défaillances
répétables ou chroniques.
- La sensibilité d’un matériel à son environnement est assez forte, mais on
peut néanmoins considérer qu’un matériel a une fiabilité en soi : les
constructeurs quantifient la fiabilité d’une ampoule électrique quel que soit
son environnement. En revanche, la sensibilité d’un logiciel a son
environnement, à travers son profil opérationnel, est extrêmement forte. Un
logiciel tru↵é de fautes peut très bien fonctionner sans défaillance si le profil
opérationnel n’active pas ces fautes. Un matériel ayant beaucoup de défauts
ou très usé tombera fatalement en panne, quelle que soit la manière dont on
l’utilise.
6. Du point de vue logiciel, qu’est-ce qu’une faute de conception ?
Une faute de conception est une faute créée suite à une erreur humaine de
l’analyste, du concepteur ou du programmeur. Elle peut être de spécification, de
conception ou de codage.
7. Afin de limiter les défaillances logicielles, quelles sont les catégories de
méthodes existantes ?
- La prévention des fautes : ces méthodes ont pour but d’empêcher
l’occurrence et l’introduction de fautes dès la conception du logiciel. Par
exemple, on a de plus en plus souvent recours à des méthodes formelles
pour développer les spécifications.
- L’élimination des fautes : ces méthodes ont pour but de détecter des fautes
dans un programme déjà écrit. Elles comprennent les preuves de
programmes, les inspections formelles, la vérification et surtout le test du
logiciel.
- La tolérance aux fautes : ces méthodes ont pour but de permettre au
système de fonctionner correctement même en présence de fautes. On peut
par exemple utiliser de la redondance.
- La prévision des fautes : ces méthodes ont pour but d’estimer la présence
des fautes et de prévoir les défaillances futures du sytème.
8. Citer quelques types de redondance.
- Redondance homogène : on réplique plusieurs composants identiques
- Redondance avec dissemblance : les sous-systèmes réalisent les mêmes
fonctions mais sont différents (par exemple, plusieurs équipes de
conception, matériel différent.
- Redondance froide : les composants sont activés quand ceux déjà actifs
tombent en panne.
- Redondance chaude : les composants tournent en parallèle et politique de
prise de main.
- Redondance tiède : les composants sont idle avant de prendre la main.
9. Pourquoi ne peut-on pas évaluer la fiabilité d’un logiciel en phase d’analyse, de
conception, ou encore de test ?
Analyse : le logiciel ne répond pas à l’attente des utilisateurs.
Conception : mauvaise traduction des spécifications.
Codage et test : erreurs de programmation ou de correction.
Vie opérationnelle : erreur dans les mises à jour du système.