Académique Documents
Professionnel Documents
Culture Documents
THESE
Présentée pour l’obtention du diplôme de doctorat en sciences
Spécialité : Informatique
Par :
Aissam Belghiat
Intitulée :
Une approche de spécification et de vérification
des systèmes logiciels à base d’agents mobiles en
utilisant UML mobile et π-calcul
Remerciements
D’abord, je remercie Dieu le tout puissant qui m’a donné la volonté, la force, la
patience et le courage pour accomplir ce modeste travail.
J’adresse toute ma reconnaissance au Pr. Allaoua Chaoui mon directeur de thèse, qui
m'a toujours accueilli avec bienveillance et qui n’a ménagé ni son temps ni ses efforts pour
m’aider.
Je tiens à remercier ma famille ainsi que tous mes collègues et mes amis pour leur
soutien moral.
Je remercie également Dr. Hammadi Bennoui, Dr. Laid Kahloul ainsi que Dr. Djamel
Benmerzoug d’avoir accepté de juger ce travail.
En fin, je tiens à remercier tous ceux qui ont contribué d’une façon ou d’une autre à
la réalisation de ce mémoire.
Abstract
Abstract
Mobile agent-based software systems are a special type of applications which benefit
from the advantages of mobile agents. This leads to a new paradigm that can solve multiple
complex problems in several fields and areas, e.g. network management, electronic
commerce, and e-learning.
Modeling and analysis of mobile agent-based software systems would present
enormous difficulties; this is due to the use of mobile agents which often generates new
situations increasingly complicated. Mobile UML (M-UML) has been proposed as an
extension of UML to model these systems. π-calculus is a rigorous formal method introduced
to specify the behavior of concurrent systems with mobile communication.
In this thesis, we propose MSDs (Mobile Statechart Diagrams); an extension of M-
UML statechart diagrams that provide more modeling elements. Then an integrated approach
MSDs/π-calcul is developed for modeling and verification of mobile agent-based software
systems by translating the former to the later. The derived π-calculus specifications are then
used to analyze and check these systems using π-calculus analytical tools (such as MWB
tool). The approach is illustrated by a case study. We provide also an implementation of the
approach in order to automate its different steps. AToM3 is used as a transformation tool.
Résumé
Les systèmes logiciels à base d'agents mobiles sont un type particulier d'applications
qui bénéficient des avantages des agents mobiles. Cela conduit à un nouveau paradigme qui
peut résoudre multiples problèmes complexes dans plusieurs domaines et secteurs, par
exemple la gestion du réseau, le commerce électronique et le e-learning.
La modélisation et analyse des systèmes logiciels à base d'agents mobiles présentent
d'énormes difficultés; cela est dû à l'utilisation des agents mobiles qui génère souvent de
nouvelles situations de plus en plus compliquées. Mobile UML (M-UML) a été proposé
comme une extension de l’UML pour modéliser ces systèmes. π-calcul est une méthode
formelle rigoureuse introduite pour spécifier le comportement des systèmes concurrents avec
communications mobiles.
Dans cette thèse, nous proposons les MSDs (Mobile Statechart Diagrams); Une
extension des diagrammes d'états-transition M-UML qui fournissent plus d'éléments de
modélisation. Ensuite, une approche intégrée MSDs / π-calcul est développée pour la
modélisation et la vérification des systèmes logiciels à base d'agents mobiles en transformant
le premier vers le dernier. Les spécifications π-calcul dérivées sont ensuite utilisées pour
analyser et vérifier ces systèmes à l'aide des outils d'analyse du π-calcul (tel que l’outil
MWB). L'approche est illustrée par une étude de cas. Nous fournissons également une
implémentation de l'approche afin d'automatiser ses différentes étapes. AToM3 est utilisé
comme outil de transformation.
ملخص
أنظمة البرمجيات القائمة على وكيل متنقل هي نوع خاص من
التطبيقات التي تستفيد من ايجابيات الوكالء المتنقلون .وهذا يؤدي إلى نموذج
جديد يمكن أن تحل بواسطته المشاكل المعقدة المتعددة في العديد من
الميادين والمجاالت ،على سبيل المثال ،إدارة الشبكات ،والتجارة اإللكترونية،
والتعليم اإللكتروني.
نمذجة وتحليل النظم والبرمجيات المستندة على الوكالء المتنقلون
يولد صعوبات هائلة؛ ويرجع ذلك إلى استخدام الوكالء المتنقلون والتي غالبا
ما ينتج حاالت جديدة معقدة على نحو متزايد .وقد اقترح المحمول M-UML
كامتداد لـ UMLلنمذجة هذه األنظمة π-calculus .هو أسلوب رسمي
صارم قدم لتحديد سلوك النظم المتزامنة مع االتصاالت المتنقلة.
MSDs (Mobile Statechart في هذه األطروحة ،نقترح
)Diagrams؛ الذي هو امتداد لمخططات M-UML Statechart Diagrams
التي توفر المزيد من عناصر النمذجة .بعد ذلك نطور طريقة مركبة MSDs /
π-calculusلوضع النماذج والتحقق من أنظمة البرمجيات القائمة على
الوكالء المتنقلون بترجمة األول إلى الثاني .ثم يتم استخدام مواصفات π-
calculusلتحليل ومراجعة هذه النظم باستخدام األدوات التحليلية لـ π-
) calculusمثل أداة .(MWBنوفر دراسة حالة اليضاح الطريقة والتمكن من
تطبيقها .و نقدم أيضا تطوير الطريقة من أجل اتمتت الخطوات المختلفة
باستعمال اداة .AToM3
Introduction générale
La dissémination de l’informatique dans les différents domaines ces dernières
décennies a engendré beaucoup de défis et de nouvelles situations de plus en plus
compliquées. Cela a poussé les chercheurs à tenter de trouver d’autres paradigmes autres que
ceux déjà existants (spécialement le paradigme orienté objet) pour faire face à ces nouvelles
difficultés rencontrées, notamment dans les systèmes distribués. Le paradigme de l’agent
mobile était considéré au début de la décennie précédente comme étant le successeur de
l’orienté objet, qui va permettre une évolution majeure dans le développement de plusieurs
systèmes critiques dans des domaines différents. Cela est dû aux différentes propriétés qui
caractérisent les agents mobiles, telles que : la mobilité, l’autonomie, l’adaptabilité … etc, qui
fournissent de la flexibilité par rapport à d’autres technologie.
Les systèmes logiciels à base d'agents mobiles sont un type particulier de systèmes
logiciels qui profitent des avantages des agents mobiles. Ils se composent de plusieurs agents
communiquants qui s’éxecutent sur plusieurs places distribuées et qui peuvent se déplacer
entre elles afin de réaliser leurs buts. Cela conduit à un nouveau paradigme qui peut résoudre
plusieurs problèmes complexes dans plusieurs domaines tels que la gestion du réseau, le
commerce électronique, e-learning ... etc.
La modélisation et l’analyse de ces systèmes dans les premières phases de conception
peuvent améliorer largement leur développement. Fournir une approche qui permet de
spécifier et de vérifier tels systèmes n’est pas une tache triviale. En effet, plusieurs aspects
doivent être pris en charge, à savoir la mobilité, et la communication.
Plusieurs tentatives de fournir un langage expressif complet pour ces systèmes sont
proposées dans la littérature. M-UML (mobile UML) [15] est l'une de ces tentatives; c’est une
extension d’UML (Unified Modeling Language) [57] pour modéliser les systèmes logiciels à
base d'agents mobiles en couvrant les aspects de la mobilité qui représente le nouveau concept
inhérent de tels systèmes. M-UML fournit une version de base des diagrammes d'états-
transitions mobiles pour décrire le comportement d'un agent en terme de changement d'état.
M-UML a une sémantique semi-formelle qui empêche toute tâche d'analyse automatique de
ses diagrammes. La transformation des diagrammes vers une méthode formelle adéquate peut
1
Introduction générale
résoudre le problème. Le π-calcul [22] peut jouer ce rôle d’une manière satisfaisante. C’est
une algèbre de processus pour décrire le comportement des systèmes concurrents avec
communications mobiles. Nous l’avons délibérément choisi parce qu'il offre les mécanismes
appropriés pour décrire le comportement et le mouvement des agents dans ces diagrammes.
En plus, il fournit plusieurs outils pour automatiser la tâche de vérification.
La première contribution de cette thèse consiste à fournir une étude comparative
complète des différentes propositions qui existent dans la littérature ainsi qu'une classification
des approches de modélisation des systèmes logiciels à base d'agents mobiles. En se basant
sur les résultats de cette étude, nous avons adopté M-UML et l’étendre à cause des avantages
qu’il offre par rapport aux autres.
La deuxième et majeure contribution de ce travail consiste en la proposition des
diagrammes d’états-transitions mobiles MSDs (Mobile Statechart Diagrams) comme
extension des diagrammes d’états-transitions M-UML, suivie d'une approche intégrée
MSDs/π-calcul pour la modélisation et la vérification des systèmes logiciels à base d'agents
mobiles. Dans notre approche, le comportement d'un système logiciel à base d'agents mobiles
est modélisé par un ensemble de diagrammes d'états-transitions mobiles communicants
MSD1... MSDk. L'idée de base proposée consiste à donner à cet ensemble de diagrammes un
système π-calcul correspondant qui consiste en un réseau de processus en interaction, une
reconfiguration de ce système est faite à chaque fois qu’un agent passe d’un état à un autre ou
d’une place à une autre. Pour cela, nous avons proposé vingt-sept (27) règles de
correnspondance entre les diagrammes MSDs et le π-calcul. Les spécifications π-calcul
générées sont ensuite utilisées pour analyser et vérifier ces systèmes à l'aide des outils
d'analyse du π-calcul tel que le MWB (Mobility WorkBench) [66]. L'approche proposée est
illustrée par une étude de cas de la litérature.
La troisième contribution est le développement d’un outil intégré qui permet
l’automatisation de l’approche en utilisant la méta-modélisation et la transformation de
graphes en AToM3 [53].
Le manuscrit est organisé en six chapitres en plus d'une introduction et une
conclusion.
Dans l’introduction générale, la problématique et les contributions du travail de
recherche sont abordées.
Le premier chapitre est dédié au paradigme de l’agent mobile. Le but est de faire un
tour sur les atouts de cette technologie.
2
Introduction générale
Le deuxième chapitre est consacré aux deux langages autour desquels nous avons
construit notre approche, à savoir le langage UML et langage π-calcul. Le premier est un
langage semi-formel considéré comme le standard de la modélisation des systèmes orienté
objet, le dernier est un langage formel très connus par sa richesse sémantique pour la
spécification des systèmes concurrents avec communications mobiles.
Dans le troisième chapitre, une étude comparative de différentes approches proposée
dans la littérature est présentée. L’étude consiste en la proposition d’un cadre de comparaison,
une classification et une évaluation de plusieurs propositions.
Dans le quatrième chapitre, nous avons proposé en premier lieu les diagrammes
d’états-transitions mobiles MSDs (Mobile Statechart Diagrams) comme extension des
diagrammes d’états-transitions M-UML. Nous avons introduit de nouveaux éléments dans
MSDs pour prendre en charge la mobilité de manière plus aisée. Puis, nous avons présenté
notre approche qui consiste en la formalisation diagrammes semi-formel MSDs que nous
avons proposé à l'aide du langage formel π-calcul.
Dans le cinquième chapitre, nous avons illustré notre approche par une étude de cas
qui consiste en la modélisation et la vérification d’un système de vote électronique.
Dans le sixième chapitre, nous avons présenté l’automatisation de notre approche en
utilisant une combinaison de la méta-modélisation et des grammaires de graphes. Nous avons
proposé un métamodèle pour les MSDs ainsi qu'une grammaire de graphes pour les
transformer en π-calcul.
Nous avons terminé notre manuscrit par une conclusion générale et des perspectives
de travail de recherche.
3
Chapitre 1
Le paradigme de l’agent mobile
Au sommaire de ce chapitre
1.1 Introduction
1.2 Evolution de la mobilité
1.3 Systèmes logiciels à base d'agents mobiles
1.4 Les propriétés des agents
1.5 Les plateformes d'agents mobiles
1.6 Avantages des agents mobiles
1.7 Désavantage des agents mobiles
1.8 La communication entre les agents
1.9 Conclusion
Le paradigme de l’agent mobile Chapitre 1
1.1. Introduction
1.2.1. Client-Serveur
Le paradigme client-serveur est bien connu et largement utilisé. Dans ce paradigme
(voir FIG. 1.1), un serveur (B) situé dans un site (SB) a le savoir-faire et les ressources
nécessaires pour offrir un ensemble de services. Un client (A) situé dans un site (SA)
demande l’exécution de l’un des services en interagissant avec ce serveur. Ce dernier en
réponse, exécute la demande du client et lui envoie les résultats.
Savoir-faire
Savoir-faire
Demande Ressource
s
Réponse
5
Le paradigme de l’agent mobile Chapitre 1
composant de calcul (B) situé sur le site distant. (B) à son tour, exécute le code en utilisant les
ressources qui y sont disponibles et retourne un résultat au composant (A).
Savoir-faire
Demande Ressource
s
Réponse
Ressource Demande
s
Réponse
Savoir-faire
6
Le paradigme de l’agent mobile Chapitre 1
Migration Ressource
s
Savoir-faire
Les applications basées agents mobiles sont un type spécial de systèmes logiciels qui
profitent des avantages des agents mobiles afin de fournir un nouveau paradigme bénéfique
qui permet de résoudre plusieurs problèmes complexes dans divers domaines et secteurs
notamment les systèmes distribués.
Nœud 1 Nœud 2
Plateforme d’Agents A Plateforme d’Agents B
Plateforme d’Agents C
Agent mobile
Agent stationnaire
Place1 Place2
Communiquer
Utiliser
Migrer
Ressource
Région Place3
Les agents ont plusieurs propriétés qui confirment leurs qualités par rapport aux
objets. On cite les suivantes [10] [7]:
Autonomie: la capacité de l'agent de faire ses propres choix et de prendre ses propres
décisions pendant son exécution sans l'intervention d'aucune autre entité externe (par
exemple l'utilisateur).
8
Le paradigme de l’agent mobile Chapitre 1
1.5.1. Présentation
Une plateforme d'agents mobiles (ou système d’agents mobiles) est un système
logiciel distribué responsable du soutien et de la gestion des agents mobiles. Plusieurs plates-
formes ont été mises en œuvre pour le développement des agents mobiles, et il est impossible
de les décrire toutes ici. La plupart des plates-formes d'agents mobiles considèrent Java1
comme langage de programmation des agents en raison de sa portabilité.
Tableau 1.1 évoque quelques exemples de plates-formes. Nous avons sélectionné ces
outils qui, à notre avis, ont été ou sont encore très important pour la communauté de la
recherche et des projets industriels [10].
1
https://www.java.com/fr/
9
Le paradigme de l’agent mobile Chapitre 1
1.5.2. Standards
L’apparition et l’évolution du paradigme de l'agent mobile résultent en un grand
nombre de plates-formes d’exécution. Cela avait commencé de poser plusieurs problèmes tels
que les incompatibilités entre les différentes plates-formes d'exécution des agents mobiles.
Ces dernières sont en fait développées pour s’occuper d’un modèle spécifique des agents
mobiles ainsi que pour cibler certains domaines particuliers, ce qui signifie que les agents
créés par une plateforme ne peuvent pas s’exécuter sur d’autres. Il était alors indispensable de
proposer une normalisation (ou standardisation) des concepts et fonctionnalités des
plateformes d’agents mobiles, au moins afin d'assurer un certain niveau d'interopérabilité. Par
conséquent, deux standards sont développés par les organisations internationales de
standardisation pour faire face à ces problèmes à savoir : la norme MASIF [55] et la norme
FIPA [56].
La norme MASIF [55] (Mobile Agent System Interoperability Facilities Specification,
Spécification d’équipements d’interopérabilité des systèmes agents mobiles) : est un
standard pour les systèmes d’agents mobiles, qui a été spécifié par l’OMG (Object
Management Group)2 ; une association américaine à but non lucratif créée en 1989
2
www.omg.org/
10
Le paradigme de l’agent mobile Chapitre 1
dont l’objectif est de standardiser et de promouvoir le modèle objet sous toutes ses
formes.
La norme FIPA3 [56] (Foundation for Intelligent Physical Agents, Fondation pour les
agents physiques intelligents) : est un organisme sans but lucratif fondé en 1996 pour
promouvoir l'interopérabilité entre les agents logiciels hétérogènes et les systèmes
d'agents. Elle couvre un grand nombre des principaux domaines du développement des
agents.
3
www.fipa.org
4
Décrit un style de communication par Internet, où la demande pour une transaction est initiée par le serveur. Cette technique
s'oppose donc au fonctionnement « classique » des transactions web (pull) où la demande de la transmission de l'information
est initiée par le récepteur ou le client.
11
Le paradigme de l’agent mobile Chapitre 1
et les mises à jour automatiques de logiciels, pour les vendeurs. Les agents apportent
les nouveaux composants logiciels, ainsi que des procédures d'installation, directement
aux ordinateurs clients où ils mettent à jour et gèrent le logiciel de manière autonome.
Surveillance et notification. Cette application des agents mobiles met en évidence
leur nature asynchrone. Un agent peut surveiller une source d'information donnée sans
être dépendant du système dont il est issu, ainsi il peut notifier les nouvelles.
D’autre domaines ont aussi montrés beaucoup d’intérêts aux agents mobiles tel
que [2]: la fouille de données, l’intégration de données, l'efficacité énergétique et le comptage,
les capteurs multimédia sans fils, grille informatique, multimédia, sécurité, informatique
affective, environnement climatique et la météo, la formation en ligne, les services du web
sémantique, la localisation humaine, les systèmes d'information géographiques et les systèmes
de surveillance électronique de santé…etc.
12
Le paradigme de l’agent mobile Chapitre 1
protocole, il faut changer le code sur toutes les machines du système et cela devient un
problème. Les agents encapsulent les protocoles, changer un protocole revient à
interagir avec un nouvel agent.
Ils exécutent de manière asynchrone et autonome : les tâches à réaliser peuvent être
intégrées dans des agents mobiles, qui peuvent ensuite être distribués dans le réseau.
Après avoir été envoyés, les agents deviennent indépendants du processus qui les a
créés et peuvent fonctionner de manière asynchrone et autonome.
Ils s’adaptent dynamiquement: les agents mobiles peuvent s’adapter aux
changements de manière autonome et se répartir eux-mêmes sur des machines du
réseau, afin de maintenir la configuration optimale pour résoudre un problème
particulier.
Ils sont naturellement hétérogènes: les agents mobiles sont de nature hétérogène et
offrent des conditions optimales pour l'intégration transparente des systèmes basés sur
les réseaux.
Ils sont robustes et tolérants aux pannes: l'agent mobile a la capacité de réagir
dynamiquement à des situations et des événements défavorables, ce qui facilite la
construction des systèmes distribués robustes et tolérants aux pannes.
Les agents mobiles ne donnent pas les bonnes performances : en général, les agents
mobiles donnent des performances plus mauvaises que d'autres mécanismes, tels que
l'évaluation à distance. En plus, ils sont aussi très coûteux.
Les agents mobiles sont difficiles à concevoir : le paradigme fournit l’autonomie des
composants, et par conséquence, il est difficile d'identifier clairement, dans une
conception, quels composants vont interagir et comment cette interaction peut être
modélisée.
Les agents mobiles sont difficiles à développer : le développement d'une application
à base d’agents mobiles est une tâche effrayante. Le code doit être implémenté de
13
Le paradigme de l’agent mobile Chapitre 1
sorte qu'il fonctionne dans des environnements imprévisibles, ce qui est considéré
difficile et pénible. En outre, les technologies qui devraient soutenir le processus de
développement sont souvent juste des prototypes qui ne fournissent pas le type de
soutient requis pour développer des applications réelles.
Les agents mobiles sont difficiles à tester et déboguer : la distribution et la mobilité
ajoutent de la complexité au processus de test et de débogage d’un logiciel. En fait, les
agents mobiles peuvent se déplacer d'un nœud à l'autre dans un ordre non prédéfini, et
comprendre et tester leur implémentation à partir de telle histoire d'exécution
complexe est très dur.
Les agents mobiles sont difficiles à authentifier et à contrôler : les agents mobiles
doivent être authentifiés quand ils entrent un environnement. Le problème est qu’ils
sont associés a beaucoup d’identités et il n'est pas clair lesquelles devraient être
authentifiées et comment les mécanismes de contrôle d'accès devraient tenir compte
de cette information.
Les agents mobiles peuvent être endoctrinés : les agents mobiles sont vulnérables
aux attaques venant des environnements d’exécution malveillants, quand ils voyagent
à travers les différents hôtes pour accomplir leurs tâches. Par exemple, un hôte
malveillant peut modifier le code ou l’image de mémoire d'un agent pour changer la
manière dont l'agent se comporte, et par conséquence il est possible de créer un agent
malveillant.
Les agents mobiles ne peuvent pas garder les secrets : les agents mobiles ont été
préconisés en tant que des moyens pour implémenter des applications critiques. Pour
effectuer des transactions sensibles (par exemple, signer un contrat), il est souvent
nécessaire d'effectuer les opérations qui exigent le secret, telle qu'une clé privée.
Malheureusement, un secret ne peut pas être effectivement caché s'il doit être employé
par un agent sur un hôte à distance et l'agent ne peut pas interagir avec l’hôte d'origine.
Les agents mobiles manquent d'une infrastructure omniprésente : les agents
mobiles ont besoin d’une infrastructure qui soutient les tâches de sérialisation,
transfert, et desérialisation de la représentation d'un agent. Cette infrastructure doit
être déployée sur chaque hôte qui peut éventuellement être le destinataire d'un agent.
Ceci est une exigence qui est difficile à satisfaire en particulier parce que les
infrastructures existantes ont été prouvées d’être vulnérables à un certain nombre
d'attaques.
14
Le paradigme de l’agent mobile Chapitre 1
Les agents mobiles ne disposent pas d’un langage/ontologie partagé : les agents
mobiles ont besoin d’interagir avec l'environnement qu’ils visitent afin d'atteindre
leurs buts. Cette interaction exige que le format employé en échange de données et la
signification associée aux données est compris et convenu par l'agent et le partenaire
de l'interaction.
Les agents mobiles sont étrangement similaires à des vers : le mécanisme des
agents mobiles a une certaine ressemblance frappante avec la façon dont les vers
malveillants se propagent à travers les réseaux. Les vers sont difficiles à supprimer.
Une infrastructure d'agents mobiles soutiendrait l'exécution des agents bénins et
malveillants et, en conséquence, elle serait enclinée à être mise à profit pour lancer des
attaques de type ver.
Les agents peuvent coopérer pour résoudre des situations complexes par rapport à
leurs capacités individuelles, en interagissant entre eux afin de communiquer des messages,
des connaissances, des objectifs, des plans, …etc. En ce qui concerne la communication et
l'interaction entre les agents, il est important de discuter les différents aspects de leurs
sémantique, tel que [5]:
Localité. Selon une analyse spatiale, l'interaction entre les agents peut être locale ou
distant. Lorsque l'interaction est locale, les agents se rencontrent à une place commune
et peuvent utiliser tout mécanisme de communication interprocessus connu, par
exemple la mémoire partagée, les fichiers, les variables d'environnement ou de tuyaux
(pipes). Lorsque l'interaction est à distance, les agents communiquent à partir de
différents nœuds par envoi de messages, RPC ou tout autre mécanisme de
communication à distance.
15
Le paradigme de l’agent mobile Chapitre 1
Intermédiation. Enfin, l'interaction entre les agents peut également être directe ou
indirecte. Lorsque l'interaction est directe, les agents invoquent les méthodes des uns
des autres explicitement. Lorsque l'interaction est indirecte, les agents ne
communiquent pas directement; ils utilisent un service intermédiaire, comme Object
Request Brokers (ORB) ou serveurs d'espaces d'information partagés.
1.9. Conclusion
Nous avons présenté dans ce chapitre un tour sur la technologie de l’agent mobile, ses
origines, ses caractéristiques, son architecture, ses avantages et ses inconvénients. Nous avons
vu qu’il existe plusieurs domaines ou l’application des agents mobiles a porté beaucoup
d'intérêts notamment les systèmes distribués. Fournir les mécanismes nécessaires pour la
spécification des systèmes logiciels à base d’agents mobiles doit faciliter leur développement.
Dans les deux chapitres suivants, nous aborderons le langage UML et le langage π-
calcul que nous avons choisi pour la spécification des systèmes logiciels à base d’agents
mobiles.
16
Chapitre 2
UML et le π-calcul
Au sommaire de ce chapitre
2.1 Introduction
2.2 La modélisation avec UML
2.3 La spécification avec le π-calcul
2.4 Conclusion
UML et le π-calcul Chapitre 2
2.1. Introduction
La modélisation et l’analyse des systèmes logiciels à base d’agents mobiles dans les
premières phases de conception permettent d’améliorer largement leur développement, en
détectant les erreurs qui peuvent créer des problèmes graves après.
Dans ce chapitre nous allons aborder le langage UML et le langage π-calcul. Au début,
nous allons présenter le langage UML et les différents mécanismes de base nécessaires pour
faire comprendre la modélisation avec ce langage, comme les diagrammes UML, la méta-
modélisation avec UML et les mécanismes d’extension d’UML. Ensuite, nous allons faire un
tour sur le langage π-calcul commençant par expliquer la mobilité dans ce langage. Après,
nous exposerons sa syntaxe, sa sémantique, ses qualités et ses différentes variantes, ainsi que
d’autres concepts qui nous intéressent pour le reste de la thèse.
1
www.omg.org/
2
http://www-136.ibm.com/developerworks/rational/products/rup
3
http://www.valtech.fr
18
UML et le π-calcul Chapitre 2
19
UML et le π-calcul Chapitre 2
Diagramme de paquetages montre les paquetages et éventuellement les relations entre eux.
Diagramme de cas il est destiné à représenter les besoins des utilisateurs par rapport
d’utilisation (use case) au système.
Diagramme d’activités il donne une version des enchaînements des activités propre à une
Diagrammes comportementaux (dynamiques)
Diagramme état-transition il montre les différents états des objets en réaction aux
événements.
Diagramme de séquence il permet de décrire les scénarios de chaque cas d’utilisation en
mettant l’accent sur la chronologie des opérations en interaction
avec les objets.
Diagramme de graphe dont les nœuds sont des objets et les arcs (numérotés selon
communication
la chronologie) les échanges entre objets.
Diagramme global montre les aspects d'une interaction.
d’interaction
Diagramme de temps est un diagramme d'interaction qui décrit à la fois le
(timing)
comportement de classificateurs individuels et les interactions de
classificateurs, en se concentrant sur les temps d'occurrences des
événements qui provoquent des changements d'état.
TAB. 2.1 - Les différents diagrammes UML.
20
UML et le π-calcul Chapitre 2
La syntaxe abstraite donnée avec un méta-modèle définissant des relations entre les
éléments. Elle est présentée dans un diagramme de classe UML montrant les méta-
classes définissant les constructions et leurs relations.
La syntaxe concrète définissant la notation graphique.
La sémantique : permet d’attribuer une signification aux expressions syntactiques. Elle
utilise le langage naturel et l’OCL.
Stéréotypes. Avec un stéréotype, nous pouvons créer un nouvel élément UML à partir
d'un existant en définissant ses propres propriétés spéciales (fournissant son propre
ensemble de valeurs étiquetées), sémantique (fournissant ses propres contraintes), ou
la notation (fournissant sa propre représentation graphique ou icône). Nous pouvons
21
UML et le π-calcul Chapitre 2
penser à un stéréotype comme un méta-type, parce que chacun crée l'équivalent d'une
nouvelle classe dans le méta-modèle UML.
Valeurs étiquetées. Chaque élément dans UML a son propre ensemble de propriétés;
par exemple, les classes ont des noms, des attributs et des opérations. Avec les
stéréotypes, nous pouvons ajouter de nouveaux éléments à l'UML, et avec une valeur
étiquetée, nous pouvons définir un nouveau type de propriété qui peut être attaché à un
élément. Nous pouvons penser à une valeur étiquetée comme une métadonnée, car sa
valeur s’applique à l'élément lui-même, et non pas ses instances.
Contraintes. Tout dans UML a sa propre sémantique. Avec les contraintes, nous
pouvons ajouter de nouvelles sémantiques à tout élément. Essentiellement, une
contrainte spécifie une condition qui doit être vrai pour une ou plusieurs valeurs d'un
modèle (ou partie). Les contraintes peuvent être décrites par des explications
informelles (comme texte libre) ou par des expressions OCL.
Un ensemble cohérent d'extensions, défini à des fins spécifiques à l'aide de ces
mécanismes d'extensibilité, constitue un profil UML. En outre, il est à noter qu'il est possible
d'étendre le méta-modèle UML en définissant de nouvelles constructions selon la technique
de spécification décrite précédemment.
La spécification d’un système que l'on souhaite développer consiste à lui donner une
description formelle en utilisant les méthodes formelles. Elles sont utilisées dans l'ingénierie
logicielle pour garantir que le produit développé est la solution du problème considéré.
D’abord il faut construire un modèle du problème (la spécification) en utilisant un langage
formel. Ce modèle formel permet par conséquence de faire plusieurs taches : effectuer des
preuves mathématiques pour garantir que ce modèle possède les propriétés voulues
(vérification); valider le modèle à travers des simulations (simulation); développer
rigoureusement le logiciel, ce qui donne la capacité de prouver que l’implémentation est
cohérente par rapport à la spécification (génération de code correct).
Le π-calcul [22][61] est une algèbre de processus conçue pour spécifier les systèmes
concurrents avec communications mobiles. Le π-calcul utilise deux concepts pour modéliser
ces systèmes; un processus (également appelé l’agent) qui est une entité de communication
active dans le système, et un nom qui est quelque chose d'autre, par exemple une liaison de
communication, variable, donnée, …etc. Ce formalisme diffère des autres calculs par
22
UML et le π-calcul Chapitre 2
l’autorisation du passage des canaux entre les processus et par conséquent l’augmentation du
pouvoir d'expression. Il peut être utilisé pour la modélisation, l'analyse et la vérification de
systèmes mobiles. Nous présentons dans les lignes qui suivent ce langage, sa syntaxe abstraite
ainsi que sa sémantique.
Tel que :
0 : est le processus inactif, c’est-à-dire qui ne fait rien; n’effectue aucune action.
π.P : est le préfixe, il a une seule capacité exprimée par π, qu’il doit l’exécuter avant
de se comporter comme P.
4
Robin Milner (1934-2010) est le fondateur du π-calcul, c’est un informaticien britannique majeur gagnant de
prix Turing en 1991. Il est très connu dans le domaine de l’informatique théorique.
23
UML et le π-calcul Chapitre 2
τ.P : est le préfixe silencieux, il représente un agent qui peut évoluer en P sans
interaction visible avec l’environnement.
24
UML et le π-calcul Chapitre 2
P fn(P) bn(P)
0 ø ø
x<y>.Q {x,y} U fn(Q) bn(Q)
x(y).Q {x} U fn(Q)\{y} {y} U bn(Q)
(ν x)Q fn(Q) \ {x} bn(Q) U {x}
Q1 + Q2 fn(Q1) U fn(Q2) bn(Q1) U bn(Q2)
Q1 | Q2 fn(Q1) U fn(Q2) bn(Q1) U bn(Q2)
[x = y]Q {x,y} U fn(Q) bn(Q) \ {x,y}
!Q fn(Q) bn(Q)
A(y1, … , yn) fn(P) {y1, … , yn} bn(A(y1, … , yn))
TAB. 2.2 - Les noms libres et les noms liés d'un processus
La complémentarité : Deux sujets sont dits complémentaires si l’un est le co-nom de l’autre.
Deux processus sont dits complémentaires s’ils sont préfixés par deux sujets
complémentaires.
La substitution : Une substitution dans P noté P{y/x}, est le résultat de substituer y pour tous
les occurrences libres de x dans P, avec un changement de noms liés si nécessaire pour
empêcher y de devenir lié dans P.
Le α-conversion : Deux processus sont α-convertibles, s’ils ne se diffèrent que par le choix
de noms liés.
25
UML et le π-calcul Chapitre 2
Les réductions
Il existe plusieurs règles de réduction. Figure 2.2 montre ces règles. La première règle est
R-INTER, elle montre comment la communication peut se produire entre deux processus
complémentaires. C’est le seul axiome de →, et les autres sont des règles d’inférences. Les
deux règles R-PAR et R-RES illustre comment la réduction peut se produire sous la
composition et la restriction respectivement. La règle R-STRUCT dit que les expressions
structurellement congruentes ont les mêmes réductions.
26
UML et le π-calcul Chapitre 2
Congruence structurelle
La congruence structurelle permet d’identifier les processus qui représentent la même chose à
partir de leurs structures. En effet, deux processus P et Q sont congruents, noté P ≡ Q, si
l’expression de l’un peut se transformer en l’autre par l’utilisation des règles définies au
Figure 2.3.
α α
La relation de transition est désignée par →, P→ Q signifie que P évolue en Q en exécutant
l’action α . Elle est définie par les règles d’inférence de la figure 2.4. Il ne figure pas dans le
tableau, les formes symétriques SUM-R, PAR-R, COMM-R and CLOSE-R des règles SUM-
L, PAR-L, COMM-L et CLOSE-L respectivement, dans lesquels les rôles des éléments
gauches et droits sont inversés.
27
UML et le π-calcul Chapitre 2
28
UML et le π-calcul Chapitre 2
A a
a
d B
Q'' est Q'{x/z}. Le diagramme montre le cas ou x fn(Q), signifie que Q ne possède aucun lien
x avant la transition) et x fn(P′) (signifie que P' n'a pas de lien x après la transition). Mais ces
deux conditions n’affectent pas la transition. C.à.d. même, si x fn(Q) et x fn(P′), on aura le
même résultat. On note aussi que la situation ne diffère pas beaucoup quand le lien y entre P
et Q est privé.
29
UML et le π-calcul Chapitre 2
Q'' et S' sont Q'{x'/x}{x/z} et S{x'/x} respectivement où x' est le nouveau nom. Et bien
évidemment cela évite l’intrusion.
Dans le diagramme, Q" est Q'{x/z}, et il est proche du premier schéma (cf. FIG. 2.6). La
différence est que le processus P' reste partager le lien x avec R, le fait qu’il y a une restriction
au début de communication (ν x). Et lorsque ce lien est exporté vers Q, la portée de la
restriction est étendue; on dit que P (ou l'action de passer le lien) extrude la portée du lien
privé x. Deux remarques sont à soulignées ici:
Restant dans x fn(Q), et on suppose aussi en plus que x fn(P′), signifie que P' ne
possède pas de lien x après la transition et, par conséquence ne peut plus communiquer
via le, selon la sémantique du π-calcul. Ici, c’est un cas particulier de l’extrusion qui
s’appelle la migration de portée de x, signifie que la portée de restriction de x est
migrée de P vers Q.
Si x fn(Q), signifie que Q possède un lien publique x avant la transition, alors, le lien
privé x doit être renommé avant l’interaction afin de préserver sa distinction du lien
public.
Le π-calcul polyadique
Dans le π-calcul monadique (de base), les processus s’échangent des noms uniques. Le π-
calcul polyadique permet aux processus de s’échanger un vecteur de noms. Donc, un
processus émetteur peut avoir cette forme x<y1, …, yn>.P ou tous les yi sont distincts, alors
qu’un processus récepteur serait de la forme x(z1, …, zn).P ; n est un entier naturel positif. Le
π-calcul polyadique peut être codé en π-calcul monadique.
31
UML et le π-calcul Chapitre 2
On peut remarquer la transmission des noms (canaux) comme messages. Une action
positive comme lose(t, s) reçoit des noms, alors qu’une action négative comme switch<t, s>
envoie des noms. Alors, lose(t, s) est une construction de liaison de nom ; elle introduit les
noms liés t et s.
Le contrôleur Control, en disant à Trans de perdre le véhicule, délivre une nouvelle
paire de canaux pour transmettre au véhicule afin de remplacer sa paire de canaux ancienne. Il
délivre également la même paire à l'autre transmetteur (Idle), qui peut alors interagir avec le
véhicule. Dans notre formulation simple, Control délivre toujours un des deux paires des
canaux possibles:
32
UML et le π-calcul Chapitre 2
def
Control1 lose1<talk2, switch2>.gain2<talk2, switch2> Control2
def
Control2 lose2<talk1, switch1>.gain1<talk1, switch1> Control1
Enfin, le véhicule Car peut soit parler ou, si demandé, commuter à une nouvelle paire
de canaux.
def
Car(talk, switch) talk.Car(talk, switch) + switch(t, s).Car(t, s)
L'ensemble du système est assemblé dans un processus formé par une composition
restreinte de quatre processus :
def
System1 new talk1, switch1, gain1, lose1, talk2, switch2, gain2, lose2
(Car(talk1, switch1) | Trans1 | Idtrans2 | Control1)
Le système System1 évolue au système System2 et vice versa (en appliquant les règles
de réaction).
*
System1 System2
Tel que:
def
System2 new talk1, switch1, gain1, lose1, talk2, switch2, gain2, lose2
(Car(talk2, switch2) | Trans2 | Idtrans1 | Control2)
2.4. Conclusion
Dans ce chapitre, nous avons évoqué la modélisation avec le langage UML qui est un
standard très répondu pour le développement des systèmes orienté objet. Nous avons introduit
le langage et exposé ses différents diagrammes, il ne prenait pas en charge les systèmes
mobiles, mais nous avons vu les différent mécanismes fournis par le langage lui-même pour
faire l’étendre afin de l’adapter aux différents types d’applications.
Nous avons aussi présenté le π-calcul, une façon de décrire et d’analyser les systèmes
constitués de processus qui interagissent les uns avec les autres, et dont la configuration se
change d’une manière continue. Nous avons présenté la syntaxe et la sémantique de ce
formalisme, en plus nous avons illustré comment la portée et la mobilité sont des notions
33
UML et le π-calcul Chapitre 2
34
Chapitre 3
Au sommaire de ce chapitre
3.1 Introduction
3.2 Travaux connexes
3.3 La classification des approches de modélisation
des systèmes logiciels à base d'agents mobiles
3.4 Le framework de comparaison
3.5 Conclusion
Etude comparative des approches existantes Chapitre 3
3.1. Introduction
Seuls quelques travaux sont disponible dans la littérature qui examine les techniques et
outils pour la modélisation de systèmes logiciels basés agent mobile. Notre travail est
similaire à certains travaux, comme celui de [1] qui fournit un aperçu des méthodologies
orientées-agent existantes, il discute quelles approches ont été suivies pour assister dans toutes
les phases du cycle de vie d'une application à base d'agents, il est à noter que les chercheurs
ont travaillé sur l'extension des méthodologies déjà existantes pour inclure les aspects
appropriés des agents, ces extensions ont été réalisées principalement dans deux domaines: les
méthodologies orientée objet (OO) et les méthodologies ingénierie des connaissances (KE).
Melomey et al. [3] présente dans leur travail une évaluation des approches et des
méthodologies déjà proposées pour développer le paradigme des agents mobiles. En fait, ils
ont proposé un certain nombre de concepts nécessaires pour modéliser la mobilité afin de
surmonter les limitations des approches proposées en termes de modélisation de la mobilité de
l'agent, cependant les auteurs se mélangent entre les langages et les méthodologies de
modélisation. Belloni et Marcos [5] ont examiné plusieurs extensions UML de modélisation
des agents mobiles dans un objectif de définir une unique extension qui rassemble et intègre
36
Etude comparative des approches existantes Chapitre 3
les caractéristiques des autres. Hachicha et al. [42] ont évoqué plusieurs approches de
modélisation des applications à base d’agent mobile en utilisant UML. Cervenka &
Trencansky [48] ont fourni un aperçu sur les techniques de modélisation orientée agent,
cependant ils ont concentré sur les systèmes multi-agents. Melomey et al. [49] ont fourni une
étude comparative de quelques approches de modélisation des systèmes à base d’agents.
Bauer & Muller [50] ont fait un tour sur des approches et des méthodologies existantes pour
les applications à base d’agents, cependant la modélisation des agents mobiles n’était pas
l'intérêt central de ce travail.
D'autres approches peuvent être citées, mais il est intéressant de noter un problème
dans ces contributions, c’est le mélange de concept de langages de modélisation et de
méthodologies. Ainsi, dans notre étude, nous avons mis l'accent sur les langages de
modélisation parce que nous croyons qu'ils représentent la clé du succès d’un paradigme,
puisque les agents mobiles sont introduits dans différents domaines, et les méthodes ne
peuvent pas être générales, mais plutôt adaptées à des situations spécifiques. Donc, examiner
les méthodologies est au-delà de la portée de cette étude. En outre, on ne considère que les
applications à base d’agents mobiles avec emplacements statiques (mobile Computation). Les
applications avec des emplacements dynamiques (mobile Computing) sont au-delà de la
portée de notre travail.
37
Etude comparative des approches existantes Chapitre 3
des applications a base d'agents mobiles. Ces mécanismes comprennent, par exemple:
l'authentification des agents et des plateformes d’agents mobiles, l'autorisation et le contrôle
d'accès aux ressources. Cependant, il n’est vraiment pas clair comment on peut définir des
idées standards pour la modélisation de la sécurité, parce que les agents mobiles sont
appliquées dans de nombreux domaines qui ont des contextes entièrement différents (chaque
domaine a ses propres particularités).
Dans les systèmes orientés objet, UML [57] a joué un rôle essentiel et décisif dans le
succès de cette technologie. En fait, en l'utilisant, vous pouvez modéliser toutes les parties de
développement d'une application orientée objet, de son étude de faisabilité jusqu'à son
déploiement. Les chercheurs ont suivi les méthodes appropriées du paradigme antécédent
pour la modélisation des agents mobiles afin de définir et de développer un langage de
modélisation qui a la capacité de jouer, dans le paradigme des agents mobiles, le même rôle
que UML a déjà joué dans le paradigme orienté objet.
Le cycle de vie de développement de systèmes logiciels à base d'agents mobiles est en
général composé de trois phases; la phase d'analyse, la phase de conception, et la phase
d’implémentation. En fait, dans ces systèmes, la dernière phase a récemment été enrichi d'une
manière satisfaisante par un grand nombre de différentes plates-formes qui soutiennent et
mettent en œuvre le paradigme des agents mobiles. En revanche, les approches proposées
pour l'analyse et la conception de systèmes logiciels à base d'agents mobiles ne sont pas très
répandues, ont une portée limitée et sont incomplètes en elles-mêmes. Figure 3.1 illustre le
l’état actuel du cycle de vie de développement de systèmes logiciels à base d'agents mobiles.
En cours de développement …
Server 3
Analyse Implémentation
Conception
Aglets, Ajanta,
Limité
AML, AUML, M-UML, Grasshopper,
MA-UML, MAM-UML… Voyager, JADE
Enrichi
…
FIG. 3.1 - Cycle de vie de développement des systèmes logiciels à base d'agents mobiles
Dans cette section, plusieurs approches de modélisation ont été examinées et quelques
autres sont seulement citées. Le but est de couvrir plusieurs points de vue sur les façons de
38
Etude comparative des approches existantes Chapitre 3
traiter ces systèmes. Ainsi, nous avons classé les propositions existantes de modélisation des
systèmes logiciels à base d'agents mobiles en trois grandes catégories (voir figure 3.2) :
Les approches basées sur UML: ces approches ont abordé le problème de
modélisation des applications à base d'agents mobiles en utilisant UML [57]; le
langage standard du paradigme orienté objet.
Les approches formelles: ces approches utilisent les méthodes formelles pour la
modélisation des applications à base d'agents mobiles.
Les approches hybrides: ces approches résultent d'une intégration hybride des
caractéristiques des deux catégories précédentes en plus d'autres approches inspirées
de divers paradigmes.
Hybrid
UML based Formal
approaches
approaches approaches
39
Etude comparative des approches existantes Chapitre 3
déploiement et d'activité ont été étendus par la suite [16] [40] afin de supporter la
modélisation de la mobilité de l'agent. Les nouvelles annotations introduites par
l'extension diagramme de déploiement AUML facilitent la modélisation de migration
de l'agent entre différents nœuds et les localités concernées par le mouvement. En
outre, la question du moment de mouvement peut être exprimée par le diagramme
d'activité AUML, c.-à-d. quand un agent mobile doit migrer. Multiples concepts et
notations ont été développés dans ce langage [51], mais les caractéristiques
essentielles des applications à base d'agents mobiles ne sont pas prises en compte. La
mobilité par exemple est décrite statiquement, en plus la sécurité est entièrement
omise.
AML (Agent Modeling Language): Cervenka et al. [14] [48] introduisent AML; une
extension de UML qui incorpore différents concepts et caractéristiques des systèmes
multi-agents. AML est actuellement considéré comme le langage de modélisation
orientée agent le plus complet. Il couvre la modélisation de la structure statique,
dynamique et le comportement des entités dans un système multi-agents. AML tente
également de fournir un support de modélisation a la mobilité, en reconnaissant et en
identifiant les propriétés de l'environnement de l'agent, l’hôte, et le comportement
(migration et clone). Le langage ne considère la mobilité que dans le niveau
d’implémentation lorsque le système multi-agent est déployé. Cela le rend inapproprié
pour la modélisation des applications réelles d'agents mobiles.
MAM-UML (Mobile-Agent Modeling with UML): Belloni et Marcos [5] [39]
proposent MAM-UML pour essayer de définir une extension UML unique qui
rassemble et intègre les caractéristiques d'une grande partie d’approches basées sur
l’extension d’UML. Les auteurs ont défini un ensemble de vues : organisationnelle,
cycle de vie, interaction et une vue de mobilité, matérialisées par un profil UML
appelé MAM-UML. Ce profil décrit en détail plusieurs caractéristiques intéressantes
d'une application basée agents mobiles, tels que l'itinéraire d'un agent mobile, les
différents types de mouvement et le plan des tâches.
M-UML (Mobile UML): Saleh et El-Morr [15] proposent une extension complète du
standard UML 1.4 appelée (M-UML), où tous les diagrammes ont été étendus pour
s’occuper de la modélisation des systèmes logiciels à base d'agents mobiles. Tout au
long d’un exemple illustratif, les auteurs présentent et décrivent les extensions
effectuées dans chacun des diagrammes UML, pour modéliser les aspects de la
mobilité. Les auteurs omettent les mécanismes de sécurité et leur modélisation. Les
40
Etude comparative des approches existantes Chapitre 3
41
Etude comparative des approches existantes Chapitre 3
conséquences comme la sécurité) n’est pas décrit assez pour fournir des approches basées
UML, efficaces et robustes pour modéliser les applications à base d'agents mobiles comme
dans le cas des applications orientée objet avec UML.
1
http://www.arch-ware.org/
42
Etude comparative des approches existantes Chapitre 3
agents mobiles, les propriétés des agents sont exprimées de façon dynamique en fonction de
l'évolution de leurs localités. Cardelli et Gordon [34] ont proposé le « Mobile Ambients » qui
est un calcul pour décrire le mouvement des processus ainsi que les appareils. D'autres
approches formelles pour capturer la mobilité sont développées dans [35] et [36].
Dans le contexte des réseaux de Petri, plusieurs propositions ont été également
développées. En fait, elles bénéficient de ce formalisme qui est un modèle formel mature en
termes de représentation graphique, description mathématique, et outils. Xu et Deng [25] ont
tenté de modéliser les agents mobiles en utilisant les réseaux de Pétri de haut niveau. Xu et al.
[26] propose dans leur travail une approche pour la modélisation formelle de la mobilité
logique de l'agent en utilisant les réseaux prédicat/transition (PrT), ils représentent un système
d'agents mobiles comme un ensemble d'espaces d'agents, et les agents peuvent migrer d'un
espace à un autre. Xu et Schatz [27] ont essayé de concevoir les agents mobiles en utilisant les
réseaux de Petri haut niveau G-net.
43
Etude comparative des approches existantes Chapitre 3
développé une transformation automatique entre les diagrammes de classes mobiles et les
ontologies OWL afin de permettre un raisonnement automatique.
Ils existent d'autres approches, qui proposent d'utiliser les motifs de conception pour
développer les systèmes logiciels basés agents mobiles comme dans [33], [44] et [45]. De
nombreux motifs de conception ont été identifiés dans la littérature pour les agents mobiles
tels que des motifs d’agent et des motifs d'interaction. Certains d'entre eux sont décrits en
utilisant UML tandis que d'autres ne sont pas.
44
Etude comparative des approches existantes Chapitre 3
Mobilité; ceci est le critère le plus important qui doit être décrit en détail par un
langage de modélisation. Il est soutenu par les mécanismes de migration, invocation et
de clonage à distance et il est lié aux concepts de l'itinéraire, et l'emplacement.
Interaction; ce critère illustre les mécanismes d'interaction adoptés en communication,
par exemple communication synchrone ou asynchrone.
La sécurité; ce critère a un impact majeur sur la fiabilité du logiciel. Le langage de
modélisation doit permettre de décrire les mécanismes de sécurité adoptés, à savoir
comment protéger les entités de l'application de l'utilisation malveillante.
Autres critères générales sont inspirés des aperçus d'évaluation des langages de
modélisation en particulier à partir de [38].
Outils; un bon langage de modélisation doit être soutenu par un outil CASE pour
faciliter son automatisation et son utilisation.
Fondement théorique; un langage de modélisation qui a une base théorique solide est
considéré comme un langage puissant.
Simplicité et clarté; déterminent l'acceptabilité du langage par l'utilisateur.
Processus (méthodologie); un processus qui accompagne un langage de modélisation
devra améliorer largement la tache de développement.
Symbole Déscription
Inconnu; pas assez d'informations pour
déterminer
Vraisemblablement pas pris en charge
Certainement pas pris en charge
Partiellement Pris en charge
Pris en charge
TAB. 3.1 - Légende de comparaison
45
Etude comparative des approches existantes Chapitre 3
Structure interne
Cycle de vie
Caractéristiques de base
Besoins d'exécution
Environnement
d’exécution
Mobilité
Interaction
Sécurité
Autres caractéristiques
Fondement théorique
Simplicité et clarté
Processus
(méthodologie)
Outils
TAB. 3.2 - Comparaison entre les différentes extensions UML pour la mobilité.
46
Etude comparative des approches existantes Chapitre 3
Diagram” pour décrire la structure interne des agents mobiles. AUML et AML
soutiennent la structure interne pour seulement les agents stationnaires tandis que
MAM-UML ne la supporte pas du tout.
Le cycle de vie des agents mobiles est pris en charge dans MAM-UML, MA-UML, et
M-UML. En fait, MAM-UML propose une vue complète “Life-cycle View” pour
spécifier le cycle de vie de l'agent mobile. La vue est décrite par l'utilisation de
diagrammes d'Interaction, d’Etat/Transition et d’Activité. MA-UML et M-UML
étendent les diagrammes d’Etat/Transition avec de nouveaux stéréotypes et des
valeurs étiquetées pour décrire tous les états atteints par l'agent mobile pendant sa
durée de vie. La fonctionnalité est omise dans AUML et AML.
Le critère de besoins d’exécution est entièrement pris en charge par MAM-UML et
partiellement soutenu par MA-UML. En fait, MAM-UML fournit une vue complète
“Organizational View” pour décrire les besoins d'exécution des agents mobiles à
l'aide de diagramme de Classes et d’Objets. MA-UML prend en compte cette
caractéristique dans son diagramme “Mobile Agent Diagram". La fonctionnalité est
omise dans les langages AUML, AML et M-UML.
L’environnement d’exécution des agents mobiles est supporté par AUML en utilisant
un diagramme étendu du diagramme de Déploiement. M-UML supporte également
cette caractéristique en utilisant des versions étendues des diagrammes de Composants
et de Déploiement. MA-UML fournit un diagramme complet “Environment diagram”
afin de concevoir l'environnement d'exécution, cependant, il ne représente que la
structure statique de l’application et il n'existe aucune mention sur le déploiement
d'agents. MAM-UML propose dans sa vue “ Mobility View ” d’utiliser les
diagrammes de Déploiement et de Composant pour concevoir l'environnement
d'exécution. L'environnement d'exécution est vraisemblablement non supporté par
AML.
La mobilité des agents a été abordée dans tous les langages proposés ci-dessous avec
des degrés de profondeur différents. En fait, deux extensions de diagrammes
d’Activité et de Déploiement ont été définies par AUML afin de permettre la
modélisation de la mobilité des agents. MAM-UML fournit une vue complète
“Mobility View” pour supporter entièrement la fonctionnalité de mobilité. M-UML
fournit un support complet de la mobilité; il définit plusieurs notations pour modéliser
tous les aspects de la mobilité en différents vues. MA-UML fournit trois diagrammes
pour modéliser la mobilité; le “Itinerary diagram” pour décrire les tâches de l’agent et
47
Etude comparative des approches existantes Chapitre 3
les places où il s’exécute, le “Navigation Diagram” qui est une utilisation variante du
diagramme d'Etat/Transition pour décrire la planification de voyage de l'agent mobile,
et le “lifecycle diagram” qui est utilisé pour spécifier les différents états de l'agent
mobile dans différentes places. AML supporte partiellement la fonctionnalité de
mobilité. En effet, c’est dans la phase de déploiement où AML propose des notations
et des éléments afin de prendre en compte la mobilité, mais cela ne suffit pas, car il n'y
a pas de détails sur la modélisation de cette fonctionnalité importante.
la fonctionnalité d'interaction pour les agents mobiles est supportée dans MAM-UML,
M-UML et MA-UML. MAM-UML fournit une vue complète “Interaction View”
pour modéliser cette caractéristique; la vue contient des collaborations et des
diagrammes d'interaction. M-UML fournit deux extensions de diagrammes de
Séquence et de Collaboration pour modéliser les interactions mobiles. MA-UML
fournit un diagramme complet “Mobile Agent Sequence Diagram” pour modéliser les
interactions entre les différents agents mobiles. AUML et AML ne supportent pas les
interactions mobiles, mais soutiennent les autres types d’interactions entre les agents.
La sécurité est partiellement supportée par MA-UML en ajoutant certaines propriétés
(authentification, autorisation d'utilisateur, droits d'accès, et clés d'authentification)
dans son diagramme “Mobile Agent Diagram”, afin de spécifier cette fonctionnalité.
Les autres approches ne la soutiennent pas du tout.
En ce qui concerne les critères généraux qui caractérisent un bon langage, il y a
beaucoup de tentatives pour développer des fondements théoriques surtout pour
AUML et M-UML. Cela est dû à l'importance accordée à établir la vérification et de
raisonnement sur les modèles de ces langages.
Les différents langages sont simples à utiliser, sauf pour MAM-UML que nous
n’avons pas pu déterminer sa clarté en raison de l'absence de leur expérimentation.
Aucun langage d’entre eux n’est associé à un processus.
AUML, AML et MA-UML sont supportés par des outils CASE qui facilitent le
développement de leurs diagrammes. M-UML est vraisemblablement non supporté
(même s’il y a des tentatives sur leur diagramme d'Etat/Transition), tandis que MAM-
UML est sans aucun outil CASE.
48
Etude comparative des approches existantes Chapitre 3
3.5. Conclusion
Dans ce chapitre, nous avons présenté un cadre comparatif pour les approches de
modélisation de systèmes logiciels à base d'agents mobiles qui permet d’améliorer la
compréhension des travaux antérieurs sur ce sujet. D’abord, nous avons présenté et identifié
les défis et les lacunes qui doivent être surmontés pour modéliser les applications basés agents
mobiles. Après, nous avons proposé de classer les approches dans trois grandes catégories
selon certains facteurs: les approches basées sur UML, les approches formelles et les
approches hybrides. On peut dire que la combinaison des approches visuelles, dites informels
(qui attirent l’attention de l'ingénieur), et les approches formelles (qui sont analysables)
représente un axe prometteur dans l’avenir proche.
49
Etude comparative des approches existantes Chapitre 3
50
Etude comparative des approches existantes Chapitre 3
idéale, mais il est délibérément conçu d’être suffisant pour y servir de base viable pour des
futures améliorations et extensions.
51
Chapitre 4
Approche proposée
Au sommaire de ce chapitre
4.1 Introduction
4.2 Les diagrammes états-transitions mobiles
4.3 L'approche proposée
4.4 Travaux connexes
4.5 Discussion et leçons apprises
4.6 Conclusion
Approche proposée Chapitre 4
4.1. Introduction
Nous avons conclu l’évaluation dans le chapitre précédent par l’affirmation que la
solution, pour obtenir une approche puissante, est de développer une approche semi-formelle /
formelle qui devra permettre la modélisation et la vérification de tels systèmes.
Ainsi, nous introduisons dans ce chapitre les MSDs (Mobile statechart diagrams) qui
sont des extensions des diagrammes d’états-transitions M-UML. Ensuite, une approche
intégrée diagrammes MSDs / expressions π-calcul sera développée pour la modélisation et la
vérification des systèmes logiciels à base d'agents mobiles par la transformation des premiers
vers les derniers. La spécification π-calcul générée sera considérée comme une sémantique
formelle, qui sera utilisée par la suite pour l'analyse, telles que la détection précoce des erreurs
(deadlocks, livelocks, etc ...), vérifier si certaines propriétés sont satisfaites, et (ou) vérifier
l'équivalence entre les différents diagrammes, en utilisant des outils d'analyse π-calcul.
Une place est un nœud logique sur lequel les agents d'une application peuvent être
exécutés (un ou plusieurs états), elle est désignée implécitement. Le pseudo-état initial
représente le point de début d'exécution de l'agent. A un moment donné, l'agent peut se
trouver dans un état distinct sur une place particulière. Un état normal représente un état de
l'agent dans sa place de base. Un état mobile est représenté avec une boîte (M); c’est un état
accessible par l'agent hors de sa place de base. Une transition est une liaison unidirectionnelle
qui parte d'un état (l'état source) vers un autre état (l'état cible), elle peut porter une étiquette
selon la syntaxe Evènement [Condition] / Action, qui signifie si un événement produit, une
action sera exécutée si la condition est évaluée à vraie. Une transition est simple si les deux
états à ses deux extrémités sont situés dans la même place. Une transition mobile est
représenté avec une boîte (M); c’est une transition entre deux états accessibles par l'agent et
situés dans deux places différents; elle a plusieurs formes comme illustré dans (cf. TAB. 4.1).
53
Approche proposée Chapitre 4
L’état actuel atteint par un agent, soit à sa place de base ou à l'extérieur est représenté par une
boîte pointillée (M). Une transition à distance porte une boîte (R); elle se produit si un agent
mobile atteint un état tout en interagissant avec un autre agent à distance. Une transition avec
un stéréotype << agentreturn >> représente le retour de l'agent mobile à sa place d’origine en
atteignant un état sur elle. Si l'agent termine son exécution, il atteindra le pseudo-état final.
Les MSDs proposés étendent les diagrammes d’états-transitions M-UML [15] par:
─ La notion de place est implécitement introduite; elle est représentée par une valeur
étiquetée « place » dans la classe état.
─ Ajout des pseudo-états initiaux et finaux.
─ Ajout d'état composite non-concurrent normal, état composite non-concurrente mobile,
pseudo-état fork, pseudo-état join, état composite concurrent normal, état composite
concurrent mobile, les actions entry et exit d'un état.
─ Nous avons proposé également une extension à la sémantique M-UML pour faire
communiquer les diagrammes d'états-transitions mobiles, cela inclut la communication
unicast asynchrone locale, la communication multicast asynchrone locale, la communication
diffusion asynchrone locale, la communication unicast synchrone locale, la communication
multicast synchrone locale, la communication diffusion synchrone locale, la communication
réponse synchrone locale, la communication unicast asynchrone à distance, la communication
multicast asynchrone à distance, la communication diffusion asynchrone à distance, la
communication unicast synchrone à distance, la communication multicast synchrone à
distance, la communication synchrone diffusion à distance, la communication réponse
synchrone à distance.
54
Approche proposée Chapitre 4
Pseudo-States
States Placesp M M
M
S2 S2
G1 G2 Gn G1 G2 Gn
G1 G2 Gn G1 G2 Gn
H1 H1 Hn H1 H1 Hn
M M
M M
M M M M
M
Transitions
M M M
<<agentreturn>> R
Event [Condition] / Send {Ag 1, ..., Agn}.Action Event [Condition] / RSend {Ag 1, ..., Agn}.Action
Asynchronous multicast Asynchronous remote multicast
Event [Condition] / Call {Ag 1, ..., Agn}.Action Event [Condition] / RCall {Ag1, ..., Agn}.Action
Synchronous multicast Synchronous remote multicast
55
Approche proposée Chapitre 4
Le comportement d'un système logiciel basé agents mobiles MASS est donné dans
notre approche par le comportement d'un réseau de k agents A1 ... Ak qui communiquent entre
eux. Ces derniers sont spécifiés par une collection de diagrammes d'états-transitions mobiles
MSD1, MSD2, ..., MSDK, un pour chaque agent.
Dans la section suivante, inspirée de [67], [68] et [69], nous définissons une syntaxe
abstraite textuelle au système logiciel basé agents mobiles, qui est composé de plusieurs
diagrammes d'états-transitions mobiles. Cette syntaxe est considérée comme une définition
formelle qui nous permet par la suite de définir formellement la translation vers le π-calcul.
56
Approche proposée Chapitre 4
Ψ : MSDs PE
Le but de la fonction est de donner la sémantique au MSDs en utilisant π-calcul, c.à.d.
pour chaque diagramme d'états-transitions mobile MSD MSDs, Ψ (MSD) PE.
57
Approche proposée Chapitre 4
δP : S P
La fonction est l’inverse de la fonction δS, Elle localise pour chaque état sa place
d'exécution tel que:
s S, ! p P, telque δP (s) = p
Ou
p P, | δP-1({p}) | 1
Ce qui signifie que chaque place possède au moins un état.
[s]Q = {x S | (s , x) Q}
Ainsi, l'ensemble quotient (l’ensemble des classes d'équivalence) constitue une
partition de l'ensemble des états S où chaque partie regroupe les états qui se trouvent sur la
même place. Il est donné par:
S/Q = {[s]Q | s S}
Cet ensemble quotient S/Q est correspondant à l'ensemble des places P du diagramme
d'états-transitions mobile :
S/Q P
Le comportement d'un système logiciel à base d'agents mobiles est donné par un
ensemble de diagrammes d'états-transitions mobiles communicants MSD1... MSDk. L'idée de
base dans notre formalisation est de donner à cet ensemble un système π-calcul
58
Approche proposée Chapitre 4
A1
MSD1
evext1 A1PL0
A2
A1RPL0
A1S1
a1
m1
MASS
p1 p2
P2 MSD2
P1
FIG. 4.1 – Un aperçu du système à un moment donné; une vue de processus π-calcul
59
Approche proposée Chapitre 4
Un état pseudo-initial est relié à son état successeur par une transition d'achèvement
qui peut contenir des conditions et des actions explicites. Le processus I1(start) attend de
recevoir un événement (un signal) de démarrage d'exécution modélisé comme une action
d'entrée “start” avant de se comporter comme le processus correspondant au premier état S1.
S'il y a des conditions et des actions, ils seront traités comme dans les règles des états.
Un pseudo-état final est connecté à son état précédent par une transition d'achèvement
qui peut contenir des conditions et des actions explicites. Lorsque le processus F1(end) est
créé (c.-à-d. le processus correspondant à l'état prédécesseur se comporte comme ce
processus), il fait immédiatement une action de sortie “end” pour indiquer que l'exécution est
terminé. Un pseudo-état final n'a pas de successeur, il se comporte comme lui-même.
4.3.2.2. Places
─ Règle 3: (place)
Soit P1 P, ΨPI(P1) = P1k(l1,..., ln, p1,..., pn, ....). Selon la situation actuelle de la place
(nombre k d'agents sur elle), son comportement est donné par les processus interconnectés
P1k(l1,..., ln, p1,..., pn, ....) comme suit:
60
Approche proposée Chapitre 4
def
P10(l1,..., ln, p1,..., pn) p1(z1, m1).P11(l1,..., ln, p1,..., pn, z1, m1)
def
P11(l1,..., ln, p1,..., pn, z1, m1) z1. P11(l1,..., ln, p1,..., pn, z1, m1) +
p1(z2, m2). P12(l1,..., ln, p1,..., pn, z1, m1, z2, m2) +
n
m1(y).( [y = li] pi <z1, m1>.P10(l1,..., ln, p1,..., pn) )
i2
def
P1k(l1,..., ln, p1,..., pn, z1, m1,… , zk, mk)
k
i 1
zi.P1k(l1,..., ln, p1,..., pn, z1, m1,… , zk, mk) +
p1(zk+1, m k+1).P1k+1(l1,..., ln, p1,..., pn, z1, m1,… , zk, mk, zk+1, mk+1) +
k
( mj(y).( [y = li] pi<zj, mj>.P1k-1(l1,..., ln,p1,..., pn, z1, m1,… , zj-1, mj-1, zj+1, mj+1,…,zk-1,
j 1 i j
mk-1) ))
Le comportement d'une place P1 est représenté par plusieurs processus interconnectés,
selon les agents existants sur la place. La première situation est que la place a zéro agent
s’exécute sur elle (c.-à-d. elle n’a qu’attendre de recevoir un agent par une migration); elle est
représentée par le processus P10(l1,..., ln, p1,..., pn). Ce dernier attend de recevoir un canal de
communication privé “a1” et un canal de migration local “m1” (qui sont appartenus à un
processus agent) via son port par l'action d'entrée “p1(z1, m1)”, puis il se comporte comme un
autre processus P11(l1,..., ln, p1,..., pn, z1, m1). Ce dernier représente la deuxième situation, c.-
à-d. quand un agent est sur la place. Dans ce cas, le processus place peut communiquer de
manière récursive avec le processus état (de l'agent) par l'action de sortie “z1”, attend de
recevoir une autre migration vers elle par l'action d'entrée “p1(z2, m2)” et se comporte comme
un nouveau processus P12(l1,..., ln, p1,..., pn, z1, m1, z2, m2) représentant la situation suivante,
ou attend la réception d'une demande de migration de son agent actuel. Le dernier est
représenté par une entrée sur le canal de migration “m1(y)”, P11 cherche alors la place voulue
(de l'agent) en utilisant la construction de correspondance “[y = li]”, puis il utilise le port
adéquat pour envoyer au processus place correspondant le canal de communication privé et le
canal de migration local en utilisant l'action de sortie “pi <z1, m1>”, il se comporte alors
comme P10(l1,..., ln, p1,..., pn), le processus représentant la situation précédente. La situation
quand k agents sont sur la place est représentée par le processus P1k(l1,..., ln, p1,..., pn, z1,
m1,… , zk, mk), il est une généralisation de ce que nous avons déjà expliqué.
61
Approche proposée Chapitre 4
Le mécanisme d'extrusion de la portée est utilisé ici pour passer le canal “z1” privé et
le canal “m1” de migration local d'un processus place à un autre processus place. Ces canaux
ne sont plus liés au processus place actuel (c.-à-d. ils seront libres), ils seront liés au processus
place cible lors de leur réception. Une communication est ensuite se produit entre le nouveau
processus place et le nouveau processus état en utilisant ces ports. Cette reconfiguration du
système est déclenchée par le fait que l'agent se déplace d'une place à une autre.
Nous codons les états comme des définitions de processus, et un processus évoluera à
un autre à chaque fois l'agent atteint un nouvel état dans le diagramme.
─ Règle 5: (Etat)
Soit P1 P, S1 NS, δP(S1) = P1, et ΨPI(S1) = S1(a1). Nous modélisons la sémantique d'un
état simple d'un diagramme d'états-transitions mobile par le comportement du processus
S1(a1) comme suit:
def
S1(a1) a1.S1(a1)
62
Approche proposée Chapitre 4
Si S1 = RS, qui signifie que l’agent est dans l’état S1, alors le processus état
correspondant est celui qui va être présent dans la composition du processus agent (on
commence l’exécution à partir de ce processus qui va évoluer vers les autres).
4.3.2.4. Transition
La transformation des transitions est liée à leurs états d'origine. En fait, une transition
est modélisée par un changement de comportement dans le processus état source qui évolue
vers le processus état cible à la suite d'une interprétation de l'étiquette de transition selon la
syntaxe décrit dans le tableau 4.1.
Soit P1, P2 P, S1 S, S2 MS, T1 T, δP(S1) = P1, δP(S2) = P2, δSrc(T1) = S1, δTrg(T1)
= S2, δK(T1) = MT, δE(T1) = ε, δC(T1) = ε, δA(T1) = ε, et ΨPI(S1) = S1(a1, m1, t1,..., tn). Nous
modélisons la sémantique d'une transition mobile d'un état S1 à un autre état S2 dans le
comportement du processus paramétré S1(a1, m1, t1,..., tn) comme suit:
def
S1(a1, m1, l1,..., ln) a1.S1(a1, m1, l1,..., ln) +
τ.m1<l2>.S2(a1, m1, t1,..., tn)
Le processus état est en contact avec le processus place comme dans les règles
précédentes. Quand il y a une migration à partir d'un état S1 sur une place P1 à un autre état
63
Approche proposée Chapitre 4
S2 sur une autre place P2, le processus état S1 demande la migration en envoyant le canal qui
représente la nouvelle place prévu (ici c’est l2) via le canal de migration en utilisant l’action
de sortie “m1<l2>”, puis il évolue vers un autre processus S2 correspondant au nouvel état. Le
processus place en question reçoit la demande et fait le reste (voir Règle 3).
Tous les types de transitions mobiles seront modélisés dans notre proposition de la
même manière, parce que nous sommes préoccupés ici par le fait que l'agent s’exécutera dans
une autre place différente de sa place actuelle.
64
Approche proposée Chapitre 4
Cette règle est similaire au (Règle 6), mais ici un déclencheur d'événement est
considéré. En fait, le processus état S1 attend de recevoir un événement en utilisant l'action
d'entrée “evint1(z)”, puis il procède à le comparer avec l'événement attendu “e1” en utilisant
une construction de correspondance “[z = e1]”. S'il existe une correspondance, le processus S1
envoie le canal “rtc1” au processus pool local (Règle 11) indiquant l'étape run-to-completion
et évolue après au processus qui modélise le prochain état S2. Sinon, s'il n'y a pas de
65
Approche proposée Chapitre 4
correspondance, c.a.d. “[z = ei]”, cela signifie que l'événement n’est pas un déclencheur pour
la transition; dans ce cas le processus envoie aussi le canal “rtc1” pour consommer
l'événement et se continue comme lui-même.
Le pool local de l'agent peut soit recevoir des événements d'agents externes ou
envoyer des événements à son agent correspondant. Dans le premier cas, le processus pool
local PLn reçoit un événement “xi” sur son canal publique extérieur par l'action d'entrée
“evext1(xi)”, puis il évolue à un autre processus PLn+1 qui représente la nouvelle situation
(c.a.d mettre l'événement dans le pool). Dans le second cas, il envoie un événement au
processus état sur son canal local par l'action de sortie “evint1<x1>”, et il attend de recevoir le
run-to-completion “rtc1” de cet événement envoyé (voir Règle 10). Lorsque ce canal est reçu,
le processus pool local se comporte comme PLn-1, le processus qui correspond au pool dans sa
dernière situation (c.à.d. supprimer l'événement du pool). PL0 est le processus correspondant
au pool quand il est vide, c.à.d. sans événements, et par conséquent il n'y a pas de dispatching;
seulement attente d'événements.
Le pool à distance de l'agent peut soit recevoir des événements des agents distants ou
transférer des événements reçus au pool local. Dans le premier cas, le processus pool RPLn
reçoit un événement “xi” sur son canal public à distance par l'action d'entrée “remote1(x1)”,
puis il évolue vers un autre processus RPLn+1 qui représente la nouvelle situation (c.à.d. mettre
66
Approche proposée Chapitre 4
l'événement dans le pool à distance). Dans le second cas, il transfère un événement au pool
local en utilisant l'action de sortie “evext1<x1>”, puis il se comporte comme RPLn-1, le
processus qui correspond au pool à distance dans sa dernière situation (supprimer un
événement du pool à distance). RPL0 est le processus correspondant au pool à distance quand
il est vide, c.à.d. sans événements à distance, et par conséquent il n'y a pas de transfère;
seulement attente d'événements distants.
Une condition de garde est une expression logique qui doit être vraie pour effectuer la
transition. Son évaluation est déterminée en fonction de multiples facteurs (parfois l'agent en
tant que tel, tantôt en communication avec d'autres entités, ...). Ceci est lié à la condition elle-
même et pour cette raison nous adoptons un processus CE de qui est une abstraction de ces
facteurs. La communication entre le processus état et le processus CE détermine si la
condition est vérifiée.
En ce qui concerne les conditions de garde attendues d'un diagramme d'états-
transitions mobile, soit T1, T2, ..., Tn T, δC(T1) = C1, δC(T2) = C2, ..., δE(Tn) = Cn, ΨN(C1)
= c1, ΨN(C2) = c2, …, ΨN(Cn) = cn. Toutes les conditions attendues sont représentées par une
série ordonnée de canaux c (c.à.d. c1, c2 ,...., cn ).
Une condition est représentée par un canal “c1”, qui est utilisé pour évaluer la
condition du garde. En fait, après une action interne “τ”, le processus état crée un nouvel
canal “ν g” et utilise l'action de sortie “c1<g>” et l'action d'entrée “g(y)” pour récupérer
l'évaluation actuelle de la condition en communiquant avec le processus d'évaluation de
conditions (voir Règle 15). La construction de correspondance “[y=true]” indique que la
condition est vérifiée, et par conséquent il y a un passage à l'état S2. La construction de
correspondance “[y=false]” indique que la condition n’est pas vérifiée, c.à.d. la transition ne
peut pas être effectuée et le processus continue comme lui-même.
67
Approche proposée Chapitre 4
def
CE(true,false, c ) ci(g).(g<true> + g<false>).CE(true,false, c )
i 1
Le processus reçoit une demande pour l'évaluation d'une condition par l'action d'entrée
“ci(g)”. Il utilise ensuite le canal “g” reçu pour renvoyer la valeur booléenne en émettant le
canal “true” ou “false” selon l'évaluation. Le choix parallèle utilisé dans le processus de
conditions garantira que toutes les évaluations des conditions sont effectuées en parallèle, et
celui qui est invoqué sera exécuté.
Le choix entre la garde vrai ou faux est non déterministe et les deux alternatives sont
possibles.
─ L'action d'envoi “Send” pour la communication asynchrone entre les diagrammes d'états
transitions mobiles.
─ L'action d'appel “Call” et l'action de réponse “Reply” pour la communication synchrone
entre diagrammes d'états-transitions mobiles.
En outre, nous avons proposé les mécanismes suivants pour les communications à
distance:
68
Approche proposée Chapitre 4
En ce qui concerne les actions attendues dans un diagramme d'états transitions mobile
soit T1, T2, ..., Tn T, δA(T1) = A1, δA(T2) = A2, ..., δA(Tn) = An, ΨN(A1) = act1, ΨN(A2) =
act2, …, ΨN(An) = actn. Toutes les actions prévues sont représentés par une série ordonnée de
canaux act (c.à.d. act1, act2 ,...., actn).
─ Règle 16: (transition avec action)
Soit P1 P, S1, S2 S, T1 T, δP(S1) = P1, δP(S2) = P1, δSrc(T1) = S1, δTrg(T1) = S2, δK(T1)
= NT, δE(T1) = ε, δC(T1) = ε, δA(T1) = A1, done1 est un canal utilisé pour recevoir la
notification sur l’exécution de l'action avec succès. ΨN(A1) = act1, and ΨS(S1) = S1(a1, act ).
Nous modélisons la sémantique d'un état avec une transition qui a une action par le
comportement du processus S1(a1, act ) comme suit:
def
S1(a1, act ) a1.S1(a1, act ) + τ.(ν done1)(AHact1 | done1.S2(a1, act ))
Traiter une action dans une transition simple ou mobile est représenté par le
comportement du sous-processus AHact1. Après une action interne “τ”, le processus S1 se
comporte comme deux processus parallèles. D'une part, comme le processus AHact1 qui
représente l'exécution de l'action; son comportement sera détaillé ci-après. De l’autre part,
comme un processus qui attend de recevoir le canal “done1” (ce qui signifie que l'action est
exécutée avec succès), il va ensuite immédiatement évoluer au processus S2 qui correspond à
l'état suivant sur le diagramme.
En ce qui concerne les transitions à distance, la même transformation est adoptée, la
différence est dans le comportement du processus AHact1, où une communication à distance
est effectuée (c.à.d. l'agent actuel interagit à distance avec d'autres agents pour atteindre un
état).
Quand une communication asynchrone est nécessaire, l'une des trois patterns devrait
être suivie : unicast, multicast, ou diffusion.
Dans un unicast (point à point), le processus AHact1(evextk, act1, done1) envoie l'action
au processus pool du diagramme concerné par l'action de sortie “evextk<act1>”, il informe
alors le processus parent S1(a1, act ) que la tâche est faite avec succès par l'action de sortie
“done1” et il mort après.
70
Approche proposée Chapitre 4
que la diffusion est terminée, il informe alors le processus parent S1(a1, act ) que la tâche est
faite avec succès par l'action de sortie “done1”, et il mort après.
i 1
evexti<act1>.replyact1.done11.0 | done11.... done11.done1.0
n
71
Approche proposée Chapitre 4
i 1
remotei<act1>. done11.0 | done11.... done11.done1.0
n
done11.... done11.done1.0
m
i 1
remotei<act1>.rreplyact1.done11.0 | done11.... done11.done1.0
m
72
Approche proposée Chapitre 4
différence réside dans le ciblage du pool à distance du diagramme concerné (pas les pools
locaux) par l'action de sortie “remotek<act1>” qui permet d’envoyer l'action “act1”.
Après la réception d'un événement (voir Règle 11) et l'évaluation de la condition (voir
Règle 14), l'action est exécutée par le processus manipulateur d'action (voir Règle 16) et par
conséquent il y a un changement au processus état S2 si la condition est vérifiée. Dans le cas
contraire, la transition ne peut être prise, l'action ne sera pas exécutée et le processus se
poursuit comme lui-même.
73
Approche proposée Chapitre 4
74
Approche proposée Chapitre 4
Les transitions pourraient avoir des événements, des conditions et/ou des actions, et
leur traitement sera comme illustré dans les sections précédentes. Par exemple, pour S2, nous
pouvons mettre le traitement des événements après avoir reçu le canal “finish”, cela signifie
que, après l’achèvement de l'exécution des sous-états, le processus d'état S2 prend le contrôle
et il sera dans la situation d'attente d'un événement pour passer à S3.
Lorsqu’on affronte un état composé concurrent (un fork implicit), le processus état S1
se comporte comme trois processus parallèles partageant un canal local “join”. Le premier est
75
Approche proposée Chapitre 4
correspondant à l'état composé S2, les autres Gi et Hi correspondent respectivement aux sous-
états directs actifs des deux régions orthogonales de l'état composé concurent. Ces deux
derniers processus vont évoluer comme illustré dans les sections précédentes, seulement en
arrivant à leur dernier état le comportement se change. Ainsi, les processus G n et Hn envoient
le canal “join” pour indiquer que l'exécution est terminée (un join implicite). Le processus S2,
lors de la réception de ces deux canaux, évoluera à S3; le processus correspondant à l'état
suivant.
Maintenant, nous avons tous les ingrédients nécessaires pour construire notre système
π-calcul correspondant au diagramme MSD1. Donc, nous devons nous rassembler en tant
qu’un processus l'ensemble du système formé par une composition restreinte de plusieurs
processus interactifs qui évoluent dynamiquement par le passage de messages entre eux.
En ce qui concerne la configuration des places, le processus Pc(l 1,..., ln, a1, m1) est
composé d'un processus actif (comme on le voit à la règle 3), c.-à-d. P11(p1, ... pn,a1, m1) , qui
correspond à la place de base de l'agent (la place sur lequel existe le premier état du
diagramme). Les autres sont passives à savoir Pi 0(p1, ... pn).
La restriction (ν a1, m1) permet d'établir des canaux privés de communication entre le
processus A1(a1, m1, evext1, ..., evextn, remote1, ..., remoten) et Pc(l1,..., ln, a1, m1).
76
Approche proposée Chapitre 4
evextn, remote1, ..., remoten). Le comportement de MASSname(evext1, ..., evextn, remote1, ...,
remoten) est donné par:
def
MASSname (evext1, ..., evextn, remote1, ..., remoten)
k
(ν ak, mk) (
i 1
Ai(ai, mi, evext1, ..., evextn,remote1, ...,remoten) | Pc(l1,..., ln, a1, m1, .... ak, mk))
Le système est représenté par la composition des processus correspondant aux places
et agents. Ils sont regroupés par places et la restriction (ν a k, mk) rend ces canaux privés entre
chaque processus place et ses processus agents.
77
Approche proposée Chapitre 4
En ce qui concerne toutes les études antérieures, nous remarquons les préoccupations
suivantes:
Bien qu'il existe déjà une sémantique formelle pour les diagrammes d'état-transitions
M-UML dans [81], le domaine sémantique cible choisie est très limitée en sémantique
et en outils. En effet, les réseaux imbriqués ne sont pas supportés par des outils
d'analyse.
Le travail présenté dans [79] a été fait sans tenir compte de la mobilité, en plus de la
stratégie fictive adoptée dans la formalisation qui considère souvent qu'il existe des
processus fictifs (non identifiés) qui accomplissent certaines tâches derrière la porte.
Par l'examen de cette approche, nous détectons rapidement qu'il est impossible
d'analyser et de vérifier une spécification π-calcul générée par cette formalisation en
utilisant des outils typiques (par exemple le MWB). Voilà ce qui nous a découragé
d’étendre cette formalisation aux diagrammes d’états-transitions mobiles.
La définition informelle de la transformation sémantique dans plusieurs travaux
antérieurs (en particulier dans [79], [81]), ce qui les rend insuffisants pour définir la
transformation d’une manière complet.
Les auteurs en [31] proposent une spécification de machines d'états UML mobiles au
moyen de MTLA, qui est une extension de la logique temporelle de TLA (Temporal
Logic of Actions) avec des modalités spatiales. L'approche peut être classée parmi
ceux qui utilisent les diagrammes d'états-transitions pour le raffinement, en plus de la
pauvreté du modèle cible (le formalisme MTLA) en outils.
Contrairement à tous ces travaux, notre contribution offre de nombreux avantages par
rapport à eux:
Nous avons proposé les MSDs qui sont une extension très complète pour la
modélisation du comportement des systèmes logiciels à base d’agents mobiles. Nous
avons aussi donné une sémantique formelle pour ces diagrammes en utilisant le π-
calcul comme domaine sémantique cible; cela facilitera la description de ces
diagrammes et la capture de la mobilité. En outre, le π-calcul fournit une théorie riche
et plusieurs outils pour la spécification et l’analyse des systèmes concurrents avec
communications mobiles. Cela le rend plus approprié, comme formalisme cible pour
les diagrammes d'états-transitions mobiles, que d'autres formalismes y compris les
réseaux imbriqués (en [81]).
78
Approche proposée Chapitre 4
Notre approche est consacrée directement à la mobilité modélisée dans une extension
UML à des fins de vérification.
Nous avons essayé dans cette approche de fournir une formalisation compréhensible et
lisible en reliant immédiatement les éléments de diagrammes d'états-transition mobiles à leurs
expressions π-calcul correspondants.
Nous avons focalisé ici sur les éléments essentiels des diagrammes d'états-transitions
mobiles pour concentrer sur la mobilité (et la concurrence) qui est notre principale
préoccupation, et pour des fins de simplification. Nous n’avons pas donc considéré d’autres
éléments que nous avons jugé qu’ils n’affectent pas le comportement mobile de ces
diagrammes comme par exemple les pseudo-états historique et historique profond, les
jonctions et les décisions, mais notre formalisation peut être étendue à tous les éléments de
diagrammes d'états-transitions mobiles par un paradigme induction/récursion structurel grâce
à la définition formelle de la transformation.
La mobilité fournit par le π-calcul permet la modélisation triviale des mouvements de
l'agent. Dans notre approche, le mécanisme d’extrusion de portée dans le π-calcul est utilisé
pour modéliser la mobilité décrit dans les diagrammes.
Il n’est pas utile de discuter comment prouver est ce que la sémantique est préservée
après la transformation des diagrammes d'états-transitions mobiles en π-calcul, puisque le
premier est une notation et le dernier est un langage formel. Mathématiquement parlant, il n'y
a aucun moyen de prouver l’exactitude (correctness) de notre sémantique. Cependant, nous
pouvons vérifier la solidité (soundness) et l'exhaustivité (completeness) de la transformation
par vérification de modèle (model checking) en utilisant un outil de vérification (par exemple
MWB). On peut montrer que la conversion est saine (sound), c.-à-d. si l’outil de vérification
79
Approche proposée Chapitre 4
de modèle MWB dit qu'une erreur (le deadlocks par exemple) existe dans l'entrée, alors il
devrait être le cas que l'erreur (l’inter-blocage par exemple) existe dans la spécification
MSDs. Nous pouvons également montrer que la translation est complète, c.-à-d. si la
spécification a une erreur (l’inter-blocage par exemple), alors l’outil de vérification de modèle
sera sûr de la trouver. En fait, nous avons expérimenté notre transformation avec plusieurs
exemples du monde réel dans les deux directions (solidité et exhaustivité) et nous avons
obtenu de bons résultats.
4.6. Conclusion
Dans ce chapitre, nous avons proposé une approche intégrée semi-formelle / formelle
pour spécifier et vérifier les systèmes logiciels à base d'agents mobiles en utilisant les MSDs
et le π-calcul. L'approche consiste à définir un ensemble de règles formelles qui définissent la
sémantique formelle du comportement des éléments des diagrammes d'états-transition
mobiles (MSDs) en utilisant le π-calcul. Nous avons concentré sur les principaux éléments qui
modélisent le comportement mobile des agents dans ces diagrammes.
Comme extension de l’approche, nous prévoyons de l'étendre pour prendre en compte
tous les éléments des diagrammes d'états-transition mobiles, et par conséquent plus de
systèmes complexes seront couverts par l'approche. Nous prévoyons également de formaliser
d’autres diagrammes tels que les diagrammes de séquence mobiles et d’activité mobiles car ils
représentent différents aspects d'un système, et pour fournir une modélisation multi-vues.
Dans le chapitre suivant, nous allons illustrer et tester l’approche par une étude de cas
complet.
80
Chapitre 5
Au sommaire de ce chapitre
5.1 Introduction
5.2 Etude de cas
5.3 Analyse et vérification
5.4 Conclusion
Etude de cas : modélisation et vérification Chapitre 5
5.1. Introduction
Dans ce chapitre, nous allons monter l‟utilité de notre approche proposée dans le
chapitre précédent. Nous allons commencer par donner une étude de cas complète modélisée
par trois MSDs. Ensuite, on va montrer comment générer le code π-calcul étape par étape.
Nous allons procéder par la suite à l‟analyse et la vérification de la spécification π-calcul
générée en utilisant l‟outil MWB (Mobility Workbench).
82
Etude de cas : modélisation et vérification Chapitre 5
quand il reçoit l'événement GetVotersList, il exécute une action qui consiste à envoyer un
signal VotersList au VC par une communication asynchrone; il fait alors une transition vers
l'état WaitforVoteCollectors (WVC). En WVC, quand il reçoit un événement Votes, il
exécute une action qui consiste à envoyer un signal VotingResults au VA par une
communication asynchrone à distance. Il fait alors une transition vers son premier état VMI.
La figure 5.3 illustre le comportement de l'agent mobile VC. Tout d'abord, le VC est
dans l'état ReadyToMove (RTM) à sa place de base (P1) quand il reçoit l'événement
StartVotingProcess, il se déplace alors par une transition mobile à l'état
VotingManagerReached (VMR) dans une autre place (P2). À VMR, l'agent mobile VC passe
par une transition normale à l'état WaitForList (WFL). La transition a une action qui consiste
à envoyer un signal GetVotersList au VM par une communication asynchrone pour obtenir la
liste des électeurs. A WFL, lorsque l'agent mobile reçoit un événement VotersList, le VC
interagit à distance avec VA en exécutant l'action à distance LogList qui consiste en un appel
synchrone pour obtenir le log de la liste, il se déplace ensuite vers l'état ReadyToCollectVotes
(RCV). Dans RCV, l'agent mobile VC se déplace par une transition mobile à l'état
WaitingForVote (WFV) à la place de la première station de vote (P3). La transition a une
action GetVote pour obtenir les votes. Enfin, l'agent mobile VC effectue une transition <<
agentreturn >> pour revenir à sa place de base (P1). La transition a une action qui consiste à
envoyer un message Votes à VM par une communication asynchrone pour lui donner les
résultats du vote de la station.
VotingResults /AnnounceVotingResults
StartVotingProcess /
M
Vote Manager Ready for Voting Wait for Vote
Idle (VMI) Manaer (RVM) Collectors (WVC)
83
Etude de cas : modélisation et vérification Chapitre 5
/ Send VM.GetVotersList
/ RSend VM.Votes
M
<<agentreturn>>
WaitingForList
(WFL)
VotersList/RCall
R VA.LogList
M / GetVote M
WaitingForVote ReadyToCollect
(WFV) Votes (RCV)
M
L’agent mobile VC
─ Selon les règles 5, 7, 11 et 19, le comportement de l'agent mobile dans l‟état RTM est
donné par le processus:
84
Etude de cas : modélisation et vérification Chapitre 5
def
RTM(a 2, m2, l , evext , remote , evint2,rtc2, e2 ) a2.RTM(a2, m2, l , evext , remote , evint2,rtc2, e2 ) + evint2(z).([z=startvotingprcess]
rtc2.m2<l2>.VMR(a2, m2, l , evext , remote , evint2,rtc2, e2 ) +
[z = voterslist] rtc2.RTM(a 2, m2, l , evext , remote , evint2,rtc2, e2 ) +
[z = vote] rtc2.RTM(a2, m2, l , evext , remote , evint2,rtc2, e2 ))
Le processus RTM interagit avec le processus place en utilisant le canal “a1”, et dans le même
temps il attend de recevoir une action d'entrée “evint2(z)” sur son canal interne du processus
pool. Si le canal reçu est “startvotingprcess”, le processus RTM envoie le canal “rtc2” au
processus pool pour consommer l'événement, puis il demande la migration vers la place P2 en
utilisant l'action de sortie “m2< l2>” et évolue au processus VMR. Sinon, le processus RTM
envoie le canal “rtc2” pour consommer l'événement, et se continue comme lui-même.
─ Les règles 6 et 16 décrivent le comportement de l'agent mobile dans l'état VMR à la place
P2 par les expressions π-calcul suivantes:
def
VMR(a2, m2, l , evext , remote ,evint2,rtc2, e2 ) a2.VMR(a2, m2, l , evext , remote , evint2,rtc2, e2 ) +
(ν done1) (AHgetvoterslist(evext3, getvoterslist, done1) | done1.WFL(a 2, m2, l , evext , remote ,evint2,rtc2, e2 ))
def
AHgetvoterslist(evext 3, getvoterslist, done1) evext3<getvoterslist>.done1.0
Le processus VMR interagit avec le processus place P2 en utilisant le canal “a 2”, ou exécute
une action modélisée par un processus AHgetvoterslist avant de se comporter comme un
processus WFL. Le processus AHgetvoterslist permet un envoie asynchrone local à l'agent
VM par l'action de sortie evext3<getvoterslist> pour demander la liste des électeurs.
─ Les règles 9, 11, 16, et 21 spécifient le comportement de l'agent mobile dans l'état WFL à la
place P2 par les expressions π-calcul suivantes:
def
WFL(a 2, m2, l , evext , remote ,evint2,rtc2, e2 ) a2.WFL(a 2, m2, l , evext , remote ,evint2,rtc2, e2 ) +
evint2(z).([z=voterslist] rtc2.( ν done2)(AHloglist(evext1, loglist, rreplyloglist, done2) |done2.RCV(a2, m2, l , evext , remote ,evint2,rtc2, e2 )) +
[z = startvotingprcess] rtc2.WFL(a 2, m2, l , evext , remote ,evint2,rtc2, e2 ) + [z = vote] rtc2.WFL(a2, m2, l , evext , remote ,evint2,rtc2, e2 ))
def
AHloglist(remote1, loglist, rreplyloglist, done2) remote1<loglist>.rreplyloglist.done2.0
Le processus WFL interagit avec le processus place P2 en utilisant le canal “a2” et dans le
même temps attend de recevoir une action d'entrée “evint2(z)” du processus pool. Si le canal
reçu est “voterslist”, le processus WFL envoie le canal “rtc2” au processus pool pour
consommer l'événement, puis il exécute une action modélisée comme un processus AHloglist
avant de se comporter comme un processus RCV. Le processus AHloglist fait un appel
synchrone à distance à l'agent VA par l'action de sortie “remote1<loglist>” pour obtenir le log
85
Etude de cas : modélisation et vérification Chapitre 5
─ (Règles 7, 16 et 19) spécifient le comportement de l'agent mobile dans l‟état RCV à la place
P2 par l'expression π-calcul suivante:
def
RCV(a2, m2, l , evext , remote ,evint2,rtc2, e2 ) a2.RCV(a2, m2, l , evext , remote ,evint2,rtc2, e2 ) +
m2<l3>.(ν done3)(AHgetvote(evext4, getvote, done3) | done3.WFV(a2,m2, l , evext , remote ,evint2,rtc2, e2 ))
def
AHgetvote(evext 4, getvote, done3) getvote.done3.0
Le processus RCV interagit avec le processus place P2 en utilisant le canal “a2”, ou demande
la migration vers la place P3 en utilisant l'action de sortie “m2< l3>”. Dans le dernier cas, le
processus RCV exécute une action modélisée par un processus AHgetvote avant de se
comporter comme un processus WFV. Le processus AHgetvote fait une action de sortie
"getvote" pour exécuter l'action.
─ (Règles 8, 16 et 20) spécifient le comportement de l'agent mobile dans l'état WFV à la place
P3 par les expressions π-calcul suivantes :
def
WFV(a2, m2, l , evext , remote ,evint2,rtc2, e2 ) a2.WFV(a2, m2, l , evext , remote ,evint2,rtc2, e2 ) +
m2<l1>.(ν done1) (AHvotes(remote3, votes, done1) | done1.RTM(a2, m2, l , evext , remote ,evint2,rtc2, e2 ))
def
AHvotes(remote3, votes, done1) remote3<votes>.done1.0
Le processus WFV interagit avec le processus place P3 en utilisant le canal “a2”, ou demande
le retour à la place P1 en utilisant l'action de sortie “m2<l1>”. Dans le dernier cas, le processus
WFV exécute une action modélisée par un processus AHvotes avant de se comporter comme
un processus RTM. Le processus AHvotes fait un envoie asynchrone à distance à l'agent VM
par l'action de sortie “remote3<votes>” pour envoyer les votes de la station.
─ (Règle 12) spécifie le comportement du pool de l'agent mobile VC par les expressions π-
calcul suivantes (supposant que son taille est de deux évènements maximum, idem pour les
autres pools):
def
A2PL0(evint2, evext2, rtc2) evext2(x1).A2PL1(evint2, evext2, rtc2, x1)
def
A2PL1(evint2, evext2, rtc2, x1) evext2(x2).A2PL2(evint2, evext2, rtc2, x1, x2) + evint2<x1>.rtc2.A2PL0(evint2, evext2, rtc2)
def
A2PL2(evint2, evext2, rtc2, x1, x2) evint2<x2>.rtc2.A2PL1(evint2, evext2, rtc2, x1)
86
Etude de cas : modélisation et vérification Chapitre 5
Le processus A2PL0 représente le pool quand il est vide, donc il attend de recevoir un
événement “x1” sur son canal externe de communication en utilisant l'action d'entrée
“evext2(x1)” avant d'évoluer au processus A2PL1. Le processus A2PL1 représente le pool
quand il contient un événement, Alors soit il reçoit un autre événement à l'aide de “evext2(x2)”
et évolue à A2PL2, ou il envoie un événement au processus état sur son canal interne par
l'action de sortie “evint2<x1>” et se comporte comme A2PL0. Le processus A2PL2 représente
le pool quand il contient deux événements (c.à.d. complet), il a seulement la possibilité
d‟envoyer un événement au processus état et se comporte ensuite comme A2PL1.
def
OE(a1, evext , remote ,evint1,rtc1, e1 ) a1.OE(a1, evext , remote ,evint1,rtc1, e1 ) + evint1(z).([z=loglist] rtc1.(ν done1)(AHreplyloglist
(replyloglist, done1) | done1.OE(a1, evext , remote ,evint1,rtc1, e1 )) + [z = votingresults] rtc1.(ν done2)(AHannouncevotingresults
(announcevotingresults, done2) | done2.IE(a1, evext , remote ,evint1,rtc1, e1 )))
def
AHreplyloglist (replyloglist, done1) replyloglist.done1.0
def
AHannouncevotingresults (announcevotingresults, done2) announcevotingresults.done2.0
def
A1PL0(evint1, evext1, rtc1) evext1(x1).A1PL1(evint1, evext1, rtc1, x1)
def
A1PL1(evint1, evext1, rtc1, x1) evext1(x2).A1PL2(evint1, evext1, rtc1, x1, x2) + evint1<x1>.rtc1.A1PL0(evint1, evext1, rtc1)
def
A1PL2(evint1, evext1, rtc1, x1, x2) evint1<x2>.rtc1. A1PL1(evint1, evext1, rtc1, x1)
def
A1(a1, m1, evext , remote ) (ν evint1,rtc1)((ν e1 )(IE(a1, evext , remote , evint1, rtc1, e1 )) | A1PL0(evint1, evext1, rtc1))
87
Etude de cas : modélisation et vérification Chapitre 5
def
RVM(a3, evext , remote ,evint3, rtc3, e3 ) a3.RVM(a3, evext , remote ,evint3, rtc3, e3 ) + evint3(z).
([z=getvoterslist] rtc3.(ν done1) (AHvoterslist(evext 2, voterslist, done1) | done1.WVC(a3, evext , remote ,evint3, rtc3, e3 )) + [z =
startvotingprcess] rtc3.RVM(a3, evext , remote ,evint3, rtc3, e3 ) + [z = votes] rtc3.RVM(a3, evext , remote ,evint3, rtc3, e3 ) )
def
AHvoterslist(evext 2, voterslist, done1) evext2<voterslist>.done1.0
def
WVC(a3, evext , remote ,evint3, rtc3, e3 ) a3.WVC(a3, evext , remote ,evint3, rtc3, e3 ) + evint3(z).([z=votes] rtc3.(ν done1)
(AHvotingresults(evext2, votingresults, done1) | done1.VMI(a3, evext , remote ,evint3, rtc3, e3 )) + [z = startvotingprcess] rtc3.WVC(a3,
evext , remote ,evint3, rtc3, e3 ) + [z = getvoterslist] rtc3.WVC(a3, evext , remote ,evint3, rtc3, e3 ) )
def
AHvotingresults(evext 1, votingresults, done1) evext1<votingresults>.done1.0
def
A3PL0(evint3, evext3, rtc3) evext3(x1).A3PL1(evint3, evext3, rtc3, x1)
def
A3PL1(evint3, evext3, rtc3, x1) evext3(x2).A3PL2(evint3, evext3, rtc3, x1, x2) + evint3<x1>.rtc3.A3PL0(evint3, evext3, rtc3)
def
A3PL2(evint3, evext3, rtc3, x1, x2) evint3<x2>.rtc3.A3PL1(evint3, evext3, rtc3, x1)
def
A3(a3, m3, evext , remote ) (ν evint3, rtc3)((ν e3 )(VMI(a3, evext , remote ,evint3, rtc3, e3 )) | A3PL0(evint3, evext3, rtc3))
─ En Utilisant la règle 3, le comportement des places est spécifié par les expressions π-calcul
suivantes:
def
P10( l , p ) p1(z1, m1).P11( l , p ,z1,m1)
def
P11( l , p ,z1,m1) z1.P11( l , p ,z1,m1) + p1(z2, m2).P12( l , p ,z1,m1,z2,m2) +
m1(d).([d=l2] p2<z1,m1>.P10( l , p ) + [d=l3] p3<z1,m1>.P10( l , p ))
def
P12( l , p ,z1,m1,z2,m2) z1.P12( l , p ,z1,m1,z2,m2) + z2.P12( l , p ,z1,m1,z2,m2) +
p1(z3, m3).P13( l , p ,z1,m1,z2,m2,z3, m3) +
m1(d).([d=l2] p2<z1,m1>.P11( l , p ,z2,m2) + [d=l3] p3<z1,m1>.P11( l , p ,z2,m2)) +
m2(d).([d=l2] p2<z2,m2>.P11( l , p ,z1,m1) + [d=l3] p3<z2,m2>.P11( l , p ,z1,m1))
def
P13( l , p ,z1,m1,z2,m2,z3,m3) z1.P13( l , p ,z1,m1,z2,m2,z3,m3) + z2.P13( l , p ,z1,m1,z2,m2,z3,m3) + z3.P13( l , p ,z1,m1,z2,m2,z3,m3) +
m1(d).([d=l2] p2<z1,m1>.P12( l , p ,z2,m2,z3,m3) + [d=l3] p3<z1,m1>.P12( l , p ,z2,m2,z3,m3)) +
88
Etude de cas : modélisation et vérification Chapitre 5
m2(d).([d=l2] p2<z2,m2>.P12( l , p ,z1,m1,z3,m3) + [d=l3] p3<z2,m2>.P12( l , p ,z1,m1,z3,m3)) +
m3(d).([d=l2] p2<z3,m3>.P12( l , p ,z1,m1,z2,m2) + [d=l3] p3<z3,m3>.P12( l , p ,z1,m1,z2,m2))
def
P20( l , p ) p2(z1, m1).P21( l , p ,z1,m1)
def
P21( l , p ,z1,m1) z1.P21( l , p ,z1,m1) + p2(z2, m2).P22( l , p ,z1,m1,z2,m2) +
m1(d).([d=l1] p1<z1,m1>.P20( l , p ) + [d=l3] p3<z1,m1>.P20( l , p ))
def
P22( l , p ,z1,m1,z2,m2) z1.P22( l , p ,z1,m1,z2,m2) + z2.P22( l , p ,z1,m1,z2,m2) + p2(z3, m3).P23( l , p ,z1,m1,z2,m2,z3, m3) +
m1(d).([d=l1] p1<z1,m1>.P21( l , p ,z2,m2) + [d=l3] p3<z1,m1>.P21( l , p ,z2,m2)) +
m2(d).([d=l1] p1<z2,m2>.P21( l , p ,z1,m1) + [d=l3] p3<z2,m2>.P21( l , p ,z1,m1))
def
P23( l , p ,z1,m1,z2,m2,z3,m3) z1.P23( l , p ,z1,m1,z2,m2,z3,m3) + z2.P23( l , p ,z1,m1,z2,m2,z3,m3) + z3.P23( l , p ,z1,m1,z2,m2,z3,m3) + \
m1(d).([d=l1] p1<z1,m1>.P22( l , p ,z2,m2,z3,m3) + [d=l3] p3<z1,m1>.P22( l , p ,z2,m2,z3,m3)) +
m2(d).([d=l1] p1<z2,m2>.P22( l , p ,z1,m1,z3,m3) + [d=l3] p3<z2,m2>.P22( l , p ,z1,m1,z3,m3)) +
m3(d).([d=l1] p1<z3,m3>.P22( l , p ,z1,m1,z2,m2) + [d=l3] p3<z3,m3>.P22( l , p ,z1,m1,z2,m2))
def
P30( l , p ) p3(z1, m1).P31( l , p ,z1,m1)
def
P31( l , p ,z1,m1) z1.P31( l , p ,z1,m1) + p3(z2, m2).P32( l , p ,z1,m1,z2,m2) +
m1(d).([d=l1] p1<z1,m1>.P30( l , p ) + [d=l2] p3<z1,m1>.P30( l , p ))
def
P32( l , p ,z1,m1,z2,m2) z1.P22( l , p ,z1,m1,z2,m2) + z2.P22( l , p ,z1,m1,z2,m2) + p3(z3, m3).P33( l , p ,z1,m1,z2,m2,z3, m3) +
m1(d).([d=l1] p1<z1,m1>.P31( l , p ,z2,m2) + [d=l2] p2<z1,m1>.P31( l , p ,z2,m2)) +
m2(d).([d=l1] p1<z2,m2>.P31( l , p ,z1,m1) + [d=l2] p2<z2,m2>.P31( l , p ,z1,m1))
def
P33( l , p ,z1,m1,z2,m2,z3,m3) z1.P33( l , p ,z1,m1,z2,m2,z3,m3) + z2.P33( l , p ,z1,m1,z2,m2,z3,m3) + z3.P33( l , p ,z1,m1,z2,m2,z3,m3) +
m1(d).([d=l1] p1<z1,m1>.P32( l , p ,z2,m2,z3,m3) + [d=l2] p2<z1,m1>.P32( l , p ,z2,m2,z3,m3)) +
m2(d).([d=l1] p1<z2,m2>.P32( l , p ,z1,m1,z3,m3) + [d=l2] p2<z2,m2>.P32( l , p ,z1,m1,z3,m3)) +
m3(d).([d=l1] p1<z3,m3>.P32( l , p ,z1,m1,z2,m2) + [d=l2] p2<z3,m3>.P32( l , p ,z1,m1,z2,m2))
Dans notre exemple, il y a trois places différentes P1, P2, P3 et nous avons trois agents A1,
A2, A3. Ainsi, chaque processus place peut communiquer avec trois agents au maximum.
Chaque processus place a donc l'une des quatre situations; aucune communication avec tout
processus agent (Pi0), en communication avec un processus agent (Pi1), en communication
avec deux processus agent (Pi2), et en communication avec trois processus agent (Pi 3). Le
processus place passe d'une situation à l'autre, soit en recevant les canaux de communication
d'un agent par l'action d'entrée “pi(zj, mj)” (un agent migre vers la place) ou en perdant les
canaux de communication d'un agent par l'action de sortie “p i<zj,mj>” (un agent sort de la
place).
89
Etude de cas : modélisation et vérification Chapitre 5
Le processus configuration des places est composé de différents processus place dans leur
situation actuelle (c.à.d. le nombre d'agents sur chaque place). P12 signifie que le processus
place (correspondant à la place P1) est dans la troisième situation, c.à.d. il communique avec
deux processus agent. P21 signifie que le processus place (correspondant à la place P2) est
dans la seconde situation, c.à.d. il communique avec un processus agent. P30 signifie que le
processus place (correspondant à la place P3) est dans la première situation, c.à.d. aucune
communication avec tout processus agent. La restriction (^p1, p2, p3) rend ces canaux locaux
aux différents processus places.
def
VS( evext , remote ) (ν a1, m1,a2, m2,a3,m3, l )(A1(a1, m1, evext , remote ) | A2(a2, m2, l , evext , remote ) | A3(a3,m3, evext , remote )
| Pc ( l ,a1, m1,a2, m2,a3, m3))
Le comportement du système est donné par la composition des comportements des différents
processus agents et du processus configuration des places.
90
Etude de cas : modélisation et vérification Chapitre 5
Dans notre approche, nous avons adopté l‟outil MWB (Mobility Workbench) pour
faire l‟analyse et la vérification des spécifications π-calcul générées. MWB implémente
plusieurs algorithmes qui fournissent différents types d‟analyses.
1
Les deux opérateurs modaux sont reliés par la relation □ ◊
91
Etude de cas : modélisation et vérification Chapitre 5
Ces derniers opérateurs modaux présentés permettent la démonstration des propriétés finies
sur des processus (en utilisant des chaines finies d‟opérateurs), alors que la plupart des
processus qui nous intéressent et en travaille ont un comportement infini (leurs définitions
sont récursives). La solution est d‟utiliser une formule récursive. Un processus qui vérifie X =
<a> X peut faire l‟action a puis entrer dans un état qui vérifie X. La logique adopte ainsi la
notion du point fixe d‟une formule récursive en utilisant les opérateurs min (plus petit point
fixe) et max (plus grand point fixe).
La logique modale a l‟intérêt de pouvoir vérifier les propriétés de vivacité sur un modèle.
Ainsi, elle permet l‟analyse des processus ayant un comportement infini, pour lesquels une
vérification exhaustive de l‟espace d‟états est impossible. En résumé, son utilisation permet
de montrer des caractéristiques très fines sur un modèle π-calcul.
92
Etude de cas : modélisation et vérification Chapitre 5
vérificateur de modèle (model checker), mais si la propriété n‟est pas satisfaite, l'outil ne
génère pas une trace montrant un cas où elle n'a pas été vérifiée. Ceci peut être corrigé à l'aide
d'une représentation graphique de l'évolution dynamique d'un modèle sous la forme d'un arbre
de différentes exécutions possibles, telles que dans [70].
Certaines représentations textuelles du π-calcul sont remplacés en MWB comme suit:
la restriction ν comme ^, l'action de sortie x comme ’x, l‟action interne τ par t et chaque
expression d'identificateur de processus dans le MWB va commencer avec le mot clé agent.
Nous pouvons importer la spécification π-calcul générée par le biais de la commande input
“file.pi”, ou saisir manuellement les déclarations des processus. La commande env est utilisée
pour imprimer toutes les déclarations des processus d'une spécification importée.
Pour effectuer la vérification dans les lignes qui suivent, nous considérons le système
VS de l‟exemple précédent. En plus, on prend un autre système VS_ qui est le même que VS
sauf que les agents sont distribués d‟une manière différente. En fait, les agents VA_ et VC_
sont sur la place P2_, alors que l‟agent VM_ est sur la place P1_. La génération du code π-
calcul pour VS_ sera de la même manière que la dérivation effectuée dans la section 5.2.2.
Simulation
La commande MWB step exécute de façon interactive un processus étape par étape. A chaque
étape (état) de la simulation, MWB nous montre les différentes actions possibles du processus
en cours d'exécution (numérotés de 0 à N). On peut alors choisir l'une des actions exposées et
MWB ensuite nous présente les nouveaux choix d'actions. Pour mettre fin à la simulation, il
faut taper q. La figure 5.4, montre la simulation de l‟exécution du processus pool de l‟agent
VC, nous pouvons voir le chargement de ce pool par deux évènements et son déchargement.
93
Etude de cas : modélisation et vérification Chapitre 5
Propriété 3: vérifier que l‟agent mobile se trouve toujours dans un état sur une place ;
c.-à-d. le processus place communique toujours avec le processus état (qui correspond
à l‟agent). La formule indique que le processus RTM est toujours dans la nécessité de
ne pas synchroniser sur un port « a2 » en sortie, et la propriété de sureté Z indique que
toutes les actions de lecture qu‟il peut les faire l‟amèneront vers un autre état ou Z est
a nouveau vraie.
94
Etude de cas : modélisation et vérification Chapitre 5
Vérification d’équivalence
La commande MWB eq vérifie si deux processus sont fortes ouverts bisimilaires. La
commande MWB weq vérifie si deux agents sont faibles ouverts bisimilaires. Les commandes
MWB eqd et weqd font en plus la distinction entre les canaux des deux processus vérifiés. La
commande MWB time affiche le détail du raisonnement, à savoir la performance de la
vérification d'équivalence.
95
Etude de cas : modélisation et vérification Chapitre 5
5.4. Conclusion
Dans ce chapitre, nous avons montré l‟application de notre approche. Nous avons
utilisé une étude de cas complet qui consiste en une spécification d‟un système de vote
électronique. Nous avons illustré étape par étape comment appliquer l‟approche et la façon
d'explorer ses différents avantages dans la modélisation et l'analyse. Nous avons aussi défini
les taches de vérification principales qu‟on peut faire avec le code π-calcul dérivé. Nous avons
essayé de donner une vue d‟ensemble de ce qu‟on peut vérifier et nous avons obtenu des
résultats encourageants.
Nous avons rencontré beaucoup de problèmes avec MWB qui est l‟outil le plus connus
pour la vérification des processus π-calcul. En effet, certains problèmes π-calcul ne
parviennent pas à mettre fin en plusieurs heures en utilisant cet outil et parfois se terminent
d‟une manière inattendue, ce qui nous a empêché de faire plus d‟exemples complexes de
vérification et d‟expérimentation. Une des solutions est celle adoptée dans [95], ou les auteurs
ont proposés de faire une transformation vers Promela [96] qui est le langage d‟entré du
vérificateur de modèles SPIN [59]. En effet, avec leur approche, on peut bénéficier de la
visualisation des contre-exemples lorsqu‟un résultat est négatif. En plus, les problèmes qui
prennent plusieurs heures avec MWB peuvent être résolus avec SPIN en moins d'une seconde.
Le problème avec cette alternative est que la transformation du π-calcul vers Promela cause
beaucoup de perte de sémantique (comme indiqué en [95]), ce qui réduit la richesse
sémantique de nos spécifications π-calcul générées. Une autre solution est d‟essayer
d‟améliorer l‟outil MWB (qui a un code-ouvert) par l‟implémentation d‟autres algorithmes de
vérification qui donnent des résultats meilleurs.
Dans le chapitre suivant, nous allons automatiser notre approche par la construction
d‟un outil complet qui va rendre notre approche réellement applicable et utilisable dans le
monde industriel.
96
Chapitre 6
L'environnement intégré
développé
Au sommaire de ce chapitre
6.1 Introduction
6.2 Travaux connexes
6.3 Transformation de graphes
6.4 L'environnement intégré proposé
6.5 Méta-modélisation des diagrammes MSDs
6.6 Exemple
6.7 Conclusion
L'environnement intégré développé Chapitre 6
6.1. Introduction
Dans ce chapitre, les idées de la modélisation multi-paradigme [82] sont adoptées pour
l’automatisation de la spécification et la vérification des applications basées agents mobiles.
En fait, deux formalismes sont utilisés; les MSDs et le π-calcul. Les diagrammes d’états-
transitions mobiles sont utilisés pour modéliser le comportement de chaque agent dans un
système logiciel à base d’agents mobiles, alors que le π-calcul est adopté comme le
formalisme de vérification cible pour tels diagrammes.
Nous avons prévu dans ce travail d’arriver à générer une très riche description du
comportement de chaque système modélisé dans notre environnement. Pour atteindre cet
objectif, nous avons proposé d’utiliser pour chaque agent un diagramme d’états-transitions
mobile et nous avons défini comment ils communiquent.
Pour mettre en œuvre notre environnement intégré, nous avons utilisé l'outil AToM3
[53], un outil multi-paradigme et ouvert, pour implémenter l'approche. En fait, nous avons
proposé un méta-modèle pour les diagrammes d’états-transitions mobiles. Après, nous avons
utilisé les capacités de l’AToM3 pour générer un environnement intégré qui soutient la
modélisation visuelle de ces diagrammes. Ensuite, nous avons développé une grammaire de
graphe qui transforme les diagrammes d’états-transitions mobiles vers le π-calcul. Cette
grammaire de graphe implémente la formalisation déjà proposée précédemment. La
spécification π-calcul dérivée est ensuite chargée dans un outil spécialisé (dans notre cas
l'outil MWB [65][66]) pour analyser et vérifier le comportement de ces systèmes.
98
L'environnement intégré développé Chapitre 6
La sémantique des diagrammes UML avec mobilité en AToM3 a été abordé dans [81]
et [86]. En fait, les auteurs en [81], ont proposé une approche pour la transformation
automatique des diagrammes d’états-transitions mobile vers les réseaux de Petri imbriqués en
utilisant la méta-modélisation et les grammaires de graphes pour la modélisation et l'analyse
des systèmes logiciels à base d'agents mobiles. Les mêmes motivations ont encouragé les
auteurs dans [86] de proposer une approche basée sur la méta-modélisation et la
transformation de graphe pour transformer les diagrammes d'activité mobiles vers les réseaux
de Petri imbriqués pour faire face à une autre vue de la modélisation de ces systèmes.
Bien que les deux dernières contributions sont très intéressants, le formalisme cible
adopté (les réseaux de Petri imbriqués) est très limitée en sémantique et en outils vis-à-vis le
π-calcul (qui est riche en théorie et en outils) dans la spécification des systèmes concurrents
avec communication mobile. En outre, alors que les tentatives précédentes se concentrent
uniquement sur un diagramme, nous considérons dans la nôtre plusieurs diagrammes
communicants afin de recueillir des informations complets pour générer une spécification π-
calcul riche.
99
L'environnement intégré développé Chapitre 6
graphe hôte). Si une correspondance est trouvée, la règle peut être appliquée et le sous-graphe
correspondant dans le graphe de l'hôte sera remplacé par le RHS de la règle. En outre, une
règle peut aussi avoir une condition qui doit être remplie pour appliquer la règle, ainsi que des
actions à effectuer lorsque la règle est exécutée. Un système de réécriture applique
itérativement les règles de correspondance de la grammaire de graphe sur le graphe hôte
jusqu’il n'y aura plus de règles applicables. Les règles sont également ordonnées dans cet outil
par une priorité accordée par l'utilisateur (haut vers le bas).
Règle de
transformation
R = (LHS, RHS)
Appliquer R
RHS
LHS
100
L'environnement intégré développé Chapitre 6
1
http://msdl.cs.mcgill.ca
2
http://www.python.org
101
L'environnement intégré développé Chapitre 6
102
L'environnement intégré développé Chapitre 6
Modeling
Mobile
statechart Mapping Verification
diagram 1
. AToM3
. Visual Graph π-calculus MWB
canvas
. models
grammar
Mobile
statechart
diagram n
103
L'environnement intégré développé Chapitre 6
La classe «ETEtat»
-Cette classe représente d’une manière générale un état dans le diagramme d'état transition
mobile. Elle possède un attribut ETNom de type String pour donner un nom à l’état. Cette
classe est considérée comme la superclasse des classes suivantes: la classe « ETEtatInitial »,
la classe « ETEtatFinal », la classe « ETEtatSimple » et la classe « ETEtatMobile ».
La classe « ETEtatInitial »
-Cette classe représente l'état initial, elle est graphiquement représentée par un petit cercle
plein noir. Elle est reliée avec la classe « ETEtatSimple » par l'association
« ETTransitionIS ». Cette association possède les attributs PFS et PFD de type String pour
déterminer respectivement la plateforme source et la plateforme destination. L'attribut
Evenements et Activites de type String sont utilisés pour désigner respectivement
l'événement déclencheur de cette transition et les actions à exécuter durant cette transition.
L'association « ETTransitionIS » relie une seule instance de la classe « ETEtatInitial » à
104
L'environnement intégré développé Chapitre 6
une seule instance de la classe « ETEtatSimple » et elle est représentée graphiquement par
une flèche de couleur noire portant tous les attributs.
La Classe « ETEtatMobile »
Cette classe représente l'état mobile, elle est graphiquement représentée par un rectangle blanc
qui porte à son extrémité haute gauche un petit carré marqué par 'M'. Dans le cas où cet état
est l'état actuel, il sera représenté par un rectangle blanc qui porte à son extrémité haute
gauche un petit carré pointillé marqué par 'M', comme le montre la figure 6.6. Cette classe est
reliée à la classe « ETEtatSimple » par l'association « ETTransitionMobileMS » dans le cas
où une transition mobile existe entre cet état et un état simple.
-Cette classe est reliée à la classe « ETEtatSimple » par l'association « ETAgentReturnMS »
s'il existe une transition mobile de retour de l'agent mobile à sa plateforme d’origine. Ces
associations possèdent comme toutes les associations du méta-modèle, les attributs PFS,
PFD, Evenements et Activites. Elles relient une seule instance de la classe
« ETEtatMobile » à une seule instance de la classe « ETEtatSimple » et elles sont
graphiquement représentées par une flèche de couleur noire portant tous les attributs en
ajoutant un petit carrée marqué par "M" pour indiquer que ces transitions sont mobiles. De
plus, nous ajoutons un stéréotype «agentreturn» pour l'association « ETAgentReturnMS »,
afin de modéliser le retour de l'agent mobile vers sa plateforme de base.
La classe « ETEtatMobile » est reliée avec elle-même par trois associations:
L’association « ETTransitionMM » qui modélise une transition simple entre deux
états mobiles, et elle est graphiquement représentée par une flèche noire portant tous
les attributs. Cette association relie une seule instance de la classe « ETEtatMobile »
à une seule instance d’elle-même.
L’association « ETTransitionMobileMM » qui modélise la transition mobile entre
deux états mobiles. Elle se représente graphiquement par une flèche noire portant tous
les attributs, en ajoutant un petit carrée marqué par "M" pour indiquer que la transition
est mobile. Cette association relie une seule instance de la classe « ETEtatMobile » à
une seule instance d’elle-même.
L’association « ETTransitionADistanceMM » qui modélise la transition à distance
entre deux états mobiles. Elle est représentée graphiquement par une flèche noire qui
porte tous les attributs, en ajoutant un petit carrée marqué par "R" pour indiquer la
transition à distance. Cette association relie une seule instance de la classe
« ETEtatMobile » à une seule instance d’elle-même.
105
L'environnement intégré développé Chapitre 6
Classe « ETEtatSimple »
Cette classe représente l'état simple (l'état où l'agent mobile se trouve dans sa plateforme de
base) de l'agent mobile, elle est représentée graphiquement par un rectangle blanc (cf. la
figure 6.6), de plus, un petit carré pointillé marqué par 'M' est ajouté à l’extrémité haute
gauche du rectangle pour designer l’état actuel (la plateforme qui possède l'agent mobile à
l’instant courant).
-Cette classe est reliée à la classe « ETEtatMobile » par l'association
« ETTransitionMobileSM » qui possède aussi les attributs PFS, PFD, Evénements et
Activités. Cette association relie une seule instance de la classe « ETEtatSimple » à une seule
instance de la classe « ETEtatMobile », elle est représentée graphiquement comme toutes les
transitions mobiles dans le méta-modèle.
-La classe « ETEtatSimple » est reliée avec elle-même par deux associations:
L'association « ETTransitionSS » qui modélise la transition simple entre deux états
simples, elle est représentée graphiquement par une flèche noire portant tous les
attributs. Cette association relie une seule instance de la classe « ETEtatSimple » à
une seule instance d'elle-même.
L’association « ETTransitionADistanceSS » qui modélise la transition à distance
entre deux états simples, elle est représentée graphiquement par une flèche noire
portant tous les attributs en ajoutant un petit carrée marqué par "R" pour montrer qu’il
s’agit d’une transition à distance. Cette association relie une seule instance de la classe
« ETEtatSimple » à une seule instance d’elle-même.
-La classe « ETEtatSimple » est reliée à la classe « ETEtatFinal » par l'association
« ETTransitionSF », cette association possède les attributs PFS, PFD, Evénements et
Activités. L'association « ETTransitionSF » relie une seule instance de la classe
« ETEtatSimple » à une seule instance de la classe « ETEtatFinal », elle est représentée
graphiquement par une flèche de couleur noire portant tous les attributs.
106
L'environnement intégré développé Chapitre 6
Classe « ETEtatFinal »
Cette classe représente l'état final, elle est représentée graphiquement par un cercle de fond
noir inscrit à l’intérieur d’un anneau de même couleur.
La figure 6.6 montre un diagramme d’états-transitions mobile construit avec l'outil généré.
FIG. 6.6 – L’outil intégré AToM3 pour les diagrammes d’états-transitions mobile.
107
L'environnement intégré développé Chapitre 6
108
L'environnement intégré développé Chapitre 6
formalisation développée précédemment. La règle s’occupe aussi de toutes les variantes des
transitions à distance, que ce soit les transitions sans label (sans évènement, condition et
action), ou les transitions avec label (évènement, condition, et/ou action).
109
L'environnement intégré développé Chapitre 6
110
L'environnement intégré développé Chapitre 6
:=
:=
:= :=
:= :=
:=
:=
Règle9- MSRT2PI Règle10- MSMT2PI
:= :=
:=
:=
:= :=
111
L'environnement intégré développé Chapitre 6
Condition
:=
Action
TAB. 6.2 –Transformation d'un état simple avec une transition mobile vers π-calcul.
6.6. Exemple
Prenant comme exemple l’automatisation de l’étude de cas décrite dans le chapitre
précédent. Au début, l’outil intégré développé permet de spécifier le système VS en utilisant
les trois types différents des diagrammes sur le même canevas. Ensuite, un bouton permet de
lancer l’exécution de la grammaire de graphe qui prend le digramme d’états-transitions
mobile comme diagramme de conduite et récupérer l’information nécessaire à partir des
112
L'environnement intégré développé Chapitre 6
autres diagrammes afin de générer la spécification π-calcul adéquate. Figure 6.7 illustre
l’automatisation.
6.7. Conclusion
Dans ce chapitre, nous avons développé un environnement intégré à l'aide de l'outil
multi-paradigme AToM3 pour l’automatisation de la modélisation et la vérification des
systèmes logiciels à base d'agents mobiles, en utilisant une approche combinée méta-
modélisation et grammaire de graphe. Nous avons utilisé plusieurs diagrammes MSDs
comme source, et le formalisme commun cible adopté dans notre travail est le π-calcul qui est
riche en théorie et en outils pour répondre aux questions nécessaires qui nous intéressent dans
un système.
Dans les futures travaux, nous prévoyons d'ajouter d'autres diagrammes UML mobile à
l’environnement (tels que les diagrammes de séquences et d'activité mobiles). De cette
manière, nous allons garantir que tous les vues d’un système à base d’agents mobiles seront
couvertes. Un autre problème qu’on en travaille actuellement est celui de cacher le processus
de vérification à l'utilisateur lambda, qui ne maitrise pas habituellement les techniques
formels.
113
Conclusion générale
Conclusion générale
Dans cette thèse, nous nous sommes intéressés par la proposition d’une approche pour la
modélisation et la vérification des systèmes logiciels à base d’agents mobiles en utilisant l’UML
et le π-calcul. Nous avons fait un tour sur la technologie des agents mobiles, ainsi que les deux
langages utilisés à savoir l’UML, comme langage de modélisation semi-formel, et le π-calcul,
comme langage de spécification formel. Nous avons évoqué par la suite les différentes approches
existantes dans la littérature en faisant une étude comparative qui permet de discuter les avantages
et les inconvénients de chacune d’elles. Après, sur la base de plusieurs motivations, notre choix
est porté sur l’extension des diagrammes d’états-transitions M-UML, nous les avons appelés les
MSDs (Mobile Statechart Diagrams). Ensuite, nous avons proposé une approche intégrée
MSDs / π-calcul, qui consiste en l’utilisation des diagrammes d’états-transitions mobiles pour
la modélisation du comportement de différents agents dans une application basée agents
mobiles. Après la transformation vers le π-calcul pour permettre la vérification. L’approche
dans son intégralité a été implémenté en utilisant une approche combinée méta-modélisation /
grammaire de graphe par le bais de l'outil AToM3. Le produit final de cette thèse permet à un
utilisateur d’utiliser des diagrammes d’états-transitions mobiles pour la modélisation du
comportement de différents agents d’une application basée agents mobiles (modélisation
visuelle en utilisant des graphes) et après, les faire transformer automatiquement vers un code
π-calcul qui est importé par la suite dans un outil spécialisé (MWB) pour commencer la
vérification.
Dans un futur travail, nous compterons d’inclure d'autres diagrammes UML et d’en
ajouter à notre environnement intégré (tels que les diagrammes de séquence et d'activité
mobiles). De cette manière, nous allons garantir que tous les vues d’un système à base
d’agents mobiles seront couvertes. Un autre problème qu’on en travaille actuellement est celui
de cacher le processus de vérification à l'utilisateur lambda, qui ne maitrise pas habituellement
les techniques formelles, cela en faisant une interface d’abstraction du processus de
vérification.
Autre perspective est la génération du code de l’application à partir de notre approche en
utilisant un middleware comme JADE. Cela va permettre de rendre notre approche pratique.
En effet, il permet à un utilisateur de développer une application sein en suivant notre
approche.
114
Bibliographie et Webographie
Bibliographie et Webographie
1. Iglesias, C. A., Garijo, M., & González, J. C. (1998, July). A survey of agent-oriented methodologies. In
International Workshop on Agent Theories, Architectures, and Languages (pp. 317-330). Springer Berlin
Heidelberg.
2. Outtagarts, A. (2009). Mobile agent-based applications: A survey. International Journal of Computer
Science and Network Security, 9(11), 331-339.
3. Melomey, D., Mouratidis, H., & Imafidon, C. (2007). An Evaluation of Current Approaches for Modelling
Mobility of Agents. Advances in Computing and Technology, The School of Computing and Technology
2nd Annual Conference, ICGES Press.
4. Kusek, M., & Jezic, G. (2006, May). Extending UML sequence diagrams to model agent mobility. In
International Workshop on Agent-Oriented Software Engineering (pp. 51-63). Springer Berlin Heidelberg.
5. Belloni, E., & Marcos, C. (2003). Modeling of mobile-agent applications with UML. In Proceedings of the
Fourth Argentine Symposium on Software Engineering (ASSE 2003) (Vol. 32, pp. 1666-1141).
6. Fuggetta, A., Picco, G. P., & Vigna, G. (1998). Understanding code mobility. IEEE Transactions on
software engineering, 24(5), 342-361.
7. Nwana, H. S. (1996). Software agents: An overview. The knowledge engineering review, 11(03), 205-244.
8. Grasshopper mobile agent system (2003). IKV++ GmbH, documentation and software. Available at:
http://www.grasshopper.de/
9. Vigna, G. (2004). Mobile agents: Ten reasons for failure. In Mobile Data Management, 2004. Proceedings.
2004 IEEE International Conference on (pp. 298-299). IEEE.
10. Braun, P., & Rossak, W. R. (2005). Mobile agents: Basic concepts, mobility models, and the tracy toolkit.
Elsevier.
11. Audibert, L. (2007). UML 2. http://www-lipn.univ-paris13.fr/audibert/pages/enseignement/cours.htm
12. Rumbaugh, J., Jacobson, I., & Booch, G. (2004). Unified modeling language reference manual, the. Pearson
Higher Education.
13. Bauer, B., Müller, J. P., Odell, J., & Agent-Oriented, J. O. (2001). Agent UML: A Formalism for Specifying
Multiagent Interaction. 22nd International Conference on Software Engineering (ICSE), Agent-Oriented
Software Engineering (pp. 91–103). Springer.
14. Červenka, R., Trenčanský, I., Calisti, M., & Greenwood, D. (2004, July). AML: agent modeling language
toward industry-grade agent-based modeling. In International Workshop on Agent-Oriented Software
Engineering (pp. 31-46). Springer Berlin Heidelberg.
15. Saleh, K., & El-Morr, C. (2004). M-UML: an extension to UML for the modeling of mobile agent-based
software systems. Information and Software Technology, 46(4), 219-227.
115
Bibliographie et Webographie
16. Mouratidis, H. (2002). Extending the unified modeling language to model mobile agents. Proceedings Agent
Oriented Methodologies Workshop, Annual ACM Conference on Object Oriented Programming, Systems,
Languages (OOPSLA).
17. Klein, C., Rausch, A., Sihling, M., & Wen, Z. (2000). Extension of the Unified Modeling Language for
mobile agents. Unified Modeling Language: Systems Analysis, Design and Development Issues, 116-128.
18. Belghiat, A., Chaoui, A., Maouche, M., & Beldjehem, M. (2014, October). Formalization of mobile UML
statechart diagrams using the π-calculus: an approach for modeling and analysis. In International
Conference on Information and Software Technologies (pp. 236-247). Springer International Publishing.
19. Kang, M., & Taguchi, K. (2004). Modelling Mobile Agent Applications by Extended UML Activity
Diagram. In Proceedings of the 6th International Conference on Enterprise Information Systems (ICEIS)’04
(pp. 519-522).
20. Bahri, M. R., Mokhtari, R., & Chaoui, A. (2009). Towards an extension of UML2. 0 to model mobile agent-
based systems. International Journal of Computer Science and Network Security, 9(10), 124-131.
21. Bettini, L., De Nicola, R., & Loreti, M. (2002, April). Formalizing properties of mobile agent systems. In
International Conference on Coordination Languages and Models (pp. 72-87). Springer Berlin Heidelberg.
22. Milner, R. (1999). Communicating and Mobile Systems: the π-calculus, Cambridge University Press.
23. Fournet, C., Gonthier, G., Lévy, J. J., Maranget, L., & Rémy, D. (1996, August). A calculus of mobile
agents. In International Conference on Concurrency Theory (pp. 406-421). Springer Berlin Heidelberg.
24. Oquendo, F. (2004). π-ADL: an Architecture Description Language based on the higher-order typed π-
calculus for specifying dynamic and mobile software architectures. ACM SIGSOFT Software Engineering
Notes, 29(3), 1-14.
25. Xu, D., & Deng, Y. (2000). Modeling mobile agent systems with high level Petri nets. In Systems, Man, and
Cybernetics, 2000 IEEE International Conference on (Vol. 5, pp. 3177-3182). IEEE.
26. Xu, D., Yin, J., Deng, Y., & Ding, J. (2003). A formal architectural model for logical agent mobility. IEEE
Transactions on Software Engineering, 29(1), 31-45.
27. Xu, H., & Shatz, S. M. (2002). A Design Model for Intelligent Mobile Agent Software Systems.
Computer Science Department, The University of Illinois at Chicago.
28. Schmitt, A., & Stefani, J. B. (2004, March). The kell calculus: A family of higher-order distributed process
calculi. In International Workshop on Global Computing (pp. 146-178). Springer Berlin Heidelberg.
29. Sewell, P., Wojciechowski, P. T., & Pierce, B. C. (1998, May). Location-independent communication for
mobile agents: a two-level architecture. In International Conference on Computer Languages (pp. 1-31).
Springer Berlin Heidelberg.
30. Bahri, M. R. (2010). Une approche intégrée Mobile-UML/Réseaux de Pétri pour l'analyse des systèmes
distribués à base d'agents mobiles (Doctoral dissertation, Doctoral thesis, University of Constantine,
Algeria).
31. Knapp, A., Merz, S., & Wirsing, M. (2004, July). Refining mobile UML state machines. In International
Conference on Algebraic Methodology and Software Technology (pp. 274-288). Springer Berlin Heidelberg.
32. Merz, S., Wirsing, M., & Zappe, J. (2003, April). A spatio-temporal logic for the specification and
refinement of mobile systems. In International Conference on Fundamental Approaches to Software
Engineering (pp. 87-101). Springer Berlin Heidelberg.
116
Bibliographie et Webographie
33. Aridor, Y., & Lange, D. B. (1998, May). Agent design patterns: elements of agent application design. In
Proceedings of the second international conference on Autonomous agents (pp. 108-115). ACM.
34. Cardelli, L., & Gordon, A. D. (2000). Mobile ambients. Theoretical computer science, 240(1), 177-213.
35. De Nicola, R., Ferrari, G. L., & Pugliese, R. (1998). KLAIM: A kernel language for agents interaction and
mobility. IEEE Transactions on software engineering, 24(5), 315-330.
36. Kuhn, T. A., & Von Oheimb, D. (2003, September). Interacting state machines for mobility. In International
Symposium of Formal Methods Europe (pp. 698-718). Springer Berlin Heidelberg.
37. Latella, D., Massink, M., Baumeister, H., & Wirsing, M. (2004, March). Mobile UML statecharts with
localities. In International Workshop on Global Computing (pp. 34-58). Springer Berlin Heidelberg.
38. Berard, E.V. (1995). A comparison of object-oriented methodologies. Technical report. Object Agency Inc.
39. Belloni, E., & Marcos, C. (2004, November). MAM-UML: an UML profile for the modeling of mobile-
agent applications. In Computer Science Society, 2004. SCCC 2004. 24th International Conference of the
Chilean (pp. 3-13). IEEE.
40. Poggi, A., Rimassa, G., Turci, P., Odell, J., Mouratidis, H., & Manson, G. (2003, July). Modeling
deployment and mobility issues in multiagent systems using AUML. In International Workshop on Agent-
Oriented Software Engineering (pp. 69-84). Springer Berlin Heidelberg.
41. Chhetri, M. B., Price, R., Krishnaswamy, S., & Loke, S. W. (2006, January). Ontology-based agent mobility
modelling. In System Sciences, 2006. HICSS'06. Proceedings of the 39th Annual Hawaii International
Conference on (Vol. 2, pp. 45a-45a). IEEE.
42. Hachicha, H., Loukil, A., & Ghedira, K. (2009). MA-UML: a conceptual approach for mobile agents'
modelling. International Journal of Agent-Oriented Software Engineering, 3(2-3), 277-305.
43. Hachicha, H., Loukil, A., & Ghedira, K. (2008, May). MAMT: an environment for modeling and
implementing mobile agents. In Sixth International Workshop From Agent Theory to Agent Implementation
(AT2AI-6) (pp. 75-82).
44. Tolksdorf, R. (1998, July). Coordination patterns of mobile information agents. In International Workshop
on Cooperative Information Agents (pp. 246-261). Springer Berlin Heidelberg.
45. Lima, E. F., Machado, P. D., Sampaio, F. R., & Figueiredo, J. C. (2004). An approach to modelling and
applying mobile agent design patterns. ACM SIGSOFT Software Engineering Notes, 29(3), 1-8.
46. Crane, M. L., & Dingel, J. (2005). On the semantics of UML state machines: Categorization and
comparison. In In Technical Report 2005-501, School of Computing, Queen’s.
47. Jezic, G., & Lovrek, I. (2004). Using Pi-Calculus for specification of mobile agent communication. In
IASTED Conf. on Software Engineering and Applications (pp. 356-361).
48. Cervenka, R., & Trencansky, I. (2007). The Agent Modeling Language-AML: A Comprehensive Approach
to Modeling Multi-Agent Systems. Springer.
49. Melomey, D., Imafidon, C. & Williams, G.(2007). A Comparative Study of Modeling Languages for Agent
Systems. Systems and Information Science Notes (SISN) (Vol. 2, pp 207-212).
50. Bauer, B., & Müller, J. P. (2004). Methodologies and modeling languages. Agent-based Software
Development, (pp 77-131).
51. Bauer, B., & Odell, J. (2005). UML 2.0 and agents: how to build agent-based systems with the new UML
standard. Engineering applications of artificial intelligence, 18(2), 141-157.
117
Bibliographie et Webographie
52. Lange, D. B., & Oshima, M. (1999). Seven good reasons for mobile agents. Communications of the ACM,
42(3), 88-89.
53. AToM3 home page, (online) available at: http://atom3.cs.mcgill.ca/
54. Belghiat, A., Chaoui, A., & Aldahoud, A. (2015). Bridging the Gap between Modeling of Mobile Agent-
based Systems and Semantic Web using Meta-Modeling and Graph Grammars. In The 7th International
Conference on Information Technology (ICIT).
55. Milojicic, D., Breugst, M., Busse, I., Campbell, J., Covaci, S., Friedman, B., Kosaka, K., Lange, D., Ono,
K., Oshima, M., Tham, C., Virdhagriswaran, S., & White, J. (1998). MASIF: The OMG mobile agent
system interoperability facility. Personal and Ubiquitous Computing, 2(2), 117-129.
56. FIPA, Foundation for Intelligent Physical Agents, (2002). FIPA Agent Management Support for Mobility
Specification. Document number dc00087c. Technical report, Geneva, Switzerland.
57. OMG, Object Management Group, (2011). Unified Modeling Language, Superstructure, version 2.4,
http://www.omg.org/spec/UML/2.4
58. Piechocki, L. (2007). UML, le langage de modélisation objet unifié.
59. Holzmann, G. J. (1997). The model checker SPIN. IEEE Transactions on software engineering, 23(5), 279-
295.
60. Fowler, M. (2004). UML distilled: a brief guide to the standard object modeling language. Addison-Wesley
Professional.
61. Milner, R., Parrow, J., & Walker, D. (1992). A calculus of mobile processes, I and II, Information and
computation, 100(1), 1-40.
62. Milner, R. (1993). The polyadic π-calculus: a tutorial. In Logic and algebra of specification (pp. 203-246).
Springer Berlin Heidelberg.
63. Sangiorgi, D., & Walker, D. (2003). The pi-calculus: a Theory of Mobile Processes. Cambridge university
press.
64. Milner, R. (1979). Flowgraphs and flow algebras. Journal of the ACM (JACM), 26(4), 794-818.
65. Victor, B. (1994). A Verification Tool for the Polyadic π-Calculus. Licentiate thesis, Department of
Computer Systems, Uppsala University.
66. Victor, B., & Moller, F. (1994, June). The Mobility Workbench—a tool for the π-calculus. In Proceedings of
International Conference on Computer Aided Verification (pp. 428-440). Springer Berlin Heidelberg.
67. Lam, V. S. (2008). On π-calculus semantics as a formal basis for UML activity diagrams. International
Journal of Software Engineering and Knowledge Engineering, 18(04), 541-567.
68. Yang, D., & Zhang, S. S. (2004). Using π-calculus to formalize UML activity diagrams. In 10th Int. Conf.
and Workshop on the Engineering of Computer-based Systems, IEEE Computer Society, (pp. 47-54).
69. Posse, E. (2010). Mapping UML-RT state machines to kiltera. Technical Report 2010-569, School of
Comp., Queen’s Univ..
70. Marsden, E. (1999). Description formelle d’un protocole à méta-objets. Mémoire préparé dans le cadre du
Diplome d’Etudes Approfondies en Informatique Fondamentale et Parallélisme.
71. Harel, D. (1987). Statecharts: A visual formalism for complex systems. Science of computer programming,
8(3), 231-274.
118
Bibliographie et Webographie
72. Rossi, C., Enciso, M., & De Guzmán, I. P. (2004). Formalization of UML state machines using temporal
logic. Software & Systems Modeling, 3(1), 31-54.
73. Ng, M. Y., & Butler, M. (2003, September). Towards formalizing UML state diagrams in CSP. In Software
Engineering and Formal Methods, 2003. Proceedings. First International Conference on (pp. 138-147).
IEEE.
74. Yeung, W. L., Leung, K. R., Wang, J., & Dong, W. (2005, December). Improvements towards formalizing
UML state diagrams in CSP. In Software Engineering Conference, 2005. APSEC'05. IEEE.
75. Lilius, J., & Paltor, I. P. (1999). The semantics of UML state machines. TUCS Technical Report No. 273.
Turku Centre for Computer Science.
76. Seshia, S. A., Shyamasundar, R. K., Bhattacharjee, A. K., & Dhodapkar, S. D. (1999, September). A
translation of Statecharts to Esterel. In International Symposium on Formal Methods (pp. 983-1007).
Springer Berlin Heidelberg.
77. Saldhana, J., & Shatz, S. M. (2000, July). UML diagrams to object petri net models: An approach for
modeling and analysis. In Proceedings of International Conference on Software Engineering and
Knowledge Engineering (pp. 103-110).
78. Harel, D., & Naamad, A. (1996). The STATEMATE semantics of statecharts. ACM Transactions on
Software Engineering and Methodology (TOSEM), 5(4), 293-333.
79. Lam, V. S.W, Padget, J. (2001). Formalization of UML Statechart Diagrams in the π-Calculus. In
Proceedings of Software Engineering Conference, IEEE.
80. Pokozy-Korenblat, K., & Priami, C. (2004). Toward extracting π-calculus from UML sequence and state
diagrams. Electronic Notes in Theoretical Computer Science, 101, 51-72.
81. Bahri, M. R., Hettab, A., Chaoui, A., & Kerkouche, E. (2009, December). Transforming mobile UML
statecharts models to nested nets models using graph grammars: an approach for modeling and analysis of
mobile agent-based software systems. In Formal Methods (SEEFM), 2009 Fourth South-East European
Workshop on (pp. 33-39). IEEE.
82. Vangheluwe, H., De Lara, J., & Mosterman, P. J. (2002, April). An introduction to multi-paradigm
modelling and simulation. In Proceedings of the AIS’2002 conference (AI, Simulation and Planning in High
Autonomy Systems), Lisboa, Portugal (pp. 9-20).
83. Guerra, E., & Lara, J. D. (2003). A framework for the verification of UML models. Examples using petri
nets. In JISBD’03. Alicante.
84. Kerkouche, E., Chaoui, A., Bourennane, E., Labbani, O. (2010). A UML and Colored Petri Nets Integrated
Modeling and Analysis Approach using Graph Transformation. Journal of Object Technology, 9(4).
85. Chama, W., Elmansouri, R., & Chaoui, A. (2012). Model checking and code generation for UML diagrams
using graph transformation. International Journal of Software Engineering & Applications, 3(6), 39.
86. Guerrouf, F., Chaoui, A., & Aldahoud, A. (2013). A graph transformation approach of mobile activity
diagram to nested Petri nets. International Journal of Computer Aided Engineering and Technology, 5(1),
44-57.
87. Ehrig, H., Rozenberg, G., & Kreowski, H. J. (1999). Handbook of graph grammars and computing by graph
transformation (Vol. 3). World Scientific.
88. AGG. Home page: http://tfs.cs.tu-berlin.de/agg/
119
Bibliographie et Webographie
120
Communications et Publications
Communications et Publications
Belghiat, A., Chaoui, A., Maouche, M., Beldjehem, M.: Formalization of Mobile UML
Statechart Diagrams using the π-calculus: An Approach for Modeling and Analysis. In
G. Dregvaite and R. Damasevicius (Eds.): ICIST, CCIS 465, pp. 236–247. Springer,
2014.
Aissam Belghiat and Allaoua Chaoui. «Bridging the Gap between Modeling of Mobile
Agent-based Systems and Semantic Web using Meta-Modeling and Graph Grammars».
In The 7th International Conference on Information Technology (ICIT), 2015, Jordan.
Aissam Belghiat and Allaoua Chaoui. «A π-calculus-based approach for the verification
of UML2 sequence diagrams». In ICSOFT, the 10th International Joint Conference on
Software Technologies, 2015, France.
Aissam Belghiat, Allaoua Chaoui, and Mokhtar Beldjehem. « Capturing and Verifying
Dynamic Program Behaviour Using UML Communication Diagrams and Pi-Calculus».
In IEEE International Conference on Information Reuse and Integration, 2015, USA.
Aissam Belghiat, Allaoua Chaoui, "A TGG Approach for a Bidirectional Automatic
Mapping between UML and pi-calculus", In Proceedings of the International
Conference on Intelligent Information Processing, Security and Advanced
Communication, ACM IPAC '15, 2015, Algeria.
Aissam Belghiat, Elhilali Kerkouche, Allaoua Chaoui and Mokhtar Beldjehem. “Mobile
Agent-Based Software Systems Modeling Approaches: A Comparative Study”. CIT.
Journal of Computing and Information Technology, 24(2), 149-163. 2016.
121