uml comportemental et concurrence

Upload: monique-calmon

Post on 25-Feb-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 UML Comportemental Et Concurrence

    1/46

    Reprsenter le tempsA. BeugnardMajeure Informatique INF301 GL-C42e semestre 2015

  • 7/25/2019 UML Comportemental Et Concurrence

    2/46

    Les cours de laxe GL de lUV1 - INF301

    1. La dcouverte des objets2. Les cycles de vie des logiciels3. UML structurel et hritage

    4. UML comportemental et concurrence

    2 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    3/46

    Objectifs

    Un systme peut tre dcrit selon plusieurs points devue. Nous nous sommes focalis sur sa structure ; cequi le compose (les objets, les relations), ce quicaractrise son tat.

    Une autre dimension essentielle est son volution ; cequi fait voluer son tat dans le temps.

    Dfinir des conceptsDonner quelques intuitionsProposer quelques notations

    Je vous invite prendre des notes. . .

    3 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    4/46

    Avancement

    1 La concurrenceDfinition

    Quelques difficults

    2 La concurrence en UML

    4 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    5/46

    Comment le temps est-il reprsent ?

    Un programme = une squence dinstructions

    0start 1 2 3 4 5a b

    c d

    e

    Peut-il se passer plusieurs choses simultanment ?

    5 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    6/46

    Comment le temps est-il reprsent ?

    Un programme = une squence dinstructions

    0start 1 2 3 4 5a b

    c d

    e

    Peut-il se passer plusieurs choses simultanment ?Non!

    Linstruction bne peut commencer que silinstruction aest termine.Le programme se termine quand (et si) linstructionese termine.

    5 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    7/46

    Comment faire 2 choses en mme temps?

    Une interface utilisateur ractive (Thinking in Java,www.BruceEckel.com2ed p825)

    Valeur courante du compteur

    Dmarrage du compteur Suspension / Redmarrage

    6 / 38 A. Beugnard Reprsenter le temps

    http://www.bruceeckel.com/http://www.bruceeckel.com/
  • 7/25/2019 UML Comportemental Et Concurrence

    8/46

    Tches et excution

    Le programme est dcoup en tchesles instructions dune tche sexcutent squentiellementCes tches sont excutes indpendamment1. si assez de processeurs / curs, excutionsimultane

    ttche 1

    .

    .

    .

    .

    .

    .

    .

    .

    .

    t

    tche k

    a11 a

    12 . . . a

    1n1

    ak1 a

    k2 . . . a

    knk

    2. sinon, il y aentrelacement

    t

    tche 1 et ka11 a

    k1 a

    k2 a

    12 . . . . . . a1n1 aknk

    Si plusieurs tches sexcutent :paralllisme

    7 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    9/46

    Ordre des tches

    Dans quel ordre sexcutent les tches ?si les tches sontindpendantes(cest rare...)- il suffit de respecter lordre interne chaque tche

    si des tches partagent des ressources ou changent desdonnes

    - il faut quelles sentendent, cest lasynchronisation- certains ordres dexcution ne sont plus acceptables

    On parle deconcurrencedes tchesComment est assure la synchronisation ?

    soit par construction (temps partag, algorithme, . . .)soit le systme dexcution fournit des verrous que lesactions doivent prendre et rendre

    8 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    10/46

    Quest-ce quun programme concurrent ?

    Un programmeconcurrentExcute simultanment plusieurs tches (squencesdinstructions) grce au support de plusieurs filsdactivits (threads)

    Unespcificationdun programme concurrentun ensemble de processus (ou dactivits) quidcrivent des actions squentielles.

    un ensemble de contraintes (synchronisation,partage de ressources, change de donnes)Unetracedexcution

    la squence des instructions effectivementexcute.

    9 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    11/46

    Exemple : partage de ressources

    1 while(true) {

    2 R1.acqurir();

    3 R2.acqurir();

    4 travailler();

    5 R1.librer();

    6 R2.librer();

    7 seReposer();

    8 }

    0start

    1

    2

    3

    4

    5

    R1.acqurir

    R2.acqurirtravailler

    R1.librer

    R2.librer

    seReposer

    10 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    12/46

    Dfinition du paralllisme

    Dfinition :On dit que deux instructions (actions,calculs) sont parallles si elles ont lieu au mme instant

    Quest-ce quun instant ?

    11 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    13/46

    Dfinition du paralllisme

    Dfinition :On dit que deux instructions (actions,calculs) sont parallles si elles ont lieu au mme instant

    Quest-ce quun instant ?

    11 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    14/46

    Dfinition du paralllisme

    Dfinition :On dit que deux instructions (actions,calculs) sont parallles si elles ont lieu au mme instant

    Quest-ce quun instant ?Un point dans le temps. . . qui peut tre considrcomme de dure nulle

    11 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    15/46

    Dfinition du paralllisme

    Dfinition :On dit que deux instructions (actions,calculs) sont parallles si elles ont lieu au mme instant

    Quest-ce quun instant ?Un point dans le temps. . . qui peut tre considrcomme de dure nulleAbstraitement : pas de relation causaleentre les deuxinstructions (indpendance)

    ExemplesSur une machine : 2 sessions dutilisateurs diffrentsAvec plusieurs machines : des clients et un serveur

    11 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    16/46

    Exemple de systme concurrent

    12 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    17/46

    Pourquoi la concurrence ?

    Cest naturel !Meilleure utilisation des ressources (partage)Meilleures performances

    Plus de souplesse dans les interactions (plus blocagesur une entre)Meilleur contrle, en jouant sur les priorits

    13 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    18/46

    Pourquoi la concurrence ?

    Cest naturel !Meilleure utilisation des ressources (partage)Meilleures performances

    Plus de souplesse dans les interactions (plus blocagesur une entre)Meilleur contrle, en jouant sur les priorits

    Mais cest aussi beaucoup plus complexe !

    13 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    19/46

    Rappels douloureux

    Incident Therac 25TGV

    Interblocage, famine, mauvais contrle (atomicit,

    transaction), ...

    14 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    20/46

    Partager correctement

    Console

    Radar

    Radar

    (x,y)

    positionde la fuse

    partage

    Radar := while(true) {write(x); write(y);}

    Console := while(true) {read(x); read(y); decision();}

    Une trajectoire est prvue. Si on observe une erreur detrajectoire, on dtruit la fuseEt alors. . . ?

    15 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    21/46

    Atomicit, exclusion mutuelle

    Imaginez lentrelacement :write(x); read(x); read(y); write(y); decision();

    La console observe lancienne valeur de y ! ! ! Ladcision peut tre errone.

    16 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    22/46

    Atomicit, exclusion mutuelle

    Imaginez lentrelacement :write(x); read(x); read(y); write(y); decision();

    La console observe lancienne valeur de y ! ! ! Ladcision peut tre errone.

    Il faut garantir la mise jour de x et y ensemble :on parle doprationatomique

    Rendre atomique permet dassurer uneexclusionmutuelle, en interdisant tout autre processusdintervenir pendant lexcution de lazone critique.

    16 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    23/46

    Non dterminisme

    Avec la concurrence il faut imaginer que tous lesentrelacements sont possibles. Le choix du cheminrellement excut est inconnu.

    On parle denon dterminisme.10 processus avec 10 instructions chacun cest dj1010 entrelacements possibles !

    En consquence, il estdifficile de testerexhaustivement un programme concurrent. Denouveaux risques derreurs arrivent.

    17 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    24/46

    Accder avec sret

    Rseau

    Disque

    VoD1 VoD2

    VoD1 := while(true) { acquire(Rx); acquire(Dd); compute();

    release(Rx); release(Dd);}

    VoD2 := while(true) { acquire(Dd); acquire(Rx); compute();

    release(Rx); release(Dd);}

    Et alors. . . ?

    18 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    25/46

  • 7/25/2019 UML Comportemental Et Concurrence

    26/46

    Interblocage

    Imaginez lentrelacement :VoD1.acquire(Rx); VoD2.acquire(Dd); VoD1.acquire(Dd);

    VoD2.acquire(Rx);

    VoD1 attend que VoD2 libre le disqueVoD2 que VoD1 libre le rseauPlus rien ne se passe, cest uninterblocage

    Deux solutions ce type de problme :

    prvention : viter que cela arrive.

    gurison : tuer un des processus, librer ses possessions(verrous) et le redmarrer

    19 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    27/46

    Conclusion intermdiaire

    On a quelques intuitions de la concurrence et de sesdifficults.

    Comment dcrire le temps ?

    Comment dcrire la concurrence ?

    20 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    28/46

    Avancement

    1 La concurrence

    2 La concurrence en UMLDiagramme de squencetats, transitions, activits

    21 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    29/46

    Interaction en Java

    1 public class Producer {2 ...

    3 private Stock s ; //initialis par le constructeur4 ...

    5 public void produce() {

    6 Product o;

    7 boolean full;

    8 o = new Product("gomme");

    9 s.add(o);

    10 full = s.isEmpty();

    11 }

    12 ...13 }

    22 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    30/46

    Un diagramme de squence : produce

    :Producer o:Product s:Stocko=create()

    add(o)

    full=isEmpty()

    23 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    31/46

    Squences et flux

    p1:Producer s:Stock p2:Produceradd(o1)

    add(o2)

    Il y a des objetsactifs(p1etp2) et dautrespassifs(s)

    24 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    32/46

    Squences et flux

    p1:Producer s:Stock p2:Produceradd(o1)

    add(o2)

    p1 et p2 veulent accder en mme temps s. Il y a des

    risques si lun des 2 modifie ltatde lobjet partag.Comment retarder ? Avec ou sans condition ? Parexemple si s est plein. . .

    25 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    33/46

    Lien avec le cours Java

    Comment crer des activits ? la classeThreadComment rendre atomique ?Comment assurer lexclusion mutuelle ?Comment synchroniser ? faire attendre ?Comment utiliser ces outils ? Une mthode

    Comment reprsenter des automates et des filsdactivit en UML ?

    26 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    34/46

    tats et automate

    On considre un clavier de tlphone sur lequel oncompose des chiffres pour former un numro.

    27 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    35/46

    tats et automate

    On considre un clavier de tlphone sur lequel oncompose des chiffres pour former un numro.

    0start 2 3n

    n

    num

    27 / 38 A. Beugnard Reprsenter le temps

  • 7/25/2019 UML Comportemental Et Concurrence

    36/46

    Vocabulaire : tat, transition, etc.

    tat Reprsente un moment dans le temps (quipeut durer). On distingue les tats initiaux(sans origine) et finaux (sans issues).

    Transition Reprsente un vnement qui fait passer

    dun tat un autre de manire (abstraite)instantane. On distingue la transition (vide) qui permet une transition immdiate.

    Garde Reprsente une condition pour quune

    transition puisse tre tire.Action Opration attache une transition qui est

    excute lors du tirage de la transition.

    28 / 38 A. Beugnard Reprsenter le temps

    M h l (S M h )

  • 7/25/2019 UML Comportemental Et Concurrence

    37/46

    Machines tats simple (State Machine)

    Un tel diagramme permet de dcrire les volutions destats dun objet.

    29 / 38 A. Beugnard Reprsenter le temps

    M h (S M h )

  • 7/25/2019 UML Comportemental Et Concurrence

    38/46

    Machines tats (State Machine)

    30 / 38 A. Beugnard Reprsenter le temps

    Li i d

  • 7/25/2019 UML Comportemental Et Concurrence

    39/46

    Limite des automates

    Un ProtocolStateMachine UML permet de dcrire unfil dexcution comme par exemple les volutions destats dun objet.

    Ltat peut tre dfini comme lensemble des valeursdes attributs de lobjet.

    Comment dcrire plusieurs fils dxcution ?

    31 / 38 A. Beugnard Reprsenter le temps

    Di d i i (A i i )

  • 7/25/2019 UML Comportemental Et Concurrence

    40/46

    Diagramme dactivits (Activity)

    ActivityPartitionInitialNodeAction

    ControlFlowObjectFlowDecisionNode

    ForkNodeJoinNodeActivityFinal

    32 / 38 A. Beugnard Reprsenter le temps

    C i

  • 7/25/2019 UML Comportemental Et Concurrence

    41/46

    Comparaisons

    Quand utiliser les diffrents diagrammes ?Diagramme de squence : interactions entre objetsAutomate : un fil, volution des tats dun objets

    Diagramme dactivit : plusieurs fils, plusieursobjets, peu de dtails

    Les diagrammes dactivit sont plus adapts auxphases amont (analyse) du dveloppement.

    33 / 38 A. Beugnard Reprsenter le temps

    C l i

  • 7/25/2019 UML Comportemental Et Concurrence

    42/46

    Conclusion

    Un systme (logiciel) ncessite de nombreux points devue pour tre dcrit.UML offre des outils pour dcrire les points de vue :

    structurel: diagramme de classe, objet, et dautres

    temporel: diagramme dtat, dactivit, desquence, et dautresfonctionnel: diagramme de cas dutilisation ou

    dactivit

    34 / 38 A. Beugnard Reprsenter le temps

    C l i

  • 7/25/2019 UML Comportemental Et Concurrence

    43/46

    Conclusion

    Ce cours donne quelques outils et intuitions sur lafaon de dcrire la concurrence.Le cours Java complte compltera avec une visionplus oprationnelle (excutable) de la concurrence.

    LUV2 approfondira la comprhension de laconcurrence.

    35 / 38 A. Beugnard Reprsenter le temps

    Partie I : Annexe

  • 7/25/2019 UML Comportemental Et Concurrence

    44/46

    Partie I :Annexe

    36 / 38 A. Beugnard Reprsenter le temps

    Vocabulaire

  • 7/25/2019 UML Comportemental Et Concurrence

    45/46

    Vocabulaire

    SpcificationProcessusActivit

    * seq. dactionsContraintesDpendances

    ProgrammationTche

    * seq. dinstructionsThread(java)

    Runnable(java)

    ExcutionTraceCalculSupport

    - Processeur- Cur- Systme

    dexploitation- thread/process

    37 / 38 A. Beugnard Reprsenter le temps

    Vocabulaire

  • 7/25/2019 UML Comportemental Et Concurrence

    46/46

    Vocabulaire

    Flux, (Thread)ConcurrenceNondterminismeEntrelacementObject actif,passif

    tat, transitionPartage

    Diagramme UMLde squencedtat

    dactivitAutomate

    interblocageatomicitexclusion

    mutuelle

    38 / 38 A. Beugnard Reprsenter le temps