Post on 17-Jun-2020
Conception et Implantation de Système Fondé sur les
Composants. Vers une Uni�cation des Paradigmes Génie
Logiciel et Système.
Marc Poulhiès
Orange Labs1 & Verimag2
Directeur de thèse: Joseph Sifakis1
Co-encadrant: Jacques Pulou2
5 Mars 2010
Introduction Contexte
Contexte
Développement logiciel pour système embarqué fondé sur les composants.
2 / 55
Introduction Contexte
Contexte
Développement logiciel pour système embarqué fondé sur les composants.
2 / 55
Introduction Contexte
Systèmes Embarqués
Caractéristiques principales :
encombrement réduit
performant
Limitations :
autonomie limitée
ressources in�mes comparées àdes stations de travail
=⇒ prise en compte de ces contraintes matérielles dans le logiciel
3 / 55
Introduction Contexte
Systèmes Embarqués
Caractéristiques principales :
encombrement réduit
performant
Limitations :
autonomie limitée
ressources in�mes comparées àdes stations de travail
=⇒ prise en compte de ces contraintes matérielles dans le logiciel
3 / 55
Introduction Contexte
Systèmes Embarqués
Caractéristiques principales :
encombrement réduit
performant
Limitations :
autonomie limitée
ressources in�mes comparées àdes stations de travail
guidage routier
appareil photo
musique
web
paiement
abonnement transportsmail
jeux
=⇒ prise en compte de ces contraintes matérielles dans le logiciel
3 / 55
Introduction Contexte
Systèmes Embarqués
Caractéristiques principales :
encombrement réduit
performant
Limitations :
autonomie limitée
ressources in�mes comparées àdes stations de travail
guidage routier
appareil photo
musique
web
paiement
abonnement transportsmail
jeux
=⇒ prise en compte de ces contraintes matérielles dans le logiciel
3 / 55
Introduction Contexte
Systèmes Embarqués
Caractéristiques principales :
encombrement réduit
performant
Limitations :
autonomie limitée
ressources in�mes comparées àdes stations de travail
guidage routier
appareil photo
musique
web
paiement
abonnement transportsmail
jeux
=⇒ prise en compte de ces contraintes matérielles dans le logiciel
3 / 55
Introduction Contexte
Systèmes Embarqués
Caractéristiques principales :
encombrement réduit
performant
Limitations :
autonomie limitée
ressources in�mes comparées àdes stations de travail
guidage routier
appareil photo
musique
web
paiement
abonnement transportsmail
jeux
=⇒ prise en compte de ces contraintes matérielles dans le logiciel
3 / 55
Introduction Contexte
Contexterappel
Développement logiciel pour système embarqué fondé sur les composants.
4 / 55
Introduction Contexte
Développement logicielprésentation du �cycle�
Cycle composé de 4 étapes:
1 spéci�cation: expression des besoins
2 conception: création d'un modèle dusystème
3 Implantation: génération d'unexécutable (code machine)
4 analyse: l'exécutable remplit-il lesspéci�cations ?
SPECIFICATION
IMPLANTATION ANALYSE
CONCEPTION
Déroulement �idéal�, des problèmes existent...5 / 55
Introduction Contexte
Développement logicielprésentation du �cycle�
Cycle composé de 4 étapes:
1 spéci�cation: expression des besoins
2 conception: création d'un modèle dusystème
3 Implantation: génération d'unexécutable (code machine)
4 analyse: l'exécutable remplit-il lesspéci�cations ?
besoin 2besoin 3
besoin 1
SPECIFICATIONS
SPECIFICATION
IMPLANTATION ANALYSE
CONCEPTION
Déroulement �idéal�, des problèmes existent...5 / 55
Introduction Contexte
Développement logicielprésentation du �cycle�
Cycle composé de 4 étapes:
1 spéci�cation: expression des besoins
2 conception: création d'un modèle dusystème
3 Implantation: génération d'unexécutable (code machine)
4 analyse: l'exécutable remplit-il lesspéci�cations ?
besoin 2besoin 3
besoin 1
SPECIFICATIONS
MODÈLE DU SYSTÈME
SPECIFICATION
IMPLANTATION ANALYSE
CONCEPTION
Déroulement �idéal�, des problèmes existent...5 / 55
Introduction Contexte
Développement logicielprésentation du �cycle�
Cycle composé de 4 étapes:
1 spéci�cation: expression des besoins
2 conception: création d'un modèle dusystème
3 Implantation: génération d'unexécutable (code machine)
4 analyse: l'exécutable remplit-il lesspéci�cations ?
besoin 2besoin 3
besoin 1
SPECIFICATIONS
MODÈLE DU SYSTÈME
010100101010100100101011010101001
exec.
SPECIFICATION
IMPLANTATION ANALYSE
CONCEPTION
Déroulement �idéal�, des problèmes existent...5 / 55
Introduction Contexte
Développement logicielprésentation du �cycle�
Cycle composé de 4 étapes:
1 spéci�cation: expression des besoins
2 conception: création d'un modèle dusystème
3 Implantation: génération d'unexécutable (code machine)
4 analyse: l'exécutable remplit-il lesspéci�cations ?
besoin 2besoin 3
besoin 1
SPECIFICATIONS
MODÈLE DU SYSTÈME
010100101010100100101011010101001
exec.
?OK !
PAS OK!
SPECIFICATION
IMPLANTATION ANALYSE
CONCEPTION
Déroulement �idéal�, des problèmes existent...5 / 55
Introduction Contexte
Développement logicielprésentation du �cycle�
Cycle composé de 4 étapes:
1 spéci�cation: expression des besoins
2 conception: création d'un modèle dusystème
3 Implantation: génération d'unexécutable (code machine)
4 analyse: l'exécutable remplit-il lesspéci�cations ?
besoin 2besoin 3
besoin 1
SPECIFICATIONS
MODÈLE DU SYSTÈME
010100101010100100101011010101001
exec.
?OK !
PAS OK!
SPECIFICATION
IMPLANTATION ANALYSE
CONCEPTION
Déroulement �idéal�, des problèmes existent...5 / 55
Introduction Limitations
Développement logicielproblèmes durant la conception - réutilisation/intégration
Pas de prise en compte de la réutilisation/intégration de logiciel tiers.
?
$$
développeur
anciendéveloppement
nouveaudéveloppement
vendeur ?
6 / 55
Introduction Limitations
Développement logicielproblèmes durant la conception - manque de structuration
Manque de structuration, complexité di�cile à maîtriser.
?7 / 55
Introduction Limitations
Développement logicielproblèmes durant la conception - langages/outils inadaptés
Di�culté de changer les habitudes=⇒ utilisation d'outils/langages inadaptés/trop complexes.
inline void* f(void* (*f)(int x), const int x) const __attribute__((naked)) { ...} ?
8 / 55
Introduction Limitations
Bilan - Développement logicielproblèmes durant la conception
réutilisation/intégration de logiciel
manque de structuration, complexitédi�cile à maîtriser
outils/langages inadaptés
inline void* f(void* (*f)(int x), const int x) const __attribute__((naked)) { ...}
?$$
?
=⇒ une réponse possible: les composants logiciels...
9 / 55
Introduction Limitations
Bilan - Développement logicielproblèmes durant la conception
réutilisation/intégration de logiciel
manque de structuration, complexitédi�cile à maîtriser
outils/langages inadaptés
inline void* f(void* (*f)(int x), const int x) const __attribute__((naked)) { ...}
?$$
?
=⇒ une réponse possible: les composants logiciels...
9 / 55
Introduction Limitations
Contexterappel
Développement logiciel pour système embarqué fondé sur les composants.
10 / 55
Introduction Composants logiciels: partie de réponse
Composants logicielsintroduction
Objectif:
Construction du logiciel par assemblage de briques compatibles entre elles.Idéalement, on souhaite un résultat correct par construction.
11 / 55
Introduction Composants logiciels: partie de réponse
Composants logicielsintroduction - encapsulation
Encapsulation (interface/contenu) =⇒ réutilisation/intégration
$$
développeur
anciendéveloppement
nouveaudéveloppement
vendeur
12 / 55
Introduction Composants logiciels: partie de réponse
Composants logicielsintroduction - architecture
Architecture =⇒ structuration
13 / 55
Introduction Composants logiciels: partie de réponse
Composants logicielsintroduction - hiérarchie
Hiérarchie (abstraction) =⇒ structuration
14 / 55
Introduction Composants logiciels: partie de réponse
Composants logicielsrésumé
Les points à retenir
encapsulation
architecture
hiérarchie
$$
15 / 55
Introduction Composants logiciels: partie de réponse
Composants logicielset cycle de développement, pour les systèmes embarqués
Composants utilisés à partir de la conception.
Composants adaptés �implantation�
implantation pour systèmes embarqués
analyses impraticables
Ex: TinyOS, Think
Composants adaptés �analyses�
analyse
pas d'implantation pour systèmesembarqués
Ex: Ptolemy II, BIP
SPECIFICATION
CONCEPTION
IMPLANTATION ANALYSE
SPECIFICATIO
NS
010100101010100100101011010101001exec. OK !
PAS OK!
=⇒ Comment concilier les deux approches ?
16 / 55
Introduction Composants logiciels: partie de réponse
Composants logicielset cycle de développement, pour les systèmes embarqués
Composants utilisés à partir de la conception.
Composants adaptés �implantation�
implantation pour systèmes embarqués
analyses impraticables
Ex: TinyOS, Think
Composants adaptés �analyses�
analyse
pas d'implantation pour systèmesembarqués
Ex: Ptolemy II, BIP
SPECIFICATION
CONCEPTION
IMPLANTATION ANALYSE
SPECIFICATIO
NS
010100101010100100101011010101001exec. OK !
PAS OK!
=⇒ Comment concilier les deux approches ?
16 / 55
Introduction Composants logiciels: partie de réponse
Composants logicielset cycle de développement, pour les systèmes embarqués
Composants utilisés à partir de la conception.
Composants adaptés �implantation�
implantation pour systèmes embarqués
analyses impraticables
Ex: TinyOS, Think
Composants adaptés �analyses�
analyse
pas d'implantation pour systèmesembarqués
Ex: Ptolemy II, BIP
SPECIFICATION
CONCEPTION
IMPLANTATION ANALYSE
SPECIFICATIO
NS
010100101010100100101011010101001exec. OK !
PAS OK!
=⇒ Comment concilier les deux approches ?
16 / 55
Introduction Composants logiciels: partie de réponse
Composants logicielset cycle de développement, pour les systèmes embarqués
Composants utilisés à partir de la conception.
Composants adaptés �implantation�
implantation pour systèmes embarqués
analyses impraticables
Ex: TinyOS, Think
Composants adaptés �analyses�
analyse
pas d'implantation pour systèmesembarqués
Ex: Ptolemy II, BIP
SPECIFICATION
CONCEPTION
IMPLANTATION ANALYSE
SPECIFICATIO
NS
010100101010100100101011010101001exec. OK !
PAS OK!
=⇒ Comment concilier les deux approches ?
16 / 55
Introduction Ce qu'il manque actuellement
Bilan - ce qu'il manque actuellement
Outils/langages:
adaptés aux systèmes développés
compatibles avec les habitudes des développeurs
implantables sur systèmes embarqués
permettant des analyses puissantes
17 / 55
Introduction Ce qu'il manque actuellement
1 IntroductionContexteLimitationsComposants logiciels: partie de réponseCe qu'il manque actuellement
2 ContributionsDémarche de création de langageApplication de cette démarche: BuzzLe langage BuzzLes traductions de BuzzLe compilateur de Buzz
3 RésultatsApplication de réseau de capteursDîner des geeks philosophes
4 Conclusion et perspectives
18 / 55
Contributions
1 IntroductionContexteLimitationsComposants logiciels: partie de réponseCe qu'il manque actuellement
2 ContributionsDémarche de création de langageApplication de cette démarche: BuzzLe langage BuzzLes traductions de BuzzLe compilateur de Buzz
3 RésultatsApplication de réseau de capteursDîner des geeks philosophes
4 Conclusion et perspectives
19 / 55
Contributions Démarche de création de langage
Notre démarche
création d'un langageuni�cateur
deux traductions vers deslangages existants
TRADUCTION 1 TRADUCTION 2
CONCEPTION
IMPLANTATION ANALYSE
LANGAGEEXISTANT 1
LANGAGEEXISTANT 2
010100101010100100101011010101001
exec. OK !PAS OK!
LANGAGEUNIFICATEUR
20 / 55
Contributions Application de cette démarche: Buzz
Buzzun prototype de langage
Les Motivations
Réaliser un exemple complet: un langage et une chaîne d'outils dedéveloppement.
Fondements
besoins internes à notre équipe à Orange Labs
inspiration de l'existant et de notre expérience
pas d'objectifs d'exhaustivité ou de généricité du langage
21 / 55
Contributions Application de cette démarche: Buzz
Buzzun prototype de langage
Les Motivations
Réaliser un exemple complet: un langage et une chaîne d'outils dedéveloppement.
Fondements
besoins internes à notre équipe à Orange Labs
inspiration de l'existant et de notre expérience
pas d'objectifs d'exhaustivité ou de généricité du langage
21 / 55
Contributions Application de cette démarche: Buzz
Buzzchoix techniques
Le langage Buzz et ses outils reposent sur des traductions vers deuxlangages existants.
Nos choix:
BIP pour les analyses
Think pour l'implantation
BUZZ
BIP
THINK
22 / 55
Contributions Application de cette démarche: Buzz
Buzzchoix techniques
Le langage Buzz et ses outils reposent sur des traductions vers deuxlangages existants.
Nos choix:
BIP pour les analyses
Think pour l'implantation
BUZZ
BIP
THINK
22 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - présentation
BIP: framework de modélisation de système à composants.
BIP dé�ni trois �couches�:
Comportement (�Behavior�)
Interaction
Priorité
c1
23 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - présentation
BIP: framework de modélisation de système à composants.
BIP dé�ni trois �couches�:
Comportement (�Behavior�)
Interaction
Priorité
c1
a
s
portsdonnées
xy
23 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - présentation
BIP: framework de modélisation de système à composants.
BIP dé�ni trois �couches�:
Comportement (�Behavior�)
Interaction
Priorité
c1
S1
S2 S3
a
sas
a
s
portsdonnées
xy
23 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - présentation
BIP: framework de modélisation de système à composants.
BIP dé�ni trois �couches�:
Comportement (�Behavior�)
Interaction
Priorité
c1
S1
S2 S3
a
sas
a
s
ports
cr3 S1
S2
c
r3
c3
b
r2c2
S1
S2
b
r2S1
r2
b
S1
r2
b
données
xy
23 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - présentation
BIP: framework de modélisation de système à composants.
BIP dé�ni trois �couches�:
Comportement (�Behavior�)
Interaction
Priorité
c1
S1
S2 S3
a
sas
a
s
ports
cr3 S1
S2
c
r3
c3
b
r2c2
S1
S2
b
r2S1
r2
b
S1
r2
bconnecteurs
données
xy
23 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - présentation
BIP: framework de modélisation de système à composants.
BIP dé�ni trois �couches�:
Comportement (�Behavior�)
Interaction
Priorité
c1
S1
S2 S3
a
sas
a
s
ports
cr3 S1
S2
c
r3
c3
b
r2c2
S1
S2
b
r2S1
r2
b
S1
r2
bconnecteurs
{s,r2,r3} {a,b,c}
données
xy
23 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - présentation
BIP: framework de modélisation de système à composants.
BIP dé�ni trois �couches�:
Comportement (�Behavior�)
Interaction
Priorité
c1
S1
S2 S3
a
sas
a
s
ports
cr3 S1
S2
c
r3
c3
b
r2c2
S1
S2
b
r2S1
r2
b
S1
r2
bconnecteurs
{s,r2,r3} {a,b,c}priorité
<
données
xy
23 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - résumé
Les points forts:
sémantique formelle
outils d'analyses (véri�cation, simulation)
Les points faibles:
actuellement, pas d'implantation sur le typede systèmes embarqués visés
changement radical pour les développeurs
24 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - résumé
Les points forts:
sémantique formelle
outils d'analyses (véri�cation, simulation)
Les points faibles:
actuellement, pas d'implantation sur le typede systèmes embarqués visés
changement radical pour les développeurs
Behavior
Interation
Priority
Inter4
Inter3Inter2
Inter1
Prio1: Inter3 < inter4
24 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - résumé
Les points forts:
sémantique formelle
outils d'analyses (véri�cation, simulation)
Les points faibles:
actuellement, pas d'implantation sur le typede systèmes embarqués visés
changement radical pour les développeurs
C++
bipcDfinder
C++ modèle
moteurd'exécution
OK !PAS OK!
Behavior
Interation
Priority
Inter4
Inter3Inter2
Inter1
Prio1: Inter3 < inter4
24 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - résumé
Les points forts:
sémantique formelle
outils d'analyses (véri�cation, simulation)
Les points faibles:
actuellement, pas d'implantation sur le typede systèmes embarqués visés
changement radical pour les développeurs
C++
bipcDfinder
C++ modèle
moteurd'exécution
OK !PAS OK!
Behavior
Interation
Priority
Inter4
Inter3Inter2
Inter1
Prio1: Inter3 < inter4
24 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - résumé
Les points forts:
sémantique formelle
outils d'analyses (véri�cation, simulation)
Les points faibles:
actuellement, pas d'implantation sur le typede systèmes embarqués visés
changement radical pour les développeurs
C++
bipcDfinder
C++ modèle
moteurd'exécution
OK !PAS OK!
Behavior
Interation
Priority
Inter4
Inter3Inter2
Inter1
Prio1: Inter3 < inter4
24 / 55
Contributions Application de cette démarche: Buzz
BIP: Behavior Interaction Prioritylangage d'analyse pour Buzz - résumé
Les points forts:
sémantique formelle
outils d'analyses (véri�cation, simulation)
Les points faibles:
actuellement, pas d'implantation sur le typede systèmes embarqués visés
changement radical pour les développeurs
C++
bipcDfinder
C++ modèle
moteurd'exécution
OK !PAS OK!
Behavior
Interation
Priority
Inter4
Inter3Inter2
Inter1
Prio1: Inter3 < inter4
24 / 55
Contributions Application de cette démarche: Buzz
Thinklangage d'implantation pour Buzz
Think: une implantation du modèle de composant Fractal.
Un composant Fractal possède:
3 catégories d'interface
un contenu
une membrane
Think: Fractal en spéci�ant lanature:
du contenu
de la membrane
du type des interfaces
25 / 55
Contributions Application de cette démarche: Buzz
Thinklangage d'implantation pour Buzz
Think: une implantation du modèle de composant Fractal.
Un composant Fractal possède:
3 catégories d'interface
un contenu
une membrane
Think: Fractal en spéci�ant lanature:
du contenu
de la membrane
du type des interfaces
interfaces de contrôle
interfacesserveurs
interfacesclientes
25 / 55
Contributions Application de cette démarche: Buzz
Thinklangage d'implantation pour Buzz
Think: une implantation du modèle de composant Fractal.
Un composant Fractal possède:
3 catégories d'interface
un contenu
une membrane
Think: Fractal en spéci�ant lanature:
du contenu
de la membrane
du type des interfaces
interfaces de contrôle
interfacesserveurs
interfacesclientes
contenu
25 / 55
Contributions Application de cette démarche: Buzz
Thinklangage d'implantation pour Buzz
Think: une implantation du modèle de composant Fractal.
Un composant Fractal possède:
3 catégories d'interface
un contenu
une membrane
Think: Fractal en spéci�ant lanature:
du contenu
de la membrane
du type des interfaces
interfaces de contrôle
interfacesserveurs
interfacesclientes
contenu
membrane
25 / 55
Contributions Application de cette démarche: Buzz
Thinklangage d'implantation pour Buzz
Think: une implantation du modèle de composant Fractal.
Un composant Fractal possède:
3 catégories d'interface
un contenu
une membrane
Think: Fractal en spéci�ant lanature:
du contenu
de la membrane
du type des interfaces
interfaces de contrôle
interfacesserveurs
interfacesclientes
contenu
membrane
C/ASM
C/ASM
C
25 / 55
Contributions Application de cette démarche: Buzz
Thinklangage d'implantation pour Buzz - résumé
Les points forts:
implantation adaptée aux systèmeembarqués
chaîne d'outils complète
plusieurs cibles embarquées
Les points faibles:
sémantique ∼ langage C
capacités d'analyse insu�santes
void * f(int x){ char i[256]; int j,i=x%10?5*x:2; int *z; for (j=0;j<y(x);j++){ i+=g(j); } foo(z);
void * f(int x){ char i[256]; int j,i=x%10?5*x:2; int *z; for (j=0;j<y(x);j++){ i+=g(j); } foo(z);
.L_memccpy_loop: subi len_lo, lo8(1) sbci len_hi, hi8(1) brcs .L_memccpy_notfound ld __tmp_reg__, Z+ st X+, __tmp_reg__ cp __tmp_reg__, val_lo brne .L_memccpy_loop
void * f(int x){ char i[256]; int j,i=x%10?5*x:2; int *z; for (j=0;j<y(x);j++){ i+=g(j); } foo(z);
C
C
C
ASM
COMPILATEUR
010100101010100100101011010101001
exec.
DEBUG
010100101010100100101011010101001
exec.010100101010100100101011010101001
exec.
26 / 55
Contributions Application de cette démarche: Buzz
Thinklangage d'implantation pour Buzz - résumé
Les points forts:
implantation adaptée aux systèmeembarqués
chaîne d'outils complète
plusieurs cibles embarquées
Les points faibles:
sémantique ∼ langage C
capacités d'analyse insu�santes
void * f(int x){ char i[256]; int j,i=x%10?5*x:2; int *z; for (j=0;j<y(x);j++){ i+=g(j); } foo(z);
void * f(int x){ char i[256]; int j,i=x%10?5*x:2; int *z; for (j=0;j<y(x);j++){ i+=g(j); } foo(z);
.L_memccpy_loop: subi len_lo, lo8(1) sbci len_hi, hi8(1) brcs .L_memccpy_notfound ld __tmp_reg__, Z+ st X+, __tmp_reg__ cp __tmp_reg__, val_lo brne .L_memccpy_loop
void * f(int x){ char i[256]; int j,i=x%10?5*x:2; int *z; for (j=0;j<y(x);j++){ i+=g(j); } foo(z);
C
C
C
ASM
COMPILATEUR
010100101010100100101011010101001
exec.
DEBUG
010100101010100100101011010101001
exec.010100101010100100101011010101001
exec.
26 / 55
Contributions Le langage Buzz
Buzzrappel de la démarche
BUZZ
BIP
THINK
27 / 55
Contributions Le langage Buzz
Buzzles primitives du langage - composant actif
actif [∼ composant BIP, acteur]
28 / 55
Contributions Le langage Buzz
Buzzles primitives du langage - composant interrupteur
interrupteur [contexte matériel]
interruptionmatérielle
29 / 55
Contributions Le langage Buzz
Buzzles primitives du langage - composant passif
passifs [∼ composants Think ]
invocation
30 / 55
Contributions Le langage Buzz
Buzzles primitives du langage - liaison synchrone
synchrone (i.e.bloquante)
foo
bar
foo bar
tem
ps
1:invocation 2:exécution
3:fin de l'invocation
liaisonsynchrone
12
3
31 / 55
Contributions Le langage Buzz
Buzzles primitives du langage - liaison asynchrone
asynchrone (i.e. non bloquante)
foo
bar
foo bar
tem
ps
1:invocation2':exécution
2:fin de l'invocation
liaisonasynchrone
1,2
2'
32 / 55
Contributions Le langage Buzz
Buzzles primitives du langage - liaison asynchrone retardée
asynchrone retardée
foo
bar
foo bar
tem
ps
liaisonretardée
1:invocation 2':exécution
1
22'
2: fin de l'invocation
33 / 55
Contributions Le langage Buzz
Bilan - Buzzles primitives du langage
Les composants peuvent être:
actifs
interrupteurs
passifs
Les interactions entre les composantspeuvent être:
synchrones
asynchrones
asynchrones retardées
COMPOSANTACTIF
COMPOSANTINTERRUPTEUR
COMPOSANTPASSIF
LIAISONSYNCHRONE
LIAISONASYNCHRONE
LIAISONRETARDÉE
34 / 55
Contributions Le langage Buzz
Buzzordonnancement
Politique d'ordonnancement:
non �xée par le langage Buzz
extensible: il est possible de dé�nir des politiques au besoin.
Nous fournissons des politiques prédé�nies:
�Round-Robin�
�Round-Robin� préemptif avec partage de temps
35 / 55
Contributions Le langage Buzz
Buzzordonnancement
Politique d'ordonnancement:
non �xée par le langage Buzz
extensible: il est possible de dé�nir des politiques au besoin.
Nous fournissons des politiques prédé�nies:
�Round-Robin�
�Round-Robin� préemptif avec partage de temps
35 / 55
Contributions Le langage Buzz
Buzzordonnancement
Politique d'ordonnancement:
non �xée par le langage Buzz
extensible: il est possible de dé�nir des politiques au besoin.
Nous fournissons des politiques prédé�nies:
�Round-Robin�
�Round-Robin� préemptif avec partage de temps
35 / 55
Contributions Le langage Buzz
Buzzordonnancement
Politique d'ordonnancement:
non �xée par le langage Buzz
extensible: il est possible de dé�nir des politiques au besoin.
Nous fournissons des politiques prédé�nies:
�Round-Robin�
�Round-Robin� préemptif avec partage de temps
35 / 55
Contributions Le langage Buzz
Buzzordonnancement
Politique d'ordonnancement:
non �xée par le langage Buzz
extensible: il est possible de dé�nir des politiques au besoin.
Nous fournissons des politiques prédé�nies:
�Round-Robin�
�Round-Robin� préemptif avec partage de temps
35 / 55
Contributions Le langage Buzz
Buzzordonnancement
Politique d'ordonnancement:
non �xée par le langage Buzz
extensible: il est possible de dé�nir des politiques au besoin.
Nous fournissons des politiques prédé�nies:
�Round-Robin�
�Round-Robin� préemptif avec partage de temps
35 / 55
Contributions Le langage Buzz
Buzzcontenu des composants
Hypothèse utilisée par les outils
Une représentation en Think et en BIP peutêtre obtenue à partir du contenu de chaquecomposant Buzz.
En pratique
fourniture des deux représentations danschaque composant Buzz
d'autres solutions sont possibles
key_pressed
display
main
send
key_pressed
display
main
sendvoid * f(int x){ char i[256]; int j,i=x%10?5*x:2; int *z; for (j=0;j<y(x);j++){ i+=g(j); } foo(z);C
key_presseddisplay
main
send
BUZZ
THINK BIP
36 / 55
Contributions Le langage Buzz
Buzzcontenu des composants
Hypothèse utilisée par les outils
Une représentation en Think et en BIP peutêtre obtenue à partir du contenu de chaquecomposant Buzz.
En pratique
fourniture des deux représentations danschaque composant Buzz
d'autres solutions sont possibles
key_pressed
display
main
send
key_pressed
display
main
sendvoid * f(int x){ char i[256]; int j,i=x%10?5*x:2; int *z; for (j=0;j<y(x);j++){ i+=g(j); } foo(z);C
key_presseddisplay
main
send
BUZZ
THINK BIP
void * f(int x){ char i[256]; int j,i=x%10?5*x:2; int *z; for (j=0;j<y(x);j++){ i+=g(j); } foo(z);C
36 / 55
Contributions Le langage Buzz
Buzzun exemple simple
log
foobtn
bar
assemblage
btn
37 / 55
Contributions Le langage Buzz
Buzzun exemple simple
log
foobtn
bar
assemblage
btn
component assemblage [schedule=coop-round-robin]{ contains footype as foo [active] contains bartype as bar [active] binds foo.log to bar.btn [async] } ADL(Think)
37 / 55
Contributions Le langage Buzz
Buzzun exemple simple
log
foobtn
bar
assemblage
btn
component assemblage [schedule=coop-round-robin]{ contains footype as foo [active] contains bartype as bar [active] binds foo.log to bar.btn [async] } ADL(Think)
component footype { provides api.Button as btn requires api.Log as log content footype }
ADL(Think)
37 / 55
Contributions Le langage Buzz
Buzzun exemple simple
log
foobtn
bar
assemblage
btn
component assemblage [schedule=coop-round-robin]{ contains footype as foo [active] contains bartype as bar [active] binds foo.log to bar.btn [async] } ADL(Think)
component footype { provides api.Button as btn requires api.Log as log content footype }
ADL(Think)
/* footype.c *//* @@ClientMethod(writeln,log,writeln)@@ *//* @@ServerMethod(btn,exec)@@ */void btn_exec(char x){ ... writeln("received char: %c\n",x); ...} C
/* footype.bip */component footype port btn__exec port log__writeln ... behavior state IDLE on btn__exec to EXEC1 state EXEC1 on log__writeln to EXEC2 ... endend
BIP
37 / 55
Contributions Les traductions de Buzz
Buzzexemple de traduction
Chacune des primitives du langage est accompagnée de règles de traductionvers Think et BIP.
composant actif
interaction asynchrone
Autres traductions similaires.
BUZZ THINK
BIPassemblage
assemblageassemblage
int_btn
ordo_srv
ordo_clt
clt_btn
barbtn
foologbtn
int_btn
ordo_srvordo_clt
clt_btn
int_log clt_log
ordonnanceur
ordo
boot ordo_comp1
ordo_comp2
bootboot
foologbtn
barfoo
IDLE
in outin out
ordonnanceur
btn__exec
log__log terminate
IDLE
in outin out
S1IDLE
btn__exec
btn__exec_fifo
core_instancelog__log
terminate
ready
idle
resume
suspend
block
exec
unblock
ready
idle
resume
suspend
block
unblock
IDLE
EXECBLOC
SUSP
active_stub
exec
IDLE
in outin out
input_fifo
S3
btn__exec
terminateready
idle
resume
suspend
block
exec
unblock
ready
idle
resume
suspend
block
unblock
S1IDLE btn__exec
terminate
IDLE
EXECBLOC
SUSP
core_instanceactive_stub
exec
IDLE
in outin out
btn__exec_fifo
IDLE
in outin out
input_fifo
barbtn
38 / 55
Contributions Les traductions de Buzz
Buzzexemple de traduction
Chacune des primitives du langage est accompagnée de règles de traductionvers Think et BIP.
composant actif
interaction asynchrone
Autres traductions similaires.
BUZZ THINK
BIPassemblage
assemblageassemblage
int_btn
ordo_srv
ordo_clt
clt_btn
barbtn
foologbtn
int_btn
ordo_srvordo_clt
clt_btn
int_log clt_log
ordonnanceur
ordo
boot ordo_comp1
ordo_comp2
bootboot
foologbtn
barfoo
IDLE
in outin out
ordonnanceur
btn__exec
log__log terminate
IDLE
in outin out
S1IDLE
btn__exec
btn__exec_fifo
core_instancelog__log
terminate
ready
idle
resume
suspend
block
exec
unblock
ready
idle
resume
suspend
block
unblock
IDLE
EXECBLOC
SUSP
active_stub
exec
IDLE
in outin out
input_fifo
S3
btn__exec
terminateready
idle
resume
suspend
block
exec
unblock
ready
idle
resume
suspend
block
unblock
S1IDLE btn__exec
terminate
IDLE
EXECBLOC
SUSP
core_instanceactive_stub
exec
IDLE
in outin out
btn__exec_fifo
IDLE
in outin out
input_fifo
barbtn
38 / 55
Contributions Les traductions de Buzz
Buzzexemple de traduction
Chacune des primitives du langage est accompagnée de règles de traductionvers Think et BIP.
composant actif
interaction asynchrone
Autres traductions similaires.
BUZZ THINK
BIPassemblage
assemblageassemblage
int_btn
ordo_srv
ordo_clt
clt_btn
barbtn
foologbtn
int_btn
ordo_srvordo_clt
clt_btn
int_log clt_log
ordonnanceur
ordo
boot ordo_comp1
ordo_comp2
bootboot
foologbtn
barfoo
IDLE
in outin out
ordonnanceur
btn__exec
log__log terminate
IDLE
in outin out
S1IDLE
btn__exec
btn__exec_fifo
core_instancelog__log
terminate
ready
idle
resume
suspend
block
exec
unblock
ready
idle
resume
suspend
block
unblock
IDLE
EXECBLOC
SUSP
active_stub
exec
IDLE
in outin out
input_fifo
S3
btn__exec
terminateready
idle
resume
suspend
block
exec
unblock
ready
idle
resume
suspend
block
unblock
S1IDLE btn__exec
terminate
IDLE
EXECBLOC
SUSP
core_instanceactive_stub
exec
IDLE
in outin out
btn__exec_fifo
IDLE
in outin out
input_fifo
barbtn
38 / 55
Contributions Les traductions de Buzz
Buzzexemple de traduction
Chacune des primitives du langage est accompagnée de règles de traductionvers Think et BIP.
composant actif
interaction asynchrone
Autres traductions similaires.
BUZZ THINK
BIPassemblage
assemblageassemblage
int_btn
ordo_srv
ordo_clt
clt_btn
barbtn
foologbtn
int_btn
ordo_srvordo_clt
clt_btn
int_log clt_log
ordonnanceur
ordo
boot ordo_comp1
ordo_comp2
bootboot
foologbtn
barfoo
IDLE
in outin out
ordonnanceur
btn__exec
log__log terminate
IDLE
in outin out
S1IDLE
btn__exec
btn__exec_fifo
core_instancelog__log
terminate
ready
idle
resume
suspend
block
exec
unblock
ready
idle
resume
suspend
block
unblock
IDLE
EXECBLOC
SUSP
active_stub
exec
IDLE
in outin out
input_fifo
S3
btn__exec
terminateready
idle
resume
suspend
block
exec
unblock
ready
idle
resume
suspend
block
unblock
S1IDLE btn__exec
terminate
IDLE
EXECBLOC
SUSP
core_instanceactive_stub
exec
IDLE
in outin out
btn__exec_fifo
IDLE
in outin out
input_fifo
barbtn
38 / 55
Contributions Le compilateur de Buzz
Détails pratiques sur Buzz
Le compilateur de Buzz:
est constitué d'environs 10 K-lignes de Java + C + ASM
est une extension du compilateur Think
est distribué sur le web (licence libre: GPL/LGPL)
39 / 55
Contributions Le compilateur de Buzz
Détails pratiques sur Buzz
Le compilateur de Buzz:
est constitué d'environs 10 K-lignes de Java + C + ASM
est une extension du compilateur Think
est distribué sur le web (licence libre: GPL/LGPL)
Char
gem
ent
Char
gem
ent
THINK
Compilateur Think
Générateur de code
010100101010100100101011010101001
exec.
39 / 55
Contributions Le compilateur de Buzz
Détails pratiques sur Buzz
Le compilateur de Buzz:
est constitué d'environs 10 K-lignes de Java + C + ASM
est une extension du compilateur Think
est distribué sur le web (licence libre: GPL/LGPL)
Char
gem
ent
Char
gem
ent
BUZZ
Générateur de code
010100101010100100101011010101001
exec.
PluginBuzz
THINKTraduction BUZZ vers THINK
39 / 55
Contributions Le compilateur de Buzz
Détails pratiques sur Buzz
Le compilateur de Buzz:
est constitué d'environs 10 K-lignes de Java + C + ASM
est une extension du compilateur Think
est distribué sur le web (licence libre: GPL/LGPL)
Char
gem
ent
Char
gem
ent
THINK
Compilateur Think
Générateur de code
010100101010100100101011010101001
exec.
39 / 55
Contributions Le compilateur de Buzz
Détails pratiques sur Buzz
Le compilateur de Buzz:
est constitué d'environs 10 K-lignes de Java + C + ASM
est une extension du compilateur Think
est distribué sur le web (licence libre: GPL/LGPL)
Char
gem
ent
Char
gem
ent
BUZZ Générateur de BIP
BIP
Inter4
Inter3Inter2
Inter1
Prio1: Inter3 < inter4
Traduction BUZZ vers BIP
OK !PAS OK!
39 / 55
Contributions Le compilateur de Buzz
Détails pratiques sur Buzz
Le compilateur de Buzz:
est constitué d'environs 10 K-lignes de Java + C + ASM
est une extension du compilateur Think
est distribué sur le web (licence libre: GPL/LGPL)
Char
gem
ent
Char
gem
ent
BUZZ
Générateur de code
010100101010100100101011010101001
exec.
PluginBuzz
THINKTraduction BUZZ vers THINK
Générateur de BIP
BIP
Inter4
Inter3Inter2
Inter1
Prio1: Inter3 < inter4
Traduction BUZZ vers BIP
OK !PAS OK!
39 / 55
Contributions Rappel démarche
Notre démarcherappel
création d'un langageuni�cateur
deux traductions vers deslangages existants
TRADUCTION 1 TRADUCTION 2
CONCEPTION
IMPLANTATION ANALYSE
LANGAGEEXISTANT 1
LANGAGEEXISTANT 2
010100101010100100101011010101001
exec. OK !PAS OK!
LANGAGEUNIFICATEUR
Buzz est une application de cette démarche à un domaine précis
40 / 55
Résultats
1 IntroductionContexteLimitationsComposants logiciels: partie de réponseCe qu'il manque actuellement
2 ContributionsDémarche de création de langageApplication de cette démarche: BuzzLe langage BuzzLes traductions de BuzzLe compilateur de Buzz
3 RésultatsApplication de réseau de capteursDîner des geeks philosophes
4 Conclusion et perspectives
41 / 55
Résultats Application de réseau de capteurs
Application de réseau de capteurré-ingénierie d'une application existante
Plate-forme matérielle utilisée
TI MSP430 (16bits, 10KiB RAM, 48KiB �ash)
42 / 55
Résultats Application de réseau de capteurs
Application de réseau de capteurré-ingénierie d'une application existante - résultats
Application existante:
log
boot
appli_run
thread
net_run
link_run
main
appli
net
link
gdo0handler
phy
gdo2handler
com
ctrl
rand
rand
irqsafe
irqsafe
neigh
main
coord
msgSnd
runner
var
sensor
timer
sender
msrRdy
sensorssensormsghdlr
adcAlr
sndRdy
msrRdy
exec
varvar
timerAeTimer h0
usartsend recv
msghandler
main
pksender
coord
msgSnd
varvar
routerrouter var
varrunner
pkthandler
pkthandler
routerrunner
pktsender
neighviewer
gdo0
gdo2
radiocom
radioctrl
tx
main
var
alarm
neighid
rand
rx
pktsender
runner
alarm
tx
leds
radioctrl
txrouter
radiocom
var
bc
router
rx
leds
alarm
rxbc
var
radiocom
radioctrl
pkthandler
rand
gdoSwitchbc
gdo0
gdo2
gdo0out
gdo2out
varvar irqsafe
ledsleds
ds2411id delay
delaydelay
irqsafe
timerBeTimerctl h0
h1
neighviewer
coordviewer
msgsender
runner
msghdlr
msghandler
pktsenderrunner
msgsender
coordviewer
pkthandler
router
Application portée en Buzz:
sensor
applimain
applisensors
netmain
linkmain linkdelay
linktimerB
linkds2411
applitimerA
phycc1100com
phycc1100ctrl
phycc1100io
physpi
usart
linkgdoSwitch
done
adcDone
sensortimer
eTimerControl
adcAlarm
senderAlarm
APPLIadcAlarm
APPLIsenderAlarm
msgsender
neigh
msgsendercoord
neigh
exec
sender
receiver
coord
sender
cc1100io
cc1100io
cc1100io
spi
spi
spilcc
spilcc
pktsender
pktsender
msghandler
msghandler
radioctrl
cc1100ctrl
id
ididlcc
idlcc
radiocom cc1100com
alarm
eTimerControl
bc
bc
router
router
pkthandler
pkthandler
RXwakeupRXwait0RXdata0RXnewcw0RXdata2RXfinackRXcomplete0TXstartcwTXack0TXerrorTXtxdataTXrxfinackTXcomplete0
RXwakeupRXwait0RXdata0
RXnewcw0RXdata2RXfinack
RXcomplete0TXstartcw
TXack0TXerror
TXtxdataTXrxfinack
TXcomplete0
delay
delay
RXrxframeRXtimeout
RXtxackTXtxuf
TXtxnewcwTXctrl
TXtimeoutTXready
RXrxframeRXtimeout
RXtxackTXtxufTXtxnewcwTXctrlTXtimeoutTXready
done
spidone
sspidone
cspidone
43 / 55
Résultats Dîner des geeks philosophes
Le dîner des geeks philosophes
Lorsqu'un geek a faim, il doit détenir 2 baguettes pour manger.
Un geek a faim suite à un évènement externe
Il y a autant de baguettes que de geeks
toleft
fromleft
toright
fromright
geek1
handlerhandler
sigusr1
toleft
fromleft
torightfrom
right
geek2
handler
tole
ft from
left
torigh
t
from
righ
t
geek3
hand
ler
handler
sigusr2
handler
sigusr3
composants actifscomposantsinterrupteurs
composantinterrupteur
44 / 55
Résultats Dîner des geeks philosophes
Le dîner des geeks philosophesrésultat d'implantation
Plate-forme matérielle utilisée
Atmel AVR ATM256-1 (8bits, 8KiB RAM, 256KiB �ash)
taille logiciel ajouté par Buzz taille totale du logiciel
code 5302 17750(<256KiB)données 1085 2299(<8KiB)
Les tailles sont données en octets.
45 / 55
Résultats Dîner des geeks philosophes
Le dîner des geeks philosophesrésultat d'analyse - non débordement des �les d'attente
Les �les d'attentes débordent-elles ?
toleft
fromleft
toright
fromright
geek1
handlerhandler
sigusr1
toleft
fromleft
torightfrom
right
geek2
handler
toleft from
left
toright
from
right
geek3
handler
handler
sigusr2
handler
sigusr3
?taille des �les d'attente 1 2 3 4 et plus
cas de débordements (3 repas) 93 41 3 0
46 / 55
Résultats Dîner des geeks philosophes
Le dîner des geeks philosophesrésultat d'analyse - pas d'interblocage ni de famine
Tous les geeks mangent-ils à leur faim (pas de famine ou d'interblocage) ?
toleft
fromleft
toright
fromright
geek1
handlerhandler
sigusr1
toleft
fromleft
torightfrom
right
geek2
handler
tole
ft from
left
torigh
t
from
righ
t
geek3
hand
ler
handler
sigusr2
handler
sigusr3
Interblocage ?
nombre de repas par geek 1 2 3
interblocages/famines 0 65 804
47 / 55
Résultats Dîner des geeks philosophes
Le dîner des geeks philosophesrésultat d'analyse - exemple de véri�cation temporelle simple
Un geek va-t-il attendre une baguette plus d'un certain temps ?
toleft
fromleft
toright
fromright
handler
toleft
fromleft toright
fromright
handler
temps d'attente accepté 50 18 17 15 10dépassements 0 0 4 28 148
48 / 55
Résultats Dîner des geeks philosophes
Le dîner des geeks philosophesrésultat d'analyse - exemple de véri�cation temporelle simple
Débordement/famine/interblocage si un geek a faim trop souvent ?
toleft
fromleft
toright
fromright
geek1
handlerhandler
sigusr1
toleft
fromleft
torightfrom
right
geek2
handler
toleft from
left
toright
from
right
geek3
handler
handler
sigusr2
handler
sigusr3
?périodes de faim par geek 5,5,5 50,50,50 40,50,60 75,50,125
fam./interb./débord. 119149 0 6 0
49 / 55
Résultats Dîner des geeks philosophes
Le dîner des geeks philosophesrésultat d'analyse - résumé
Propriétés véri�ées:
non débordement de �les d'attente
les geeks mangent à leur faim (interblocage/famine)
les geeks n'attendent pas plus d'un temps �xé pour obtenir unebaguette
Ce ne sont que des exemples de propriétés.
50 / 55
Résultats Dîner des geeks philosophes
Le dîner des geeks philosophesrésultat d'analyse - résumé
Propriétés véri�ées:
non débordement de �les d'attente
les geeks mangent à leur faim (interblocage/famine)
les geeks n'attendent pas plus d'un temps �xé pour obtenir unebaguette
Ce ne sont que des exemples de propriétés.
50 / 55
Conclusion et perspectives
1 IntroductionContexteLimitationsComposants logiciels: partie de réponseCe qu'il manque actuellement
2 ContributionsDémarche de création de langageApplication de cette démarche: BuzzLe langage BuzzLes traductions de BuzzLe compilateur de Buzz
3 RésultatsApplication de réseau de capteursDîner des geeks philosophes
4 Conclusion et perspectives
51 / 55
Conclusion et perspectives
Conclusionrésumé des contributions
Rappel de la problématique:
Outils/langages:
implantables sur systèmes embarqués
permettant des analyses puissantes
adaptés aux systèmes développés
compatibles avec les habitudes des développeurs
Nos contributions
une démarche de mise au point d'un tel langage
illustration de l'application de cette démarche pour la création de Buzz
démonstration de l'e�ectivité de Buzz au travers de cas concrets etréalistes
52 / 55
Conclusion et perspectives
Conclusionrésumé des contributions
Rappel de la problématique:
Outils/langages:
implantables sur systèmes embarqués
permettant des analyses puissantes
adaptés aux systèmes développés
compatibles avec les habitudes des développeurs
Nos contributions
une démarche de mise au point d'un tel langage
illustration de l'application de cette démarche pour la création de Buzz
démonstration de l'e�ectivité de Buzz au travers de cas concrets etréalistes
52 / 55
Conclusion et perspectives
Perspectivesrelatives à Buzz
Améliorations possibles
spéci�cation de l'ordonnancement
modèle de l'environnement
hiérarchie (utilisation de BIP 2)
sélection du niveau d'abstraction
53 / 55
Conclusion et perspectives
Perspectives
Combinaison des aspects comportementaux avec les aspects
sécurité
recon�guration
qualité de service
pour la création d'un atelier de développement de système embarqué.
54 / 55
Conclusion et perspectives
Merci de votre attention.
Questions ?
55 / 55