CEG4566/CSI4541 – Conception de systèmes temps réel
CEG4566/CSI4541 – Conception de systèmes temps réel
CEG4566/CSI4541 – Conception de systèmes temps réel
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> <strong>Conception</strong> <strong>de</strong> <strong>systèmes</strong> <strong>temps</strong> <strong>réel</strong><br />
Chapitre 6 <strong>–</strong> Vivacité, sécurité (Safety), fiabilité et tolérance aux fautes dans les <strong>systèmes</strong><br />
en <strong>temps</strong> <strong>réel</strong><br />
6.1 Introduction générale aux notions <strong>de</strong> sécurité et <strong>de</strong> vivacité<br />
• Une propriété <strong>de</strong> sécurité indique que rien <strong>de</strong> mauvais ne peut arriver.<br />
• Une propriété <strong>de</strong> vivacité indique qu’une bonne chose peut éventuellement arriver.<br />
• En pratique ses notions sont implémentées par l’utilisation <strong>de</strong>s threads et <strong>de</strong>s moniteurs.<br />
Notre objectif : Est <strong>de</strong> s’assurer que les <strong>de</strong>ux propriétés ci-<strong>de</strong>ssus sont satisfaites dans notre<br />
système en <strong>temps</strong> <strong>réel</strong>.<br />
6.2 Vivacité<br />
6.2.1 Définition<br />
Il est possible que <strong>de</strong>ux processus n'arrivent jamais à se synchroniser pour une raison ou pour une<br />
autre. Ceci peut conduire à l'absence <strong>de</strong> réalisation d'un objectif fixé sans pour autant qu'il y ait<br />
interblocage.<br />
Exemple: Pour réparer un chauffe-eau électrique, le plombier peut <strong>de</strong>man<strong>de</strong>r que l’alimentation<br />
électrique soit correctement installée: il faut donc l'intervention préalable <strong>de</strong> l'électricien;<br />
l'électricien peut lui exiger <strong>de</strong> ne faire les travaux que lorsque il n’y ai plus <strong>de</strong> risques et que les<br />
problèmes <strong>de</strong> fuites d'eau seront résolus : il faut au préalable l'intervention du plombier<br />
Les <strong>de</strong>ux processus sont actifs (ils viennent régulièrement) mais ils ne font pas progresser les<br />
choses : on est face à une activité non constructive et donc un problème <strong>de</strong> vivacité<br />
6.2.2 Propriétés <strong>de</strong> la vivacité<br />
Soit l’exemple suivant (d’après Jeff Magee). Un passage sur un pont à sens unique ne peut laisser<br />
passer les voitures que sur une seule voie.<br />
Les voitures ne peuvent avancer concurremment que ci elles vont dans la même direction.<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
1
On a un problème si <strong>de</strong>ux voitures avançant dans <strong>de</strong>ux directions différentes entrent sur le pont en<br />
même <strong>temps</strong>.<br />
Mo<strong>de</strong>l :<br />
- Événements ou actions intéressantes ? Entrer et Sortir<br />
- Processus? Voitures et Pont<br />
- Propriétés? Sens unique<br />
- Définir chaque processus et les interactions entre processus (structure)<br />
- const N = 3 //nombre <strong>de</strong> chaque type <strong>de</strong> voiture<br />
- Range T = 0..N //comptage <strong>de</strong> voiture<br />
- Range ID= 1..N //I<strong>de</strong>ntité <strong>de</strong> la voiture<br />
La question est : Est-ce chaque voiture a éventuellement une chance <strong>de</strong> traverser le pont? On dit<br />
qu’elle progresse.<br />
La propriété <strong>de</strong> progression indique qu’il est toujours possible qu’une action va éventuellement<br />
s’exécuter.<br />
La progression est le contraire <strong>de</strong> la famine (nom donné à une situation où une action n’a aucune<br />
<strong>de</strong> s’exécuter).<br />
Choix équitable : Si un ensemble <strong>de</strong> transitions est exécuté indéfiniment souvent, alors chaque<br />
transition <strong>de</strong> cet ensemble doit être exécutée indéfiniment souvent. Exemple : Jeter indéfiniment<br />
une pièce en l’air, les <strong>de</strong>ux faces <strong>de</strong> la pièce (pile, face) vont sortir indéfiniment souvent.<br />
Si on applique le principe du choix équitable à notre exemple <strong>de</strong> pont, il y aura toujours<br />
progression.<br />
progress BLUECROSS = {blue[ID].enter}<br />
progress REDCROSS = {red[ID].enter}<br />
Aucune violation <strong>de</strong> la progression détectée.<br />
Pour détecter <strong>de</strong>s violations <strong>de</strong> la règle <strong>de</strong> progression, il faut soumettre le système à <strong>de</strong>s<br />
situations où le choix équitable n’est plus possible. Par exemple, une congestion du pont. Dans ce<br />
cas on impose une règle d’ordonnancement adaptée pour éviter la famine et assurer la<br />
progression.<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
2
Exemple d’algorithme (d’après Jeff Magee) :<br />
Le problème est qu’il se peut que <strong>de</strong>s voitures atten<strong>de</strong>nt aux <strong>de</strong>ux extrémités du pont et que le<br />
pont n’autorisent ni les voitures bleues ni rouges à le traverser. Si on suppose qu’on a 3 voitures<br />
rouges et 3 bleues qui atten<strong>de</strong>nt, on aura le cas suivant :<br />
red.1.request<br />
red.2.request<br />
red.3.request<br />
blue.1.request<br />
blue.2.request<br />
blue.3.request<br />
Solution?<br />
Introduire une certaine asymétrie dans le problème sous la forme d’une variable booléenne (bt)<br />
qui casse le blocage en indiquant si c’est le tour <strong>de</strong>s bleues ou <strong>de</strong>s rouges <strong>de</strong> traverser.<br />
Arbitrairement on initialise bt à ‘1’ ce qui donne la priorité au bleues.<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
3
6.3 Sécurité (safety)<br />
6.3.1 Définitions<br />
Aptitu<strong>de</strong> d’une entité à maintenir un niveau d’acceptabilité d’événement à priori redoutés pouvant<br />
mettre en cause immédiatement ou à terme la vie <strong>de</strong> l’homme, l’intégrité <strong>de</strong> ses biens, son<br />
environnement (c’est la probabilité que le système puisse faire apparaitre <strong>de</strong>s événements définis<br />
comme redoutés avec un niveau <strong>de</strong> risque inacceptable).<br />
Par contre, la sureté <strong>de</strong> fonctionnement :<br />
Caractérise l’aptitu<strong>de</strong> pour un système, un produit ou une activité <strong>de</strong> satisfaire l’ensemble <strong>de</strong>s<br />
performances opérationnelles requise pour une mission donnée.<br />
Quand on dit que la sécurité indique que rien <strong>de</strong> mauvais ne peut arriver, on sous-entend que :<br />
- Pas d’ARRET ou <strong>de</strong> BLOCAGE (aucune transition possible)<br />
- Pas d’ERREUR dans la détection d’un comportement erroné du système.<br />
- Aucun état ERREUR/ARRET qui soit un état puits du système (voir RdP, chapitre II).<br />
6.3.2 Exemple<br />
Dans l’exemple précé<strong>de</strong>nt du pont à sens unique, une erreur dans la détection du comportement<br />
erroné du système peut provoquer <strong>de</strong>s conséquences catastrophiques.<br />
Des solutions s’imposent :<br />
- Synchronisation<br />
- Priorité<br />
- Exclusion mutuelle<br />
Les conditions d’erreur indiquent ce qui n’est par requis par le système (ex : les exceptions)<br />
Dans les <strong>systèmes</strong> complexes et critiques, on préfère spécifier clairement toutes les exigences <strong>de</strong><br />
sécurité on indiquant ce qui est requis par le système.<br />
Souvent on fait ce qu’on appelle une analyse <strong>de</strong> sécurité.<br />
Remarque :<br />
En plus d’assurer la sécurité on doit assurer aussi la vivacité du système et une certaine sureté <strong>de</strong><br />
fonctionnement.<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
4
6.4 Fiabilité et tolérance aux fautes<br />
6.4.1 Mise en situation<br />
Dans les <strong>systèmes</strong> à gran<strong>de</strong> présence <strong>de</strong> logiciel (<strong>de</strong>s millions <strong>de</strong> ligne <strong>de</strong> co<strong>de</strong>):<br />
- Pour chaque million <strong>de</strong> lignes <strong>de</strong> co<strong>de</strong> → 20000 erreurs (bugs)<br />
- 90% <strong>de</strong>s erreurs sont détectées lors <strong>de</strong>s tests logiciels<br />
- 200 erreurs vont apparaitre lors <strong>de</strong> la première année d’utilisation.<br />
- 1800 erreurs vont rester non détectées.<br />
- Et le pire c’est les erreurs dormantes !<br />
6.4.2 Définitions<br />
Fiabilité du logiciel :<br />
- On ne peut pas vraiment parler <strong>de</strong> fiabilité quand in s’agit <strong>de</strong> logiciel, la fiabilité est<br />
plutôt réserver au matériel.<br />
- Certain la définissent comme une mesure du succès qu’a un système à se conformer à<br />
certaines exigences <strong>de</strong> son comportement.<br />
Défaillance du logiciel :<br />
- C’est une déviation du système par rapport aux exigences pour lesquelles il a été<br />
développé.<br />
- Les défaillances résultent <strong>de</strong> problèmes internes au système qui se manifestent dans le<br />
comportement externe du système.<br />
- Ces problèmes sont appelés erreurs et les algorithmes qui les causent sont appelés fautes.<br />
- 4 Sources <strong>de</strong> fautes qui peuvent conduire à la défaillance du système :<br />
o Spécification (exigences) incorrectes.<br />
o Erreurs <strong>de</strong> conception du logiciel.<br />
o Erreurs matériel (processeur)<br />
o Erreurs <strong>de</strong> communication entre sous-<strong>systèmes</strong>.<br />
Classification <strong>de</strong>s fautes :<br />
- Transitoire : Elle apparait une fois puis disparait.<br />
- Intermittente : Elle est transitoire et apparait périodiquement.<br />
- Permanente : Continue d’exister jusqu’au moment où on répare la composante fautive.<br />
Types <strong>de</strong> défaillance :<br />
- Crash : Un serveur s’arrête <strong>de</strong> fonctionner mais jusque là il fonctionne correctement.<br />
- Omission : Un serveur omet <strong>de</strong> répondre à une <strong>de</strong>man<strong>de</strong>.<br />
- Timing : La réponse est en <strong>de</strong>hors <strong>de</strong>s limites temporelles imposées par le système en<br />
<strong>temps</strong> <strong>réel</strong>.<br />
- Réponse incorrect.<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
5
- Défaillance arbitraire (Byzantine) : Des réponses arbitraires sont produites à <strong>de</strong>s <strong>temps</strong><br />
arbitraires.<br />
Erreur <strong>de</strong><br />
contrainte<br />
6.4.3 Risques et sécurité<br />
Classification <strong>de</strong>s mo<strong>de</strong>s <strong>de</strong> défaillance<br />
- dans le cadre <strong>de</strong>s <strong>systèmes</strong> informatiques, la sécurité doit couvrir aussi bien les nuisances<br />
<strong>de</strong> nature aléatoire (les dangers) que les nuisances <strong>de</strong> nature volontaire (les menaces).<br />
- Pour bien marquer cette distinction, les spécialistes <strong>de</strong> gestion <strong>de</strong>s risques informatiques<br />
utilisent les termes <strong>de</strong> :<br />
La sécurité-innocuité :<br />
o Sécurité-innocuité dans le premier cas (Safety)<br />
o Sécurité-confi<strong>de</strong>ntialité dans le second cas (Security)<br />
- Elle concerne l’aptitu<strong>de</strong> du système à ne pas connaitre d’événements catastrophiques.<br />
- Les dangers sont <strong>de</strong>s défaillances du matériel, les défaillances du logiciel et les erreurs<br />
humaines non intentionnelles (non malicieuses).<br />
- Ces aspects sont traités dans le cadre <strong>de</strong> la sureté <strong>de</strong> fonctionnement.<br />
La sécurité-confi<strong>de</strong>ntialité :<br />
Erreur<br />
<strong>de</strong><br />
valeur<br />
Mo<strong>de</strong> défaillance<br />
Domaine valeur Domaine <strong>temps</strong><br />
En avance Omission En retard<br />
- Elle concerne l’aptitu<strong>de</strong> du système à se prémunir <strong>de</strong> la manipulation non-autorisée <strong>de</strong><br />
l’information à <strong>de</strong>s fins malveillantes.<br />
- Ces aspects sont traités dans le cadre <strong>de</strong> la sécurité <strong>de</strong>s <strong>systèmes</strong> informatiques.<br />
Note : Dans notre cours <strong>de</strong> système en <strong>temps</strong> <strong>réel</strong>, on ne regar<strong>de</strong> que les aspects <strong>de</strong> sureté <strong>de</strong><br />
fonctionnement (safety)<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
Aléatoire<br />
(Incontrollable)<br />
Défaillance sour<strong>de</strong> Arrêt Défaillance contrôlée<br />
6
Exercice :<br />
Cocher la bonne case : Sécurité-innocuité? ou <strong>–</strong>confi<strong>de</strong>ntialité?<br />
6.4.4 Tolérance aux fautes<br />
• Les <strong>systèmes</strong> embarqués, critiques et en <strong>temps</strong> <strong>réel</strong> sont toujours conçus comme étant <strong>de</strong>s<br />
<strong>systèmes</strong> ‘tolérants aux fautes’.<br />
• La tolérance aux fautes est fortement liée aux notions suivantes : Disponibilité, fiabilité,<br />
sécurité, sureté, maintenabilité. C’est ce qu’on appelle la ‘dépendabilité’.<br />
Prêt à<br />
l’usage<br />
Disponible<br />
Continuité<br />
<strong>de</strong><br />
délivrance<br />
du service<br />
Fiable<br />
Sécuritaire<br />
Dépendabilité<br />
Pas <strong>de</strong><br />
conséquences<br />
catastrophiques<br />
Pas d’accès<br />
non autorisé<br />
à<br />
l’information<br />
Confi<strong>de</strong>ntiel<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
Pas<br />
d’altération <strong>de</strong><br />
l’information<br />
Intègre<br />
Aptitu<strong>de</strong> à<br />
être<br />
réparé<br />
Maintenable<br />
7
Exemple : Une attaque cybernétique :<br />
6.4.5 Comment construire un système en <strong>temps</strong> <strong>réel</strong> tolérant aux fautes?<br />
Réponse 1 : Il faut construire un système sûr <strong>de</strong> sa conception à sa validation.<br />
Évitement<br />
<strong>de</strong>s fautes<br />
Tolérance<br />
aux fautes<br />
Un Un Un Un système système système système sûr sûr sûr sûr <strong>de</strong> <strong>de</strong> <strong>de</strong> <strong>de</strong> sa sa sa sa conception conception conception conception<br />
à à à à sa sa sa sa validation validation<br />
validation validation<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
Élimination<br />
<strong>de</strong>s fautes<br />
Prévision<br />
<strong>de</strong>s fautes<br />
8
Réponse 2 : Il faut prévoir <strong>de</strong>s dispositions à la sécurité<br />
Réponse 3 : Il faut intervenir à différentes étapes <strong>de</strong> la conception pour démontrer une assurance<br />
<strong>de</strong> la conception et une assurance qualité.<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
9
6.5 Étu<strong>de</strong> <strong>de</strong> cas, Pompe à insuline pour personnes diabétiques<br />
(D’après Ian Sommerville, Software Engineering 8th edition)<br />
6.5.1 Introduction<br />
• Les <strong>systèmes</strong> médicaux intègrent <strong>de</strong> plus en plus <strong>de</strong>s <strong>systèmes</strong> informatiques qui sont souvent<br />
critiques. La défaillance <strong>de</strong> ces <strong>systèmes</strong> peut causer un danger pour la santé ou la vie <strong>de</strong>s<br />
patients.<br />
• La sécurité <strong>de</strong>s patients dépend du bon fonctionnement <strong>de</strong> ces équipements ainsi que <strong>de</strong> leur<br />
exacte réponse dans le <strong>temps</strong>.<br />
• Contrairement aux <strong>systèmes</strong> industriels, ces instrumentations biomédicales sont souvent<br />
fortement intégrées et nécessitent une très gran<strong>de</strong> précision.<br />
6.5.2 Mise en situation<br />
Les personnes soufrant <strong>de</strong> diabète ne sécrètent plus d’hormones naturelles pour le métabolisme<br />
du glucose. La fonction du pancréas est remplacée par une insuline artificielle. D’où dans certains<br />
cas la nécessité d’utiliser <strong>de</strong>s pompes à insuline.<br />
La pompe utilise un capteur qui mesure la quantité <strong>de</strong> glucose dans le sang à <strong>de</strong>s intervalles <strong>de</strong><br />
<strong>temps</strong> réguliers. L’insuline sera injectée à <strong>de</strong>s quantités qui ramènent le taux <strong>de</strong> glucose au taux<br />
‘normal’. On observe donc, qu’on a <strong>de</strong>s contraintes <strong>de</strong> <strong>temps</strong> et <strong>de</strong> précision.<br />
Les attributs <strong>de</strong> ce type <strong>de</strong> système sont nécessairement :<br />
- La disponibilité.<br />
- La fiabilité<br />
- La sécurité<br />
- La vivacité<br />
Question : Justifier ces trois attributs.<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
10
6.5.3 Architecture du système<br />
Le flux <strong>de</strong> données pour un tel système peut se représenté comme suit :<br />
Blood<br />
Insulin<br />
6.5.4 Algorithme<br />
- Mesurer le taux <strong>de</strong> glucose dans le sang<br />
- Comparer <strong>de</strong>s mesures successives.<br />
- Si le niveau <strong>de</strong> glucose augmente, alors injecter <strong>de</strong> l’insuline<br />
- Maintenir un niveau stable <strong>de</strong> glucose<br />
- Répéter.<br />
Needle<br />
assembly<br />
Sensor<br />
Blood sugar<br />
sensor<br />
Insulin<br />
pump<br />
Blood<br />
parameters<br />
Insulin reservoir<br />
Pump Clock<br />
Controller<br />
Display1 Display2<br />
Power supply<br />
Blood sugar<br />
analysis<br />
Insulin<br />
requirement<br />
computation<br />
Pump control<br />
commands<br />
Insulin<br />
Insulin<br />
<strong>de</strong>livery<br />
controller<br />
requirement<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
Alarm<br />
Blood sugar<br />
level<br />
11
Note : L’injection <strong>de</strong> l’insuline ne dépend pas seulement <strong>de</strong> la quantité <strong>de</strong> glucose dans le sang<br />
mais aussi <strong>de</strong>s injections précé<strong>de</strong>ntes car l’action <strong>de</strong> l’insuline n’est pas instantanée. L’algorithme<br />
<strong>de</strong> décision d’injecter <strong>de</strong> l’insuline et sa quantité est assez complexe.<br />
6.5.5 Scénarios d’injection d’insuline<br />
Niveau<br />
De glucose<br />
6.5.6 Travail personnel<br />
Injecter<br />
t1 t2 t3<br />
Injecter<br />
Ne pas injecter<br />
Ne pas injecter<br />
Ne pas injecter<br />
Étudier et analyser en détail cette pompe à insuline. Décrire <strong>de</strong>s architectures logicielles et<br />
matérielles qui respectent les attributs <strong>de</strong> ce système en <strong>temps</strong> <strong>réel</strong>, embarqué et critique.<br />
Chapitre VI - <strong>CEG4566</strong>/<strong>CSI4541</strong> <strong>–</strong> RNM <strong>–</strong> SIGE <strong>–</strong> UOttawa <strong>–</strong> Hiver 2013<br />
Région indésirable<br />
Région sécuritaire<br />
Région non sécuritaire<br />
Temps<br />
12