JSD et algèbre de processus (ref : Bray section 13.4.1 - pages 311 à 313) IGL301 - Spécification et vérification des exgiences
JSD et Algèbre de processus Décrire les séquences d’évènement à l’aide d’une algèbre Orthogonal (en terme de style) aux automates et machines à états Similaire aux expressions régulières IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences JSD Jackson System Development (1983) notation graphique pour les expressions régulières diagramme JSD est l’arbre syntaxique d’une expression régulière opérateurs séquence, choix, itération IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences Algèbre de processus Tony Hoare (CSP) et Robin Milner (CCS) (~1978-79) plus puissant que JSD expression régulière plus paramètres pour les actions opérateurs additionnels || - synchronisation ||| - entrelacement appel de processus opérations quantifiées IGL301 - Spécification et vérification des exgiences
EB3 - Algèbre de processus Frappier et St-Denis (1998) Inspiré de CSP, CCS et Lotos, mais syntaxe plus simple, inspirée des expressions régulières Utilise les traces pour spécifier les sorties d’un système d’information algèbre de processus traditionnelles (CSP et CCS) ne le permettent pas facilement Sémantique opérationnelle IGL301 - Spécification et vérification des exgiences
Exemple de la bibliothèque main = ( ||| b : BookId : book(b)* ) || ( ||| m : MemberId : member(m)* ) IGL301 - Spécification et vérification des exgiences
Exemple de la bibliothèque book(b : BookId ) = Acquire(b, _) • ( loan( _, b)* ||| ListBookId(b)* ) • Discard(b) IGL301 - Spécification et vérification des exgiences
Exemple de la bibliothèque member(m : MemberId ) = Join(m, _,_) • ( ||| b : BookId : loan( m, b)* ) • Leave(m) IGL301 - Spécification et vérification des exgiences
Exemple de la bibliothèque loan (m:MemberId, b:BookId ) = Lend(m, b) • Renew(b)* • Return(b) IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences Opérateurs opérateurs définis par des règles de transitions règles définissent un système de transition E peut exécuter et se transformer en E’ IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences Règle de l’action dénote une action interne dénote un processus qui a terminé avec succès IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences Règles -1 IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences Règles - 2 IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences Règles - 3 IGL301 - Spécification et vérification des exgiences
Exemples de transitions IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences Exemple de preuve IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences Garde P ==> E pour définir la condition P, on peut utiliser des fonctions récursives sur les traces de l’expression de processus main exemple nbLoansMember(t,m) < maxLoans(t,m) ==> Lend(m,b) IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences Fonction récursive int nbLoansMember(t:Trace, m:MemberId) = match last(t) with : ; Join(m, _ ) : 0; Lend( m, b) : 1 + nbLoansMember(front(t),m); otherwise : nbLoansMember(front(t),m) end IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences Fonction récursive int nbLoans(t : Trace, b : BookId) = match last(t) with : ; Acquire(b, _ ) : 0; Lend( _, b) : 1 + nbLoans(front(t),b); Renew(b) : 1 + nbLoans(front(t),b); otherwise : nbLoans(front(t),b); end appel récursif valeur de retour action IGL301 - Spécification et vérification des exgiences
IGL301 - Spécification et vérification des exgiences TP6 Donnez l’expression de processus décrivant le système suivant : “Le système doit gérer des équipes et des joueurs. Un joueur peut jouer pour une seule équipe à la fois. Une équipe comporte un maximum de 25 joueurs. Prenez en compte les actions suivantes : créer et supprimer une équipe, créer et supprimer un joueur, embauche d’un joueur par une équipe,libération d’un joueur par une équipe.” IGL301 - Spécification et vérification des exgiences