# 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 :
* Fiabilité ;
* Facilité d'utilisation ;
* Rendement ;
* Portabilité ;
* Maintenabilité ;
* 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 :
* Contrôle de la tenue en performance normale ;
* Contrôle de la performance en pointe ;
* Performance de bout en bout.

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

Ils recouvrent tout ou en 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 forts :
* Les concepts, dont la sémantique est complètement et formellement définie ;
* Les diagrammes utilisés pour spécifier les besoins et les systèmes ;
* Un certain nombre d’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 ;
* 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 :
* Méthodes à base de preuve de théorèmes ;
* 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 ;
* 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 ;
* 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é :
* Prévisionnelle ;
* 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 ;
* 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 de 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 de :
* De mesurer les progrès, les régressions ;
* Évaluer un produit ;
* Comparer des produits ;
* Fixer des objectifs précis de qualité ;
* Fournir 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.