# Sûreté de fonctionnement des systèmes informatiques

La sûreté de fonctionnement des systèmes informatiques est le domaine de la sûreté de fonctionnement qui traite de l'aspect « produit » de la qualité des systèmes informatiques, c'est-à-dire la partie « qualité des processus d'ingénierie des systèmes ».

## Principe

« La sûreté de fonctionnement peut être définie comme étant la capacité qu’a un système de fournir un service à un utilisateur avec un niveau de confiance justifié ».
Les acteurs d’un projet ont besoin de repères externes pour définir et évaluer la qualité d’un produit. L'objectif de la norme ISO 9126 est de fournir les bases d'un langage commun et des seuils de référence. Elle s'articule autour de six domaines : la fiabilité ; la facilité d'utilisation ; le rendement ; la portabilité ; la maintenabilité ; la capacité fonctionnelle.
Un exemple de caractéristique que fournit cette norme est le comportement vis-à-vis du temps du système. Cette caractéristique est définie de la manière suivante : « Attribut du logiciel portant sur le temps de réponse, de traitement, et la capacité en débit, en fonctionnement ».
Les niveaux caractéristiques donnés sont le contrôle de la tenue en performance normale ; le contrôle de la performance en pointe ; la performance de bout en bout.

## Outils
### Les ateliers de génie logiciel

Ils recouvrent, tout ou partie, un cycle de vie. La plupart du temps, on utilise ce terme pour deux phases : l’analyse, la conception ; et ce, parmi deux univers : fonctionnel et orienté objet.
Ils garantissent la réalisation de diagrammes, leur cohérence et leur consistance par test, la visualisation après stockage en fichier ou sur base de données, les liens avec les outils de documentation, les différentes bases de données.

### Le langage UML

Ce langage présente plusieurs points intéressants : ses concepts, dont la sémantique est définie ; des diagrammes utilisés pour spécifier les besoins et les systèmes ; des extensions, pour intégrer aux processus des stéréotypes spécifiques aux différentes méthodes et/ou contextes applicatifs.
UML permet de supprimer la rupture méthodologique entre l’analyse et la conception. C'est un langage formel, fondé sur un méta-modèle qui définit les éléments de modélisation et la sémantique de ces éléments.
Le méta-modèle limite les ambiguïtés et encourage la construction d’outils tels que les ateliers.

### Les méthodes formelles

Elles se caractérisent par une validation du comportement logique du logiciel. Elles sont de deux sortes : les méthodes à base de preuve de théorèmes, et les méthodes à base d’exploration d’espaces d’états.
Ces méthodes correspondent à des techniques différentes, pour des besoins et des domaines d’applications différents.

#### Méthodes à base de preuve de théorèmes

Il faut fournir les postulats et les règles non triviales ; elles doivent être applicables sur des systèmes à nombre d’états non fini ; exemple : Méthode B.

#### Méthodes à base d’exploration d’espaces d’états

On ne fournit que les propriétés à vérifier ; elles doivent être applicables à des systèmes à nombre d’états finis ; exemple : Estérel (langage de programmation « Temps Réel »).

### La fiabilité du logiciel

Il existe deux types de fiabilité : la prévisionnelle et l'expérimentale.

#### Fiabilité expérimentale

La fiabilité expérimentale étudie le comportement initial grâce à des collectes de données. On applique ensuite des modèles mathématiques extrapolant le comportement du logiciel dans le temps. Ces modèles sont appelés modèles de croissance de la fiabilité. Ce sont des modèles théoriques.
Ils présentent l'inconvénient d'être très nombreux, alors que les mathématiciens qui les conçoivent ne disposent que de très peu de données publiques et donc peu de modèles sont valables.

### La validation

Valider, c’est s’assurer que les cinq phases de qualification sont complètes :
** Qualification des spécifications ;
** Qualification de la conception ;
** Qualification de l’installation ;
** Qualification opérationnelle ;
** Qualification de performance.
C'est aussi s'assurer que les procédures et la documentation sont en place.
Cette étape permet de déterminer si le système ou l’équipement exécute les fonctions prévues et s’assurer qu’il n’exécute pas des fonctions non prévues. On peut également mesurer la fiabilité et la qualité du produit grâce à la métrologie.

### La métrologie

Elle permet plusieurs évaluations : mesurer les progrès, les régressions ; évaluer un produit ; comparer des produits ; fixer des objectifs précis de qualité. Elle fournit des données pour orienter l’évolution technologique.
Elle permet de travailler sur trois niveaux de mesure et indicateur :
* Produit ou service :
** Mesures physiques ;
** Indices de conformité ou de non-conformité par rapport à des références ;
* Processus qui concerne plus la partie qualité ;
* Clients qui concerne également la partie qualité.
On peut considérer comme mesures, par exemple, le nombre de lignes de code, le nombre de niveaux d’héritage, la complexité cyclomatique, etc.