aadl:%architecture%analysis&design% language%...2017/06/04  · subprogram prog1 features i : in...

58
Page 1 - SE206: AADL – partie 2 AADL: Architecture Analysis & Design Language Généra&on de code et annexe comportementale E"enne Borde e"[email protected]

Upload: others

Post on 26-May-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 1 - SE206: AADL – partie 2

AADL:  Architecture  Analysis  &  Design  Language  Généra&on  de  code  et  annexe  comportementale  

E"enne  Borde  e"enne.borde@telecom-­‐paristech.fr  

   

Page 2: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 2 - SE206: AADL – partie 2

Objec"fs  du  cours  

•  Connaître  la  correspondance  entre  modèle  AADL  et  code  dans  un  langage  de  programma"on  

•  Connaître  les  limita"ons  et  challenges  associées  aux  techniques  de  généra"on  de  code  

Page 3: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 3 - SE206: AADL – partie 2

Plan  du  cours    

1.  Représenta"on  de  code  source  «  legacy  »  ou  fonc"onnel  2.  Intégra"on  de  code  legacy:  comportement  basique  3.  Représenta"on  du  comportement  détaillé  d’un  composant  4.  Généra"on  de  code,  principes  et  challenges  

Page 4: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 4 - SE206: AADL – partie 2

Correspondance  entre  modèle  et  code:  principes  généraux  (et  approxima"fs)  •  Ce  qui  suit  présentent  des  principes  généraux  et  approxima"fs  visant  

à  faciliter  la  compréhension  (plutôt  que  l’exhaus"vité)  •  Les  types  et  implémenta"on  de  composants  logiciel  représentent  des  

par"es  du  logiciel  avant  exécu"on:  z  Data  à  types  de  données  z  Subprogram  à  code  source  (C,  Ada,  Java…)  z  Thread  à  tâches,  ou  fonc"onalités  z  Process  à  fichier  binaire  exécutable  

•  Les  sous-­‐composants  logiciels  représentent  le  logiciel  en  cours  d’exécu"on  z  Data  à  variables  z  Thread,  Subprogram  à  code  exécuté  z  Process  à  zone  mémoire  réservée  pour  l’exécu"on  des  fonc"ons  

Page 5: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 5 - SE206: AADL – partie 2

Intégra"on  de  code  “legacy”  (patrimonial,  ou  fonc"onnel)  

Page 6: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 6 - SE206: AADL – partie 2

#define KP 60#define KI 15int integral=0;int lastColor = 1;/** * Computes the angle the robot has to turn in * order to follow the line. */void computePID(int in_light, int colorToFollow, int *out_angle) { char error; if(in_light == 99) error = 0; else if(in_light == colorToFollow) { error = 20; if(lastColor=1)

integral=0; lastColor=0; } else { if(lastColor=0)

integral=0; error = -20; lastColor=1; } integral = integral + error; // multiply by period if(integral>90) integral = 90; if(integral<-120) integral=-120; *out_angle = (KP * error + KI*integral)/100;}

Robot  suiveur  de  ligne  

Page 7: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 7 - SE206: AADL – partie 2

Représenta"on  des  données  en  AADL  

•  La  catégorie  de  composants  AADL  u"lisé  pour  décrire  une  donnée  est  de  la  catégorie  «  data  »,  qui  représente  soit:  z   Un  type  de  donnée  simple,  z  Une  structure  de  donnée,  z  Une  instance  de  donnée  en  mémoire  (i.e.  sous-­‐composant  data).  

 •  Des  propriétés  permebent  de  référencer  des  types  de  donnée  

existant,  ainsi  que  les  propriétés  non-­‐fonc"onnelles  (occupa"on  mémoire,  unités  de  la  donnée,  etc.)  

•  Ces  propriétés  sont  fournis  dans  un  ensemble  de  propriétés  standardisé  (voir  extrait  ci-­‐après).  

Page 8: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 8 - SE206: AADL – partie 2

Exemple  de  propriétés  pour  les  types  de  donné  

property set Data_Model is… Data_Representation : enumeration (Array, Boolean, Character, Enum, Float, Fixed, Integer, String, Struct, Union) applies to ( data, feature ); -- The Data_Representation property may be used to specify the -- representation of simple or composite data types within the -- programming language source code. Enumerators : list of aadlstring applies to ( data, feature ); -- The Enumerators provides the list of enumeration litterals -- attached to an enumeration data component.…end Data_Model;  

Page 9: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 9 - SE206: AADL – partie 2

Données  u"lisées  par  la  fonc"on  de  suivi  de  ligne  

data Intproperties Data_Model::Data_Representation => integer;end Int;  data Colorproperties Data_Model::Data_Representation => Enum; Data_Model::Enumerators => ("NXT_COLOR_BLACK", "NXT_COLOR_RED",

"NXT_COLOR_BLUE"); Source_name => "COLOR_TYPE"; Source_Text => ("ecrobot_interface.h");end Color;

•  Color  est  un  type  de  donné,  déclaré  dans  ecrobot_interface.h;  l’iden"fiant  du  type  est  COLOR_TYPE;  c’est  un  enum  dont  les  valeurs  possibles  sont  NXT_COLOR_BLACK,  …  

•  Pour  aller  plus  loin:  regardez  le  contenu  du  property  set  Data_Model  depuis  OSATE

Page 10: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 10 - SE206: AADL – partie 2

Représenta"on  du  code  en  AADL  

•  La  catégorie  de  composants  AADL  u"lisé  pour  décrire  un  code  source  sont  de  la  catégorie  «  sous-­‐programmes  »,  qui  représente  une  fonc"on  (C,  Ada,  Java,  etc.).  

•  Un  sous-­‐programme  possède    z Des  paramètres  avec  une  direc"on  (in,  out,  in-­‐out)  et  un  type  de  donnée,  et/ou  

z Des  data  access  

•  Des  propriétés  permebent  de  référencer  le  code  source  existant,  ainsi  que  les  propriétés  non-­‐fonc"onnelles    

Page 11: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 11 - SE206: AADL – partie 2

Code  de  la  fonc"on  de  suivi  de  ligne  subprogram computePIDfeatures currentColor : in parameter Int; colorToFollow: in parameter Color; angle : out parameter Int;properties Source_language => (C); Source_text => ("in_robot.h", "in_robot.c"); Source_name => "computePID";end computePID;•  Représenta"on  de  la  fonc"on  computePID,  codée  en  C,  déclarée  dans  in_robot.h,  implémentée  dans  in_robot.c  

void computePID(int in_light, int colorToFollow, int *out_angle)  

Page 12: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 12 - SE206: AADL – partie 2

Modélisa"on  du  comportement  des  threads  et  subprograms  en  AADL  

Page 13: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 13 - SE206: AADL – partie 2

subprogram spg1 end spg1;subprogram spg2 end spg2;thread a_thread end a_thread;thread implementation a_thread.example

calls seq1: {

call1: subprogram spg1; call2 : subprogram spg2; call3 : subprogram spg1;

};properties Compute_Entrypoint_Call_Sequence => reference (seq1);

end a_thread.example;

Appels  de  sous-­‐programmes  

•  Une  implémenta"on  de  sous-­‐programme  ou  de  thread  peut  contenir  des  séquences  d’appels  à  des  sous-­‐programmes  

•  L’ordre  des  appels  correspond  à  l’ordre  dans  lequel  les  fonc"ons  seront  exécutées  

Page 14: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 14 - SE206: AADL – partie 2

thread event_receiver features p_in: in event port; properties Dispatch_Protocol => Timed; Period => 200 Ms;end event_receiver;thread implementation event_receiver.impl calls call1 : { c : subprogram spg1;}; call2 : { c2 : subprogram spg2; }; properties Compute_Entrypoint_Call_Sequence => reference (call1) applies to p_in; Compute_Entrypoint_Call_Sequence => reference (call2);end event_receiver.impl;

Comportement  contextuel  •  Une  séquence  d’appels  peut-­‐être  associé  à  différents  contextes  d’ac"va"on  d’un  thread:  sur  

événement,  à  échéance  de  la  période,  …  •  Aben"on  à  maintenir  la  cohérence  de  la  descrip"on:  

z  Un  thread  périodique  n’a  qu’un  seul  type  de  dispatch:  périodique  et  pas  sur  évènements  

•  Ici,  spg2  est  appelé  sur  échéance  du  "mer  et  spg1  est  appelé  sur  récep"on  d’un  évènement  

Page 15: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 15 - SE206: AADL – partie 2

data a_data end a_data; subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1 end prog2; subprogram implementation prog2.impl calls seq : { c1: subprogram prog1; }; connections cnx1: parameter i-> c1.i; cnx2: parameter c1.o -> o; end prog2.impl;

subprogram prog3 extends prog1 end prog3; subprogram implementation prog3.impl calls seq : { c1: subprogram prog1; c2: subprogram prog2; }; connections cnx1: parameter i -> c1.i; cnx2: parameter c1.o -> c2.i; cnx3: parameter c2.o -> o;end prog3.impl;!

Représenter  un  passage  de  paramètres  •  Pour  alimenter  les  paramètres  des  sous-­‐programmes,  on  peut  

z  Connecter  des  paramètres  de  sous-­‐programmes  entre  eux  z  Connecter  des  paramètres  de  sous-­‐programmes  à  des  ports  z  Connecter  des  data  access  de  sous-­‐programmes  à  des  data  access  de  threads  

Page 16: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 16 - SE206: AADL – partie 2

Connec"on  d’un  requires  data  access  

data dend d;subprogram spg features S : requires data access d;end spg;thread t features S : requires data access d;end t;!

thread implementation t.example calls seq: { call1 : subprogram spg; }; connections cnx : data access S -> call1.S;end t.example;!

•  Séman"que:  l’adresse  de  la  variable  partagée  est  passée  en  paramètre  de  spg  

Page 17: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 17 - SE206: AADL – partie 2

Connec"ons  paramètre  à  port    subprogram sender_spg features result : out parameter d; properties source_name => "send"; source_language => (C); source_text => ("user_code.h","user_code.c"); end sender_spg;thread data_sender features p_out: out data port d; properties Dispatch_Protocol => Periodic; Period => 2000 Ms; end data_sender; thread implementation data_sender.impl calls call : { c : subprogram sender_spg;}; connections cnx: parameter c.result -> p_out; properties Compute_Entrypoint_Call_Sequence => reference (call); end data_sender.impl;

•  Séman"que:  à  la  fin  de  l’exécu"on  du  programme  send,  une  donnée  est  envoyé  à  travers  le  port  p_out  du  thread.  

Page 18: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 18 - SE206: AADL – partie 2

Connec"ons  data  port  à  paramètre  

•  Séman"que:  la  valeur  associée  au  port  p_in  est  copiée  dans  une  variable  locale  en  début  d’exécu"on  du  thread,  puis  passée  en  paramètre  du  sous-­‐programme.  

subprogram receiver_spg features input : in parameter d; properties source_name => "receive"; source_language => (C); source_text => ("user_code.h","user_code.c"); end receiver_spg; thread data_receiver features p_in: in data port d; properties Dispatch_Protocol => Periodic; Period => 1000 Ms; end data_receiver; thread implementation data_receiver.impl calls call : { c : subprogram receiver_spg;}; connections cnx: parameter p_in -> c.input; properties Compute_Entrypoint_Call_Sequence => reference (call); end data_receiver.impl;

Page 19: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 19 - SE206: AADL – partie 2

Connec"ons  event  data  port  à  paramètre  

•  Séman"que:  la  séquence  de  valeurs  disponibles  sur  la  file  d’abente  associée  au  port  p_in  est  «  gelée  »  au  moment  du  dispatch  du  thread  (i.e.  inaccessible  au  producteur)  et  1  valeur  est  passé  à  chaque  appel  dans  l’ordre  FIFO.  Si  aucune  valeur  n’est  disponible,  le  sous-­‐programme  n’est  pas  appelé.  

thread eventdata_receiver features p_in: in event data port d; properties Dispatch_Protocol => Periodic; Period => 1000 Ms; end eventdata_receiver; thread implementation eventdata_receiver.impl calls call : { c : subprogram receiver_spg;}; connections cnx: parameter p_in -> c.input; properties Compute_Entrypoint_Call_Sequence => reference (call); end eventdata_receiver.impl;

Page 20: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 20 - SE206: AADL – partie 2

Con"nuons  l’intégra"on  de  code  legacy  dans  le  robot  Lego  

•  Nous  avons  représenté  le  code  legacy,  (computePID)  en  AADL  

•  Pour  intégrer  ce  code,  il  va  falloir    z L’ac"ver  à  u"lisa"on  de  thread  AADL  z Lui  fournir  les  valeurs  d’entré  et  u"liser  ses  sor"es  

o int in_light, à fourni par la plate-forme d’exécution

o int colorToFollow, à fourni par une autre tâcheo int *out_angle à à transmettre à la plate-forme d’exécution  

Page 21: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 21 - SE206: AADL – partie 2

•  Aller  d’un  point  X  à  un  point  Y  dans  une  carte  représentée  par  un  ensemble  de  points  reliés  par  des  chemin  de  couleurs  différentes.  

•  Exemple:  Aller  de  C  à  J  dans  la  carte    (ini"alement  le  robot  est  sur  le  point  noir  C)  z  Calculer  un  chemin  (séquence  de  couleurs)  z  Chercher  la  prochaine  ligne  à  suivre  z  Détecter  l’abeinte  de  la  ligne  à  suivre  z  Suivre  une  ligne  de  couleur  z  Détecter  l’abeinte  d’un  point  noir  z   Détecter  des  obstacles  sur  la  trajectoire  z  Arrêter  le  robot  en  cas  d’obstacle  

Mission  du  robot  

B CA

D

G

E

H

J

F

I  

K

Page 22: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 22 - SE206: AADL – partie 2

Intégra"on  du  code  dans  une  architecture  temps-­‐réel  (architecture  incomplète)  

                       FollowThread                          Subprogram_Call:  {                                  getColor;                                computePID;                                setSpeedLep;                              setSpeedRight                        }  

                     ComputePath                                  Subprogram_Call:  {                                              setColor                              }  

MAIN_PROCESS

Color_To_Follow  

100 ms

1000 ms

Question: que représente, en termes de code C, ���le sous-composant Color_To_Follow?

Réponse: Une variable globale!

Page 23: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 23 - SE206: AADL – partie 2

Représenta"on  du  support  d’exécu"on  du  robot  en  AADL  

Sonar

Light sensor

nxt_cpu  

Motor Right

bus

bus

bus

bus

Motor Left

NXT_PORT_S1

void ecrobot_init_nxtcolorsensor(U8 port_id, U8 mode)���U16 ecrobot_get_nxtcolorsensor_id(U8 port_id)

Page 24: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 24 - SE206: AADL – partie 2

Représenta"on  de  l’architecture  intégrée  du  robot  

Sonar

Light sensor

nxt_cpu  

Motor Left

bus

bus

bus

bus

Motor Right

NXT_PORT_S1

                       FollowThread                          Subprogram_Call:  {                                  getColor;                                computePID;                                setSpeedLep;                              setSpeedRight                        }  

                     ComputePath                                  Subprogram_Call:  {                                              setColor                              }  

MAIN_PROCESS

Colo_To_Follow  

100 ms

1000 ms

Page 25: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 25 - SE206: AADL – partie 2

Correspondance    Exécu"on  de  code  C  ßà  modèle  AADL  

Page 26: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 26 - SE206: AADL – partie 2

Variables  

•  Data  subcomponent  dans  un  process  =  variable  globale  

•  Data  subcomponent  dans  un  thread  =  variable  locale  au  thread  (instanciée  sur  la  pile  du  thread);  durée  de  vie  =  tant  que  le  thread  existe.  

•  Data  subcomponent  dans  un  sous-­‐programme  =  variable  locale  au  sous-­‐programme  (instanciée  sur  la  pile  de  la  fonc"on  correspondante);  durée  de  vie  =  tant  que  le  thread  existe  

Page 27: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 27 - SE206: AADL – partie 2

Threads  

•  La  représenta"on  des  threads  AADL  en  code  C  n’est  pas  standardisée  z Dans  RAMSES:  thread  =  fonc"on  C  qui  u"lise  l’API  de  l’OS  +  configura"on  de  l’OS  pour  l’ac"va"on  de  la  tâche  

z Les  sous  composants  data  sont  stockés  sur  …  ?  

•  Cebe  représenta"on  est  complexe  du  fait  de  la  présence  des  ports  z Mapping  d’un  port  =  ensemble  de  variables  qui  permebent  d’accéder  au  contenu  du  port  

Page 28: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 28 - SE206: AADL – partie 2

Représenta"on  du  fonc"onnement  des  communica"ons  (data  ports)  •  Sampling  (structure)  

Task  T1   Task  T2  Data  d  

Process  P  

Data  d2  Data  d1  

Task  T1   Task  T2  

Process P

f1 f2

f1 f2

Page 29: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 29 - SE206: AADL – partie 2

Task  T1   Task  T2  Data  d  

Data  d2  Data  d1  

f1 f2

Représenta"on  du  fonc"onnement  des  communica"ons  (data  ports)  •  Sampling  (écriture)  

Process  P  

Copie en fin de T1

Task  T1   Task  T2  

Process P

f1 f2

Page 30: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 30 - SE206: AADL – partie 2

Task  T1   Task  T2  Data  d  

Data  d2  Data  d1  

f1 f2

Représenta"on  du  fonc"onnement  des  communica"ons  (data  ports)  •  Sampling  (lecture)  

Process  P  

Copie en fin de T1 Copie en début de T2

Note: les subprograms exécutés par T1 (resp. T2) travaillent avec d1 (resp.d2). Le code généré ���à partir de P s’assure de réaliser le transfert vers (resp. depuis) d « au bon moment »

Task  T1   Task  T2  

Process P

f1 f2

d est … ? d1 est … d2 est …

Page 31: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 31 - SE206: AADL – partie 2

Représenta"on  du  fonc"onnement  des  communica"ons  (data  ports)  •  Immediate  

Task  T1  

Data  d  

Task  T1   Task  T2  

Process P

f1 f2

f1 f2

Page 32: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 32 - SE206: AADL – partie 2

Représenta"on  du  fonc"onnement  des  communica"ons  (data  ports)  •  Delayed  (TODO)  

Page 33: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 33 - SE206: AADL – partie 2

Représenta"on  du  fonc"onnement  des  communica"ons  (event  data  ports)  •  TODO  …  

Page 34: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 34 - SE206: AADL – partie 2

Ges"on  des  modes  de  fonc"onnement,  exemple  du  robot  mobile  

Page 35: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 35 - SE206: AADL – partie 2

•  Défini"on:  un  mode  de  fonc"onnement  représente  un  état  du  système  dans  lequel  celui-­‐ci  fournit  un  sous-­‐ensemble  de  ses  fonc"onnalité.  

•  Exemple:  Aller  de  C  à  J  dans  la  carte    (ini"alement  le  robot  est  sur  un  point  noir)  z  Calculer  un  chemin  (séquence  de  couleurs)  z  Chercher  la  prochaine  ligne  à  suivre  z  Détecter  l’abeinte  de  la  ligne  à  suivre  z  Suivre  une  ligne  de  couleur  z  Détecter  l’abeinte  d’un  point  noir  z   Détecter  des  obstacles  sur  la  trajectoire  z  Arrêter  le  robot  en  cas  d’obstacle  

Modes  de  fonc"onnement  

B CA

D

G

E

H

J

F

I  

K

Page 36: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 36 - SE206: AADL – partie 2

Fonc"onnalités  par  mode  

•  Modes  1.  Calculer  un  chemin  2.  Chercher  la  prochaine  ligne  3.  Suivre  une  ligne  

•  Fonc"onnalités  par  mode  1.  Calculer  un  chemin  (séquence  de  couleurs).  2.  Chercher  la  prochaine  ligne  à  suivre,  Détecter  l’abeinte  de  la  

ligne,  Détecter  des  obstacles  sur  la  trajectoire,  Arrêter  le  robot  en  cas  d’obstacle.  

3.  Suivre  une  ligne  de  couleur,  Détecter  l’abeinte  d’un  point  noir,  Détecter  des  obstacles  sur  la  trajectoire,  Arrêter  le  robot  en  cas  d’obstacle.  

Page 37: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 37 - SE206: AADL – partie 2

Les  modes  en  AADL  

•  Les  modes  permebent  de  modéliser  la  reconfigura"on  du  système  en  fonc"on  d’événements  z  définis  au  niveau  des  composants  z  seuls  les  événements  (event  ports)  peuvent  déclencher  un  changement  de  mode  

z  certains  sous-­‐composants,  connexions,  etc.  ne  sont  ac"vés  que  dans  certains  modes  

z  la  défini"on  des  propriété  peut  dépendre  du  mode  courant  •  Les  changements  de  modes  permebent  de  représenter  des  

architectures  (pseudo)  dynamiques  (reconfigura"ons)  z  évolu"on  (dynamique)  de  la  configura"on  de  l’architecture  z  ensemble  déterminé  (sta"quement)  de  configura"ons  possibles  

Page 38: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 38 - SE206: AADL – partie 2

Mise  en  œuvre  avec  le  robot  

Page 39: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 39 - SE206: AADL – partie 2

Architecture  par  mode  

•  Mode  compute  path:  1  tâche  de  calcul  de  la  séquence  de  lignes  à  suivre.  

•  Mode  follow  line:  4  tâches  z  suivi  de  ligne  (avec  computePID)  z  détec"on  d’abeinte  d’un  point  noir  (changement  de  mode)  z  détec"on  d’osbtacle  z  MàJ  de  la  couleur  (tâche  background  requise  par  la  plate-­‐forme  d’exécu"on)  

•  Mode  search  next  line:  4  tâches  z  suivi  de  point  noir  z  détec"on  d’abeinte  de  la  prochaine  ligne  (changement  de  mode)  z  détec"on  d’osbtacle  z  MàJ  de  la  couleur  (tâche  background  requise  par  la  plate-­‐forme  d’exécu"on)  

•  L’architecture  instanciée  dans  chaque  mode  est  décrite  en  u"lisant  «  in  modes  »  (voir  plus  loin)  

Page 40: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 40 - SE206: AADL – partie 2

Transi"ons  de  mode  

•  Compute  path  à  Search  next  line  z Une  fois  le  chemin  calculé,  on  cherche  la  première  ligne  à  suivre  

•  Search  next  line  à  Mode  follow  line  z Une  fois  la  ligne  abeinte,  on  la  suit  

•  Mode  follow  lineà  Search  next  line  z Une  fois  le  point  noir  abeint,  on  cherche  la  prochaine  ligne  

•  L’envoi  de  l’événement  peut  se  faire  depuis  le  code  C  des  fonc"ons  exécutées  via  une  api  dédiée  (en  cours  de  standardisa"on,  donc  pas  encore  dans  l’UE)  

Page 41: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 41 - SE206: AADL – partie 2

Code  AADL  

process implementation proc.impl subcomponents backgroung_inst : thread backgroung.impl in modes (follow_line_mode,

search_next_line_mode); follow_line_inst : thread follow_line.impl in modes (follow_line_mode); color_lookup_inst : thread color_lookup.impl in modes (follow_line_mode); … modes follow_line_mode : mode; compute_color_mode : initial mode; search_next_line_mode : mode; follow_line_mode -[color_lookup_inst.reached]-> compute_color_mode; compute_color_mode -[compute_next_color_inst.computed]->

search_next_line_mode; search_next_line_mode -[search_next_line_inst.found]-> follow_line_mode; … end proc.impl;  

Page 42: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 42 - SE206: AADL – partie 2

Remarques  sur  AADL  

•  Langage  très  riche  (beaucoup  de  concepts)  et  verbeux  (la  no"on  de  propriétés  y  est  pour  beaucoup)  

•  La  syntaxe  n’est  que  le  support  à  des  concepts  fondamentaux  dans  les  systèmes  embarqués:  z Resources  fournies  (plate-­‐forme)  vs.  Resources  demandées  (logiciel)  

z Calcul  de  temps  de  réponse  et  calcul  de  temps  de  latence  z  Intégra"on  de  code  legacy/fonc"onnnel  (sépara"on  des  préoccupa"ons  

z Descrip"on  du  comportement  des  fonc"ons  z Modes  de  fonc"onnement  et  reconfigura"ons  z …  (annexes  non  étudiées  dans  ce  cours)  

Page 43: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 43 - SE206: AADL – partie 2

Conclusions  sur  la  généra"on  de  code  

•  Offre  la  capacité  de  «  porter  »  des  applica"ons  existantes  sur  différentes  plates-­‐formes  d’exécu"on  (celles  supportés  par  les  ou"ls)  

•  Limita"ons:    z Nécessite  de  s’assurer  que  les  résultats  d’analyse  obtenu  sur  le  modèle  sont  préservés  après  généra"on  de  code  

z Difficulté  de  faire  évoluer  le  code  généré  z Si  système  cri"que:  confiance  dans  l’ou"l  de  généra"on  de  code?  

Page 44: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 44 - SE206: AADL – partie 2

Pour  aller  plus  loin:  analyse  de  temps  de  réponse  et  annexe  comportementale  

Page 45: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 45 - SE206: AADL – partie 2

Représenta"on  des  sec"ons  cri"ques  

•  Données  partagées  z Si  protégée,  il  faut  prendre  en  compte  les  interférences  dues  aux  sec"ons  cri"ques  (temps  de  blocage).  

z  Il  faut  donc  représenter  plus  finement  le  comportement  du  thread  

•  Annexe  comportementale  (voir  slides  suivants)  

Page 46: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 46 - SE206: AADL – partie 2

Annexe  comportementale  

•  Annexe  standardisée  •  Modéliser  le  comportement  logiciel  (thread,  sous-­‐programmes)  par  le  biais  de  machines  à  état  

•  Une  clause  comportementale  AADL  est  composée  de  trois  par"es:  z Déclara"on  des  états  z Déclara"on  des  transi"on  entre  ces  états  z Déclara"on  des  variables  

Page 47: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 47 - SE206: AADL – partie 2

Les  états  dans  l’annexe  comportementale  

•  Ini@al,  correspond  à  l’état  dans  lequel  se  trouve  le  composant  après  ini"alisa"on  

•  Final,  correspond  à  l’état  dans  lequel  se  trouve  le  composant  après  finalisa"on  (retour  d’un  appel  de  fonc"on  ou  finalisa"on  d’une  tâche)  

•  Complete,  u"lisable  pour  les  threads  seulement:  correspond  à  un  état  dans  lequel  le  thread  n’u"lise  pas  la  ressource  d’exécu"on  (préempté,  abente  passive,  etc…)  

•  Une  clause  comportementale  doit  contenir  un  état  ini"al  et  au  moins  un  état  final  z L’état  final  et  ini"al  peuvent  être  le  même  

Page 48: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 48 - SE206: AADL – partie 2

Les  transi"ons  dans  l’annexe  comportementale  

•  Un  Etat  source  •  Une  ensemble  de  condi"ons  

z  condi"ons  d’exécu"on,  correspondant  à  un  switch/case  dans  l’exécu"on  d’une  fonc"onnalité  o  Une  condi"on  peut  porter  sur  le  contenu  d’un  port,  d’un  paramètre,  d’une  donnée,  d’une  

propriété,  etc…  

z  condi"ons  de  dispatch,  correspondant  aux  condi"ons  de  réveil  d’un  thread  à  par"r  d’un  état  complete  donné  o  à  mebre  en  regard  de  la  propriété  dispatch_protocol  du  thread  (Periodic,  Sporadic,  Aperiodic,  

Timed  ou  Hybrid)  

•  Un  état  cible  •  Un  ensemble  d’ac"ons  

z  Séquence  d’ac"ons  pouvant  contenir  une  structure  de  contrôle  (if/then/else;  while;  do  …  un"l)  et  des  interac"ons  avec  l’environnement  d’exécu"on  

z  Les  condi"ons  dans  les  structures  de  contrôle  des  ac"ons  sont  similaires  à  des  condi"ons  d’exécu"on  

Page 49: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 49 - SE206: AADL – partie 2

Interac"on  des  clauses  comportementales  avec  l’environnement  d’exécu"on  AADL  •  Appel  de  sous-­‐programmes:  sub!(v1,  v2,  r1);  •  Computa"on  (10  ms);  représente  un  calcul  de  10  ms  •  p!  sur  un  port  de  sor"e  p  permet  d’envoyer  le  message  contenu  dans  

p;  p!(v)  permet  d’envoyer  le  message  v  à  travers  p  •  p?  sur  un  port  d’entrée  permet  de  lire  les  message  contenus  dans  le  

buffer  associé  à  p;    z  Le  contenu  de  la  valeur  retourné  dépend  du  protocole  associé  au  port  

(propriété  Dequeue_Protocol)  

•  p'count  et  p’fresh  pour  connaitre  l’état  d’un  buffer  correspondant  à  un  port  p  z  p'count  retourne  le  nombre  d’éléments  dans  le  buffer  z  p'fresh  retourne  true  si  la  valeur  a  été  mise  à  jour  depuis  sa  dernière  u"lisa"on;  

false  sinon  

Page 50: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 50 - SE206: AADL – partie 2

Exemple  d’u"lisa"on  de  l’annexe  comportementale  

thread implementation controller_task.impl properties Dispatch_Protocol => Timed; Period => 1000 ms; annex Behavior_Specification {** states idle: initial complete final state; detect_P: state; transitions idle -[on dispatch A_i]-> detect_P {

while (P_i'count != 0) {P_i?}; A_i?;

A_o!; Computation(20 ms)};

detect_P -[P_i'count > 0]-> idle { while (P_i'count != 0) {P_i?}; };

detect_P -[P_i'count = 0]-> idle {P_o!}; idle -[on dispatch Period]-> idle {A_o!};

**};end controller_task.impl;  

Thread controller_task features P_i: in event port; P_o: out event port; A_i: in event port; A_o: out event port;end controller_task;  

Page 51: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 51 - SE206: AADL – partie 2

Exemple:  analyse  d’ordonnançabilité  (2/2)  

Page 52: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 52 - SE206: AADL – partie 2

Code  AADL  (1/3)  

PACKAGE shared_data_PkgPUBLICPROCESSOR CPUPROPERTIES Scheduling_Protocol => (RMS);END CPU; SYSTEM shared_dataEND shared_data; SYSTEM IMPLEMENTATION shared_data.othersSUBCOMPONENTS my_platform : PROCESSOR CPU; my_process : PROCESS my_process.others;PROPERTIES Actual_Processor_Binding => ( reference(my_platform) ) applies to my_process;END shared_data.others;PROCESS my_processEND my_process;

PROCESS IMPLEMENTATION my_process.othersSUBCOMPONENTS T1 : THREAD T.i1; D1 : DATA D { Concurrency_Control_Protocol => Priority_Ceiling; }; D2 : DATA D { Concurrency_Control_Protocol => Priority_Ceiling; }; T2 : THREAD T.i2;CONNECTIONS C1 : DATA ACCESS D1 -> T1.D1; C2 : DATA ACCESS D2 -> T1.D2; C3 : DATA ACCESS D1 -> T2.D1; C4 : DATA ACCESS D2 -> T2.D2;END my_process.others;  

Page 53: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 53 - SE206: AADL – partie 2

Code  AADL  (2/3)  

THREAD TFEATURESD1 : REQUIRES DATA ACCESS D;D2 : REQUIRES DATA ACCESS D;END T;DATA DEND D;

THREAD IMPLEMENTATION T.i1PROPERTIESDispatch_Protocol => Periodic;Compute_Execution_Time => 5ms..5ms;Period => 15 ms;ANNEX Behavior_Specification {**States s : initial complete final state;Transitions t : s -[on dispatch]-> s { D1 !<; computation(3 ms); D2 !<; D2 !>; D1 !>};**};END T.i1;  

Page 54: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 54 - SE206: AADL – partie 2

Code  AADL  (3/3)  

THREAD IMPLEMENTATION T.i2PROPERTIESDispatch_Protocol => Periodic;Compute_Execution_Time => 5ms..5ms;Period => 25 ms;ANNEX Behavior_Specification {**States s : initial complete final state;Transitions t : s -[on dispatch]-> s { D2 !<; computation(5 ms); D1 !<; D1 !>; D2 !>};**};END T.i2; END shared_data_Pkg;  

Page 55: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 55 - SE206: AADL – partie 2

Exploita"on  avec  AADL  Inspector  

Page 56: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 56 - SE206: AADL – partie 2

Exercice:  calcul  de  temps  de  réponse  

thread Task1features l: requires data access lock; d1: requires data access d; d2: requires data access d;annex behavior_specification {** states s_init: initial complete final state; s_comp: state; transitions t1: s_init -[on dispatch]-> s_comp; t2: s_comp -[true]-> s_init { computation(1 ms .. 2 ms); l!<; computation(0 ms .. 1 ms); l!>; computation(1 ms .. 2 ms) }; **}; end Task1;

thread Task2 features l: requires data access lock; d1: requires data access d; d2: requires data access d; annex behavior_specification {** states s_init: initial complete final state; s_comp: state; transitions t1: s_init -[on dispatch]-> s_comp; t2: s_comp -[d1 = d2]-> s_init { computation(0 ms .. 1 ms); l!<; computation(3 ms .. 8 ms); l!>; computation(4 ms .. 1 ms) }; t3: s_comp -[otherwise]-> s_init { computation(12 ms .. 15 ms); l!<; computation(2 ms .. 2 ms); l!>; computation(9 ms .. 13 ms) }; **}; end Task2;

On suppose que : ��� Task1 et Task2 sont connectées aux mêmes données ��� via l, d1, et d2 respectivement. Period (Task1) = 40 ms; Period(Task2) = 80 ms; Ordonancement = RMS ���

Quel est le pire temps de réponse de Task1 et Task2?

Page 57: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 57 - SE206: AADL – partie 2

Pire  temps  de  réponse  •  Méthode  1,  rapide  mais  pessimiste:  approxima"on  

z  WCET  (Task1)  =  5  z  WCET  (Task2)  =  30  z  WCET  (l)  =  8  

WCRT(Task1)  =  13;  WCRT(Task2)  =  56  

•  Méthode  2,  lente  mais  moins  pessimiste:  produit  croisé  des  branches  de  l’automate  

WCRT(Task1)  =  13;  WCRT(Task2)  =  37  

I  2ms

1ms

lock(l)

2ms

unlock(l)

F  

Task1 I  

1ms

8ms

lock(l)

1ms F  

Task2

unlock(l)

I  2ms

1ms

lock(l)

2ms

unlock(l)

F  

Task1 I  

15ms

2ms

lock(l)

13ms F  

Task2

unlock(l)

Page 58: AADL:%Architecture%Analysis&Design% Language%...2017/06/04  · subprogram prog1 features i : in parameter a_data; o : out parameter a_data; end prog1; subprogram prog2 extends prog1

Page 58 - SE206: AADL – partie 2

Représenta"on  du  fonc"onnement  des  communica"ons  •  Delayed