Chapitre V : Etude de cas 81
V.3 Phase de conception 95
V.3.1 Etape 2a : Conception des stratégies de détection
Les stratégies de détection d’erreurs sont déterminées à partir de la table 11. Dans la matrice de traçabilité, le tableau suivant regroupe les colonnes « 1- Types de défaillance logicielle » et « 3- Stratégie de détection d’erreur » définies en section III.4.
1- Type de Défaillance
spécifique
3- Stratégie de Détection d’erreur
D1a : Flot de données : Valeur
échangée non voulue
L’assertion exprime les conditions dans lesquelles la valeur d’une donnée est nominale.
Les éléments de la condition et la donnée considérée sont donc tracés.
Si l’assertion n’est pas vérifiée, une erreur est notifiée. D1b : Flot de
contrôle : Séquence d’exécution non
voulue
L’assertion exprime les conditions dans lesquelles une séquence d’algorithmes de calcul ou d’évènements de contrôle est nominale. Les éléments de la condition et l’algorithme de calcul ou
évènement de contrôle considéré sont donc tracés. Si l’assertion n’est pas vérifiée, une erreur est notifiée. D2 : Flot de
contrôle : Temps d’exécution trop
long
L’assertion exprime les conditions dans lesquelles le temps d’exécution d’un algorithme de calcul est interdit.
Les éléments de la condition et l’algorithme de calcul considéré sont donc tracés.
Si l’assertion est vérifiée, une erreur est notifiée. D3 : Flot de
contrôle : Transition invalide
L’assertion exprime les conditions dans lesquelles un évènement de contrôle ne doit pas se produire.
Les éléments de la condition et l’évènement de contrôle considéré sont donc tracés.
Si l’assertion est vérifiée, une erreur est notifiée. D4 : Flot de
contrôle : Transition non
voulue
L’assertion exprime les conditions dans lesquelles un évènement de contrôle doit se produire.
Les éléments de la condition et l’évènement de contrôle considéré sont donc tracés.
V.3.2 Etape 2b : Conception des stratégies de recouvrement
Les stratégies de recouvrement d’erreurs sont déterminées à partir de la table 12. Dans la matrice de traçabilité, le tableau suivant regroupe les colonnes « 1- Types de défaillance logicielle » et « 5- Stratégie de recouvrement d’erreur » définies en section III.4.
1- Type de Défaillance
spécifique
5- Stratégie de Recouvrement d’erreur
D1a : Flot de données : Valeur
échangée non voulue
Erreur notifiée : la valeur de la donnée est erronée.
Le type de recouvrement choisi est par poursuite : annuler la valeur échangée, transmettre une valeur par défaut
D1b : Flot de contrôle : Séquence d’exécution non
voulue
Erreur notifiée : La séquence d’exécution est erronée. Interrompre la séquence en cours.
Recouvrement par reprise : Rétablir une bonne séquence. D2 : Flot de
contrôle : Temps d’exécution trop
long
Erreur notifiée : Le temps d’exécution d’un algorithme de calcul est erroné.
Interrompre l’algorithme de calcul en cours.
Recouvrement par poursuite : Déclencher un mode dégradé D3 : Flot de
contrôle : Transition invalide
Erreur notifiée : La requête de transition est manquante. Recouvrement par compensation : Déclencher la transition. D4 : Flot de
contrôle : Transition non
voulue
Erreur notifiée : La requête de transition est erronée.
V.3.3 Etape 2c : Conception des stratégies de l’instrumentation
La stratégie de détection d’erreur (V.2.3) indique les informations à capturer pour les différentes assertions. L’implémentation est précisée en V.2.6. Dans la matrice de traçabilité, le tableau suivant regroupe les colonnes « 1- Types de défaillance logicielle » et « 4- Sondes logicielles » définies en section III.4.
1- Type de Défaillance spécifique 4- Sondes logicielles D1a : Flot de données : Valeur échangée non voulue
Condition : capturer l’identifiant de Task_Clim_C avant son exécution
Données : capturer l’identifiant et la valeur de Var_HF_1 à Var_HF_10 et Var_MS_1 à leur écriture
D1b : Flot de contrôle : Séquence d’exécution non voulue Condition :
Algorithmes de calcul : capturer l’identifiant, l’instant de
démarrage, l’instant de terminaison de Runnable_Clim_HF, Runnable_Clim_MS, Runnable_Clim_WM
D2 : Flot de contrôle : Temps
d’exécution trop long
Condition : capturer l’identifiant et la valeur de Var_FC_1 à sa lecture
Algorithme de calcul : capturer l’identifiant, l’instant de démarrage, l’instant de terminaison, et 10ms après le démarrage de
Runnable_Air_FC
Task_Clim_P Var_HF_1 Task_Clim_C
Var_HF_10 Var_MS_1 … Données produites Données Consommées
Task_Clim_P Var_HF_1 Task_Clim_C
Var_HF_10 Var_MS_1 … Données produites Données Consommées Runnable_Clim_WM Runnable_Clim_MS Runnable_Clim_HF Runnable_Clim_WM Runnable_Clim_MS Runnable_Clim_HF 0 25 ms 25 ms t Runnable_Clim_WM Runnable_Clim_MS Runnable_Clim_HF Runnable_Clim_WM Runnable_Clim_MS Runnable_Clim_HF 0 25 ms 25 ms t … Données Consommées Task_Air_FC Var_FC_1 Var_FC_5 <10ms … Données Consommées Task_Air_FC Var_FC_1 Var_FC_5 <10ms
D3 : Flot de contrôle : Transition invalide
Condition : capturer l’identifiant de Task_Trans_SM, Task_Trans_Mod1, Task_Trans_Mod2 avant son exécution
Evènement de contrôle : capturer l’instant d’appel et le paramètre (tâche activée) de ChainTask()
D4 : Flot de contrôle : Transition non
voulue
Condition : capturer l’identifiant de Task_Trans_SM, Task_Trans_DC avant leur exécution
Evènement de contrôle : capturer l’instant d’appel et le paramètre (tâche activée) de ChainTask(), capturer l’état de l’alarme Al_Trans_SM avant l’exécution de Task_Trans_SM
La stratégie de recouvrement d’erreur (V.2.4) indique les actionneurs logiciels à utiliser pour réaliser le recouvrement. L’implémentation est précisée en V.2.6. Dans la matrice de traçabilité, le tableau suivant regroupe les colonnes « 1- Types de défaillance logicielle » et « 6- Actionneurs logiciels » définies en section III.4.
1- Type de Défaillance spécifique 6- Actionneurs logiciels D1a : Flot de données : Valeur échangée non voulue
Annuler la valeur échangée erronnée, transmettre une valeur dégradée : les données erronées peuvent être Var_HF_1 à Var_HF_10 et Var_MS_1. La valeur dégradée est spécifique à chaque donnée. Task_Trans_SM Task_Trans_Mod1 Task_Trans_Mod2 ou active Task_Trans_SM Task_Trans_Mod1 Task_Trans_Mod2 ou active Task_Trans_SM Al_Trans_SM Task_Trans_DC ou active Task_Trans_SM Al_Trans_SM Task_Trans_DC ou active
Task_Clim_P Var_HF_1 Task_Clim_C
Var_HF_10 Var_MS_1 … Données produites Données Consommées
Task_Clim_P Var_HF_1 Task_Clim_C
Var_HF_10 Var_MS_1 … Données produites Données Consommées
D1b : Flot de contrôle : Séquence d’exécution non
voulue
Interrompre la séquence en cours, Rétablir la bonne séquence : La séquence considérée est une séquence de
runnables. Mais en termes de tâches : la tâche qui n’intervient pas
au bon moment est forcément la tâche consommatrice Task_Clim_C, qui doit être arrêtée et la tâche productrice Task_Clim_P doit être relancée.
D2 : Flot de contrôle : Temps
d’exécution trop long
Interrompre l’algorithme de calcul en cours, Déclencher un mode dégradé : L’incohérence entre la donnée Var_FC_1 et le temps d’exécution signifie que le calcul de l’algorithme est incorrect. Le mode dégradé est une réinitialisation et nouvelle lecture des données, pour tolérer une faute physique transitoire. Si la faute est permanente, notre architecture permet d’inhiber l’une ou l’autre des informations contradictoires, mais il est judicieux que le concepteur révise l’application.
D3 : Flot de contrôle : Transition invalide
Déclencher la transition : La mémorisation de la commande dans la trace d’appels à ChainTask() permet de lancer
Task_Trans_Mod1 ou Task_Trans_Mod2 D4 : Flot de
contrôle : Transition non
voulue
Inhiber la transition en cours. Une détection d’erreur de
déclenchement de Task_Trans_SM a été faite donc cette tâche doit être terminée.
Runnable_Clim_WM Runnable_Clim_MS Runnable_Clim_HF Runnable_Clim_WM Runnable_Clim_MS Runnable_Clim_HF 0 25 ms 25 ms t Runnable_Clim_WM Runnable_Clim_MS Runnable_Clim_HF Runnable_Clim_WM Runnable_Clim_MS Runnable_Clim_HF 0 25 ms 25 ms t … Données Consommées Task_Air_FC Var_FC_1 Var_FC_5 <10ms … Données Consommées Task_Air_FC Var_FC_1 Var_FC_5 <10ms Task_Trans_SM Task_Trans_Mod1 Task_Trans_Mod2 ou active Task_Trans_SM Task_Trans_Mod1 Task_Trans_Mod2 ou active Task_Trans_SM Al_Trans_SM Task_Trans_DC ou active Task_Trans_SM Al_Trans_SM Task_Trans_DC ou active