uml-comportement-bw.pdf

80
Gerson Sunyé Irin - Université de Nantes Conception avec UML

Transcript of uml-comportement-bw.pdf

  • Gerson SunyIrin - Universit de Nantes

    Conception avec UML

  • Partie II - Comportement

  • Diagrammes de comportement

    Etat-transitionInteractionActivitsCas dutilisation

  • tat-transition

  • Diagrammes dtatModlisation dun comportement par un systme fini dtats et de transitionsIl existe deux sortes de digrammes dtat:

    De comportementDe protocole

  • Diagrammes dtatDiagramme de dtat comportementaux

  • Dcrivent un comportement laide dun graphe dtats, interconnects par des Transitions, qui sont dclenches par des vnements En dautres termes, dcrivent les ractions dun objet aux changements de son environnement

    Machines dtats

  • Essentiellement, un diagramme de HarelAttachs un classificateur (sauf interfaces) ou une opration

    Sont hrits, et peuvent tre spcialiss

    Machines de dtats

  • Relation unidirectionnelle entre deux tats (ou entre deux machine dtat)Interne un tatExterne: implique un changement dtat Locale: sapplique tous les tats dun tat composite

    Transition

  • Notation - Transition

    Syntaxe : trigger [guard]/ trigger

    Open Closequit(user) [user has rights] / parent := user.parent(); parent.update()

  • Evnement qui peut causer lexcution dun comportement qui lui est associ. Exemples:

    Message: Signal ou OprationTemporelChangement

    Gchette (Trigger)

  • Stimuli auquel ragit un objetCommunication instantan, unidirectionnelleUn vnement est une instance dun Signal (Classificateur marqu signal)

    Evnement

  • Contrainte value avant le dclenchement dune transition

    Garde

  • Dclenche par une transition ou interne un tatDfinit un comportement, spcifi dans nimporte quel langage (!)

    Activit

  • Situation stable dun objet:en attente dun vnement, ouen train de raliser une tche

    Trois sortes: simple, composite et sous-machine

    Etat

  • Compartiments:

    Nom

    Activits internes

    Transitions internes

    Notation

    ICQ-Connectedentry/say_hello()exit/bye_bye()do/poll()keyboard/read_msg()

  • Etat englobant diffrents sous-tatsPossde une entre et une sortieTransition arrivant -> entreTransition sortant -> sort de tous les tats

    Etat composite

  • Notation

    Offline Available N/A Freedeconnect()

    Online

    set_available()

    not_available() free_for_chat()

  • Notation

    Etat composite avec indicateur de dcomposition

    Online

    do/poll()

  • Rgions concurrentes, reprsentant 2 (ou n) aspects indpendants dun objet

    Evitent lexpression dun produit cartsien

    Composite Orthogonal

    Online

    InvisibleVisible

    Available

  • Sous-machine

    Rfrence une machine dtats

  • Rfrence une machine dtats

    Points de connexion:

    Entre

    Sortie

    Notation

    Connexion:ConnexionMachine

    timeout

  • Initial, Final

    Entre, sortie

    Fourchette, jonction (rgions orthogonales)

    Choix

    Pseudo-tats

    id

    [>10]

    [

  • Envoi et rception dvnements

    Squence dactions

    Pour une vue oriente transition

    Transitions particulires

    Abort

    Timeout

    Connected

    reason = timeout

    Offline

  • Ajout de nouvelles transitions ou de nouveaux tats

    Spcialisation dtats (transformation dun tat simple en composite)

    Un tat peut tre {final}

    Spcialisation

    Online Offline

    Connection {extended}

    new transition

  • Diagrammes dtatDiagramme de dtat de protocole

  • Spcialisation des machines dtatsToujours attaches un classificateurReprsentent un cycle de vie dun objet et spcifient quels messages sont accepts chaque tat

    Machines dtat de protocole

  • Similaire aux machines dtats

    Note {protocol}

    Notation

    Porte {protocol}

    Ouverte Ferme[couloir->libre] Fermer/

  • Spcifient une pr et une post condition

    Transitions

    [pr-condition] vnement / [post-condition]

  • Spcifient un invariant

    Etats

    [invariant]Etat

  • Cette machine dtats est attache la classe Connection

    Donner le code qui correspond limplmentation de cette classe

    5 min...

    Exercice VIIConnection

    Offline

    Online

    do/poll_sever()

    connect()

    disconnect()

    Online

    set_available()

    set_not_available() set_free_for_chat()

    N/A FreeAvailable

  • Utilisation du pattern State

    Utilisation dun thread pour la mthode poll()

    Utilisation ventuelle de Command

    Solutionclass Connection:

    def __init__(self): self._state = Offline(self)

    def connect(self): self._state.connect()

    def disconnect(self): self._state.disconnect() def set_not_available(self): self._state.set_not_available()

    def set_free_for_chat(self): self._state.set_free_for_chat()

    def set_available(self): self._state.set_available()

    def set_state(self, aState): self._state = aState

  • La classe Connection possde un seul attribut (_state), initialis Offline()

    Le comportement est dlgu ltat

    Connectionclass Connection:

    def __init__(self): self._state = Offline(self)

    def connect(self): self._state.connect()

    def disconnect(self): self._state.disconnect() def set_not_available(self): self._state.set_not_available()

    def set_free_for_chat(self): self._state.set_free_for_chat()

    def set_available(self): self._state.set_available()

    def set_state(self, aState): self._state = aState

  • ConnectionState ralise le changement dtat en fonction des transitions

    Un nouvel objet est cr chaque fois

    ConnectionStateclass ConnectionState: def __init__(self, connection): self._connection = connection def disconnect(self): self._connection.set_state(Offline(self._connection))

    def connect(self): self._connection.set_state(Available(self._connection))

    def set_not_available(self): self._connection.set_state(NotAvailable(self._connection))

    def set_free_for_chat(self): self._connection.set_state(Free(self._connection))

    def set_available(self): self._connection.set_state(Available(self._connection))

  • Les transitions non acceptes sont ignores

    Offline

    class Offline(ConnectionState): def disconnect(self): pass def set_not_available(self): pass

    def set_free_for_chat(self): pass

    def set_available(self): pass

  • Les transitions non acceptes sont ignores

    Cration dun thread pour lactivit interne de ltat

    Le thread est arrt par la transition disconnect

    Online

    class Online(ConnectionState): def __init__(self, connection): self._t = Poll() self._t.start() ConnectionState.__init__(self, connection)

    def disconnect(self): self._t.cancel() ConnectionState.disconnect(self)

    def connect(self): pass

  • Les transitions non ncessaires sont ignores

    Autres Etatsclass Free(Online):

    def set_free_for_chat(self): pass

    class Available(Online): def set_available(self): pass

    class NotAvailable(Online): def set_not_available(self): pass

  • Une interrogation de serveur sera ralise chaque seconde

    Pollfrom threading import Threadimport timeclass Poll(Thread): def __init__(self): Thread.__init__(self) self._shouldStop = 0 def run(self): while self.resume(): print "I am polling the server, I sweare!" time.sleep(1)

    def resume(self): return self._shouldStop == 0

    def cancel(self): self._shouldStop = 1

  • Changer limplmentation de manire ne crer quune seule instance de chaque tat5 min

    Exercice VII

  • Comment grer des tats concurrents?E.g. si ltat composite Online avait une rgion orthogonal contenant les tats Visible et Invisible?5 min...

    Exercice VIII

  • Diagrammes de comportement

    Etat-transitionInteractionActivitsCas dutilisation

  • Dfinissent le comportement dun ClassificateurLe comportement est dfini par deux ensembles de traces:

    ValidesInvalides

    Interactions

  • InteractionsDcrivent lchange de messages entre objets. Diagrammes:

    Squence

    Communication

    Aperu dinteraction

  • Interaction Diagramme de Squences

  • Exemples de coopration entre objets Illustrent la dynamique denchanement dun traitement travers les messages changs entre objetsReprsentation du temps comme une dimension explicite (verticale)

    Diagramme de squences (scnario)

  • Constitution:Un message initiateurUn ensemble dobjets et de messagesDes cadres (frames)Des contraintes de temps

    Diagramme de squences

  • Notationsd Exemple

    obj : C1 obj2 : C2

    obj3 : C1

    Message Asynchrone

    Message synchrone

    creation()

    new = obj3

    message(obj, obj2)

    debut

  • MessagesCommunication (synchrone ou asynchrone) entre deux lignes de vie. Sortes de message:

    Complet (vnements denvoi et de rception connus)

    Trouv (vnement denvoi inconnu)

    Perdu (vnement de rception inconnu)

    Inconnu

  • Asynchrone

    Synchrone

    Cration

    Perdu

    Trouv

    Messages - NotationMessage Asynchrone

    Message synchrone

    obj3 : C1creation()

    retour

  • Messages - Syntaxemessage ::= [attribut =] signal-ou-operation [(arguments)][: valeur-retour] | *

    arguments ::= argument [, arguments]

    argument ::= [paramtre=]valeur-argument | attribut = paramtre-sortie [valeur-argument] |

    message(14, -, 3.14, hello)v=message(16, variable):96message(id=16)

    Exemples:

  • Ligne de vie:

    Reprsente lexistence dun objet un moment particulier

    Entre la cration et la destruction

    Activation:

    Priode dexcution dune activit (lui-mme, dlgation)

    Ligne de vie, Activationobj : C1

  • Observation de dure, contraintes

    Observation de temps (instants), contraintes

    Contraintes temporelles

    :User :ACSystem

    Code d = duration

    CardOut {0..13}

    {d..3*d}

    {t..t+3}

    t = now

  • Rgion dfinissant une smantique prcise lintrieur dune interaction

    Raccourcis pour lcriture de traces

    Compos de [1..*] Oprandes

    Fragmentssd Region Critique

    obj : C1 obj2 : C2

    msg()

    msg()

    critical

  • Alternatives (alt): choix de comportement, entre deux oprandes

    Fragmentssd Exemple

    obj : C1 obj2 : C2

    msg()

    msg()

    alt [x == 42]

    [else]

  • Option (opt): loprande est optionnelle. Elle peut ne pas existerBreak (break): loprande est excute, la place du reste de linteraction (raccourci pour alternative)

    Fragments

  • Parallle (par): le comportement spcifi par les deux oprandes peut sexcuter en parallle (fusion entre les messages)Ngatif: le fragment reprsente des traces invalides

    Fragments

  • Rgion critique (critical): les traces spcifies ne peuvent pas tre intercales

    Fragments

  • Assertion (assert): spcification de la seule continuation valable

    Ignorer et Considrer (ignore | consider): spcification des messages significatifs

    Fragmentssd Exemple ignore {t,r}

    :X :Y

    consider {q,v,w} v()

    assert

    q()

  • Boucle (loop): loprande sera rpte autant de fois que dfini par une gardeAutres: strict, ordonnancement strict, ordonnancement faible

    Fragments

  • Un diagramme de squences doit tre lisible: limitez le nombre de messages et dobjets par diagramme

    Conseil de modlisation

  • Listez les utilisations possibles dun diagramme de squences5 min..

    Exercice IX

  • Diagramme de Communication

    Interaction

  • Comme le diagramme de squences, sert reprsenter des exemples de coopration dobjetsCependant: la dimension temporelle est reprsente par une squence et les liens entre objets sont visibles

    Diagramme de Communication

  • Equivalent un diagramme de squences

    Le chemin utilis par les messages est visible

    Notation

    Gildas:Caissier

    Aurlie:Client

    1: demande argent()

    2 : reoit argent()

  • Notation

    :Carre :Segment

    origine:Point

    destination:Point

    Sylvain

    afficher() 1 *(i=1..4):affiche()4

    1.1 position()

    1.2 position()

    Squences conscutives et imbriques

  • Exercice X

    Dessiner le diagramme de squences quivalent au digramme de communication ci-contre

    5 min..

    :Carre :Segment

    origine:Point

    destination:Point

    Sylvain

    afficher() 1 *(i=1..4):affiche()4

    1.1 position()

    1.2 position()

  • Diagrammes de comportement

    Etat-transitionInteractionActivitsCas dutilisation

  • Spcifie la squence et les conditions pour coordonner diffrents comportementsAttachs un Classificateur

    Diagramme Activits

  • Notation

  • Actions

    Reprsentent un comportement dexcution (une tape dans lexcution dun algorithme)Peuvent avoir de pr et post conditions

    Action

  • Branchement sur plusieurs transitions

    Dcision

    [cout>10]

    [cout

  • mission de signal

    Rception de signal

    Syntaxe la SDL (tlcom)

    Strotypes optionnels

    Rception

    Emission

  • Diagrammes de comportement

    Etat-transitionInteractionActivitsCas dutilisation

  • Diagramme de Cas dutilisation

    Spcification fonctionnelle du systmeReprsente les manire de lutiliserActeurs, Cas dutilisations

  • Entit externe au systme et amene interagir avec lui. Un acteur joue un rle vis-a-vis du systme.peut reprsenter un tre humain, un autre systme, un SGBD, etc.L'identification des acteurs nous permet de dlimiter le systme.

    Acteurs

  • Cas dutilisationSont des Classificateurs: leur comportement est dfini par une interaction

    peuvent avoir des associations avec dautres classificateurs

    Use Case

  • Extension (extends): le comportement dfini par un cas dutilisation est tendu par un autreInclusion (includes): le comportement dun cas dutilisation est insr dans un autre

    Relations entre cas dutilisation

  • NotationsubsystemCommandes

    Consulter

    Commander

    MJ catalogue

    Traiter Commande

    Etablir crdit

    Client

    0..1

    1

    1

    1

    0..1

    0..1

  • Notation

    Retrait Lecture carteincludes

    Transaction sur

    distributeurAide en

    ligneextends

  • Conseil de modlisation

    Un cas dutilisation reprsente une fonctionnalit du systme, et non les options du menu principal