Vous êtes sur la page 1sur 4

La fiabilité des logiciels

La notion de la fiabilité

Ê Un système est dit fiable:

„ répond à l'ensemble des spécifications fonctionnelles, dans des conditions optimales.

„ Jamais une panne d’exécution (toutes les pannes possibles et imaginables ont été
prévues et testés): c’est une utopie. Les pannes peuvent être causés par des variantes
exogènes : erreur humaine, malveillance, vieillissement du matériel, catastrophe
La fiabilité des logiciels naturelle, etc.).

„ Garantit l’intégrité des données en cas d’erreur.

„ Pouvoir gérer les situations dégradées (avènement des erreurs) (mauvaises données
d’entrée, mauvaise manipulation, etc) : le logiciel continu de rendre le service (notion de
tolérances de pannes).

1 2
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

La fiabilité des logiciels La fiabilité des logiciels


La défaillance La défaillance
Ê Un système est dit défaillant (en panne) lorsqu’il cesse de fonctionner totalement ou
partiellement. Ê Impact d’un système défaillant

Ê Une défaillance „ Ralentissement, perturbation, voir suspension de l’activité pour laquelle il est dédié
„ C’est l’avènement d’une panne lors de l’exécution d’un système. (éventuellement des effets en cascade pour les activités dépendantes).
„ Ne pas confondre avec une erreur fonctionnelle : lorsque le logiciel ne réponds pas aux
attentes des utilisateurs. „ Manque de confiance et de crédibilité.

Ê Causes de la défaillance : „ Pertes financières.

„ Des erreurs de codage. „ Détérioration de la relation client/fournisseur (du logiciel).


„ Des conditions d’exécution liées à l’environnement matériels ou logiciels non prises en
compte par le système. „ Perte de crédibilité dans le fournisseur du logiciel.
„ Dans tous les cas, sont des conséquences d'un manque ou insuffisance de tests

Ê Manifestation de la défaillance
„ Arrêt brutal du logiciel
„ Instabilité du logiciel.
„ Dysfonctionnement et incohérence.

3 4
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

La fiabilité des logiciels La fiabilité des logiciels


La défaillance La défaillance d’un logiciel (2)
Ê Autre typologie de défaillance : „ Pannes de temporisation

„ Pannes franche † Le système ne réagit pas en temps voulu à des exigences temporelles.

† Pannes conduisant à un arrêt brutal du système. † Par exemple : en réaction à un événement (réception d’un msg, etc.)

„ Pannes par omission „ Pannes aléatoires

† Le système perd des messages entrants (omission en réception), sortants (omission † Pannes se produisant « visiblement » d’une façon aléatoires : « visiblement » les
en émission), ou les deux. mêmes conditions d’exécution ne produisent pas systémiquement la panne
† Exemples : défaillances dues à la communication réseau. constatée.
† Sont rarement détectable immédiatement. † Sont très difficile à traiter car elles ne sont pas reproductible systématiquement car
très difficile de connaître les conditions précises qui ont conduit à la panne.
Exemple: des conditions de pannes latentes.
† Conséquence : parfois nécessitent une revue de l’ensemble du processus de
traitement.

5 6
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

1
La fiabilité des logiciels La fiabilité des logiciels
Fiabilité et disponibilité Métriques de la fiabilité (1)

Comment mesurer la fiabilité d’un logiciel ?


„ La fiabilité est liée à l’indisponibilité (période de défaillance): Combien de temps faut-il au
système pour qu’il reparte à nouveau (temps de rétablissement de la situation normale Plusieurs métriques existent:
de fonctionnement)
Ê POFOD (Probability of failure on demand)
† Trois situations sont possibles :
„ Mesure la probabilité d’occurrence d’une panne lorsqu’une transaction est effectuée.
ƒ Le système tolère l’erreur et continue à fonctionner : pas d’indisponibilité.
„ POFOD = nbre de trans. erronées / nbre total de transactions.
Î Une erreur ne conduit pas forcement à la défaillance du logiciel.
„ Exemple : POFOD = 0.001 signifie qu’une requête sur 1000 provoquera une défaillance.
ƒ Le système tombe en panne mai repart immédiatement sans aucune
intervention. Raison souvent liées à l’environnement du système. Ê ROCOF (Rate of fault occurrence)

ƒ Le système tombe en panne . Mais sa remise en état de fonctionnement „ Mesure la fréquence à laquelle un comportement erratique est probable: taux d’occurrence
des pannes.
nécessitent des corrections plus ou moins lourdes, voire le rétablissement de
„ ROCOF = nbre de pannes / temps d’exécution.
l’intégrité des données (le pire des scénarii).
„ Exemple : ROCOF = 2/100 signifie que 2 défaillances sont probables pour chaque 100 unités
de temps opérationnel.

7 8
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

La fiabilité des logiciels La fiabilité des logiciels


Métriques de la fiabilité (2) Métriques de la fiabilité (3)

Ê MTTF (Mean Time To Failure) Ê AVAIL (Disponibilité)

„ Mesure le temps moyen de fonctionnement entre deux pannes. „ Mesure de taux de disponibilité.
„ Exemple : MTTF = 500 signifie qu’une défaillance est à prévoir à chaque 500 unités de temps „ Temps effectif de disponibilité / temps observé (temps observé = temps de fonctionnement +
de fonctionnement. temps d'indisponibilité).
„ Cette métrique est utilisée pour les systèmes embarqués. „ AVAIL = MTTF / (MTTF + MTTR)
„ Exemple : AVAIL = 0.98 signifie qu’à chaque 100 unités de temps, le logiciel est opérationnel
Ê MTTR (Mean Time To Repair) pendants 98 unités de ce temps.

„ Mesure le temps moyen nécessaire pour la réparation du système en cas panne.


„ MTTR = temps d'arrêt total / nombre d'arrêts

Ê MTBF (Mean Time Between Failure)

„ Mesure le temps moyen de fonctionnement entre deux pannes incluant le temps de


réparation.
„ MTBF = MTTF + MTTR

9 10
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

La fiabilité des logiciels La fiabilité des logiciels


Métriques de la fiabilité (3) Pour un logiciel fiable
Ê Conclusion
Ê La fiabilité d’un logiciel est basée sur la prévention contre les erreurs.
† Les métriques utilisées doivent être adaptées au système observé.
Ê Qu’est ce qu’il faut prévoir ? :
† Dans la réalité, les métriques sont très difficiles à réaliser. Leur évaluation est approximative
avec une marge d’erreur qui doit être tolérée. „ Les pannes pouvant surgir dans des conditions d'exécution probables.
„ Les pannes pouvant surgir dans des conditions d'exécution exceptionnels.
„ Les pannes pouvant surgir dans des conditions non connu au moment des tests.

Ê Comment : Trois stratégies.


„ Évitement des erreurs.
„ Tolérances des erreurs.
„ Détection des erreurs.

11 12
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

2
La fiabilité des logiciels La fiabilité des logiciels
Pour un logiciel fiable – Évitement des erreurs Pour un logiciel fiable – Tolérance d’erreurs

Ê Éliminer dans la mesure du possible les erreurs de codage. Ê Un système qui tolère des erreurs est un système qui continue à fonctionner malgré l'avènement
Ê Les points à surveiller en termes de programmation sont en fonction du langage utilisé: d’une ou plusieurs erreurs.

„ La valorisation des variables: Ê Tolérer une erreur ne veut pas dire l'ignorer : Les erreurs doivent être signalées.
† un décimal pour une valeur entière, dépassement de la capacité de stockage, etc.
Ê Comment ? en levant des exceptions.
„ Allocation dynamique de la mémoire:
† Pensez à libérer la mémoire allouées : new/delete, malloc/free, etc. Ê Les exceptions peuvent porter sur :

„ Parallélisme et exécution concourante „ des erreurs. Exemple: division par zéro.


† Source d’erreurs très difficiles à déceler „ des exceptions : disque plein.
† Nécessite une bonne maîtrise
Ê En C/C++/Java, la gestion des exceptions est réalisée par les instructions try, throw et catch
„ Récursivité
† Erreurs dues au débordement de la pile.
† Sources d’erreurs très difficiles à déceler

„ Les valeurs en entrée (saisies, paramétrage, etc.)


† On doit toujours faire l’hypothèse qu’elles peuvent être fausses.

13 14
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

La fiabilité des logiciels La fiabilité des logiciels


Les Exceptions (1) Les Exceptions (2)

Ê Exemple des exceptions en Java Ê Intercepter une exception


„ try {
„ Une exception représente une erreur qui survient dans le système et qui ne peut être // bloc risqué = susceptible de lever une exception
détectée qu’à l’exécution (pas à la compilation) …
x = 0;
„ Les exceptions peuvent être : d = 1/x;
† peuvent être générées par le système (p.ex. division par zéro) …
† peuvent être produites volontairement. }
catch (Exception e) {
† doivent être interceptées par le programme.
// instructions de traitement de l’exception
„ Une exception : …
System.out.println("Exception: " + e);
† est représentée par un objet. }
† c’est une instance de la classe Exception ou de l'une de ses sous-classes.
„ Le bloc "try" contient le code où il y a un risque de voir une exception levée
„ Si une exception est levée effectivement, le code du bloc “catch” correspondant est exécuté.
„ Une exception qui est levée mais non capturée par la méthode doit être déclarée dans la
signature de la méthode.
Exemple : void foo () throws Exception { //NB: throws

15 } 16
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

La fiabilité des logiciels La fiabilité des logiciels


Les Exceptions (3) Les Exceptions (4)

Ê Reporter une exception


Ê Lever volontairement une exception
„ void methodeA(){ …
„ try { try {
… …
if (condition) throw new Exception(); report explicite
throw new Exception(); //NB: throw …
… }
} catch (Exception e) {

„ L’instruction throw permet de lever une exception, et de faire passer l’exécution directement throw e; // l'exception reste levé à la sortie du bloc catch
au bloc catch le plus proche. }
}

„ void methodeB () throws Exception { //NB: throws



// ou en utilisant un report volontaire
// throw new Exception(); // NB: throw
… report explicite
}

„ Les méthodes clientes (qui invoquent) d’une telle méthode doivent suivre les mêmes règles,
puisque les exceptions non traitées remontent la pile d’appel pour traverser toutes la
17 hiérarchie des méthodes appelantes jusqu’à ce que l’une la traite complètement, sinon le18
Génie Logiciel H. El mansouri Génie Logiciel
programme s’arrête. H. El mansouri

3
La fiabilité des logiciels La fiabilité des logiciels
Les Exceptions (5) Les Exceptions (6)

Ê Définir une nouvelle exception (personnalisation des exceptions) Ê Le traitement sélectif des exceptions
„ try {
„ class MonException extends Exception
{ … // code risqué
public MonException(){ }
super(); catch (EOFException e){ // EOF = End Of File
} … // on traite les erreurs de fin de fichier
public MonException(String msg){ }
super(msg); catch (IOException e){ // IO = Input/Output
} … // on traite les erreurs IO autres que EOF
} }
„ Pour définir une nouvelle catégorie d’exception, il suffit de créer une sous-classe catch (Exception e) {
d’Exception ou de l'une de ses sous-classes. … // le cas général
„ Une exception peut avoir ses propres variables d’instance et donc transporter une information }
additionnelle. Elle peut également avoir ses propres méthodes.
ƒ Lorsqu'une exception est levée, on crée plusieurs blocs try allant du plus fin au plus général.

1. Dans l'exemple, on cherche à intercepter l’exception EOFException en premier lieu : c'est


l'exception la plus fine : EOFException est une sous-classe de IOException.
2. Autres sous-classes de IOException: FileNotFoundException,
InterruptedIOException, CharConversionException, etc .
19 20
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

La fiabilité des logiciels La fiabilité des logiciels


Les Exceptions (8) Les Exceptions (9)
Ê La clause finally
Ê Exemple (1):
„ try {
… // code risqué „ Une classe servant à lancer une exception lors d’une tentative de division par zéro.
}
† Public class DivisionParZeroException extends ArithmeticException{
catch (Exception e) {
… }
} // constructeur qui envoie un msg d’erreur prédéfini
finally { Public DivisionParZeroException(){
… super("Tentative de division par zéro");
}
}
„ La clause finally permet de spécifier un bloc de code qui doit être exécuté dans tous les // constructeur qui envoie un msg d’erreur adapté
cas, afin par exemple de fermer ou de libérer des ressources utilisées dans le bloc try.
Public DivisionParZeroException(message){
super(message);
}
}

21 22
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

La fiabilité des logiciels La fiabilité des logiciels


Les Exceptions (10) Détection des erreurs

Ê Exemple (2):
Ê La détection des erreurs est l'objet des activités de test de validation.
„ Une classe de test Ê C’est le sujet du prochain chapitre.

† Public class maClasse{


}
// Methode de test
Public double quotient(int numerateur, int denominateur)
throws DivisionParZeroException{
if(denominateur == 0)throw new DivisionParZeroException();
Return (double) numerateur/denominateur;
}
// autres méthode
}

† La close throws reprend la liste des exceptions qu’une méthode est


susceptible de lancer. Par exemple :

Int maMethode(listeParametres)
throws TypeException1, TypeException2, TypeException3, ...
{
// …
}
23 24
Génie Logiciel H. El mansouri Génie Logiciel H. El mansouri

Vous aimerez peut-être aussi